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

如何开发自动审核Bot,对发送服务器邀请链接的成员发出警告

Discord 自动邀请链接审核系统实现方案

你给出的是该功能的简化伪代码,完整可运行的实现逻辑如下,基于discord.py v2.x版本开发:

  • 核心逻辑为监听服务器内所有消息,跳过Bot自身发送的内容避免循环触发
  • 用正则匹配消息内容中的Discord邀请链接,常见格式为discord.gg/xxx、discord.com/invite/xxx
  • 匹配到违规内容后,删除违规消息,同时对发送成员发出警告,可根据需求选择频道公开警告、私信警告,也可扩展多次违规自动禁言、踢出的逻辑

完整代码示例:

import re
import discord
from discord.ext import commands

# 匹配Discord邀请链接的正则规则
INVITE_PATTERN = re.compile(r"(discord\.gg/[a-zA-Z0-9]+|discord\.com/invite/[a-zA-Z0-9]+)", re.IGNORECASE)

# 配置Bot权限,v2.x版本需要手动开启消息内容读取权限
intents = discord.Intents.default()
intents.message_content = True
intents.members = True

client = commands.Bot(command_prefix="!", intents=intents)

@client.event
async def on_ready():
    print(f"Bot已登录,当前账号:{client.user}")

@client.event
async def on_message(message):
    # 跳过Bot自己发的消息
    if message.author == client.user:
        return
    # 可选配置:跳过管理员/服务器所有者的消息,不需要可注释掉
    # if message.author.guild_permissions.administrator or message.author == message.guild.owner:
    #     await client.process_commands(message)
    #     return

    # 匹配消息中的邀请链接
    if INVITE_PATTERN.search(message.content):
        # 删除违规消息
        await message.delete()
        # 频道内公开警告,5秒后自动删除避免刷屏
        warn_msg = await message.channel.send(f"{message.author.mention} 本服务器禁止发送其他服务器邀请链接,本次给予警告,多次违规将进行禁言/踢出处理。")
        await warn_msg.delete(delay=5)
        # 给用户发私信警告,用户关闭私信则跳过
        try:
            await message.author.send("你在服务器内发送了违规的邀请链接,已给予警告,后续请遵守服务器规则。")
        except:
            pass
    
    # 处理Bot其他命令
    await client.process_commands(message)

# 填入你的Bot Token即可运行
client.run("你的Bot Token")

注意事项:

  1. 运行前需要在Discord开发者后台的Bot设置里开启Message Content Intent权限,否则无法读取消息内容
  2. 邀请Bot进服务器的时候需要给管理消息、发送消息等对应权限,否则无法删除违规消息和发送警告
  3. 可以根据需求扩展功能,比如接入违规次数统计、自动禁言/踢人阈值配置、违规日志上报到管理频道等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:21:00