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

如何让discord.js机器人在有人@我时自动回复,现有代码不生效如何解决

问题排查与解决方案

你的代码没有触发效果,基本是以下几个原因导致的,按顺序排查修改即可:

  1. 缺少必要的权限与意图配置
    discord.js v13及以上版本要求手动开启Message Content权限才能读取消息内容:
  • 先进入Discord开发者平台的机器人管理页,找到Privileged Gateway Intents分类,打开Message Content Intent开关
  • 初始化客户端时必须声明对应的意图,示例代码:
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent
  ]
});
  1. 匹配逻辑过于严格
    你写的全等匹配只能匹配「只发了ping你、没有其他内容、且ping的是你的用户名而非群昵称」的场景,只要有一点不符合就会触发失败。直接用官方提供的mentionsAPI检测更稳定,完整的事件监听代码如下:
const MY_USER_ID = '723821826291138611';

// 监听消息创建事件
client.on('messageCreate', message => {
  // 过滤机器人发送的消息,避免触发死循环
  if (message.author.bot) return;
  // 检测消息中是否@了你
  if (message.mentions.users.has(MY_USER_ID)) {
    message.channel.send("Hello, sup? ");
  }
});
  1. 代码位置错误
    确认你的逻辑代码是写在messageCreate事件的回调函数内部,写在事件外不会被触发执行。

内容的提问来源于stack exchange,提问作者Irtiza Khan Labib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:27:07