如何使所有单词都触发同一件事

时间:2018-12-05 22:55:01

标签: javascript discord.js

我想要的是这三个单词,可以,曾经和曾经触发相同的代码。在文本中,如果可以,是或曾经是我不希望第一位运行,而是第二位。

bot.on ('message', function (message){
const words = message.content.split(' ');

if(words.includes('sans'))
{
    const words = message.content.split(' ');
    if(!message.content.includes ('can', 'is', 'was'))
    {
        if(message.author.bot) return;
        var chance = Math.floor(Math.random() * 2); 
        if(chance == 0)
        {
            message.channel.send('<:annoying_sans:520355361425981440>');    
        }
        if(chance == 1)
        {
            message.channel.send('<:sans:519723756403425294>');    
        }
    }
    else
    {
        var chance = Math.floor(Math.random() * 3); 
if(chance == 0)
{
    message.channel.send('Maybe.');    
}
if(chance == 1)
{
    message.channel.send('Yes.');    
}
if(chance == 2)
{
    message.channel.send('No.');    
}

}

}
});

3 个答案:

答案 0 :(得分:3)

首先,您要创建一个从未使用过的名为“ words”的数组。

此外,您将必须遍历数组中的每个项目以检查其中的每个字符串。

此外,您没有向我们提供如果消息中包含三个单词中的任何一个都应该触发的代码,但是如果不包含这三个单词,将会触发什么。

此外,您还将创建一个具有相同名称的常量变量两次。

bot.on ('message', function (message){
const words = message.content.split(' ');
if(words.includes('sans')){
    var questionwords = ['can', 'is', 'was',];
    for (i in questionwords) {
        if(words.includes(questionwords[i])) {
            if(message.author.bot) return;
            message.channel.send('<:download:519723756403425294>');
            return;
        }
    }
}

以此为准则,而不仅仅是复制粘贴

答案 1 :(得分:0)

我会做这样的事情:

function includesQuestionWords(content, questionWords = ['can', 'is', 'was',]) {
    return questionWords.some(word => content.includes(word));
}

Array.prototype.some将对数组中的每个元素执行一个函数,即使其中一个元素为true,也返回true。

答案 2 :(得分:0)

我不确定输入的值是多少,但是我写了一些代码,下面我想您正在尝试实现。它将向您展示如何搜索can,is或was。我的两个解决方案都使用for循环。您可以使用for循环遍历对象。

var sentence = 'can I go for a walk?';

checkIfQuestion(sentence);

function checkIfQuestion(str){
    var newWords = str.split(" ");
    var questionWords = ['can', 'is', 'was'];
    for(var char in newWords){ // Look at all the keys in the newWords object
        for(let i = 0; i < questionWords.length; i++){
            if(newWords[char] === questionWords[i]){
                console.log("It's a question!!");
                // Add your event here
            }
        }
    }
}

以上不使用.includes。幕后仍然包含循环,但是您不必写出for循环。该代码段在下面使用包括。

var sentence = 'can I go for a walk?';

checkIfQuestion(sentence);
function checkIfQuestion(str){
    var newWords = str.split(" ");
    var questionWords = ['can', 'is', 'was'];
    for(var char in newWords){ // Look at all the keys in the newWords object
        if(questionWords.includes(newWords[char])){
            console.log('it is a question');
            // Add your event here
        }
    }
}

希望这些摘录之一可以帮助您完成功能:)