2017-01-15 7 views
0

私はこの問題を3時間のうちに解決するために取り組んできましたが、この部分を投げ捨てようとしていますが、それを修正する。Discord.js/Node botコマンドが期待通りに動作していない

免責事項 - 私はノードを使い慣れていません。私はまだ自分自身にjsを教えています。このボットは私の最初の主要な作業プロジェクトです。

基本的に、私はこのボットに、言われたことに基づいて配列からのランダムな回答を返すようにします。

トップ4の配列は、ユーザーがボットの名前+と言うものです。 (Markos)

次の5つの配列は、ボットがランダムに選択する潜在的な応答です。配列あたり〜20の応答があるので、私は応答を含めません。

最初の4つの配列の単語のいずれも "Markos"で使用されていない場合は、MENTION配列を使用する必要があります。

現在のところ、MENTIONアレイにアクセスしているだけなので、その理由はわかりません。洞察力は素晴らしいだろう。あなたが正しい方向に私を向けることができれば/私がやっていることが間違っている理由を説明すれば、私は非常に感謝しています。

let posGreet = ["hi", "hello", "hey", "yo", "greetings", "hallo", "Grüße"] 
let posBye = ["bye", "goodbye", "later", "peace", "cya", "see you later", "tschüss", "auf wiedersehen", "bis später"] 
let posThanks = ["thanks", "thank you", "vielen dank", "danke", "gracias"] 
let posInsults = ["insults"] 

let GREETINGS = ["too many to list"] 
let THANKS = ["too many to list"] 
let BYE = ["too many to list"] 
let MENTION = ["too many to list"] 
let INSULTS = ["too many to list"] 

else if (message.content.toLowerCase().includes("markos")) { 
    if (message.content.toLowerCase().includes(posGreet)) { 
     message.reply(GREETINGS[Math.floor(Math.random() * GREETINGS.length)]); 
    } else if (message.content.toLowerCase().includes(posThanks)) { 
     message.reply(THANKS[Math.floor(Math.random() * THANKS.length)]); 
    } else if (message.content.toLowerCase().includes(posBye)) { 
     message.reply(BYE[Math.floor(Math.random() * BYE.length)]); 
    } else if (message.content.toLowerCase().includes(posInsults)) { 
     message.reply(INSULTS[Math.floor(Math.random() * INSULTS.length)]); 
    } else { 
     message.reply(MENTION[Math.floor(Math.random() * MENTION.length)]); 
    } 
    } 

答えて

1

には、配列ではなく部分文字列が必要です。

は、あなたのプログラムでString.prototype.includes()

を参照してください、あなたの代わりに、サブストリングの含みに配列を渡しています。したがって、偽の値を返し、最後のelse節に移動します。これは、MENTION配列から出力されます。

message.contentに配列の文字列が含まれているかどうかを確認するには、カスタムロジックを記述する必要があります。あなたは参照することができますJavascript. Checking if string contains text from an array of substrings

関連する問題