【发布时间】:2020-11-14 22:12:16
【问题描述】:
我正在 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')
但没有任何帮助
解决方案:
正如@Chiitoi 所建议的那样,在这种情况下最好使用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;
}
【问题讨论】:
标签: javascript node.js bots discord.js