使用discord.js V14.8.0检查频道分类频道数时遇TypeError错误
问题分析与解决
错误原因
你当前的代码里,const category = interaction.channel.parentId === "864617007025069057" 这行把布尔值(判断结果)赋值给了category变量,而不是获取到对应分类的GuildCategory对象。布尔值没有children属性,所以调用category.children.size时会抛出Cannot read properties of undefined错误。
修正方案
要检查指定分类的子频道数量,需要先获取到该分类的对象,再访问其children属性。由于discord.js v14中获取频道是异步操作,需要使用async/await:
// 确保处理交互的函数是async的 async function yourInteractionHandler(interaction) { // 先判断当前频道的父分类是否是目标ID if (interaction.channel.parentId !== "864617007025069057") return; // 获取目标分类对象 const category = await interaction.guild.channels.fetch("864617007025069057"); // 检查分类是否存在,且子频道数量大于1 if (category && category.children.size > 1) { await interaction.reply("Modmail category has more than one channel"); } }
额外说明
- 必须确保处理交互的函数声明为
async,因为fetch是异步方法,需要用await等待结果返回 - 增加
category && ...的判断,避免因分类不存在导致的额外错误 - 如果是命令交互,记得将命令执行函数设置为
async
内容的提问来源于stack exchange,提问作者Haz
相关产品推荐
相关产品推荐

