Discord.py机器人无法私信用户,无报错也无功能响应如何解决?
问题修复说明
核心错误点
- 字符串小写转换操作未执行:代码中
message.content.lower == "hey"里的lower是方法,必须添加()调用才能得到小写后的消息内容,未加括号时对比的是方法对象本身和"hey"字符串,永远不满足判断条件,所以功能无触发。 - 表情参数格式错误:
add_reaction不能直接识别:b:格式的表情别名,需要传入对应emoji的Unicode值🅱️,如果是服务器自定义表情则需要传入表情对象。
额外校验项
确认你已在Discord开发者平台的机器人设置页开启Message Content Intent权限,discord.py 2.0及以上版本必须开启该权限才能读取用户发送的消息文本,否则message.content会始终为空。同时确认机器人拥有对应频道添加反应的权限,且目标用户未关闭服务器成员私信权限,避免私信发送失败。
修复后代码
@client.event async def on_message(message): if message.author == client.user: return if message.content.lower() == "hey": await message.author.send("heyo") await message.add_reaction("🅱️") await client.process_commands(message)
内容的提问来源于stack exchange,提问作者kiddo42069
相关产品推荐
相关产品推荐

