Python 如何检查成员是否具有特定的角色是if语句?仅当您具有特定角色时才需要执行elif吗?
我正在我的discord机器人中制作一个自动删除消息的功能,当我使用从审查列表中删除单词命令时,它搁浅了。因为我想从列表中删除的单词在列表中,所以msg get被bot删除。我想通过在我的on message delete message事件中添加一个额外的if来避免这种情况,该事件检查用户是否具有Admin角色或Mod角色。我期望的结果是,如果他们确实拥有这个角色,它将返回,并且msg delete将永远不会执行Python 如何检查成员是否具有特定的角色是if语句?仅当您具有特定角色时才需要执行elif吗?,python,discord.py,Python,Discord.py,我正在我的discord机器人中制作一个自动删除消息的功能,当我使用从审查列表中删除单词命令时,它搁浅了。因为我想从列表中删除的单词在列表中,所以msg get被bot删除。我想通过在我的on message delete message事件中添加一个额外的if来避免这种情况,该事件检查用户是否具有Admin角色或Mod角色。我期望的结果是,如果他们确实拥有这个角色,它将返回,并且msg delete将永远不会执行 if any(word in message.content fo
if any(word in message.content for word in censorlist):
if message.author == client.user:
return
elif
return
else:
await message.delete()
await client.process_commands(message)```
获得该角色主要有两种方式,
discord.utils.get
,还有guild.get_角色
。无论如何,这里有两个例子
获取角色(需要id)
#在所有if语句之上的某个地方
admin\u role=message.guild.get\u角色(此处为id\u)
mod_role=message.guild.get_角色(此处为id_)
#然后在你的elif里
message.author.roles中的elif mod_角色或message.author.roles中的admin_角色:
这将通过id获取角色,并检查成员是否具有这些角色
utils.get(需要名称)
#在所有if语句之上的某个地方
admin\u role=discord.utils.get(message.guild.roles,name=“admin”)
mod_角色=
#然后在你的elif里
message.author.roles中的elif mod_角色或message.author.roles中的admin_角色:
这将通过名称获取角色,并检查成员是否具有该角色
或者也可以在一行中完成(看起来很糟糕)
elif discord.utils.get(message.author.roles,name=“Mod”)或discord.utils.get(messages.author.roles,name=“Admin”):
这利用了一个事实,即如果找不到对象,utils.get将返回None。因此,它正在搜索成员的角色以查找名为Admin/Mod的角色,如果未找到该角色,则该成员不具有该角色
一些甚至更短的不推荐方式
elif any(message.author.roles中角色的[mod\u role\u id,admin\u role\u id]中的role.id):
这会将成员的每个角色的id角色与mod&admin角色的角色id进行比较