如何向 message.content 添加多个参数?

How can I add multiple parameters to message.content?

我的代码需要一些帮助。我今天开始使用 Node.JS 和 Discord.JS 库编写我的第一个 Discord 机器人,很快就会使用其他库。我目前正在使用 YouTube 视频来指导我完成 Node.JS。这是我的问题。

这是我当前的代码。

const Discord = require('discord.js');
const bot = new Discord.Client();

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

    if(message.content == 'ping') {
        message.reply('pong');
    }

    if(message.content == 'xd') {
        message.reply('smh');
    }

});

这段代码工作正常。如果你转到第二个 message.content,它里面写着 'xd'。当我在我的 Discord 服务器上写 xd 这个词时,机器人会 return smh。这样做的问题是,当大写字母与 xd 完全相同时,机器人只会 return smh,但我希望它适用于所有大写字母。

像这样。

    if(message.content == 'xd', 'xD', 'XD', 'Xd',) {
        message.reply('pong');
}

显然,上面的代码不起作用,但是有什么简单的方法可以做到这一点吗?

干杯。

您可以在 message.content 上调用 .toLowerCase() 将其转换为全部小写:

if (message.content.toLowerCase() == 'xd') {
  message.reply('pong');
}

这样实际上忽略了邮件的大小写。

对内容使用 toLowerCase 然后测试它

if(message.content.toLowerCase() === 'xd') {
   message.reply('pong');
}

您需要使用 toLowerCase() 方法将 message.content 小写,然后使用 === 运算符

将其与 "xd 字符串进行比较

例如:

if(message.content && message.content.toLowerCase() === 'xd') {
    message.reply("smh");
}

在我回答这个问题之前,请确保在共享您的源代码时隐藏您的 bot 的令牌,因为如果它具有正确的权限,那么人们可以使用您的 bot 来做一些有害的事情。

好的所以答案:

一开始声明一个变量叫msg什么的,用来存储message.content.toLowerCase();。所以不管人怎么打,都是小写的。

请注意,它仅在 message.content 为 "xd" 时才有效,因此如果有人键入 "xD something",则此方法无效。

代码的其他内容:

如果你想检查一个人是否使用某个前缀来表示命令,你可以检查 message.content.startsWith("prefix"); - 这将 return 是真还是假。

将消息的内容分解成单独的变量总是好的,这样您就可以轻松地对消息执行您想做的事情,例如,命令和 args 变量 (convert message.content先放入数组).

除了 toLowerCase() 函数之外,还有其他 2 种主要方法允许使用多个参数。

第一种方法是使用 || 运算符或 or 运算符。此方法允许您检查完全不同的单词,同时能够获得相同的结果。例如:

if (message.content == "xd" || message.content == "xD" || message.content == "XD") { 
     message.reply("Why would you do that");
}

第二种方法是使用正则表达式之类的正则表达式。正则表达式使用 .test() 方法检查字符串中的单词。例如:

let myRegex = /xd/i;
if (myRegex.test(message.content)) { //We are assuming that message.content = "XD"
   message.reply("smh");
}

此方法有效,因为正则表达式会检查该词是否等于它分配给的正则表达式。 /xd/ 之后的 i 表示它不关心大小写,因此这是一种检查某些单词而不关心字母大小写的较短方法。

更好的方法是使用别名...

//defined early on.
let commands = [
    {
        aliases:["xd","lol",":smile:"],
        run:function(msg){
            msg.send(`pong`);
        }
    },
    {
        aliases:[":("],
        run:function(msg){
            msg.send(`why the long face?`);
        }
    }
]
//later
client.on(`message`,function(msg){
    for(let i =0;i<commands;i++){
        if(commands[i].includes(msg.content.toLowerCase())){
            commands[i].run();
        }
    }
});

string.toLowerCase 当你想要多个东西到 运行 同一个命令时,上面的回答并不总是有效。
上面的代码允许每个命令的别名