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

如何使用Discord.py跟踪Discord服务器中已创建的邀请链接

Discord机器人统计用户邀请数量并触发阈值操作实现方案

以下以最常用的discord.py(Python生态)为例,操作逻辑也可复用到discord.js等其他语言的Discord机器人库:

1. 前置权限配置

  • 前往Discord开发者后台的机器人设置页,开启Server Members Intent和Guilds Intent权限
  • 邀请机器人进服务器时,勾选Manage Guild、View Audit Log两个权限,否则无法拉取邀请列表数据

2. 手动拉取全量邀请统计代码

from collections import defaultdict

# 替换为你的目标服务器ID
TARGET_GUILD_ID = 1234567890
# 替换为你设置的数量阈值
INVITE_THRESHOLD = 5

# 拉取服务器所有有效邀请
guild = bot.get_guild(TARGET_GUILD_ID)
all_invites = await guild.invites()

# 按创建者维度统计数量
user_invite_counter = defaultdict(int)
for invite in all_invites:
    # 排除无创建者的系统生成邀请
    if invite.inviter:
        user_invite_counter[invite.inviter.id] += 1

# 遍历判断是否触发阈值
for user_id, count in user_invite_counter.items():
    if count >= INVITE_THRESHOLD:
        # 此处插入你要执行的自定义操作
        target_user = guild.get_member(user_id)
        print(f"用户{target_user}的邀请数量已达阈值:{count}")

3. 实时监听邀请创建的自动触发方案

无需轮询拉取,邀请创建时自动统计,性能更高:

@bot.event
async def on_invite_create(invite):
    if not invite.inviter:
        return
    guild = invite.guild
    inviter_id = invite.inviter.id
    # 统计当前用户的有效邀请总数
    current_count = sum(1 for i in await guild.invites() if i.inviter and i.inviter.id == inviter_id)
    if current_count >= INVITE_THRESHOLD:
        # 此处插入你要执行的自定义操作
        print(f"用户{invite.inviter}的邀请数量已达阈值:{current_count}")

注意事项

  • 官方接口默认仅返回当前生效中的邀请链接,如果需要统计已经过期、失效的历史邀请,需要自行搭建本地数据库,每次触发on_invite_create事件时存储对应邀请的创建者、过期时间等信息,统计时从本地库拉取数据即可
  • 若使用discord.js开发,核心逻辑一致,拉取邀请的方法为guild.invites.fetch(),监听事件为inviteCreate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:45:09