Skip to content

Instantly share code, notes, and snippets.

@ustreamer-01647
Last active October 9, 2015 03:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ustreamer-01647/3431534 to your computer and use it in GitHub Desktop.
Save ustreamer-01647/3431534 to your computer and use it in GitHub Desktop.
Carteのトーナメント実施時刻前にnoticeするLimeChat2用スクリプト
/*
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