检查第一个参数是否被提及

Check if first argument is a mention

我正在编写一个 discord 机器人,我正在尝试立即发出踢球命令。我设法找到如何使用 message.mentions.members.first() 检查命令消息中是否有任何提及,但我找不到任何东西来检查是否提及了特定参数。

我目前拥有的代码:

module.exports = {
    name: "kick", 
    category: "moderation",
    permissions: ["KICK_MEMBERS"], 
    devOnly: false, 
    run: async ({client, message, args}) => {
        if (args[0]){
            if(message.mentions.members.first())
                message.reply("yes ping thing")
            else message.reply("``" + args[0] + "`` isn't a mention. Please mention someone to kick.")
        }
        else
            message.reply("Please specify who you want to kick: g!kick @user123")
    }
}

我查看了 DJS 指南,但找不到方法。

MessageMentions 有一个 USERS_PATTERN property that contains the regular expression that matches the user mentions (like <@!813230572179619871>). You can use it with String#match, or RegExp#test() 来检查您的参数是否与模式匹配。

这是一个使用 String#match 的例子:

// make sure to import MessageMentions
const { MessageMentions } = require('discord.js')

module.exports = {
  name: 'kick',
  category: 'moderation',
  permissions: ['KICK_MEMBERS'],
  devOnly: false,
  run: async ({ client, message, args }) => {
    if (!args[0])
      return message.reply('Please specify who you want to kick: `g!kick @user123`')

    // returns null if args[0] is not a mention, an array otherwise
    let isMention = args[0].match(MessageMentions.USERS_PATTERN)

    if (!isMention)
      return message.reply(`First argument (_\`${args[0]}\`_) needs to be a member: \`g!kick @user123\``)

    // kick the member
    let member = message.mentions.members.first()
    if (!member.kickable)
      return message.reply(`You can't kick ${member}`)

    try {
      await member.kick()
      message.reply('yes ping thing')
    } catch (err) {
      console.log(err)
      message.reply('There was an error')
    }
  }
}