前提・実現したいこと
Discordでゲームのスタミナがマックスなことを教えてくれるbotをjavascriptで作成してみようと思い作り始めて見たのですが、完成したはいいもののキャンセル機能がなく不便に感じキャンセル機能もつけてみようと思いつけてみようと思いました。
そこでタイマーをsetTimeoutで時間を計算してメッセージを送るようにしてたので、clearTimeoutを使いキャンセルしようと思い書いてみたのですが、止まらず通知してしまいます。
なぜ止まらないのでしょうか?
読みにくいコードですがご教授いただけると幸いです。
該当のソースコード
javacript
1const Discord = require('discord.js'); 2 3const { prefix, token } = require('./config.json'); 4const client = new Discord.Client(); 5 6client.on('ready', () => { 7 console.log(`${client.user.username} でログインしています。`); 8}) 9 10client.on('message', async msg => { 11 var jushimax=160*8; 12 var jushi=0,nokorih=0,nokorim=0; 13 var time=((jushimax-(jushi*8))-80)*60*1000; 14 var jushiTimer 15 16 if(!msg.content.startsWith(prefix) || msg.author.bot) return; 17 18 const args=msg.content.slice(prefix.length).split(' '); 19 const command=args.shift().toLowerCase(); 20 21 if (msg.content === `${prefix}hello`) { 22 msg.channel.send(`${msg.author}!\nこんにちは、よろしくね。`); 23 }else if(msg.content === `${prefix}server`) { 24 msg.channel.send(`サーバー名:${msg.guild.name}\n人数:${msg.guild.memberCount}`); 25 } 26//ここから教えてくれるコマンドのコードです。 27 else if(command === 'jushi'){ 28 if (!args.length){ 29 return msg.channel.send(`${msg.author}!、樹脂を !jushi 160 のように書いてください。`); 30 } 31 32 jushi=args[0]; 33 nokorih=Math.floor((jushimax-(jushi*8))/60); 34 nokorim=(jushimax-(jushi*8))%60; 35 36 37 if(0<=args[0] && args[0]<=160){ 38 msg.channel.send(`今、${msg.author}の樹脂は${args[0]}です。\n残り${nokorih}時間${nokorim}分で樹脂が全回復です。`); 39 }else{ 40 msg.channel.send('樹脂の入力は0~160まででお願いします…'); 41 } 42 43 if(args[0]<150){ 44 jushiTimer=setTimeout(function(){ 45 msg.channel.send(`今、${msg.author}の樹脂は150です。\n残り1時間20分で樹脂が全回復してしまいます。`); 46 },10000) 47 } 48 }else if(msg.content === `${prefix}timerc`){ 49 clearTimeout(jushiTimer); 50 msg.channel.send(`${msg.author}さんの樹脂タイマーをキャンセルしました。`); 51 } 52}) 53 54client.login(token);
試したこと
・初心者なのでなにをしたらいいかわからず手をつけられていません。
補足情報(FW/ツールのバージョンなど)
・スタミナ=樹脂
回答1件
あなたの回答
tips
プレビュー