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
相关产品推荐
相关产品推荐

