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

Discord机器人是否可删除句子中间包含指定关键词的消息?

Discord Bot 特定词汇消息删除实现方案

功能可行性结论

  • Discord Bot 完全支持删除包含任意位置特定词汇的消息,核心只需要对消息全文做子串匹配即可,无需限制词汇的出现位置。

常见警告触发原因

你之前的代码运行弹出警告,大概率是触发了以下几个常见问题:

  • 未开启必要权限:需要同时完成两处权限配置,一是在 Discord 开发者后台的机器人设置页开启 Message Content Intent 权限,二是给机器人在对应服务器授予「管理消息」权限,缺少任意一项都会触发权限类警告。
  • 匹配逻辑错误:部分实现误用了全句匹配逻辑,或者没有做大小写兼容,导致匹配失效或者运行报错。

正确实现代码示例(基于 discord.py v2.x)

import discord
from discord.ext import commands
import re # 全词匹配时需要引入

# 配置机器人权限
intents = discord.Intents.default()
intents.message_content = True # 必须开启,否则无法读取消息内容
bot = commands.Bot(command_prefix="!", intents=intents)

# 定义违禁词列表
BANNED_WORDS = ["违禁词1", "违禁词2", "违禁词3"]

@bot.event
async def on_message(message):
    # 跳过机器人自身发送的消息,避免循环触发
    if message.author == bot.user:
        return
    
    msg_content = message.content.lower()
    # 子串匹配:任意位置出现违禁词即触发,适配句子中间的场景
    for word in BANNED_WORDS:
        if word.lower() in msg_content:
            await message.delete()
            # 可选:发送临时提示,3秒后自动删除
            await message.channel.send(f"{message.author.mention} 您的消息包含违规内容,已被删除。", delete_after=3)
            break
        # 若需要全词匹配,替换上面的if判断为以下代码即可
        # if re.search(rf'\b{re.escape(word.lower())}\b', msg_content):
        #     await message.delete()
        #     await message.channel.send(f"{message.author.mention} 您的消息包含违规内容,已被删除。", delete_after=3)
        #     break

    await bot.process_commands(message)

bot.run("你的机器人Token")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:36:03