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

如何设置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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:52:10