无法获得多个前缀以使用 discord.js。我怎样才能重写它以便它识别两个前缀?
Can't get multiple prefixes to work with discord.js. How can I rewrite this so that it recognizes both prefixes?
标题很漂亮self-explanatory。尝试弄乱以下代码的差异迭代。此版本识别 firstPrefix,但不识别 secondPrefix。我只希望我的 djs 机器人能够识别前缀和 运行 Args 相应地拆分。
const firstPrefix = '!test ';
const secondPrefix = '!testtwo ';
//Prefix
bot.on('message', message => {
message.content = message.content.toLowerCase();
if (message.author.bot || !message.content.startsWith(firstPrefix || secondPrefix)) {
return;
}
//Args split
if (message.content.startsWith(firstPrefix)) {
console.log("A")
var args = message.content.slice(firstPrefix.length).split(/ +/);
}
else if (message.content.startsWith(secondPrefix)) {
console.log("B")
var args = message.content.slice(secondPrefix.length).split(/ +/);
}
我试过:
if (message.author.bot || !message.content.startsWith(firstPrefix) || !message.content.startsWith(secondPrefix))
但这根本不起作用。在这里很困惑,任何帮助都会很棒。谢谢
您当前的代码(第二个代码块)将无法运行,就好像它以一个前缀开头,而不以另一个前缀开头,导致它导致 if 语句为真,并且不执行您的命令.
在第一个代码块中,由于 firstPrefix
和 secondPrefix
都是用值定义的,因此 firstPrefix || secondPrefix
将计算为 firstPrefix
。
既然你想同时包含 firstPrefix
AND secondPrefix
,你应该这样做:
if (
message.author.bot || /* if it is a bot */
(!message.content.startsWith(firstPrefix) && /* does not start with first */
!message.content.startsWith(secondPrefix))) /* and does not start with second */ {
return;
}
您可以将前缀存储在数组中,然后使用 Array#some()
检查内容是否以任一前缀开头
const prefixes = ['!test ', '!testtwo '];
bot.on('message', message => {
...
if (prefixes.some(prefix => message.content.startsWith(prefix)) {
...
}
});
标题很漂亮self-explanatory。尝试弄乱以下代码的差异迭代。此版本识别 firstPrefix,但不识别 secondPrefix。我只希望我的 djs 机器人能够识别前缀和 运行 Args 相应地拆分。
const firstPrefix = '!test ';
const secondPrefix = '!testtwo ';
//Prefix
bot.on('message', message => {
message.content = message.content.toLowerCase();
if (message.author.bot || !message.content.startsWith(firstPrefix || secondPrefix)) {
return;
}
//Args split
if (message.content.startsWith(firstPrefix)) {
console.log("A")
var args = message.content.slice(firstPrefix.length).split(/ +/);
}
else if (message.content.startsWith(secondPrefix)) {
console.log("B")
var args = message.content.slice(secondPrefix.length).split(/ +/);
}
我试过:
if (message.author.bot || !message.content.startsWith(firstPrefix) || !message.content.startsWith(secondPrefix))
但这根本不起作用。在这里很困惑,任何帮助都会很棒。谢谢
您当前的代码(第二个代码块)将无法运行,就好像它以一个前缀开头,而不以另一个前缀开头,导致它导致 if 语句为真,并且不执行您的命令.
在第一个代码块中,由于 firstPrefix
和 secondPrefix
都是用值定义的,因此 firstPrefix || secondPrefix
将计算为 firstPrefix
。
既然你想同时包含 firstPrefix
AND secondPrefix
,你应该这样做:
if (
message.author.bot || /* if it is a bot */
(!message.content.startsWith(firstPrefix) && /* does not start with first */
!message.content.startsWith(secondPrefix))) /* and does not start with second */ {
return;
}
您可以将前缀存储在数组中,然后使用 Array#some()
检查内容是否以任一前缀开头const prefixes = ['!test ', '!testtwo '];
bot.on('message', message => {
...
if (prefixes.some(prefix => message.content.startsWith(prefix)) {
...
}
});