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

如何使用discord.py获取添加Discord机器人的用户?

获取添加Discord机器人的用户(discord.py实现)

Discord没有原生提供“谁添加了机器人”的直接事件,但可以通过两种方式实现需求:

方法一:通过审计日志查询(最常用)

当机器人被加入服务器时,会触发on_guild_join事件,我们可以在这个事件里查询服务器的审计日志,找到“添加机器人”的操作记录,从而获取操作的用户。

代码实现

import discord
from discord.ext import commands

# 启用必要的意图
intents = discord.Intents.default()
intents.guilds = True
intents.members = True  # 必须开启,否则无法获取用户信息

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.event
async def on_guild_join(guild):
    # 查询最近1条添加机器人的审计日志
    async for entry in guild.audit_logs(action=discord.AuditLogAction.bot_add, limit=1):
        # 输出结果,也可以写入数据库或做其他处理
        print(f"机器人被用户 {entry.user.name}(ID: {entry.user.id})添加到服务器 {guild.name}")

# 替换成你的机器人令牌
bot.run('YOUR_BOT_TOKEN')

注意事项

  • 必须在Discord开发者后台的机器人设置里开启「服务器成员意图」(Privileged Gateway Intents下的Server Members Intent)
  • 机器人需要被授予查看审计日志(View Audit Log)的权限,否则无法查询审计日志内容

方法二:自定义邀请链接追踪(适合精准场景)

如果需要追踪每个邀请的来源,可以在生成机器人邀请链接时添加state参数传递自定义标识,再通过OAuth2回调获取用户信息。这种方式需要搭建web服务,步骤相对复杂:

  1. 生成带state的邀请链接:https://discord.com/oauth2/authorize?client_id=你的机器人ID&permissions=所需权限码&scope=bot&state=自定义追踪标识
  2. 搭建web服务接收Discord的OAuth2回调,在回调中提取用户信息和state参数,以此记录添加机器人的用户

这种方式适合有特定追踪需求的场景,一般情况下方法一足够满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 08:15:41