Discord.js v12 Bot说出不同渠道的命令(通过args?)

时间:2020-05-20 12:35:51

标签: if-statement arguments discord discord.js

我正在寻找帮助/指导/建议...我在这里有不和谐的机器人说命令,花了我一段时间才能使它走到现在并能正常工作。我正在寻找的是适应当前代码,以便我可以检查“ .say”之后的单词是否为“ #channel”,如果是,则在此处发送消息。即“ .say #feedback your welcome” .......将导致漫游器在反馈频道 ELSE 中说“您的欢迎”,而只是在同一频道中发送消息。我希望我已经正确地解释了自己,但这已经超出了我的头脑,iv试图进行尽可能多的研究。预先感谢您的时间

        case 'say':
                if (!message.member.roles.cache.find(r => r.name === 'Moderator') && !message.member.roles.cache.find(r => r.name === 'Staff')) return message.channel.send('You dont not have the required permissions').then(msg => {
                    msg.delete({ timeout: 5000 })
                })
                else if (message.content.startsWith(".say")) {
                    if (message.deletable) {
                        message.delete();
                    }
                    if (!args[1]) return message.channel.send("Nothing to say").then(msg => {
                        msg.delete({ timeout: 5000 })

                    })
                    message.channel.send(`${(args.slice(1).join(" "))}`)

1 个答案:

答案 0 :(得分:1)

要检查传入消息中是否提到了频道,可以使用Message.mentions属性,该属性返回一个MessageMentions对象。

MessageMentions.channels返回消息中提到的Collection中的GuildChannel

因此要检查消息中是否至少提及一个频道:

if (message.mentions.channels.size > 0) {
   // There is at least 1 channel mention in the message.
} else {
   // No channel mention in the message.
}

要将消息发送到第一个频道提及:

message.mentions.channels.first().send("message");