所以我没有出错,但它总是给我发回 else 消息。有人能告诉我我做错了什么吗?
import discord
intents = discord.Intents.default()
intents.members = True
ar=discord.Client(intents=intents)
async def on_message(message):
member = message.author
if message.content == "/verify":
role = message.guild.get_role(ROLE_ID)
await member.add_roles(role)
await message.author.send("Du bist jetzt auf FlexGames Deescord verifiziert! Viel Spaß und lies dir #infos-regeln durch!")
else:
await message.author.send("Die Verifizierung ist fehlgeschlagen! Bitte probiere es erneut!")
(如果您尝试此代码,请不要忘记 bot.run('token') 和 bot=discord.Client() 例如)。我还给了机器人它需要的所有权限
编辑:我将代码更新为新代码并激活了机器人的意图,但仍然无法正常工作,要么将 else 消息发回给我,要么只是没有给出任何错误。
最终编辑:我太愚蠢了,不知道在那个错误之前我有什么问题(ar.wait_for)所以他的解决方案是正确的
答案 0 :(得分:1)
discord.Member
实例添加角色,在定义成员变量时您将获得 ID 本身,而不是 discord.Member
实例member = message.author # Without the id attribute
Member.add_roles
中,您需要传递 discord.Role
个实例,而不是 ID 本身,您可以使用 Guild.get_role
获取实例role = message.guild.get_role(role_id)
await member.add_roles(role)
您的代码已修复:
async def on_message(message):
member = message.author
if message.content.startswith("/verify"):
role = message.guild.get_role(ROLE_ID_HERE)
await member.add_roles(role)
还有一个问题,您需要启用 intents.members
和更多的意图,否则某些属性可能是 NoneType
intents = discord.Intents.default()
intents.members = True # Explicitly enabling members as it's a privileged intent
client = discord.Client(intents=intents)
还要记住在 developer portal、guide
中启用特权成员意图