2017-11-22 1 views
1

私は今、新しいコマンドpollコマンドで作業しています。 そのためには、接頭辞とコマンド自体の後に引数を取る方法が必要です。Discord.js - プレフィックスとコマンドの後に情報を取得する

例:+ポールあなたは子犬が好きですか?

そして、 "+ Poll"を無視して質問のみを取得し、投票を作成します。

引数を取得するには、私が使用している:

var Args = message.content.split(/\s+/g)

答えて

1

をあなたはおそらく、コマンドでアンケートを作成してみてください、あなたのデータベースに質問を保存した後、ディスプレイに別々のコマンドを使用します現在開かれている投票。次に、ユーザは、コマンドを介してポーリングを選択し、ボットは質問に対する応答を待つ。

これは全く異なる質問なので、質問をデータベースに保存することについて詳しくは触れません。ローカルデータベースを設定して投票を保存するのに手助けが必要な場合は、別の質問にリンクしてください。もっと例を挙げてください。

あなたの質問にお答えするには、subStrを使用して、コマンドの後の各単語を配列に保存することをお勧めします。アンケートに回答するユーザーの場合

if (message.content.startsWith("!poll ")) { 
    var poll = message.content.substr("!poll ".length); 
    // Do something with poll variable // 
    message.channel.send('Your poll question is: ' + poll); 
}); 

は、あなたが質問をするawaitMessageを使用して試すことができます、と応答のセット数を与える:!のこのような何かを変数pollに投票した後、すべてを保存します。最初に使用可能なポーリングをデータベースに照会し、そのIDを使用して正しい質問と考えられる回答を実際に得るコマンドでこれをラップしたいとします。以下の例は、収集された応答を示していますが、メッセージを送信するのではなく、データベースに応答を格納することをお勧めします。

if (message.content === '!poll') { 
    message.channel.send(`please say yes or no`).then(() => { 
      message.channel.awaitMessages(response => response.content === `yes` || response.content === 'no', { 
       max: 1, // number of responses to collect 
       time: 10000, //time that bot waits for answer in ms 
       errors: ['time'], 
      }) 
       .then((collected) => { 
        var pollRes = collected.first().content; //this is the first response collected 
        message.channel.send('You said ' + pollRes); 
        // Do something else here (save response in database) 
       }) 
       .catch(() => { // if no message is collected 
        message.channel.send('I didnt catch that, Try again.'); 
       }); 
     }); 
}; 
+0

ありがとうございます。私はちょっとしたコードを使う必要がありました。なぜなら今は基本的なことに固執しているからです。 Buはもう一度、ありがとう! – Norby

関連する問題