我正在尝试创建一个机器人,它会在拒绝规则后发送给 DM 用户。
@client.event
async def on_reaction_add(reaction, user):
regulamin_channel = client.get_channel(864135527963820032)
if reaction.emoji == "?":
Role = discord.utils.get(user.guild.roles, name="Member")
Role2 = discord.utils.get(user.guild.roles, name="Apply")
await user.add_roles(Role)
await user.remove_roles(Role2)
if reaction.emoji == "?":
await user.send("You must accept the rules")
不幸的是,我收到此错误:
<块引用>忽略 on_reaction_add 中的异常 回溯(最近一次调用最后一次): 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py”,第 343 行,在 _run_event 中 等待 coro(*args, **kwargs) 文件“E:\Moje rzeczy\BOT\bot.py”,第 47 行,在 on_reaction_add 中 await user.send("你必须接受规则") NameError:未定义名称“ClientUser” 忽略 on_reaction_add 中的异常 回溯(最近一次调用最后一次): 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py”,第 343 行,在 _run_event 中 等待 coro(*args, **kwargs) 文件“E:\Moje rzeczy\BOT\bot.py”,第 47 行,在 on_reaction_add 中 await user.send("你必须接受规则") 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\abc.py”,第 1013 行,发送 channel = await self._get_channel() 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\member.py”,第 299 行,在 _get_channel ch = 等待 self.create_dm() 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\member.py”,第 142 行,一般情况 返回等待 getattr(self._user, x)(*args, **kwargs) AttributeError: 'ClientUser' 对象没有属性 'create_dm' 忽略 on_reaction_add 中的异常 回溯(最近一次调用最后一次): 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py”,第 343 行,在 _run_event 中 等待 coro(*args, **kwargs) 文件“E:\Moje rzeczy\BOT\bot.py”,第 47 行,在 on_reaction_add 中 await user.send("你必须接受规则") 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\abc.py”,第 1013 行,发送 channel = await self._get_channel() 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\member.py”,第 299 行,在 _get_channel ch = 等待 self.create_dm() 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\member.py”,第 142 行,一般情况 返回等待 getattr(self._user, x)(*args, **kwargs) AttributeError: 'ClientUser' 对象没有属性 'create_dm' 忽略 on_reaction_add 中的异常 回溯(最近一次调用最后一次): 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py”,第 343 行,在 _run_event 中 等待 coro(*args, **kwargs) 文件“E:\Moje rzeczy\BOT\bot.py”,第 47 行,在 on_reaction_add 中 await user.send("你必须接受规则") 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\abc.py”,第 1013 行,发送 channel = await self._get_channel() 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\member.py”,第 299 行,在 _get_channel ch = 等待 self.create_dm() 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\member.py”,第 142 行,一般情况 返回等待 getattr(self._user, x)(*args, **kwargs) AttributeError: 'ClientUser' 对象没有属性 'create_dm' 忽略 on_reaction_add 中的异常 回溯(最近一次调用最后一次): 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py”,第 343 行,在 _run_event 中 等待 coro(*args, **kwargs) 文件“E:\Moje rzeczy\BOT\bot.py”,第 47 行,在 on_reaction_add 中 await user.send("你必须接受规则") NameError:未定义名称“ClientUser” 忽略 on_reaction_add 中的异常 回溯(最近一次调用最后一次): 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py”,第 343 行,在 _run_event 中 等待 coro(*args, **kwargs) 文件“E:\Moje rzeczy\BOT\bot.py”,第 47 行,在 on_reaction_add 中 await user.send("你必须接受规则") 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\abc.py”,第 1013 行,发送 channel = await self._get_channel() 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\member.py”,第 299 行,在 _get_channel ch = 等待 self.create_dm() 文件“C:\Users\Mikołaj\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\member.py”,第 142 行,一般情况 返回等待 getattr(self._user, x)(*args, **kwargs) AttributeError: 'ClientUser' 对象没有属性 'create_dm'。
答案 0 :(得分:0)
方法 .send() 不在 ClientUser 上,它以用户身份传递给函数,在文档中这是 ClientUser https://discordpy.readthedocs.io/en/stable/api.html#clientuser
但是您需要获取要传递给函数的 User 对象或将其获取到某处 https://discordpy.readthedocs.io/en/stable/api.html#discord.User