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

如何在Node.js与Discord.js v14中获取分类下的所有频道ID?

在Discord.js v14中获取指定分类下所有频道ID的正确方法

问题分析

你代码报错的核心原因有两个:

  • guild.channels.cache.get是同步缓存查询,不需要加await
  • 分类频道的子频道集合属性是children,不是你写的channel

另外,直接依赖缓存可能出现分类频道未被缓存的情况,更可靠的方式是用channels.fetch主动获取频道数据。

修正后的代码

// 从交互对象中获取服务器实例
const guild = interaction.guild;
// 主动获取指定ID的分类频道(避免缓存缺失问题)
const category = await guild.channels.fetch(config.ticketkategori);
// 遍历分类下的所有子频道并输出ID
category.children.forEach(channel => {
    console.log(channel.id);
});

可选扩展:过滤指定类型的频道

如果只需要获取分类下的特定类型频道(比如文本频道),可以用filter筛选:

// 导入ChannelType枚举(v14推荐用法)
const { ChannelType } = require('discord.js');

// 仅筛选文本频道
const textChannels = category.children.filter(channel => channel.type === ChannelType.GuildText);
textChannels.forEach(channel => console.log(channel.id));

注意事项

  • 确保机器人已启用Guilds和GuildChannels权限意图,否则无法正常获取频道数据
  • 如果你的config.ticketkategori不是有效的分类频道ID,需要先确认ID的正确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:47:19