You need to enable JavaScript to run this app. 如何用discord.py实现他人触发!suggest命令时机器人向我发送DM
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 17:36:04