如何使用discord.js v14获取服务器所有文本频道?
解决Discord服务器文本频道筛选问题
你的代码存在两个核心问题:
guild3.channels.fetch()返回的是Promise对象,无法直接调用filter方法遍历频道- Discord.js版本迭代后,频道类型标识有变更,旧的
'GUILD_TEXT'在v14+版本已不再适用
修正后的代码
需要在异步函数内执行,先通过await获取完整的频道集合,再用正确的类型筛选:
// 确保这段代码在async函数内部 const channels3 = await guild3.channels.fetch(); // Discord.js v14+ 用GuildText类型筛选文本频道 const jsp = channels3.filter(channel => channel.type === 'GuildText'); const channelOptions3 = jsp.map(channel => ({ label: channel.name, value: channel.id }));
额外优化方案
如果想兼容更多场景,也可以用isTextBased()方法直接判断是否为文本频道,无需记忆类型常量:
const jsp = channels3.filter(channel => channel.isTextBased());
版本兼容提示
- 若使用Discord.js v13及更早版本,类型标识仍为
'GUILD_TEXT',但同样需要先await获取频道集合再筛选
内容的提问来源于stack exchange,提问作者user23326371
相关产品推荐
相关产品推荐

