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

Discord机器人代码无响应问题:发送“hello”未触发预期“hi”回复

解决Discord.js机器人不响应"hello"消息的问题

看起来你的代码逻辑本身没问题,但有两个关键细节没处理到位,导致机器人完全没反应:

1. 缺少MessageContent特权意图

在Discord.js v14版本中,读取消息内容需要明确声明MessageContent意图,而且这是一个"特权意图",必须在Discord开发者后台手动开启:

  • 首先修改客户端初始化代码,添加GatewayIntentBits.MessageContent:
const client = new Client({ 
  intents: [ 
    GatewayIntentBits.Guilds, 
    GatewayIntentBits.GuildMessages, 
    GatewayIntentBits.MessageContent // 新增这个意图
  ] 
});
  • 然后登录Discord开发者后台,找到你的机器人应用,进入"Bot"页面,在"Privileged Gateway Intents"下开启"Message Content Intent"开关并保存更改。

2. 未正确传入机器人Token

你代码最后一行的client.login(token)里,token变量并没有定义,机器人根本没法成功登录(只是没报错提示你而已)。你需要把机器人的Token替换进去:

// 方式1:直接传入Token字符串
client.login("你的机器人Token");

// 方式2:先定义变量再传入
const token = "你的机器人Token";
client.login(token);

额外检查项

  • 确保机器人已经加入了你发送"hello"消息的服务器,并且拥有发送消息的权限(在服务器角色设置里给机器人分配Send Messages权限);
  • 确认没有泄露机器人Token,这是机器人的唯一身份凭证。

修改后的完整代码示例

const { Client, GatewayIntentBits } = require("discord.js");
// 替换成你的机器人Token
const token = "你的机器人Token字符串";

const client = new Client({ 
  intents: [ 
    GatewayIntentBits.Guilds, 
    GatewayIntentBits.GuildMessages, 
    GatewayIntentBits.MessageContent 
  ] 
});

client.on("ready", () => { 
  console.log(`${client.user.tag} is online, ready for action! (Ping: ${Math.round(client.ws.ping)}ms)`);
});

client.on("messageCreate", (message) => { 
  if (message.content === "hello") { 
    message.reply("hi"); 
  }
});

client.login(token);

做完这些修改后重启机器人,再发送"hello"应该就能收到预期的"hi"回复了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 12:57:29