检查邮件作者是否具有discord.py角色

2024-06-16 13:32:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我的服务器中没有nitro的用户做一个“nitro替换”,当有人发送一个动画表情:test:而他们没有nitro时,bot会删除消息,然后发送动画表情

role = ["-『🦾』· 𝙽𝙴𝙾𝙽-𝚂𝚝𝚊𝚏𝚏"]
@bot.listen("on_message")
async def nitro(msg):
        if ":" == msg.content[0] and ":" == msg.content[-1] and role in msg.author.roles:
            emoji_name = msg.content[1:-1]
            for emoji in msg.guild.emojis:
                if emoji_name == emoji.name:
                    await msg.channel.send(f"{msg.author.mention}{str(emoji)}")
                    await msg.delete()

bot会运行,但由于某些原因,当包含 and role in msg.author.roles:部分时,bot无法工作。它只留下我的:test:文本

机器人应如何工作与如何工作:

enter image description here

我做错了什么


Tags: andnameintestifbot动画msg
1条回答
网友
1楼 · 发布于 2024-06-16 13:32:47

您正在将列表(role)与角色对象(msg.author.roles)进行比较。这句话永远不会是真的。 您可以通过getter函数获得角色,如

role = msg.guild.get_role(id)

或者,与角色名称进行比较

role = "-『🦾』· 𝙽𝙴𝙾𝙽-𝚂𝚝𝚊𝚏𝚏"
@bot.listen("on_message")
async def nitro(msg):
        if ":" == msg.content[0] and ":" == msg.content[-1] and role in [userRoles.name for userRoles in msg.author.roles]:
            emoji_name = msg.content[1:-1]
            for emoji in msg.guild.emojis:
                if emoji_name == emoji.name:
                    await msg.channel.send(f"{msg.author.mention}{str(emoji)}")
                    await msg.delete()

相关问题 更多 >