给出超过 1 个单词的参数
Arguments giving more then 1 word
我做了一个静音命令,我尝试使用 ms 静音指定的时间,当我记录时间时,它返回 1m(原因)而不是 1m
'mute': async (msg) => {
if(!msg.guild.member(msg.author).hasPermission('MUTE_MEMBERS')) { return msg.channel.send("Hmmm... I don't think you're allowed to use that. Missing permission: Mute Members.") }
if(!msg.guild.member(bot.user).hasPermission('MANAGE_CHANNELS')) { return msg.channel.send("Uh oh, you have permission to use the command but it seems I do not. Missing permission: Manage channels.")}
let embedError = new Discord.RichEmbed()
.setColor("RED")
.setTitle("Error")
.setDescription("Correct format:\nAlexa mute [user eg: @YxriDev#0001] [time eg: 1h] [reason eg: Spamming.]")
let args = msg.content.split(' ').slice(1).join(' ')
let time = msg.content.split(' ').slice(3).join(' ')
let reason = msg.content.split(' ').slice(4).join(' ')
let muting = msg.mentions.users.first()
if(!muting) { return msg.channel.send(embedError) }
if(!time) { return msg.channel.send(embedError) }
if(!reason) { return msg.channel.send(embedError) }
msg.guild.channels.forEach(x => {
x.overwritePermissions(muting, {
SEND_MESSAGES: false,
VIEW_CHANNEL: null,
})
})
msg.channel.send("Muted")
console.log(time)
setTimeout(function() {
msg.guild.channels.forEach(x => {
x.overwritePermissions(muting, {
SEND_MESSAGES: true,
VIEW_CHANNEL: null,
})
})
msg.channel.send("unmuted")
}, ms(time))
}
您的切片不正确。而且您不必要地为每个参数创建一个新数组。
试试这个:
它只使用一个 .split()
,其中 returns 一个包含所有 space 分隔词的数组。然后你可以使用数组解构将单词放入变量中(let [a] = [42];
将 42
存储在 a
中)并将剩余的单词(原因)分组回数组中,这很容易使用 .join()
.
连接回字符串
const msg = {
content: 'Alexa mute @user 1h You spammed!'
};
let [, , , time, ...reason] = msg.content.split(' ');
reason = reason.join(' ');
console.log(time);
console.log(reason);
我做了一个静音命令,我尝试使用 ms 静音指定的时间,当我记录时间时,它返回 1m(原因)而不是 1m
'mute': async (msg) => {
if(!msg.guild.member(msg.author).hasPermission('MUTE_MEMBERS')) { return msg.channel.send("Hmmm... I don't think you're allowed to use that. Missing permission: Mute Members.") }
if(!msg.guild.member(bot.user).hasPermission('MANAGE_CHANNELS')) { return msg.channel.send("Uh oh, you have permission to use the command but it seems I do not. Missing permission: Manage channels.")}
let embedError = new Discord.RichEmbed()
.setColor("RED")
.setTitle("Error")
.setDescription("Correct format:\nAlexa mute [user eg: @YxriDev#0001] [time eg: 1h] [reason eg: Spamming.]")
let args = msg.content.split(' ').slice(1).join(' ')
let time = msg.content.split(' ').slice(3).join(' ')
let reason = msg.content.split(' ').slice(4).join(' ')
let muting = msg.mentions.users.first()
if(!muting) { return msg.channel.send(embedError) }
if(!time) { return msg.channel.send(embedError) }
if(!reason) { return msg.channel.send(embedError) }
msg.guild.channels.forEach(x => {
x.overwritePermissions(muting, {
SEND_MESSAGES: false,
VIEW_CHANNEL: null,
})
})
msg.channel.send("Muted")
console.log(time)
setTimeout(function() {
msg.guild.channels.forEach(x => {
x.overwritePermissions(muting, {
SEND_MESSAGES: true,
VIEW_CHANNEL: null,
})
})
msg.channel.send("unmuted")
}, ms(time))
}
您的切片不正确。而且您不必要地为每个参数创建一个新数组。
试试这个:
它只使用一个 .split()
,其中 returns 一个包含所有 space 分隔词的数组。然后你可以使用数组解构将单词放入变量中(let [a] = [42];
将 42
存储在 a
中)并将剩余的单词(原因)分组回数组中,这很容易使用 .join()
.
const msg = {
content: 'Alexa mute @user 1h You spammed!'
};
let [, , , time, ...reason] = msg.content.split(' ');
reason = reason.join(' ');
console.log(time);
console.log(reason);