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

如何编写Discord机器人实现仅放行指定词upgrade的消息过滤

Discord机器人upgrade关键词消息过滤实现

需求说明

开发Discord机器人需实现以下消息过滤规则:

  • 仅放行内容完全由指定词upgrade构成的消息,支持单次出现、多次重复的合法场景(例如upgrade upgrade这类重复关键词的消息不得删除)
  • 匹配时忽略消息内的空格、大小写差异
  • 其余所有不符合规则的消息全部删除

原有代码问题排查

两版代码都存在明确逻辑错误:

  1. 第一版逻辑完全倒置:判断条件为「消息去空格转小写后不含upgrade就跳过删除」,实际运行效果是只要消息带upgrade关键词就会被删除,且无法识别混入其他内容的违规消息,完全不符合需求。
  2. 第二版匹配范围过窄:仅判断去空格转小写后的内容是否完全等于单个upgrade字符串,所有重复出现upgrade的合法消息(比如两个upgrade拼接的内容)都会被判定为违规删除,覆盖不了重复关键词的场景。

正确实现代码

核心逻辑是先对消息内容做归一化处理,再通过正则严格校验内容是否仅由1次或多次重复的upgrade构成,无其他多余字符:

client.on("message", (message) => {
  // 内容归一化:移除所有空白字符、统一转小写
  const normalizedMsg = message.content.replace(/\s/g, '').toLowerCase();
  // 正则校验:整段内容必须是1次及以上的upgrade连续重复,无其他字符
  const isLegal = /^(upgrade)+$/.test(normalizedMsg);
  // 违规消息直接删除
  if (!isLegal) {
    message.delete();
  }
});

匹配规则说明

正则/^(upgrade)+$/的匹配逻辑:

  • ^ 锁定字符串起始位置
  • (upgrade)+ 匹配连续出现1次及以上的upgrade字符串
  • $ 锁定字符串结束位置

该规则可以保证归一化后的内容不存在任何除重复upgrade外的多余字符,实际匹配效果:

  • 放行场景:upgrade、UPGRADE、Upgrade Upgrade、upgrade upgrade UPGRADE(任意空格、任意大小写、任意重复次数均合法)
  • 删除场景:upgrade hello、upgrad、upgrade123、helloupgrade(混入其他内容、关键词拼写错误均判定为违规)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:09:39