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

Discord担保频道消息过滤Bot开发及代码修复求助

Discord担保频道Bot修复方案

问题核心需求

  • 自动删除担保频道内不以「Vouch」/「vouch」(不区分大小写)开头的消息,保留该词之后的内容
  • 拥有指定角色(如示例中的「Obese」角色)的用户,消息不受任何过滤
  • 当前代码可运行,但无法监控和删除目标消息,已开启消息内容权限并赋予Bot消息管理角色

原代码问题分析

  1. 频道ID使用无效占位符'vouch-channel',未替换为实际频道ID
  2. 角色豁免逻辑位置错误:仅在消息不符合开头规则时才检查角色,导致有豁免角色的用户发非vouch开头消息才被放过,实际应优先豁免
  3. 未使用await处理异步的message.delete()操作(Discord.js v14+要求)
  4. 变量content未声明,存在全局变量污染风险
  5. 逻辑顺序错误:先检查内容再检查角色,不符合豁免优先的需求

修复后的代码

const express = require("express");
const app = express();

app.listen(3000, () => {
  console.log("Project is running!");
});
app.get("/", (req, res) => {
  res.send("Dough Bot Here!");
});

const { Client, GatewayIntentBits } = require("discord.js");
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
  ],
});

// 替换为你的实际担保频道ID
const VOUCH_CHANNEL_ID = "你的频道ID";
// 替换为你的豁免角色名称
const EXEMPT_ROLE_NAME = "Obese";

client.on("messageCreate", async (message) => {
  // 跳过Bot自身消息,避免循环触发
  if (message.author.bot) return;

  // 仅处理指定担保频道的消息
  if (message.channel.id !== VOUCH_CHANNEL_ID) return;

  // 优先检查:用户拥有豁免角色则直接跳过所有过滤
  if (message.member.roles.cache.some(role => role.name === EXEMPT_ROLE_NAME)) {
    return;
  }

  // 不区分大小写检查消息开头
  const lowerContent = message.content.toLowerCase();
  if (!lowerContent.startsWith("vouch")) {
    // 异步删除消息,需加await并捕获错误
    await message.delete().catch(err => {
      console.error("删除消息失败:", err);
    });
    return;
  }

  // 可选:如需移除开头的vouch并保留后续内容,启用以下代码
  // const cleanedContent = message.content.replace(/^vouch/i, "").trim();
  // if (cleanedContent !== message.content) {
  //   await message.edit(cleanedContent);
  // }
});

client.login(process.env.token);

关键修复点说明

  • 优先角色豁免:先检查用户是否有指定角色,有则直接跳过所有过滤逻辑,符合需求
  • 异步处理删除:用await调用message.delete(),并添加错误捕获避免Bot崩溃
  • 替换占位符:明确标注需要替换的频道ID和角色名称,避免使用无效占位符
  • 跳过Bot消息:防止Bot处理自身消息引发异常循环
  • 变量声明规范:用const声明lowerContent,避免全局变量污染
  • 可选内容清理:添加了可选的消息编辑逻辑,可移除开头的vouch并保留后续内容(按需启用)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:07:29