检查第一个参数是否被提及
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')
}
}
}
我正在编写一个 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')
}
}
}