【问题标题】:discord.js v12 check if channel existsdiscord.js v12 检查频道是否存在
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 非常感谢!是的,user.username 返回了包含特殊字符和空格的字符串。所以,解决方案是这样的:reaction.message.guild.channels.cache.some((channel) => channel.name === username.replace(/[^a-zA-Z0-9-]/ig, "") + 's-ticket')
    猜你喜欢
    • 2023-01-11
    • 2021-04-13
    • 2020-12-05
    • 2022-12-16
    • 2022-01-07
    • 2021-09-21
    • 2021-09-26
    • 2018-07-28
    • 1970-01-01
    相关资源
    最近更新 更多