最近,我将 Discord 机器人从 Discord 版本 1.7.3 更新到最新版本 2.3.2。然而,更新后,该机器人不再按预期运行。我尝试通过将意图设置为discord.Intents.all() 和intents.message_content = True 来解决该问题,但问题仍然存在。我对 Discord 机器人开发还比较陌生,我正在努力了解导致此问题的原因。
我的代码:
import discord
from discord.ext import commands
from decouple import config
intents = discord.Intents.default()
intents.members = True
bot = commands.Bot("!", intents=intents)
class Reactions(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_raw_reaction_add(self, payload):
message_id = payload.message_id
guild_id = payload.guild_id
emoji = payload.emoji
guild = self.bot.get_guild(guild_id)
member = guild.get_member(payload.user_id)
elif message_id == ADD message ID:
role = None
if str(emoji) == "👥":
role = guild.get_role(ID role)
elif str(emoji) == "📢":
role = guild.get_role(ID role)
# second_role = guild.get_role(ID role)
elif str(emoji) == "📖":
role = guild.get_role(ID role)
if role is not None:
await member.add_roles(role)
elif message_id == ADD message ID:
role = None
if str(emoji) == "🎮":
role = guild.get_role(ID role)
elif str(emoji) == "💻":
role = guild.get_role(ID role)
elif str(emoji) == "🎨":
role = guild.get_role(ID role)
if role is not None:
await member.add_roles(role)
bot.add_cog(Reactions(bot))
TOKEN = config("TOKEN")
bot.run(TOKEN)
为了解决这个问题,我对代码进行了调整,以包含intents = discord.Intents.all()和intents.message_content = True。我希望这能解决与 Discord.py 版本更改相关的任何问题。然而,即使经过这些调整,机器人仍然无法正常运行。
要解决这个问题,你只需要调整服务器位置的层次结构即可。代码是对的