构建一个 Discord 机器人来向特定用户发送消息 - AttributeError: 'NoneType' 对象没有属性 'send'

时间:2020-12-19 16:58:54

标签: python discord.py

总的来说,我是 discord.py 和 Python 编程的新手。我正在尝试编写一个机器人,它可以通过对 on_message 事件做出反应来 DM 的用户(比如输入“发送 DM”,然后是发送给那个人的 DM。)但是当我尝试要获取用户,结果为:AttributeError:'NoneType' object has no attribute 'send'。我的猜测是它必须对我要带走的人的 ID 做一些事情,但我不知道它有什么问题。即使我非常确定这个 ID 确实存在(我不能复制错误的 ID 对吗?右键单击用户名,然后弹出列表末尾的“复制 ID”选项.. .) 如果我让机器人向消息的作者(也就是我自己)发送一个 DM,它就完全没问题(也许是因为代码不涉及获取 ID。)

这是我的代码:

@client.event
async def on_message(message):
  content = message.content
  if message.author == client.user:
     return
  
  #DM'd users
  if content == 'send a DM!':
     user = client.get_user(<the user's ID here, it's an int>)
     await user.send('hello')
     await message.author.send('hello') #it works when sending myself a DM
  await client.process_command(message)

通知我错误的完整回复是:

Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\X100e\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\client.py", line 333, in _run_event
    await coro(*args, **kwargs)
  File "c:/Users/X100e/Documents/code/Python/bot.py", line 73, in on_message
    await user.send('hello')
AttributeError: 'NoneType' object has no attribute 'send'

希望我能就如何解决这个问题提供一些建议!

1 个答案:

答案 0 :(得分:1)

您尝试的用户只是 None,nonetype 没有任何属性,为了解决您需要启用意图的问题,here's how

还请记住,您需要 intents.members,因此您还需要在 developer portal 中启用它们,第一个链接中也提供了指南。