python - 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。
解决方案
我得到了在我的系统上工作的代码。你可以在这里尝试一些事情来解决这个问题。
- 你是怎么得到用户名的?尝试使用以下内容打印出用户名:
@client.event
async def on_message(message):
if message.content.startswith('$'):
user = message.author
print(user)
使用 $, 键入任何内容以调用此消息。如果用户被正确打印,下一步尝试打印角色,
print(user.roles)
这应该返回一个带有“角色 ID”和“名称”的可迭代对象。验证角色 ID 是否正确传递。
如果您仍然有问题,请在 hastebin 或其他地方分享您的代码。
推荐阅读
- python - 了解模型 DEPTH 和 CUDA Out Of Memory 异常的依赖关系
- variables - 如何为 Wix Bundle Log Element 设置自定义值?
- html - 如何使用 CSS 变换将 div 放入 3D 图像
- javascript - 缩放时如何保持包装器居中?
- flutter - 在垂直PageView中包装不同高度的项目 - Flutter
- r - 修改 R 中 geom_link 函数的“大小”
- c# - c# Unity 5.11.10 依赖注入 StackOverflow 异常
- flutter - 如何在 Dart 中使用 Google Calendar API 批量插入事件列表?
- go - 使用 Gorm 未定义:mysql.Open
- java - java BufferedImage 质量下降