如何使用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
相关产品推荐
相关产品推荐

