discord.js v12检查通道是否存在

时间:2020-07-25 02:53:40

标签: javascript node.js bots discord.js

我正在discord.js上编写自己的票务机器人。我需要检查公会是否有频道(按名称)。这是一小段代码:

if (userTickets.has(user.id) || reaction.message.guild.channels.cache.???(c => c.name === user.username.toLowerCase() + 's-ticket')) {
     user.send("You already have a ticket!");
     return;
}

我尝试了以下操作:

reaction.message.guild.channels.cache.find(c => c.name === user.username.toLowerCase() + 's-ticket')
reaction.message.guild.channels.cache.has(c => c.name === user.username.toLowerCase() + 's-ticket')
reaction.message.guild.channels.cache.has(user.username.toLowerCase() + 's-ticket')

但没有帮助

解决方案: 根据{{​​3}}的建议,在这种情况下,最好使用some()函数。 另外,user.username返回带有空格和特殊字符的字符串,因此您需要对其进行解析。

此代码对我有用:

if (userTickets.has(user.id) || reaction.message.guild.channels.cache.some((channel) => channel.name === username.replace(/[^a-zA-Z0-9-]/ig, "") + 's-ticket')) {
     user.send("You already have a ticket!");
     return;
}

1 个答案:

答案 0 :(得分:0)

我认为some() method在这里可能很好。 user.username返回什么?我想知道返回的值是否有任何特殊或唯一字符。