discord.py列出机器人所在Guild/服务器的代码无效如何解决
问题分析
- 你在
on_ready事件函数内定义了serverList()异步函数,但从未调用该函数,遍历打印服务器ID的逻辑完全不会被执行。 - 代码缩进不符合Python语法规范,
serverList函数的缩进层级错误,存在语法问题。 - discord.py 2.0及以上版本默认关闭部分敏感意图,若未手动开启Guild相关意图,
client.guilds无法获取到完整的已加入服务器列表。
修改后代码
import discord # 配置所需意图 intents = discord.Intents.default() intents.guilds = True # 初始化客户端时传入意图配置 client = discord.Client(intents=intents) # 替换为你自己的机器人Token token = "YOUR_BOT_TOKEN" @client.event async def on_ready(): print(f'CONSOLE: We have logged in as {client.user}') print("已加入的服务器ID如下:") # 直接执行遍历逻辑,无需定义未调用的嵌套函数 for guild in client.guilds: print(guild.id) client.run(token)
注意事项
- 代码运行前需要先前往Discord开发者后台,进入对应机器人的Bot设置页面,下滑到「Privileged Gateway Intents」区域,开启
Server Members Intent开关并保存配置,否则无法正常获取服务器列表。 - 简单逻辑直接写在事件回调内即可,不要定义无意义的、不调用的嵌套函数,避免出现逻辑不执行的问题。
内容的提问来源于stack exchange,提问作者wsheep
相关产品推荐
相关产品推荐

