如何用discord.py实现他人触发!suggest命令时机器人向我发送DM
Discord.py 私信接收建议功能实现方案
错误原因说明
你找到的第二版代码为discord.py v0.16.x的旧版本语法,当前主流的v1.x/v2.x版本中已废弃以下特性:
client.get_user_info方法被替换为client.get_user(同步从缓存读取用户)和client.fetch_user(异步调用API拉取用户)client.send_message方法被移除,统一改为对用户/频道对象直接调用.send()方法发送消息
实现代码
首先在代码全局配置区域定义你的Discord用户ID(替换为你自己的数字ID,使用整数类型不要加引号):
MY_USER_ID = 123456789012345678
将原有触发逻辑替换为以下代码:
if message.content.startswith('!suggest'): # 优先从缓存读取你的用户信息,无需等待 me = client.get_user(MY_USER_ID) # 缓存未命中时调用API拉取 if not me: me = await client.fetch_user(MY_USER_ID) try: # 发送建议内容,自带提交用户溯源信息 await me.send(f"收到用户 {message.author}(ID:{message.author.id})提交的建议:\n{message.content}") # 可选:给提交者反馈提交成功 await message.channel.send("建议提交成功,感谢反馈!") except: # 发送失败时的兜底提示(通常为你关闭了陌生人私信权限) await message.channel.send("提交失败,请稍后重试")
优化说明
client.get_user会从本地缓存读取用户信息,无需每次调用API,符合你不需要重复拉取固定用户信息的需求- 新增的溯源信息可以帮你定位提交建议的用户,避免收到匿名建议无法跟进
- 异常捕获可以避免机器人因无法发送私信直接崩溃
内容的提问来源于stack exchange,提问作者B Lab
相关产品推荐
相关产品推荐

