嘿,反应角色添加工作,但我不能删除角色 每次我点击反应,就会弹出这个错误:
文件“main.py”,第165行,在on\u raw\u reaction\u remove中 等待有效负载。成员。删除\u角色(角色) AttributeError:“非类型”对象没有“删除角色”属性
我的代码:
async def on_raw_reaction_remove(payload):
guild: discord.Guild = client.get_guild(815637550550089739)
if payload.message_id == 872659703598047232:
if payload.emoji.name == 'Hypixel':
role: discord.Role = guild.get_role(872606322653286400)
await payload.member.remove_roles(role)
if payload.message_id == 872659703598047232:
if payload.emoji.name == 'Skyblock':
role: discord.Role = guild.get_role(872606320379953193)
await payload.member.remove_roles(role)```
https://discordpy.readthedocs.io/en/latest/api.html#discord.RawReactionActionEvent.member
payload.member
仅在添加反应时可用,否则其值将为None
。您应该使用
on_raw_reaction_add
这背后的主要原因是
payload.member
是在使用on_raw_reaction_remove
时None
。这实际上是因为discord不发送此数据,所以discord.py将其作为
None
。来源-https://github.com/Rapptz/discord.py/issues/5871
要解决这个问题,您需要获得有问题的帮会对象,然后从帮会中获取成员对象。 负载也没有帮会对象,所以我们也必须得到它
我实际上创建了member对象,并在
on_raw_reaction_remove
的情况下手动将其固定到有效负载上。 这样on_raw_reaction_add
和on_raw_reaction_remove
对于我的最终处理都具有相同的负载此外,这需要特权成员的意图。要启用它,请重新登录开发人员门户并查找特权意图>;成员意图,然后将滑块勾选为“开”
需要将意图传递给客户端,如果使用bot扩展,则传递给bot包装器
相关问题 更多 >
编程相关推荐