总的来说,我是 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'
希望我能就如何解决这个问题提供一些建议!
答案 0 :(得分:1)
您尝试的用户只是 None
,nonetype 没有任何属性,为了解决您需要启用意图的问题,here's how
还请记住,您需要 intents.members
,因此您还需要在 developer portal 中启用它们,第一个链接中也提供了指南。