首页 > 解决方案 > discord.py 测试角色不起作用。总是返回 false

问题描述

我想测试用户是否具有两个特定角色之一,但由于某种原因,我编写的代码总是返回 false。

我还尝试了一种不同的方法,它总是返回 true。在 discord.py discord 服务器上也没有得到答案

#first approach. always returns false
def isMod(user):
    for role in user.roles:
        if role.id==587614886771687445:
            return True
        elif role.id==587615608279924756:
            return True
    return False



#second approach. always returns true
def isMod(user):
    if discord.utils.get(user.roles, id=587614886771687445) is None and discord.utils.get(user.roles, id=587615608279924756):
        return False
    else:
        return True

如果用户具有给定 id 的一个或两个角色,它应该返回 true,如果没有,则返回 false。

标签: pythonbotsdiscordrolesdiscord.py

解决方案


我得到了在我的系统上工作的代码。你可以在这里尝试一些事情来解决这个问题。

  1. 你是怎么得到用户名的?尝试使用以下内容打印出用户名:
@client.event
async def on_message(message):
      if message.content.startswith('$'):
            user = message.author
            print(user)

使用 $, 键入任何内容以调用此消息。如果用户被正确打印,下一步尝试打印角色,

print(user.roles)

这应该返回一个带有“角色 ID”和“名称”的可迭代对象。验证角色 ID 是否正确传递。

如果您仍然有问题,请在 hastebin 或其他地方分享您的代码。


推荐阅读