Pragmatic Software
52f183deae
Registerable: add register_front method to register to head of list
2020-05-29 20:49:24 -07:00
Pragmatic Software
c9be31a9c0
PBot: fix execute_and_dequeue atexit
2020-05-29 20:48:53 -07:00
Pragmatic Software
b57fea8120
Factoids: fix export errors upon exit by correcting atexit registration order
2020-05-29 20:43:07 -07:00
Pragmatic Software
75eac99ea1
PBot: strip trailing directory separator from directory command-line overrides
2020-05-29 18:57:22 -07:00
Pragmatic Software
159124cbe9
Channels: fix chanrem
2020-05-29 18:25:55 -07:00
Pragmatic Software
d170b6b1ec
Update version
2020-05-29 18:19:45 -07:00
Pragmatic Software
cd665619ee
AntiFlood: devoice +v users when banning
2020-05-29 18:19:42 -07:00
Pragmatic Software
50e000923a
Update version
2020-05-29 18:10:57 -07:00
Pragmatic Software
f8b6cee54e
AntiFlood: check for +v/+o on user when enforcing anti-flood
2020-05-29 18:10:49 -07:00
Pragmatic Software
85e08eee9e
PBot: refactor the two argument parsing loops into one loop
2020-05-26 19:21:11 -07:00
Pragmatic Software
bd38b53288
Update version
2020-05-21 19:57:15 -07:00
Pragmatic Software
8f024aa140
Commands: do not expand variables for commands with dont-replace-pronouns, in order to preserve expected behavior
2020-05-21 19:57:11 -07:00
Pragmatic Software
395f13020b
Update version
2020-05-21 19:38:08 -07:00
Pragmatic Software
0ac20aa4b1
Commands: fix some cases in which $args would not expand
2020-05-21 19:38:05 -07:00
Pragmatic Software
0f377d4497
Update version
2020-05-21 19:25:38 -07:00
Pragmatic Software
beef46f120
Variables such as $0 can now be escaped, e.g. in factset
, etc
2020-05-21 19:23:30 -07:00
Pragmatic Software
7e38ee6793
BanList: fix warning about odd elements in anonymous hash
2020-05-18 12:17:04 -07:00
Pragmatic Software
10b4332556
Update version
2020-05-18 10:57:25 -07:00
Pragmatic Software
f293366ad0
MessageHistory: override sort method to seen if -l is specified without -sort
2020-05-18 10:57:23 -07:00
Pragmatic Software
b3a5b57f71
Update version
2020-05-18 09:54:59 -07:00
Pragmatic Software
74e0f9a1ce
Plugins: ignore blank lines in plugin_autoload
2020-05-18 09:54:55 -07:00
Pragmatic Software
b0bdde34a5
Update version
2020-05-18 01:00:22 -07:00
Pragmatic Software
aa778304d8
MessageHistory: add gecos to aka
-sort
2020-05-18 01:00:18 -07:00
Pragmatic Software
852c54d210
Update version
2020-05-18 00:05:18 -07:00
Pragmatic Software
da9abb4fbc
MessageHistory: aka
can now sort output; added option -l
to show last seen time
2020-05-18 00:05:15 -07:00
Pragmatic Software
565f4b080b
NickList: improve nicklist
usage message
2020-05-18 00:04:12 -07:00
Pragmatic Software
46cad2050c
NickList: slightly improve error-checking for nicklist
arguments
2020-05-17 23:31:25 -07:00
Pragmatic Software
33fd788988
NickList: improve nicklist
usage message
2020-05-17 23:10:49 -07:00
Pragmatic Software
1daf86df46
NickList: add text about using -/+ to invert sort direction
2020-05-17 22:56:14 -07:00
Pragmatic Software
d656b01aa6
Update version
2020-05-17 16:47:50 -07:00
Pragmatic Software
5bb026f33e
NickList: nicklist
command now can accept options for sorting and display
2020-05-17 16:47:48 -07:00
Pragmatic Software
40a2728737
Update version
2020-05-16 23:13:19 -07:00
Pragmatic Software
9898634b3a
NickList: improve output of nicklist
command
2020-05-16 23:13:13 -07:00
Pragmatic Software
72eb7f9e24
Users: do not repeat names for each hostmask per channel in users
2020-05-16 22:43:54 -07:00
Pragmatic Software
0436294090
MessageHistory: aka
can optionally bypass alias table
2020-05-16 22:39:48 -07:00
Pragmatic Software
8871d88ff2
Update version
2020-05-14 17:42:13 -07:00
Pragmatic Software
08caa120fe
BanList: increase save queue delay to 15s
2020-05-14 17:42:11 -07:00
Pragmatic Software
6ff311267e
Update version
2020-05-14 16:58:38 -07:00
Pragmatic Software
4166da140e
BanList: use save queue to prevent repeated saves when handling multiple bans
2020-05-14 16:58:29 -07:00
Pragmatic Software
506ebf13c6
DualIndexHashObject can now enqueue saves to prevent repeated-save thrashing
2020-05-14 16:57:34 -07:00
Pragmatic Software
a91c2cd71e
DualIndexSQLiteObject: do not interrupt atexit queue
2020-05-14 16:55:23 -07:00
Pragmatic Software
37f3bc5467
Timer: add more flexible ways to enqueue and dequeue events
2020-05-14 16:54:10 -07:00
Pragmatic Software
559b058dd1
ChanOpCommands: fix unban *
2020-05-14 16:53:10 -07:00
Pragmatic Software
5633bf8798
Update version
2020-05-09 03:22:44 -07:00
Pragmatic Software
2ef70f76fb
BlackList: case-insensitive channel test
2020-05-09 03:16:14 -07:00
Pragmatic Software
b5ec951df1
AntiFlood: check_ban(): correct order of ban_user_timed() arguments
2020-05-09 03:15:12 -07:00
Pragmatic Software
ca228b9e06
Interpreter: extract_bracketed/split_line now properly handle a final trailing backslash
2020-05-09 03:13:56 -07:00
Pragmatic Software
1270bef010
Update version
2020-05-08 13:09:36 -07:00
Pragmatic Software
aa1273f16f
Users: correct spelling of account name
2020-05-08 12:56:49 -07:00
Pragmatic Software
b04df81f81
Update version
2020-05-04 23:50:04 -07:00
Pragmatic Software
fdc8cd54d5
Factoids: fix spelling of cmd_factfind in interpreter()
2020-05-04 23:49:59 -07:00
Pragmatic Software
c733a5253b
Update version
2020-05-04 23:37:18 -07:00
Pragmatic Software
c9b69e0b50
Interpreter: ensure $context->{hostmask} is set in interpret()
2020-05-04 23:37:13 -07:00
Pragmatic Software
8b7a9d46bd
Users: fix minor autovivification issue when decaching non-existent users
2020-05-04 19:05:11 -07:00
Pragmatic Software
467fcaaf74
Update version
2020-05-04 16:52:01 -07:00
Pragmatic Software
2dfae83478
ProcessManager: show "No output." for processes that exit without output; add $context flag to suppress this
2020-05-04 16:51:55 -07:00
Pragmatic Software
ba3b22d124
Update version; bot restart required
2020-05-04 13:25:05 -07:00
Pragmatic Software
976bfcb5e7
Refactor commands to begin with cmd_ and take a $context object
...
Move all command subroutines closer to top of source file
Do not send WHO to non-chanop channels
Minor misc bugfixes and improvements
2020-05-04 13:21:35 -07:00
Pragmatic Software
5df95b45e9
Update version
2020-05-03 19:27:18 -07:00
Pragmatic Software
ea67642872
Channels: fix gain_ops() call
2020-05-03 19:27:04 -07:00
Pragmatic Software
a26411fbc4
Factoids: remove debug statement
2020-05-02 23:54:49 -07:00
Pragmatic Software
a6202c09c6
Interpreter: adjust interpret_depth for pronouns
2020-05-02 23:52:35 -07:00
Pragmatic Software
b514acffae
Update version
2020-05-02 23:50:07 -07:00
Pragmatic Software
33f8c5aeab
Factoid rate-limit no longer affects factoids piped/substituted/splitted within the same command
2020-05-02 23:49:29 -07:00
Pragmatic Software
aee7f706c7
DualIndexSQLiteObject: improve formatting of set
output
2020-05-02 15:00:57 -07:00
Pragmatic Software
ec7eb3828d
Update version
2020-05-02 02:38:44 -07:00
Pragmatic Software
bfce579480
Fix reload banlist
2020-05-02 02:38:39 -07:00
Pragmatic Software
cfba96e8ae
Rename $stuff to $context throughout
2020-05-01 20:59:51 -07:00
Pragmatic Software
195dd39330
Update version
2020-05-01 11:26:32 -07:00
Pragmatic Software
0bd2718e05
Functions: correct issue causing truncation at 0
2020-05-01 11:26:27 -07:00
Pragmatic Software
92ed6dd016
Update version
2020-05-01 09:55:19 -07:00
Pragmatic Software
e155b2958e
Commands: show how to add help text when help text is missing
2020-05-01 09:55:15 -07:00
Pragmatic Software
1124f4716a
DualIndexSQLiteObject: add missing get_key_name() subroutine
2020-05-01 09:54:50 -07:00
Pragmatic Software
b54360485d
IgnoreList: correct formatting of pasted ignore list
output
2020-05-01 09:45:38 -07:00
Pragmatic Software
b9fb3dcb7d
Update version
2020-04-30 14:27:16 -07:00
Pragmatic Software
e071005cd4
Fix ban list type flag inconsistency due to BanList refactor
2020-04-30 14:27:10 -07:00
Pragmatic Software
54971a6051
Update version
2020-04-30 11:49:04 -07:00
Pragmatic Software
3a3ed38162
MessageHistory: correct behavior of recall -n
without history
2020-04-30 11:48:53 -07:00
Pragmatic Software
de73fa6d56
Update version
2020-04-29 20:01:57 -07:00
Pragmatic Software
f23df0d4ac
DualIndexSQLiteObject: quote unprepared keys
2020-04-29 20:01:49 -07:00
Pragmatic Software
e1d1e83512
MessageHistory: Remove "It's a nick-change!" message
2020-04-29 19:58:15 -07:00
Pragmatic Software
91890a2d33
Update version
2020-04-29 17:49:38 -07:00
Pragmatic Software
2b0a0550b5
MessageHistory: recall
: add -raw and -random; fix mixing -x -t and -n
2020-04-29 17:49:31 -07:00
Pragmatic Software
88a13847c8
IgnoreList: properly set global channel; fix whitespace in ignore list
2020-04-29 16:55:09 -07:00
Pragmatic Software
5e7955a51b
Update version
2020-04-28 22:43:17 -07:00
Pragmatic Software
54a938b54d
BanList: Remove repeated "ago"
2020-04-28 22:43:13 -07:00
Pragmatic Software
f347d1798b
Finalize BanList refactor; add updater
2020-04-28 22:36:13 -07:00
Pragmatic Software
ea19abad4f
Refactor BanTracker into BanList; move stuff out off ChanOps
2020-04-28 21:33:49 -07:00
Pragmatic Software
8b6b969b97
DualIndexHashObject: do not overwrite existing data when adding
2020-04-28 16:59:58 -07:00
Pragmatic Software
848a6c4e3d
IRC/Event: add event 729 endofquietlist
2020-04-28 16:59:03 -07:00
Pragmatic Software
90de77e523
Users: clear user cache when rebuilding index
2020-04-28 16:18:53 -07:00
Pragmatic Software
e98cd759fd
Rename BanTracker to BanList
2020-04-25 20:31:48 -07:00
Pragmatic Software
381902b042
Update version
2020-04-24 23:27:10 -07:00
Pragmatic Software
3f2158cab2
Users: Fix issue with exact-match hostmasks
2020-04-24 23:27:06 -07:00
Pragmatic Software
599dab7ef6
Update version
2020-04-24 23:10:00 -07:00
Pragmatic Software
4e71cb0674
Add object name to JSON metadata when saving
2020-04-24 23:04:07 -07:00
Pragmatic Software
4fb1ed815b
Users: add id
command
2020-04-24 22:58:40 -07:00
Pragmatic Software
c077410107
Update version
2020-04-24 18:17:29 -07:00
Pragmatic Software
39683e6da3
DualIndexHashObject: Fix precedence issue
2020-04-24 18:17:25 -07:00
Pragmatic Software
96b1ffde2d
Update version
2020-04-24 17:28:39 -07:00
Pragmatic Software
e31fe57017
Timer: eventqueue remove
will now list removed events
2020-04-24 17:28:27 -07:00
Pragmatic Software
8d9e3da249
Major refactor of Users
2020-04-23 16:19:36 -07:00
Pragmatic Software
66f6d867e9
Remove redundant _name metadata from JSON files
2020-04-22 16:46:09 -07:00
Pragmatic Software
012f2bd061
Update version
2020-04-21 21:31:58 -07:00
Pragmatic Software
b3a5637d9f
Plugins: pluglist
now shows count
2020-04-21 21:31:53 -07:00
Pragmatic Software
28da37fca5
Update version
2020-04-21 19:45:01 -07:00
Pragmatic Software
f8c55355dc
Add version metadata to JSON files
2020-04-21 19:44:14 -07:00
Pragmatic Software
e740883430
Update version
2020-04-21 15:18:22 -07:00
Pragmatic Software
2c2d547b51
MessageHistory: Increase limits back to 100; remove "I have messages for them in ..."
2020-04-21 15:14:11 -07:00
Pragmatic Software
903d663d18
Update version
2020-04-20 17:53:45 -07:00
Pragmatic Software
f6ac46956f
Rename Migration to Updater
2020-04-20 17:53:32 -07:00
Pragmatic Software
340f9d9fd7
Update version
2020-04-20 10:53:43 -07:00
Pragmatic Software
b9d3fa5f03
Add data/config migration framework
2020-04-20 10:53:35 -07:00
Pragmatic Software
b007cb3b9d
MessageHistory: Increase in-channel recall
message limit to ~5
2020-04-19 14:47:30 -07:00
Pragmatic Software
9576c20dc4
Update version
2020-04-19 12:42:47 -07:00
Pragmatic Software
87461f38e7
MessageHistory_SQLite: replace REGEXP with LIKE
2020-04-19 12:42:44 -07:00
Pragmatic Software
700e7b3945
Update version
2020-04-19 10:25:43 -07:00
Pragmatic Software
38c080e665
MessageHistory_SQLite: Remove SQLite pcre.so extension
2020-04-19 10:25:31 -07:00
Pragmatic Software
0771552a11
DualIndexSQLiteObject: Remove unused SQLite pcre.so extension
2020-04-19 10:24:10 -07:00
Pragmatic Software
66d0369990
FactoidCommands: fix display of owner text in factfind
2020-04-16 20:03:59 -07:00
Pragmatic Software
88b8ecc452
Update version
2020-04-09 14:42:45 -07:00
Pragmatic Software
317ed4fe9e
Update version
2020-04-05 20:33:19 -07:00
Pragmatic Software
3eac19d65e
Timer: remove case-sensitivity
2020-04-05 20:33:14 -07:00
Pragmatic Software
dde93db0ac
ChanOps: dequeue existing identical ban/mute timeouts when adding/updating timeout
2020-04-05 16:58:56 -07:00
Pragmatic Software
7ce2eb87d2
MessageHistory: recall
must be used via /msg if count > 2
2020-04-03 13:12:24 -07:00
Pragmatic Software
ea54fad8c6
Update version
2020-03-25 00:51:57 -07:00
Pragmatic Software
c88e5647e0
Interpreter: remove < and > as nick characters in dehighlight_nicks()
2020-03-25 00:51:53 -07:00
Pragmatic Software
d6ca9474c3
Update version
2020-03-24 15:53:25 -07:00
Pragmatic Software
5f741ba69d
Interpreter: simplify dehighlight_nicks() a bit
2020-03-24 15:53:21 -07:00
Pragmatic Software
b915b7c489
Update version
2020-03-24 15:17:36 -07:00
Pragmatic Software
1cadd1d87d
Interpreter: improve and optimize dehighlight_nicks()
2020-03-24 15:17:33 -07:00
Pragmatic Software
864e6853ea
Update version
2020-03-23 17:49:53 -07:00
Pragmatic Software
a7df1a3be7
FactoidCommands: fix factfind
to show usage message if no arguments
2020-03-23 17:49:50 -07:00
Pragmatic Software
39d1c1e7ee
Update version
2020-03-23 16:36:05 -07:00
Pragmatic Software
0b9bc60690
FactoidCommands: simplify factfind
2020-03-23 16:35:58 -07:00
Pragmatic Software
78e91c1b82
Update version
2020-03-22 15:52:50 -07:00
Pragmatic Software
8e9742a0e4
Interpreter: do not dehighlight single-letter nicks or nicks in URLs
2020-03-22 15:52:47 -07:00
Pragmatic Software
3c7ad2c529
Update version
2020-03-22 13:28:08 -07:00
Pragmatic Software
55de922aa6
AntiFlood: update last_spoken_nick properly
2020-03-22 13:28:04 -07:00
Pragmatic Software
0e1a496001
Update version
2020-03-19 18:58:27 -07:00
Pragmatic Software
cac4ac81ad
Factoids: Fix undo/redo via DualIndexSQLiteObject
2020-03-19 18:58:24 -07:00
Pragmatic Software
f0300f873a
Update version
2020-03-19 18:03:38 -07:00
Pragmatic Software
9ad611dd60
DualIndexSQLiteObject: do not return partially cached object for get_data(x, y)
2020-03-19 18:03:35 -07:00
Pragmatic Software
5e2dfff2cc
Update version
2020-03-17 23:56:53 -07:00
Pragmatic Software
47661f4a21
Commands: factoid-based $variables now expand in command arguments
2020-03-17 23:56:44 -07:00
Pragmatic Software
55115d8d16
Factoids: improve "No such factoid" message when no matches found
2020-03-17 23:08:56 -07:00
Pragmatic Software
8c3f600e72
Update version
2020-03-10 01:52:36 -07:00
Pragmatic Software
85a98d5a8b
Timer: update eventqueue
usage message
2020-03-10 01:52:32 -07:00
Pragmatic Software
39cec8e35a
Update version
2020-03-09 15:24:51 -07:00
Pragmatic Software
d69682efc1
eventqueue
command now accepts -repeat
flag
2020-03-09 15:24:47 -07:00
Pragmatic Software
e193fc734f
Timer: use normal wildcard for eventqueue remove
2020-03-09 12:58:30 -07:00
Pragmatic Software
9c8da0238a
MessageHistory_SQLite: give timer a more concise name
2020-03-08 22:46:02 -07:00
Pragmatic Software
b5fad6c279
Revert "Timer: minor visual style change"
...
This reverts commit 2bd034c951
.
2020-03-08 19:15:15 -07:00
Pragmatic Software
2bd034c951
Timer: minor visual style change
2020-03-08 19:11:52 -07:00
Pragmatic Software
cc6fe1e4f5
Update version
2020-03-08 16:06:13 -07:00
Pragmatic Software
86a1ed42ae
Timer: eventqueue
command can now add and remove events
2020-03-08 16:05:37 -07:00
Pragmatic Software
bac855c1f4
ChanOps: save permanent bans/mutes better
2020-03-07 18:19:24 -08:00
Pragmatic Software
08667eda5d
Update version
2020-03-06 20:25:07 -08:00
Pragmatic Software
857021f25f
Interpreter: $self is no longer passed through event queue
2020-03-06 20:23:44 -08:00
Pragmatic Software
5624d2d166
Timer: intelligently wait for next tick; eventqueue
command can now filter
2020-03-06 20:23:17 -08:00
Pragmatic Software
471422a4f8
Update version
2020-03-06 13:31:27 -08:00
Pragmatic Software
c815ccbc0d
Use event queue for unban/unmute timeouts
2020-03-06 13:31:22 -08:00
Pragmatic Software
f5927c8761
Interpreter: use event queue for output queue and command queue
2020-03-06 13:30:09 -08:00
Pragmatic Software
74b3f35d3e
ProcessManager: properly add "can-kill" cap without triggering saving
2020-03-06 13:29:37 -08:00
Pragmatic Software
16ac6d95fb
Give sensible names to various existing timers
2020-03-06 13:28:06 -08:00
Pragmatic Software
e98072f98d
IgnoreList: use event queue for ignore timeouts
2020-03-06 13:23:40 -08:00
Pragmatic Software
25623ac80e
Timer: refactor to use event queue
2020-03-06 13:21:44 -08:00
Pragmatic Software
41728783ed
AntiFlood: fix private message ignorelist
2020-03-04 18:26:39 -08:00
Pragmatic Software
326fac5a6e
Update version
2020-03-04 13:25:48 -08:00
Pragmatic Software
c467f92904
DualIndexHashObject: get_keys: ensure index actually exists
2020-03-04 13:25:41 -08:00
Pragmatic Software
6c4f56f9df
IgnoreList: refactored to use DualIndexHashObject
2020-03-04 13:24:40 -08:00
Pragmatic Software
c46783eca1
Update version
2020-03-04 09:56:29 -08:00
Pragmatic Software
e28d664cd5
Factoids: /msg caller for unknown command instead of silently disregarding
2020-03-04 09:56:22 -08:00
Pragmatic Software
48361191bd
DualIndexSQLiteObject: Add comment about compatibility with DualIndexHashObject
2020-03-04 05:54:20 -08:00
Pragmatic Software
dc0c00e847
Update version
2020-03-03 12:51:04 -08:00
Pragmatic Software
c5f137e853
FactoidCommands: optimize histogram, top20 and count
2020-03-03 12:51:00 -08:00
Pragmatic Software
82b4e51f09
DualIndexSQLiteObject: get_each(): put parentheses around related OR clauses
2020-03-03 10:10:20 -08:00
Pragmatic Software
b7240d3bdc
DualIndexSQLiteObject: make _sort prefix more consistent
2020-03-03 08:55:34 -08:00
Pragmatic Software
0a034814ad
FactoidCommands: reinstate regex
command
2020-03-03 07:41:07 -08:00
Pragmatic Software
3ff232decd
DualIndexSQLiteObject: refactor get_each() to use array instead of hash
2020-03-03 07:40:23 -08:00
Pragmatic Software
786dfc8c6c
Update version
2020-02-29 01:46:34 -08:00
Pragmatic Software
941b3327c6
Factoids: Optimize export_factoids() with get_each() and get_next()
2020-02-29 01:46:29 -08:00
Pragmatic Software
178c02de72
DualIndexSQLiteObject: replace get() with get_all(), get_each() and get_next()
2020-02-29 01:45:17 -08:00
Pragmatic Software
3ca3917891
MessageHistory: minor improvements to recall
2020-02-27 21:06:52 -08:00
Pragmatic Software
d327d24c1c
Update version
2020-02-27 20:42:22 -08:00
Pragmatic Software
cb80857927
Update version
2020-02-27 11:14:50 -08:00
Pragmatic Software
b178b718f0
Factoids: DualIndexSQLiteObject->get() is now powerful enough to replace FactoidsSQLite
2020-02-27 11:14:43 -08:00
Pragmatic Software
97b2394166
Update version
2020-02-26 17:51:29 -08:00
Pragmatic Software
b7fcb909dc
DualIndexSQLiteObject: minor improvements
2020-02-26 17:49:59 -08:00
Pragmatic Software
c489b6eac7
Factoids: replace get_all_by_trigger() with DualIndexSQLiteObject->get()
2020-02-26 17:48:34 -08:00
Pragmatic Software
978fa255b2
Update version
2020-02-26 02:33:14 -08:00
Pragmatic Software
4c7b7551e2
FactoidCommands: Optimize factfind()
2020-02-26 02:32:52 -08:00
Pragmatic Software
5d3dca94b9
Factoids: Optimize find_factoid()
2020-02-26 02:32:22 -08:00
Pragmatic Software
91b2b1e7c7
MessageHistory_SQLite: move extension loading to inside eval block
2020-02-26 02:31:08 -08:00
Pragmatic Software
999ee4a33c
Interpreter: Fix potential undefined variable
2020-02-26 02:30:26 -08:00
Pragmatic Software
e24835ea95
Switch over to SQLite backend for Factoids
2020-02-26 02:29:02 -08:00
Pragmatic Software
fb1eda51ee
DualIndexHashObject needs create_metadata() for compatibility with DualIndexSQLiteObject
2020-02-26 02:24:15 -08:00
Pragmatic Software
e73d890246
Add FactoidsSQLite
...
This is a subclass of DualIndexSQLiteObject with additional methods
specific to Factoid-related functionality.
2020-02-26 02:22:43 -08:00
Pragmatic Software
c93602a34e
Add DualIndexSQLiteObject
...
DualIndexSQLiteObject is a class that provides an interface for SQLite objects.
This interface is compatible with DualIndexHashObject.
SQLite objects are loaded on-demand when needed, unlike Hash objects which
are stored in working memory. The SQLite objects are temporarily cached in
working memory, for optimal performance.
2020-02-26 02:20:11 -08:00
Pragmatic Software
d74fb24c96
PBot: cancel alarm timeout when exiting
2020-02-26 02:11:42 -08:00