2017-09-11 22 views
1

私は現在、私の最初の不和なボットをコーディングしています。彼はすでにyoutubeの音楽をプレイすることができます! :D しかし、私が問題に遭遇し、それは_が何の助けがない、または私はあまりにも盲目だそうです(ツ)_ /¯ さて、ここで問題です:discord.js botが返信します - これが起こらないようにしてください

if (message.content.includes("Good Job") || 
    message.content.includes("good job")) { 
    message.channel.sendMessage("Good Job everyone :smirk:"); 
    } 

ご覧のとおり、もし誰かが「良い仕事」を入力した場合(これは単なる例です)、ボットは「良い仕事をしています:smirk :)」と返信しますが、その後に迷惑メールが始まります: ボットは自分のメッセージを読んで返答します。私は自分自身に答えるためにボットを防ぐことができます:?/ 私が得るすべての助けに感謝

+0

メッセージの送信者を確認しますか?ボットがメッセージを送信した場合は、返信をしないでください。 – Craicerjack

+0

check userまたはuserID ... – Salketer

+0

* if *文でメッセージの両方のバージョンをチェックするのではなく、常にメッセージを小文字/大文字に変換してからチェックしてください。ちょうどあなたのためのヒント! –

答えて

4

は、メッセージのイベントで、これを使用します!

詳細は
if (message.author.bot) return; 

https://anidiotsguide.gitbooks.io/discord-js-bot-guide/coding-guides/a-basic-command-handler.html

+0

私はちょうどこれも言いたいことがあります。メッセージ受信ハンドラは、ボットが新しいメッセージを見るたびに呼び出されます。 (そしてそのメッセージには、ボット自体のメッセージも含まれています!)あなたのアカウントにも同じことが言えます!自分のサーバーで@everyoneにpingを実行すると、自分自身からのメッセージがあっても黄色いハイライトバーがポップアップ表示されます。 – WQYeo

+0

それは考えていないのです!私は通常、コードのブロック(送信者がボットではない場合)がメッセージイベント内のすべてのコードを囲み、内部がすべてフィルタリングされる必要があります。 –

2

あなたのボットは自分自身に返信する理由があるので、あなたは置く場所:

場合(message.content.includes( "グッドジョブ")||テキストの一部が含まれている場合言葉「グッドジョブ」または「良い仕事」を message.content.includes(「良い仕事」))

それは基本的にチャットをチェックしています。あなたのボットが送信するように:

message.channel.sendMessage( "Good Job everyone:smirk:");答えとして

そのメッセージは基本的に何度も何度も何度もコードを実行している、言葉「グッドジョブ」が含まれているため、それがループを作成します。

もちろん、これを固定する最も簡単な方法は、あなたがそれをグッドジョブ言葉が含まれないようになります答えを変更するためのものですが、それはすべてのコマンドのために起こらないことを確認するためのより良い解決策がありますあなたが作るかもしれない。

Jörmungandrは、メッセージイベントの下に含まれる、前記@とおり

(message.author.bot)戻った場合、

これが起こらないことを確認してください。これは本質的にメッセージの作成者がボットかどうかをチェックし、メッセージがあればそれを無視します。

+0

あなたの質問にあなたが使用している言語でタグを付ける。 – jhenderson2099

関連する問題