如何开发自动审核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")
注意事项:
- 运行前需要在Discord开发者后台的Bot设置里开启
Message Content Intent权限,否则无法读取消息内容- 邀请Bot进服务器的时候需要给
管理消息、发送消息等对应权限,否则无法删除违规消息和发送警告- 可以根据需求扩展功能,比如接入违规次数统计、自动禁言/踢人阈值配置、违规日志上报到管理频道等
内容的提问来源于stack exchange,提问作者ShadowNotFake
相关产品推荐
相关产品推荐

