单击表情时不会向用户发送 DM(直接消息)

时间:2021-07-12 14:49:24

标签: python discord.py roles

我正在尝试创建一个机器人,它会在拒绝规则后发送给 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'。

1 个答案:

答案 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