Last active
October 9, 2015 03:28
-
-
Save ustreamer-01647/3431534 to your computer and use it in GitHub Desktop.
Carteのトーナメント実施時刻前にnoticeするLimeChat2用スクリプト
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Carte Tournament Noticer | |
偶数時47分に「まもなくトーナメントが始まります」を投稿する. | |
スクリプト読み込み時に初期化する function event::onLoad() | |
現在時刻を把握し,偶数時47分までの時間を調べる. | |
タイマーセットし,noticerに送る | |
*/ | |
/* version history | |
1.0 https://gist.github.com/3431534 | |
bug0: 時報実施後,奇数時45分の間,時報を繰り返す. | |
1.1 ズレ幅を2分間にしたからきっと大丈夫.時報タイミングが45分から47分に変えた | |
bug1: コメントにて,偶数奇数を書き間違えた | |
bug2: 変数名typo interverlTime intervalTime | |
bug3: intervalTime設定が不適切 | |
1.2 上記問題に対処した | |
bug4: 時報すべきタイミングが不適切.奇数時0分より前に実施すべきなのだから,時報タイミングは偶数時45分以降が正解 | |
1.3 上記問題に対処した | |
*/ | |
/* 設定 */ | |
// 動作チャンネル | |
TargetChannel = "#paulga"; | |
// 時報メッセージ | |
Message = "まもなくトーナメントが始まります"; | |
/* 変数 */ | |
// 次回時報までの時間.ミリ秒 | |
var intervalTime; | |
// 初期化 | |
function event::onLoad() | |
{ | |
setTimer(); | |
} | |
// タイマーセット | |
function setTimer() | |
{ | |
// 現在時刻を知る. | |
var now = new Date(); | |
// 現在時刻表示.デバッグ用 | |
//notice( now.toLocaleString() ); | |
// 直近の奇数時45分までの差を得る | |
/* | |
現在時が偶数 | |
分が45を超えているか | |
はい 偶数時までの時間 + 60min + 45min | |
いいえ 45分までの時間 | |
現在時が奇数 | |
偶数時までの時間 + 45min | |
*/ | |
if ( 0 == now.getHours() % 2 ) | |
{ | |
if ( now.getMinutes() > 45 ) | |
{ | |
a = 60 - now.getMinutes(); | |
intervalTime = ( a + 60 + 45 ) * 60 * 1000; | |
}else | |
{ | |
a = 45 - now.getMinutes(); | |
intervalTime = ( a ) * 60 * 1000; | |
} | |
}else | |
{ | |
a = 60 - now.getMinutes(); | |
intervalTime = ( a + 45 ) * 60 * 1000; | |
} | |
// 次回時報までのインターバル確定 | |
// 連続投稿を防ぐため,2分間ずらす | |
// 以降のsetTimer()は偶数時47分に実行されるだろう | |
intervalTime = intervalTime + 2 * 60 * 1000; | |
// 次回投稿タイミングを報告する | |
advanceNotice(now, intervalTime); | |
// タイマーセットして寝る | |
setTimeout(noticer, intervalTime); | |
} | |
/* 次回投稿タイミング報告 | |
*/ | |
function advanceNotice(now, intervalTime) | |
{ | |
nextDate = new Date(); | |
nextDate.setTime(now.getTime() + intervalTime); | |
notice( "Carteトーナメント時報: 次回は " + nextDate.toLocaleString() ); | |
} | |
/* 時報 | |
*/ | |
function noticer() | |
{ | |
// メッセージ投稿 | |
notice ( Message ); | |
// LimeChat2のウインドウタイトルバー点滅 | |
window.flashTitle(); | |
// タイマー再セット | |
setTimer(); | |
} | |
/** noticeを送信する | |
*/ | |
function notice ( text ) | |
{ | |
send ( TargetChannel, text ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment