タイマー
指定した時間をカウントして、終了時にメンション通知
💡 タイマーとは? 指定した時間を計測し、カウントアップ(終了)時に 実行したユーザーへメンション通知する機能です。 タイマーは DB に保存されるため、Bot の再起動後も 動作し続けます。
概要
/タイマー <time>でタイマーを開始- 終了時刻になるとメンション付きで通知
- 1秒間隔のチェックで正確に判定
- 再起動で通知できなかった場合は復帰後に遅延通知
コマンド
/タイマー <time>
時間を指定してタイマーを開始します。
開始メッセージには時間と終了時刻が表示されます。
時間の指定方法
秒数のみ
数字だけを指定すると「秒」として扱われます。
| 指定例 | 意味 |
|---|---|
180 |
180秒(3分) |
3600 |
3600秒(1時間) |
〇h〇m〇s形式
h / m / s を組み合わせて
指定できます。h → m → s の順で記述し、
各単位は省略可能です。
| 指定例 | 意味 |
|---|---|
1h1m1s |
1時間1分1秒(3661秒) |
1h5s |
1時間5秒(3605秒) |
5m |
5分(300秒) |
30s |
30秒 |
2h |
2時間(7200秒) |
💡 ヒント: 全角数字・全角英字も自動で
半角に変換して解釈されます。0 や
abc のような入力でも大丈夫です。
⚠️ 注意: 単位を混ぜた曖昧な指定
(例: 1h30)や 0 以下の値、
無効な文字列はエラーになります。
「1以上の整数」もしくは「〇h〇m〇s形式」で指定してください。
通知の仕組み
カウントアップ時の通知
終了時刻になると、コマンドを実行したチャンネルに メンション付きで通知されます。
@ユーザー タイマーが終了しました!
(1h5s)
正確な判定(1秒チェック)
- 1秒間隔のタスクで終了時刻を細かくチェックします
- 終了時刻はミリ秒精度で保持されるため、 タイムアップより前に通知されることはありません
- 1秒未満の端数が切り捨てられる場合も、切り捨てた分の時間を 確実に経過したことを確認してから通知します
再起動後の遅延通知
タイマーは DB に保存されるため、Bot の再起動中に終了時刻を 迎えた場合でもタイマーは失われません。再起動完了後に コマンド実行チャンネルで遅延通知が送信されます。 その際は通知が遅れた旨も併せて表示されます。
@ユーザー タイマーが終了しました!
(1h5s)
※再起動などの影響で通知が遅れました
- コマンド実行チャンネルが存在しない場合は通知されません (タイマー自体は消化されます)
- 通知の送信に失敗した場合は、成功するまで再試行されます