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

Python Discord机器人开发求助:检测违规昵称并自动踢出成员

Discord机器人昵称检测与踢出实现方案

1. 将成员信息存入列表

直接创建列表存储成员对象(方便后续踢人操作)或仅昵称,修改你的members命令:

import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.members = True
client = commands.Bot(intents=intents, command_prefix='?')

# 全局列表存储成员对象,便于后续操作
server_members = []

@client.command()
async def members(ctx):
    global server_members
    server_members.clear()  # 清空旧数据避免重复
    for guild in client.guilds:
        for member in guild.members:
            server_members.append(member)
            print(member.display_name)  # 打印昵称
    await ctx.send(f"已收集服务器内{len(server_members)}名成员信息")

client.run("你的机器人令牌")

2. 实现敏感昵称检测与踢出功能

新增命令遍历列表,检查昵称是否包含指定关键词,符合条件则踢出(需确保机器人有踢人权限):

# 定义需检测的敏感词汇/字符
BANNED_KEYWORDS = ["hello", "ЯΛY"]

@client.command()
@commands.has_permissions(kick_members=True)  # 仅允许有踢人权限的用户执行
async def check_and_kick(ctx):
    if not server_members:
        await ctx.send("请先执行`?members`命令收集成员信息")
        return
    
    kicked_total = 0
    for member in server_members:
        # 跳过机器人和服务器所有者
        if member.bot or member == ctx.guild.owner:
            continue
        # 不区分大小写检查昵称是否包含敏感词
        for keyword in BANNED_KEYWORDS:
            if keyword.lower() in member.display_name.lower():
                try:
                    await member.kick(reason=f"昵称含敏感词汇:{keyword}")
                    kicked_total += 1
                    await ctx.send(f"已踢出:{member.display_name}")
                except discord.Forbidden:
                    await ctx.send(f"无法踢出{member.display_name},权限不足")
                break  # 匹配到一个关键词即停止检查该成员
    
    await ctx.send(f"检测完成,共踢出{kicked_total}名成员")

关键注意事项

  • 在Discord开发者平台开启服务器成员特权意图(Server Members Intent),否则无法获取完整成员列表
  • 机器人角色需拥有踢人权限,且角色层级高于被踢成员的角色
  • 可根据需求调整匹配规则:比如启用大小写敏感、使用正则表达式匹配复杂字符等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:30:24