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

Discord.Net中Client.Guilds列表为空,获取SocketGuild返回null求解决方案

解决Discord.Net中获取SocketGuild返回null的问题

你遇到的问题是因为Client.GetGuild()和直接访问Client.Guilds仅查询本地缓存,如果Bot启动后未完成服务器缓存同步,或者目标服务器不在缓存里,就会返回null。Discord.Net中对应Discord.js的fetch操作,需要用异步的服务器获取方法:

正确的实现代码

// 获取指定ID的服务器,自动处理缓存与API请求
var guild = await Client.GetGuildAsync(GuildId);

// 获取第一个服务器(异步方式)
var firstGuild = (await Client.GetGuildsAsync()).FirstOrDefault();

关键注意点

  • 必须使用await关键字调用异步方法,否则只会拿到Task<SocketGuild>对象而非实际的服务器实例
  • 确保你的Bot已经加入目标服务器,并且拥有基础的服务器访问权限
  • 如果在同步代码块中调用,可使用.GetAwaiter().GetResult()强制获取结果,但优先推荐在异步上下文(如async Task方法)中处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:07:04