Timer » History » Version 17
Per Amundsen, 02/16/2023 03:32 PM
1 | 1 | Per Amundsen | _Added in 1.9.0_ |
---|---|---|---|
2 | |||
3 | */timers [off]* |
||
4 | */timer[n|name] [off]* |
||
5 | */timer[n|name] [-cdehimopr] [time] <repetitions> <interval> <code>* |
||
6 | |||
7 | 2 | Per Amundsen | Creates a timer that runs <code> at an interval. |
8 | |||
9 | If you are connected to server when the timer is started, it defaults to being a online timer, otherwise it will be a offline timer. |
||
10 | |||
11 | 13 | Paul Janson | An offline timer will continue to run even if the server is disconnected, while a online timer will stop the timer when disconnected. |
12 | 2 | Per Amundsen | |
13 | 10 | Per Amundsen | _$identifiers and %vars in the <code> are evaluated at the creation time of the timer, to evaluate during the timer tick, the $ and % must be combined like this $ $+ identifier, % $+ varname._ |
14 | 8 | Per Amundsen | |
15 | 1 | Per Amundsen | *Switches* |
16 | |||
17 | 17 | Per Amundsen | table(ktable). |
18 | |*Switch*|*Description*| |
||
19 | | -c | Creates a catch-up timer. | |
||
20 | | -d | *TODO* | |
||
21 | | -e | Execute the code associated with a timer. | |
||
22 | | -h | Create a high-resolution timer. | |
||
23 | | -i | Dynamically associates itself with the active connection. | |
||
24 | | -m | Treat the interval parameter as milliseconds instead of seconds. | |
||
25 | | -o | Create a offline timer. | |
||
26 | | -p | Pauses execution of the command. The timer continues counting down. | |
||
27 | | -P | Pauses execution of the command and the countdown. | |
||
28 | | -r | Resume a timer. | |
||
29 | 14 | Per Amundsen | |
30 | 6 | Per Amundsen | *Parameters* |
31 | 1 | Per Amundsen | |
32 | 17 | Per Amundsen | table(ktable). |
33 | |*Parameter*|*Description*| |
||
34 | | [off] | Turns off a timer. | |
||
35 | | [n<notextile>|</notextile>name] | The name or index of the timer. | |
||
36 | | [time] | Executes the timer at the specified time in HH:MM (24 hour) format. | |
||
37 | | <repetitions> | The number of times the timers should repeat itself. An repetition value of '0' will repeat forever. (or until DISCONNECT if it's an online timer) | |
||
38 | | <interval> | The delay between two consecutive timer executions | |
||
39 | | <code> | Code to be executed. | |
||
40 | 1 | Per Amundsen | |
41 | *Example* |
||
42 | |||
43 | <pre> |
||
44 | alias example { |
||
45 | 4 | Per Amundsen | ; Create a variable and set value to 5. |
46 | var %reps = 5 |
||
47 | 1 | Per Amundsen | |
48 | 5 | Per Amundsen | ; Call the timer %reps times after 1 second delay. |
49 | 4 | Per Amundsen | .timer %reps 1 countdown |
50 | 1 | Per Amundsen | |
51 | 4 | Per Amundsen | ; Print the first count. |
52 | 1 | Per Amundsen | count-down |
53 | } |
||
54 | 4 | Per Amundsen | |
55 | alias -l countdown { |
||
56 | echo -ag Count: $timer($ltimer).reps |
||
57 | 1 | Per Amundsen | } |
58 | 11 | Per Amundsen | |
59 | 16 | Per Amundsen | ; Simple timer that sends a reply after 10 seconds. |
60 | 1 | Per Amundsen | on *:TEXT:hi:#adiirc:{ timer 1 10 msg $chan Hello, $nick $+ ! } |
61 | 13 | Paul Janson | </pre> |
62 | 1 | Per Amundsen | |
63 | 13 | Paul Janson | |
64 | <pre> |
||
65 | |||
66 | //timer 1 10 echo time of execution is $!asctime and time of launch is $asctime |
||
67 | |||
68 | /timerMidnite 00:00 1 0 echo -a it is now midnight! |
||
69 | |||
70 | Force it to execute now: /timerMidnite -e |
||
71 | </pre> |
||
72 | |||
73 | *WARNING* Do *NOT* place strings into the command line of a timer which someone else can control. All strings beginning with % or $ (or if they follow comma or '#') could potentially be executed. |
||
74 | |||
75 | <pre>on *:FILERCVD:*.*:{ timer 1 0 msg #channel I received $nopath($filename) from $nick ! }</pre> |
||
76 | |||
77 | By placing this in a timer, someone can send you a filename containing the word %password to find out the value of that variable, or can force you to execute identifiers you don't wish to use, or could even be harmful to you. |
||
78 | |||
79 | 17 | Per Amundsen | One solution can be to keep messages in a @Queue window, or change the above to use [[$unsafe]]( [[$nopath]]($filename) ) instead. |