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

时间:2018-07-22 16:02:18

标签: node.js cmd discord discord.js

需要一些有关我的代码的帮助。我今天开始使用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词时,机器人将返回smh。这样做的问题是,只有在大写字母与smh中的大小写完全相同的情况下,该漫游器才会返回xd,但是我希望它适用于所有大写字母。

喜欢这个。

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

很明显,上面的代码不起作用,但是有什么简单的方法吗?

干杯。

6 个答案:

答案 0 :(得分:1)

您可以在 import sys sys.path.append('/home/hannes/anaconda3/envs/fenics/lib/python3.6/site-packages') 上调用.toLowerCase(),将其转换为所有小写字母:

message.content

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

答案 1 :(得分:1)

您需要使用toLowerCase()方法将message.content小写,然后使用===运算符将其与“ xd字符串”进行比较

例如:

cursor.getList(...)

答案 2 :(得分:1)

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

好的,答案是

在开始时,声明一个名为msg或存储message.content.toLowerCase();的变量。因此,无论人们如何键入,都将始终是小写。

请注意,仅当message.content为“ xd”时,此功能才有效。因此,如果某人键入“ xD something”,则此功能将无效。

代码中的其他内容:

如果要检查某人是否使用某个前缀来表示命令,则可以检查message.content.startsWith("prefix");-这将返回true或false。

将消息的内容分解为单独的变量始终是一件好事,这样您就可以轻松地对消息进行操作,例如,命令和args变量(将message.content转换为数组)

答案 3 :(得分:1)

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

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

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

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

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

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

答案 4 :(得分:0)

在内容上使用toLowerCase,然后对其进行测试

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

答案 5 :(得分:0)

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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="bar"></div>
<div class="bar"></div>
<div class="bar"></div>
<div class="bar"></div>
如果您希望多个事物运行相同的命令,则上面回答的

//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(); } } }); 并不总是有效。
上面的代码允许每个命令都使用别名