如何解决AttributeError: 'NoneType' 对象没有属性 'id' - on_raw_reaction_add 错误
所以我最近在我的机器人中遇到了这个我以前没有遇到过的问题...
错误 -
Traceback (most recent call last):
File "/home/container/.local/lib/python3.9/site-packages/discord/client.py",line 343,in _run_event
await coro(*args,**kwargs)
File "/home/container/cogs/mod.py",line 100,in on_raw_reaction_add
await payload.member.add_roles(role,reason="Reaction Roles",atomic=True)
File "/home/container/.local/lib/python3.9/site-packages/discord/member.py",line 764,in add_roles
await req(guild_id,user_id,role.id,reason=reason)
AttributeError: 'nonetype' object has no attribute 'id'
我的代码是:
@commands.Cog.listener()
async def on_raw_reaction_add(self,payload):
if payload.member.bot:
pass
else:
with open('reactrole.json') as react_file:
data = json.load(react_file)
for x in data:
if x['emoji'] == payload.emoji.name:
role = discord.utils.get(self.client.get_guild(
payload.guild_id).roles,id=x['role_id'])
await payload.member.add_roles(role)
@commands.Cog.listener()
async def on_raw_reaction_remove(self,payload):
with open('reactrole.json') as react_file:
data = json.load(react_file)
for x in data:
if x['emoji'] == payload.emoji.name:
role = discord.utils.get(self.client.get_guild(
payload.guild_id).roles,id=x['role_id'])
await self.client.get_guild(payload.guild_id).get_member(payload.user_id).remove_roles(role)
我刚刚检查了文档并添加了这些额外的参数,如原因和原子。
如果您知道此问题的解决方案,请回答。 提前致谢。
解决方法
以某种方式无法找到您通过 discord.utils.get
获得的角色,这导致 discord.utils.get
返回 None 对象。
因此,问题在于 reactrole.json
文件中的数据。
如果没有额外的信息(比如 reactrole.json 文件和服务器上的角色),这就是所有可以帮助的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。