【发布时间】:2021-04-08 02:39:33
【问题描述】:
我目前正在为我的 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
但是,当我给自己一个列入黑名单的角色时,它并没有取消或通知我,它只是继续这个过程,就好像它认为我没有这个角色一样。没有给出错误,我不知道为什么会这样。
【问题讨论】:
-
恕我直言,这个问题属于 github:github.com/Rapptz/discord.py/issues
-
SQL 结果以 rows 的形式获取,实现为列表。
blacklist_result实际上是一个值的列表。所以你想使用blacklist_result = cursor.fetchone()[0] -
blacklists是否肯定包含您要列入黑名单的角色 ID(作为整数)?您是否在任何地方都有错误处理程序来吞噬错误?打印出blacklist_result和rolesIDuserHas看看是否真的有有任何共同的ID。 -
也是关于 SQL 注入攻击的强制性警告。
-
@JohnGordon 好的,所以我尝试了你的建议,没有任何改变,我面临同样的问题。
标签: python sqlite discord discord.py discord.py-rewrite