【发布时间】:2022-01-13 18:28:58
【问题描述】:
我尝试查找拼写错误和其他不准确之处,并尝试为 prune 命令添加权限要求,但当我输入金额时,ping pong 和“无效号码”回复仍然有效,但 prune 无效。
详细信息:我正在尝试制作一个可以根据输入进行修剪的 Discord 机器人。我使用 DJS v12 并遵循(编辑)本指南https://v12.discordjs.guide/creating-your-bot/commands-with-user-input.html#number-ranges
if (!msg.content.startsWith(prefix) || msg.author.bot) return;
if (!msg.member.hasPermission("BAN_MEMBERS")) {
msg.channel.send("You don\'t have permission.");
}
const args = msg.content.slice(prefix.length).trim().split('/ +/');
const cmd = args.shift().toLowerCase();
if (cmd === `ping`) {
msg.reply('pong.');
} else if (cmd === `prune`) {
if (!msg.guild.me.hasPermission("MANAGE_MESSAGES")) return;
const amount = parseInt(args[0]) + 1;
if (isNaN(amount)) {
return msg.reply('Not a valid number.');
} else if (amount <= 1 || amount > 100) {
return msg.reply('Please input a number between 1 and 99.');
}
msg.channel.bulkDelete(amount, true).catch(err => {
console.error(err);
msg.channel.send('Error!');
});
}
});
【问题讨论】:
-
错字:
.split('/ +/')应该是.split(/ +/),因为它是一个正则表达式,而if (!msg.guild.me.hasPermission("MANAGE_MESSAGES") return中缺少),所以应该是if (!msg.guild.me.hasPermission("MANAGE_MESSAGES")) return。 -
@ZsoltMeszaros 谢谢,我完全错过了 split()。写问题时我也错过了 ) 。但是有一个问题,如果我不加引号,它会起作用吗?
-
是的,它可以在没有单引号的情况下工作。
/ +/是一个正则表达式,表示被一个或多个空格分隔。我更喜欢这个而不是单个" ",因为即使用户在参数之间添加了一些不必要的空格,它也会按预期工作。在浏览器的控制台中查看'one two three'.split(' ')和'one two three'.split(/ +/)之间的区别。第一个返回一个包含五个项目的数组(其中两个是空字符串,而第二个返回一个包含三个项目的数组:one、two和three。
标签: javascript discord discord.js bots bulk