You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向命令发起者发送DM?Discord机器人无报错未发DM问题

Discord机器人无法发送DM的问题排查与解决

这种情况我碰到好多次了!明明代码没报错,但就是收不到DM,大概率是几个常见的小问题,我帮你捋一捋:

首先检查代码参数的问题

你当前的代码里把命令函数的参数写成了message,但用@client.command装饰器的时候,默认第一个参数是Context(上下文)对象,而不是Message对象。虽然Context也有author属性,但有时候会因为参数命名的混淆导致逻辑异常,更规范的写法应该是用ctx作为参数:

@client.command(aliases=['manage'])
async def oversee(ctx):
    await ctx.author.send('Hello World!')

然后排查权限与设置问题

即使代码改对了,还有几个Discord层面的设置会阻止DM发送:

  • 你和机器人必须在同一个Discord服务器里:Discord的规则是,机器人只能给和它共享至少一个服务器的用户发DM(除非用户主动给机器人发过消息)
  • 检查服务器的隐私设置:进入服务器设置→「隐私安全」,确认「允许来自服务器成员的直接消息」是开启状态
  • 检查你自己的隐私设置:打开用户设置→「隐私与安全」→「服务器隐私设置」,确保允许接收来自该服务器成员的DM
  • 确认你没有屏蔽机器人:去Discord的「隐私设置」→「已屏蔽的用户」里看看有没有机器人的名字

最后确认机器人的运行状态

  • 检查PyCharm的控制台,有没有显示机器人成功登录的日志(比如Logged in as [你的机器人名称]),如果没有,说明机器人根本没连上Discord,自然发不了消息
  • 确认你用对了命令前缀:比如你的机器人前缀是!,那要发送!manage或者!oversee才能触发命令,直接打manage是没用的

内容的提问来源于stack exchange,提问作者D.sLyak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:47:49