我有一个不和谐的机器人,我为管理功能创建了一些“命令”,例如:
但是当这些命令运行时,bot会立即删除触发消息,让任何人都看不到。
但我需要另一个解决方案来检查成员是否具有名为“管理员”的角色
但是我的代码,没有使用ctx命令,只是@on_message和if检查...
所以我需要一个与此类似的代码(并且可以工作:D):
@client.event
async def on_message(message):
if message.content == ".admin reset":
user = message.author
if "Admin" in user.roles():
#only for admins
await message.channel.send("Resetting...")
else:
await message.channel.send("You are not an admin")
答案 0 :(得分:0)
那是因为 user.roles
是一个 role
对象的列表,这里没有名称是我会做的:
@client.event
async def on_message(message):
if message.content == ".admin reset":
user = message.author
if "Admin" in [role.name for role in user.roles]:
await message.channel.send("Resetting...")
else:
await message.channel.send("You are not an admin")
只需使用 List Comprehension 列出角色名称即可。此外,user.roles
是一个属性而不是一个方法,因此后面不应有括号。