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

Discord Get Guild未返回对象,调用get_guild方法返回None异常

问题原因

  • 异步方法未正确执行:discord.Client的login()、connect()都是异步协程方法,直接调用不会实际触发登录、连接逻辑,仅会返回未被调度的协程对象,这就是你收到coroutine 'Client.connect' was never awaited警告的原因。
  • 本地缓存未同步:get_guild()方法是从客户端本地缓存读取服务器数据,就算连接完成,客户端也需要一定时间同步服务器列表,未同步完成前调用必然返回None。
  • 缺少必要意图:Discord API v8及更高版本默认禁用服务器列表读取权限,你需要手动开启guilds意图才能正常获取服务器对象。

修复后的代码示例

import discord
# 开启必要的guilds意图
intents = discord.Intents.default()
intents.guilds = True

client = discord.Client(intents=intents)
TOKEN = "mytoken"
SERVER_ID = 846557514476945408

# 客户端完全启动、缓存同步完成后会触发on_ready事件
@client.event
async def on_ready():
    # 此时再调用get_guild就能拿到正确的服务器对象
    guild = client.get_guild(SERVER_ID)
    print(f"获取到服务器:{guild.name} (ID:{guild.id})")
    # 后续对guild的操作都可以在这里写

# 启动客户端,这一步会自动处理登录、连接、事件循环调度
client.run(TOKEN)

额外注意事项

  • 不要手动拆分调用login()和connect(),直接用client.run()即可,它会自动管理异步调度、事件循环、登录和连接逻辑,避免出现协程未等待的问题。
  • 你还需要去Discord开发者后台的Bot设置页,打开Privileged Gateway Intents下的Guilds Intent开关,否则仍然无法获取服务器数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 20:36:04