如何检测频道名称含ticket并实现/close命令关闭工单频道
解决工单频道关闭命令的检测问题
你的代码失效有两个核心问题:
- 用
=== "ticket-"是完全匹配频道名称,但工单频道肯定是ticket-xxx(带后缀)的形式,不会刚好叫ticket-,得改成包含/前缀匹配判断 - 新版Discord.js中,
interaction.guild.channels是频道管理器,必须先读取缓存才能使用find方法
给你两种可行的修正方案:
方案1:检测名称包含"ticket-"
适用于所有带ticket-字符串的工单频道:
// 先获取频道缓存,再用includes判断名称 const channel = interaction.guild.channels.cache.find(channel => channel.name.includes("ticket-"));
方案2:检测名称以"ticket-"开头
更精准,避免误匹配其他包含ticket-的非工单频道:
const channel = interaction.guild.channels.cache.find(channel => channel.name.startsWith("ticket-"));
拿到正确的频道对象后,就可以执行关闭/删除操作了,示例代码:
if (channel) { await channel.delete(); // 直接删除频道,也可改为设置权限只读后归档 } else { await interaction.reply("当前未找到可关闭的工单频道"); }
内容的提问来源于stack exchange,提问作者zvy5
相关产品推荐
相关产品推荐

