如何为 Discord 机器人添加基础自动回复功能

1次阅读

如何为 Discord 机器人添加基础自动回复功能

本文介绍如何在基于 discord.js v14 的基础机器人中,通过监听 messageCreate 事件实现关键词触发的自动回复,支持大小写不敏感匹配,并提供可扩展的实践方案。

本文介绍如何在基于 discord.js v14 的基础机器人中,通过监听 `messagecreate` 事件实现关键词触发的自动回复,支持大小写不敏感匹配,并提供可扩展的实践方案。

要在 Discord 机器人中实现“用户发送 Hai,机器人自动回复 Halo”这类基础自动响应,核心在于正确注册并处理 messageCreate 事件——这是 discord.js v14 中替代已弃用 message 事件的标准方式。

首先,请确保你的机器人具备读取消息内容的权限。在 Client 初始化时,需启用对应网关意图(gateway Intents):

const { Client, Events, GatewayIntentBits } = require('discord.js'); const { Token } = require('./config.json');  const client = new Client({   intents: [     GatewayIntentBits.Guilds,     GatewayIntentBits.GuildMessages,      // ✅ 必须启用:接收消息事件     GatewayIntentBits.MessageContent,     // ✅ 若需读取消息文本(v14 默认受限,必须显式声明)   ], });

⚠️ 注意:从 discord.js v14 起,MessageContent 意图需在开发者门户中手动开启(Discord Developer Portal → Bot → Privileged Gateway Intents),否则 message.content 将为空字符串,导致关键词匹配失效。

接下来,在 client.on(“ready”, …) 之后添加自动回复逻辑:

client.on("messageCreate", (message) => {   // 过滤掉机器人自己发送的消息,避免自触发循环   if (message.author.bot) return;    const content = message.content.trim();   const lowerContent = content.toLowerCase();    if (lowerContent === 'hai' || lowerContent.includes('hai')) {     message.reply({ content: 'Halo!' });   } });

示例效果

  • 用户发送 Hai → 机器人回复 Halo!
  • 用户发送 Apa kabar, hai? → 匹配成功,回复 Halo!
  • 用户发送 HALO → 不匹配(因未包含 ‘hai’),无响应

? 进阶建议(提升健壮性与可维护性)

  • 使用 === 精确匹配(如 lowerContent === ‘hai’)替代 includes(),避免误触发(例如 bahaya 中含 hai);
  • 将关键词与回复封装为映射对象,便于后续扩展:
const autoReplies = {   'hai': 'Halo!',   'halo': 'Hai juga!',   'terima kasih': 'Sama-sama ?', };  client.on("messageCreate", (message) => {   if (message.author.bot) return;   const key = message.content.trim().toLowerCase();    if (autoReplies[key]) {     message.reply({ content: autoReplies[key] });   } });

最后,别忘了保留原有的 client.login(token) 调用。完整流程无需重启服务即可生效(开发阶段可结合 nodemon 提升调试效率)。

总结:自动回复的本质是「监听 → 过滤 → 匹配 → 响应」四步闭环。只要确保意图配置正确、权限开启到位、逻辑规避自触发,即可快速构建可靠的基础交互能力。后续可进一步集成正则表达式、模糊匹配或自然语言处理模块以支持更复杂的场景。

text=ZqhQzanResources