コマンドを使用したすべてのユーザーと、最後にいつ使用したかを追跡することをお勧めします。これは、すべてのデータを INI ファイルに保存することで簡単に実行できます。
コマンドを使用して、この情報を保存できますwriteini
。このファイルにデータを書き込むには、次の行に沿って何かを使用します。
writeini sparky.ini usage $nick $ctime
$ctime
1970/01/01 から経過した秒数に評価されます。これは一般に、イベントの時間を比較する方法です。
ユーザーがスクリプトを再度トリガーすると、この INI ファイルから値を読み取り、現在の時刻と比較できます。時間の差が (たとえば) 10 秒未満の場合、コマンドを送信してから 120 秒間無視することができます。次を使用して、最後の使用量の値を読み取ります。
$readini(sparky.ini, n, usage, $nick)
最終的なスクリプトは、次のスクリプトの行に沿ったものになります。/triggerSparky <nick> <channel>
on TEXT と on ACTION イベント リスナーで同一のコードを避けるために、機能を別のエイリアス ( ) に移動しました。
on *:TEXT:*sparky*:#: {
triggerSparky
}
on *:ACTION:*sparky*:#: {
triggerSparky
}
alias triggerSparky {
; Send the message
msg $chan $read(scripts/name-responses.txt, n)
if ($calc($ctime - $readini(sparky.ini, n, usage, $nick)) < 10) {
; This user has recently triggered this script (10 seconds ago), ignore him for 120 seconds
ignore -u120 $nick
remini sparky.ini usage $nick
}
else {
writeini sparky.ini usage %nick $ctime
}
}
もちろん、同様の結果を達成するための少し簡単な方法は、データを INI ファイルに保存せずに、定義済みの時間だけ無視することです。これにより、最近 2 回トリガーされたかどうかを確認できなくなりますが、たとえば、2 分間に 1 回のみトリガーできるようにすることをお勧めします。