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

Discord bot开发:如何删除含特定词消息及退出服务器时对应发送的消息

Discord Bot 需求实现方案(以discord.py为例)

前置准备

首先需要提前存储「服务器ID」和「该服务器加入时你发的通知消息ID」的映射关系,是实现第二个功能的基础:

  • 不需要持久化的话直接用内存字典存储即可
  • 需要重启Bot后数据不丢失可以存到本地JSON文件或者轻量数据库SQLite中

功能一:删除包含特定关键词的消息

通过监听消息发送事件匹配关键词,命中后执行删除操作即可,Bot需要提前开启开发者后台的Message Content Intent权限,同时在对应服务器拥有「管理消息」权限:

# 替换为你需要屏蔽的关键词列表
BANNED_WORDS = ["违规词1", "违规词2"]

@bot.event
async def on_message(message):
    # 跳过Bot自己发送的消息,避免循环触发
    if message.author == bot.user:
        return
    # 不区分大小写匹配关键词
    for word in BANNED_WORDS:
        if word in message.content.lower():
            await message.delete()
            # 可选:发送10秒后自动销毁的提示
            await message.channel.send(f"{message.author.mention} 你的消息包含违禁关键词已被删除", delete_after=10)
            break
    # 必须保留这行,否则其他Bot指令会失效
    await bot.process_commands(message)

功能二:退出服务器时删除对应加入通知消息

第一步:修改原有加入服务器的逻辑,存储映射关系

# 存储结构:{服务器ID: (通知所在频道ID, 通知消息ID)}
guild_notice_map = {}
# 替换为你自己的开发者服务器接收加服通知的频道ID
DEV_NOTICE_CHANNEL_ID = 1234567890

@bot.event
async def on_guild_join(guild):
    notice_channel = bot.get_channel(DEV_NOTICE_CHANNEL_ID)
    # 发送通知同时拿到消息对象
    notice_msg = await notice_channel.send(f"Bot已加入新服务器:{guild.name},ID:{guild.id}")
    # 存入映射关系,用持久化存储的话这里同步写入文件/数据库
    guild_notice_map[guild.id] = (DEV_NOTICE_CHANNEL_ID, notice_msg.id)

第二步:监听退出服务器事件,删除对应通知

@bot.event
async def on_guild_remove(guild):
    if guild.id in guild_notice_map:
        channel_id, msg_id = guild_notice_map.pop(guild.id)
        notice_channel = bot.get_channel(channel_id)
        try:
            target_msg = await notice_channel.fetch_message(msg_id)
            await target_msg.delete()
            # 用持久化存储的话这里同步删除对应记录
        except:
            # 捕获消息已被提前删除等异常,不抛出错误
            pass

补充说明

如果使用其他Discord Bot框架(比如discord.js)逻辑完全一致,仅语法不同:

  • 监听消息创建事件匹配关键词执行删除
  • 监听服务器加入事件存储映射关系
  • 监听服务器退出事件删除对应通知消息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:54:04