You need to enable JavaScript to run this app. 如何让我的bot检测用户发送embed行为,实现selfbot检测踢人功能
优惠活动
大模型
产品
解决方案
定价
更多

如何让我的bot检测用户发送embed行为,实现selfbot检测踢人功能

Discord自机器人检测功能补充逻辑

实现该功能需要补充的核心判断逻辑如下:

  • 排除机器人自身发送的消息,避免误触发规则
  • 排除具备管理员权限的用户、官方服务机器人、webhook发送的消息,避免误踢正常账号
  • 判断消息是否携带嵌入内容(embed)
  • 执行踢人操作前添加异常捕获,避免bot权限不足导致程序崩溃
  • 增加命令处理回调,避免该事件覆盖后续添加的其他命令功能

完整可运行代码如下:

@client.event
async def on_message(message):
    # 跳过机器人自身发送的消息
    if message.author == client.user:
        return
    
    # 跳过管理员、其他服务机器人、webhook消息,若需要检测webhook可删除message.webhook_id相关判断
    if message.author.guild_permissions.administrator or message.author.bot or message.webhook_id:
        return
    
    # 判断消息是否包含embed
    if len(message.embeds) > 0:
        try:
            # 执行踢人操作,可自定义踢人原因
            await message.author.kick(reason="检测到使用自机器人发送嵌入消息")
            # 可选:在当前频道发送踢出提示
            await message.channel.send(f"已踢出用户 {message.author.mention},原因:普通用户禁止发送嵌入消息")
        except Exception as e:
            # 捕获权限不足等异常,可按需添加日志记录逻辑
            print(f"踢出操作失败:{str(e)}")
    
    # 必须保留该行,否则后续编写的其他前缀/斜杠命令会失效
    await client.process_commands(message)

注意:使用前请确认你的bot已经被服务器授予「踢成员」权限,该逻辑默认普通用户无权限发送嵌入消息,仅能检测到通过自机器人/违规接口发送嵌入的普通账号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 12:54:00