1

我想这样做,这样如果我这样做[prefix] [command],它会产生相同的效果,[mention bot] [command]但是我创建命令和 args 的方式使得这很困难:

前缀存储为var prefix = '!3';

这就是我创建命令的方式:

bot.on('message', msg => {

    if (!msg.content.startsWith(prefix) || msg.author.bot)
        return;

  //the first message after '!13 '
        //!
    let args = msg.content.toLowerCase().substring(prefix.length).split(" ");
                           //^
          //any capitalisation is allowed (ping,Ping,pIng etc.)

switch(args[1]) {
      case 'ping': //if user inputs '!3 ping'
            msg.channel.send('Pong!') //send a message to the channel 'Pong!'
}//switch (command) ends here
};//event listener ends here
4

2 回答 2

3

您可以拥有一个预定义前缀列表并对其进行循环以确定味精是否具有该列表中的前缀。

let prefixList = ['!31 ', '!asdf ', `<@${bot.user.id}> `, `<@!${bot.user.id}> `]

function hasPrefix(str) {
    for(let pre of prefixList)
        if(str.startsWith(pre))
            return true;
    return false;
}

<@${bot.user.id}> ,<@!${bot.user.id}> 将设置机器人提及作为前缀。

于 2020-08-05T14:54:33.157 回答
0

secretlyrice's这是答案的简短版本:

const startsWithPrefix = (command) => 
['!prefix1 ', '!prefix2', <@botId>, <@!botId>].some(p => command.startsWith(p))
于 2021-03-14T15:53:15.377 回答