Discord.py:检查用户是否有列表中的角色 ID 不起作用
Discord.py: Check if user has role ID from list not working
我目前正在为我的 Discord.py 机器人进行反应角色配置,我遇到了一个问题,试图将用户列入黑名单以阻止他们选择角色。这是我的代码:
cursor.execute(f"SELECT blacklists FROM reactionroles WHERE message_id = {payload.message_id} AND emojis = '{reaction}'")
blacklist_result = cursor.fetchone()
member = payload.member
rolesUserHas = member.roles
rolesIDuserHas = []
for role in rolesUserHas:
rolesIDuserHas.append(role.id)
print(rolesIDuserHas)
if any(item in blacklist_result for item in rolesIDuserHas):
await member.send(f'{x_mark} You are blacklisted from picking up roles from that message.')
return
else:
pass
但是当我给自己一个黑名单的角色时,它并没有取消或私信我,它只是继续这个过程,就好像它认为我没有这个角色一样。没有报错,不知道为什么会这样。
请注意,discord.py 中的每个 id
属性都是以 10 为基数的整数,而不是字符串。将您的数据库结果转换为整数,或将 ID 转换为字符串:
role_ids = list(map(str, [r.id for r in member.roles]))
我目前正在为我的 Discord.py 机器人进行反应角色配置,我遇到了一个问题,试图将用户列入黑名单以阻止他们选择角色。这是我的代码:
cursor.execute(f"SELECT blacklists FROM reactionroles WHERE message_id = {payload.message_id} AND emojis = '{reaction}'")
blacklist_result = cursor.fetchone()
member = payload.member
rolesUserHas = member.roles
rolesIDuserHas = []
for role in rolesUserHas:
rolesIDuserHas.append(role.id)
print(rolesIDuserHas)
if any(item in blacklist_result for item in rolesIDuserHas):
await member.send(f'{x_mark} You are blacklisted from picking up roles from that message.')
return
else:
pass
但是当我给自己一个黑名单的角色时,它并没有取消或私信我,它只是继续这个过程,就好像它认为我没有这个角色一样。没有报错,不知道为什么会这样。
请注意,discord.py 中的每个 id
属性都是以 10 为基数的整数,而不是字符串。将您的数据库结果转换为整数,或将 ID 转换为字符串:
role_ids = list(map(str, [r.id for r in member.roles]))