Discord v14获取服务器频道列表失败问题求助
Discord v14 获取服务器频道列表解决方案
问题原因
Discord v14 中,guilds.fetch(GUILD_ID) 默认仅获取服务器的基础元数据,不会自动同步频道列表到缓存,因此直接访问 guild.channels.cache 会得到空集合。而单独调用 channels.fetch(channelId) 能成功,是因为该接口会单独请求目标频道的数据。
解决方法
方法1:主动拉取服务器所有频道
获取到 guild 对象后,调用 channels.fetch() 方法主动拉取所有频道数据到缓存:
let guild = await c[token].guilds.fetch(GUILD_ID); // 主动拉取该服务器的所有频道 await guild.channels.fetch(); // 此时 channels.cache 就包含所有频道了 console.log(guild.channels.cache);
方法2:fetch guild时指定包含频道数据(可选)
部分场景下,可以在 fetch guild 时通过参数请求包含频道信息,但该参数仅返回部分频道类型数据,更可靠的方案是方法1:
let guild = await c[token].guilds.fetch(GUILD_ID, { includeChannels: true }); console.log(guild.channels.cache);
权限验证
确保你的 Bot 账号在目标服务器中拥有 查看频道 权限,否则即使调用接口也无法获取频道列表。
内容的提问来源于stack exchange,提问作者monkeyUser
相关产品推荐
相关产品推荐

