如何设置Discord机器人响应消息数组?JS新手求助
Discord机器人消息响应问题修复方案
核心问题分析
你遇到的问题根源是消息匹配逻辑写法错误,比如未统一消息大小写、判断条件逻辑颠倒,或者数组匹配的方式不对,导致要么全响应要么完全没反应。
正确实现代码
以下是能稳定实现“机器人响应指定消息数组”的写法:
1. 基础版(推荐用includes)
// 监听用户发送消息的事件(Discord.js v14+用messageCreate,旧版本用message) client.on('messageCreate', (message) => { // 跳过机器人自己发的消息,避免触发循环 if (message.author.bot) return; // 统一转成小写,避免大小写不匹配导致的识别失败 const userMsg = message.content.toLowerCase(); // 你的潜在输入关键词数组 const potentialInputs = ['你好', 'hello', 'hi', '早上好']; // 判断用户消息是否在目标数组中 if (potentialInputs.includes(userMsg)) { message.reply('收到你的消息啦!😉'); } });
2. indexOf写法(等价实现)
如果一定要用indexOf,注意判断条件是结果不等于-1(找不到元素时indexOf返回-1):
if (potentialInputs.indexOf(userMsg) !== -1) { message.reply('收到你的消息啦!😉'); }
常见错误排查清单
- 未跳过机器人自身消息:如果不写
if (message.author.bot) return;,机器人会触发自己的消息,导致异常或循环 - 大小写不统一:比如数组里存的是"Hello",用户发"hello",
includes会返回false,导致识别失败 - 判断逻辑颠倒:比如写成
if (!potentialInputs.includes(userMsg)),会变成“消息不在数组里才响应”,完全搞反需求 - 事件名错误:Discord.js v14及以上版本用
messageCreate,旧版本用message,事件名写错的话机器人根本不会触发消息监听
内容的提问来源于stack exchange,提问作者Sir Flufficorn
相关产品推荐
相关产品推荐

