前提・実現したいこと
Discordのbotで条件分岐が作りたいのですが、ユーザーが特定の文字列を送ると条件分岐が開始されてbotから質問が送られ、それに対してのユーザーの答えによって違った質問がbotから送られる。これが数回行われるようにしたいです。また、一定時間入力がなかった時に条件分岐のプログラムが終了するようにもしたいです。
下記のコードは今できているもので、ここに新たに埋め込みたいと思っています。(知識がなく、メンションやとある文字列に反応してメッセージを送るプログラムはネットから色々拾ってきてなんとか作った感じなのですが、条件分岐を埋め込むことができず、それに関しては全く何も書いてない感じです。)
発生している問題・エラーメッセージ
①条件分岐の中で、ユーザーが数字を送った時にその数字が、ある値より高いか低いかで、botが送るメッセージが変わるようなものを一部(その他は数字ではなく文字列で)作りたいのですが(例えば1~100が選択肢だとして、50以上と以下で分けようとしたとき)どのようにやるのでしょうか。 ②まずそもそも条件分岐を作るやり方がわかりません。自分で思いついた方法はユーザーのメッセージを変数(?)にすることなのですが、それでうまくいくのかも、どうやるのかもわかりません。 ③時間制限を設けてプログラムを終了する方法がわかりません。
#該当のソースコード
const http = require('http'); const querystring = require('querystring'); const discord = require('discord.js'); const client = new discord.Client(); http.createServer(function(req, res){ if (req.method == 'POST'){ var data = ""; req.on('data', function(chunk){ data += chunk; }); req.on('end', function(){ if(!data){ res.end("No post data"); return; } var dataObject = querystring.parse(data); console.log("post:" + dataObject.type); if(dataObject.type == "wake"){ console.log("Woke up in post"); res.end(); return; } res.end(); }); } else if (req.method == 'GET'){ res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Discord Bot is active now\n'); } }).listen(3000); client.on('ready', message =>{ console.log('Bot準備完了~'); client.user.setPresence({ activity: { name: 'げーむ' } }); }); client.on('message', message =>{ if (message.author.id == client.user.id || message.author.bot){ return; } if(message.isMemberMentioned(client.user)){ let text = "~"; sendMsg(message.channel.id, text); return; } if (message.content.match(/~|~/)){ let text = "~"; sendMsg(message.channel.id, text); return; } }); if(process.env.DISCORD_BOT_TOKEN == undefined){ console.log('DISCORD_BOT_TOKENが設定されていません。'); process.exit(0); } client.login( process.env.DISCORD_BOT_TOKEN ); function sendReply(message, text){ message.reply(text) .then(console.log("リプライ送信: " + text)) .catch(console.error); } function sendMsg(channelId, text, option={}){ client.channels.get(channelId).send(text, option) .then(console.log("メッセージ送信: " + text + JSON.stringify(option))) .catch(console.error); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/09 06:44