質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

9551閲覧

Discord上で動くタイマーをJSで作りたい。

siranui

総合スコア54

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/10/03 09:52

前提・実現したいこと

10分タイマーをDiscordでやりたいです。

発生している問題・エラーメッセージ

{ Error: Cannot find module './commands/10分.js' at Function.Module._resolveFilename (module.js:548:15) at Function.Module._load (module.js:475:25) at Module.require (module.js:597:17) at require (internal/module.js:11:18) at runCommand (/app/main.js:112:28) at Client.client.on (/app/main.js:80:13) at emitOne (events.js:121:20) at Client.emit (events.js:211:7) at MessageCreateHandler.handle (/rbd/pnpm-volume/67ac24e4-dce5-4d21-93d3-e93950b90c6a/node_modules/.registry.npmjs.org/discord.js/11.3.2/node_modules/discord.js/src/client/websocket/packets/handlers/MessageCreate.js:9:34) at WebSocketPacketManager.handle (/rbd/pnpm-volume/67ac24e4-dce5-4d21-93d3-e93950b90c6a/node_modules/.registry.npmjs.org/discord.js/11.3.2/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:103:65) code: 'MODULE_NOT_FOUND' }

該当のソースコード

js

1if (message.content.includes(10+'分')) { 2 message.channel.send('仕方ないわね。10分くらい数えてあげるわ'); 3 message.react('????'); 4function sleep(waitSec, callbackFunc) { 5 var spanedSec = 0; 6 var id = setInterval(function () { 7 spanedSec++; 8 if (spanedSec >= waitSec) { 9 clearInterval(id); 10 if (callbackFunc) callbackFunc(); 11 }}, 1000);} 12 sleep(300, function () { 13 message.channel.send('あと5分よ'); 14 sleep(530, function () { 15 message.channel.send('あと30秒よ'); 16 sleep(600, function () { 17 message.channel.send('10分たったわよ'); 18 return; 19 }); 20 }); 21 }); 22 }

試したこと

「仕方ないわね…」,「あと5分よ」,は至極普通に動きましたが、
「あと30秒よ」は13分51秒後に反応。
「10分たったわよ」は約17分55秒に反応しました。。。

補足情報(FW/ツールのバージョンなど)

https://glitch.com/edit/#!/nine-can?path=main.js:319:11
ここにプログラムを書きました。
問題のプログラムは198~です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

インデントが崩壊しているのでフォーマッタを通しましよう。

js

1if (message.content.includes(10 + '分')) { 2 message.channel.send('仕方ないわね。10分くらい数えてあげるわ'); 3 message.react('????'); 4 5 function sleep(waitSec, callbackFunc) { 6 var spanedSec = 0; 7 var id = setInterval(function() { 8 spanedSec++; 9 if (spanedSec >= waitSec) { 10 clearInterval(id); 11 if (callbackFunc) callbackFunc(); 12 } 13 }, 1000); 14 } 15 sleep(300, function() { 16 message.channel.send('あと5分よ'); 17 sleep(530, function() { // => 270 18 message.channel.send('あと30秒よ'); 19 sleep(600, function() { // => 30 20 message.channel.send('10分たったわよ'); 21 return; 22 }); 23 }); 24 }); 25}

sleep のコールバックは時間経過後に呼び出されるので、5分経過してから530秒待つことになります。
(そもそも530秒って計算があってませんが)

投稿2018/10/03 10:09

mather

総合スコア6753

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siranui

2018/10/03 10:49

あぁ、なるほどそういうことだったんですね。ありがとうございました! (つい時計みたいに30にしてしまったのには目をつぶっていただきたい????)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問