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

Discord.js(v13) 词过滤机器人遇DiscordAPIError: Unknown Message问题求助

问题修复方案

问题原因分析

  1. 重复回复:你的代码在遍历不良词汇列表时,每循环一次就执行一次消息删除和回复操作,不管当前消息是否匹配该词汇。只要列表里有N个词汇,就会触发N次回复,导致重复发送。
  2. DiscordAPIError: Unknown Message:第一次循环删除消息后,消息已经不存在,后续循环再次调用message.delete()时,尝试删除已被移除的消息,就会触发这个错误。

修复后的代码

client.on("messageCreate", message => {
  if (message.author.bot) return;

  const words = ["word1", "word2"];
  // 检查消息是否包含任意不良词汇
  const hasBadWord = words.some(word => 
    message.content.toLowerCase().includes(word.toLowerCase())
  );

  if (hasBadWord) {
    // 先发送回复再删除消息,确保操作顺序,同时捕获可能的错误
    message.channel.send(`${message.author}, your message has been deleted for swearing!`)
      .then(() => message.delete())
      .catch(err => console.error("操作异常:", err));
  }
});

关键修复点

  • 用Array.some()替代原始循环:只要匹配到任意一个不良词汇就停止遍历,返回true,既高效又避免不必要的循环操作。
  • 仅在确认存在不良词汇时执行一次回复+删除:彻底解决重复回复问题。
  • 异步操作顺序处理:通过then()确保先发送回复再删除消息,同时用catch()捕获操作中的异常,避免程序崩溃。
  • 移除循环内的重复删除/回复操作:从根源上消除重复删除已不存在消息导致的API错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:43:25