如何在discord.py中让Bot上线时自动获取打印guild邀请链接
在discord.py中实现Bot上线自动获取服务器邀请链接
核心思路
利用discord.py的on_ready事件(Bot完成登录初始化后触发),遍历Bot加入的所有服务器,调用API获取每个服务器的所有邀请链接并打印。
前置要求
- Bot在目标服务器中需拥有创建邀请或管理服务器权限,否则无法获取邀请链接。
- 在Discord开发者门户的Bot页面,确保启用
GuildsIntent(默认已启用,若未开启需手动勾选)。
完整代码实现
import discord from discord.ext import commands # 配置Intent,确保能正常获取服务器数据 intents = discord.Intents.default() intents.guilds = True # 显式启用服务器相关Intent bot = commands.Bot(command_prefix="!", intents=intents) @bot.event async def on_ready(): print(f"已登录:{bot.user.name} (ID: {bot.user.id})") # 遍历所有Bot加入的服务器 for guild in bot.guilds: print(f"\n=== 服务器:{guild.name} (ID: {guild.id}) ===") try: # 获取当前服务器的所有邀请链接 invites = await guild.invites() if invites: for idx, invite in enumerate(invites, 1): print(f"{idx}. 链接:{invite.url}") print(f" 创建者:{invite.inviter.name if invite.inviter else '未知'}") print(f" 剩余使用次数:{'无限' if invite.max_uses == 0 else invite.max_uses}") else: print("该服务器暂无有效邀请链接") except discord.Forbidden: print("权限不足:Bot无法获取该服务器的邀请链接") except Exception as err: print(f"获取失败:{str(err)}") # 替换为你的Bot Token bot.run("你的Bot令牌")
关键说明
on_ready事件:Bot完全上线后仅触发一次,适合执行初始化类任务。guild.invites():异步方法,返回当前服务器的所有邀请对象列表,每个对象包含url(邀请链接)、inviter(创建者)等属性。- 异常处理:针对权限不足、网络错误等情况捕获异常,避免Bot意外崩溃。
内容的提问来源于stack exchange,提问作者Meme.rip
相关产品推荐
相关产品推荐

