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

Discord机器人运行hack恶搞命令发DM时报Cannot send messages to this user错误

错误原因
  • 服务器隐私配置限制:即使用户个人全局开放了私信权限,若用户在命令触发的对应服务器中关闭了「允许来自此服务器成员的私信」选项,机器人作为服务器内的实体也无法向其发送私信。
  • 机器人被触发用户拉黑:若触发命令的用户主动拉黑了该机器人账号,所有私信发送请求都会被Discord API直接拒绝。
  • 网关意图配置缺失:使用discord.js v13及以上版本时,若未在Discord开发者后台开启GUILD_MEMBERS等相关网关意图,会导致用户对象操作受限,无法正常发起私信。
  • Discord API防滥用限制:新注册的机器人账号、短时间内大量发送私信的账号会被Discord临时限制私信发送能力,属于平台反垃圾消息的常规限制。
  • 代码上下文对象异常:确认代码上下文里的msg.author为有效用户对象,若之前的异步逻辑未正确处理消息对象,可能出现属性缺失导致发送失败。
修复方案
  • 补充降级兜底逻辑,私信发送失败时自动 fallback 到当前频道发送仅触发用户可见的临时消息,参考代码如下:
msg.author.send(`Name:${taggedUser.username},
ID:${taggedUser.id}
IP Address:${response}`)
.catch(err => {
  console.error(err)
  // 私信失败时发送临时提示
  msg.reply({
    content: "无法向你发送私信,请检查当前服务器的私信权限设置后重试",
    ephemeral: true
  })
})
  • 引导触发命令的用户检查对应服务器的私信设置:路径为服务器设置 → 隐私设置 → 允许来自服务器成员的私信,打开该开关即可正常接收机器人私信。
  • 检查Discord开发者后台的机器人配置,确认已经开启GUILDS、GUILD_MEMBERS、GUILD_MESSAGES等必要的网关意图,符合新版本discord.js的权限要求。
  • 控制机器人私信发送频率,短时间内不要批量发起私信请求,避免触发平台防滥用限制导致功能被冻结。

内容的提问来源于stack exchange,提问作者lelbro420

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:12:01