/*
指定した時間にメッセージを出力するスクリプト
※連投防止のため指定時間の1分後に動作します
※上記時間から最大で±1分程度の誤差があります
*Version*
1.0:新規作成
*/
// 出力設定
var today = new Date();
var weekday = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
var messageText = weekday[today.getDay()];
var hour = 22; // 時(24時間表示)
var min = 18; // 分(1桁でも0は不要…あっても動くかも)
var channel = "#aaa";
/*
連投防止用wait関数
*/
function wait(intervalTime)
{
setTimeout(showMessage, 60 * 1000);
}
/*
メッセージ出力関数
*/
function showMessage()
{
send(channel, messageText);
setNextTimer();
}
/*
タイマー設定
*/
function setNextTimer()
{
log("ABC:" + channel);
var now = new Date();
var nextH = hour - now.getHours();
var nextM = min - now.getMinutes();
var intervalTime = ((nextH * 60) + nextM) * 60 * 1000;
if (intervalTime < 0)
{
intervalTime = (((24 * 60) * 60) * 1000 ) + intervalTime;
}
var nextDate = new Date();
nextDate.setTime(now.getTime() + intervalTime + 1000);
log("DEF:" + nextDate.toLocaleString());
setTimeout(wait, intervalTime);
log("GHI:" + messageText);
}
/*
起動時イベント
*/
function event::onLoad()
{
setNextTimer();
}
参考
http://blog.nakajijapan.net/archives/2209
https://lab.syncer.jp/Web/JavaScript/Snippet/3/
http://persimummies.hatenablog.com/entry/2015/04/12/110217
https://peacepopo.net/blog-entry-151.html