Commit Graph

282 Commits

Author SHA1 Message Date
Pragmatic Software 999c07f237 Support IRCv3 message tags; misc refactoring
PBot now finally supports IRCv3 message tags. The `account-tag`
capability is now enabled for improved NickServ account tracking.

Refactored CAP negotiation. Minor clean-ups in AntiFlood.pm (which ought to
be completely rewritten from the ground-up).

Misc clean-ups and refactoring of various things.
2023-01-27 11:48:01 -08:00
Pragmatic Software 19d8170af3 applets/pbot-vm: vm-server: fix child signal handler 2023-01-24 12:34:03 -08:00
Pragmatic Software de7db72c04 applets/c2english: fix issue parsing `int *(foo)[5]` 2023-01-23 12:46:15 -08:00
Pragmatic Software 7a6a150067 Begin refactoring message-history tracking 2023-01-22 07:36:11 -08:00
Pragmatic Software d29ec9b6b9 Plugin/Wttr: add sunHour and uvIndex to -sun; decrease cache timeout from 1hr to 15m 2023-01-21 23:32:14 -08:00
Pragmatic Software d8803a4c29 Update irccloud detection/handling 2023-01-21 14:47:11 -08:00
Pragmatic Software 576783df55 applets/cjeopardy: qstats now shows all wrong answers instead of top 10 2023-01-21 12:13:01 -08:00
Pragmatic Software 55407ce800 Factoids: factadd: include contents for factlog 2022-12-31 14:55:48 -08:00
Pragmatic Software ad449ff07b Update version 2022-12-25 18:22:21 -08:00
Pragmatic Software ea35fc78c2 Commands/Help: update URL to point at TOC 2022-12-25 18:18:18 -08:00
Pragmatic Software 38d9c86984 Factoids: add more pastebin URLs for `factadd -url`; update `help` URL to point at TOC 2022-12-25 18:17:14 -08:00
Pragmatic Software 474cca04b8 Plugin/WordMorph: simplify word validation 2022-10-01 21:32:25 -07:00
Pragmatic Software 8721122c1f Plugin/WordMorph: improve sanity checks 2022-10-01 10:17:27 -07:00
Ckat 7bec49c4ed
Plugins/WordMorph: validate word length (#69) 2022-10-01 09:49:15 -07:00
Pragmatic Software 2cf09ca415 Plugin/WordMorph: minor refactor/clean-up 2022-09-08 07:19:43 -07:00
Pragmatic Software 219851ffaf Plugin/WordMorph: add `neighbors` subcommand; improve `custom` error messages 2022-09-07 17:52:48 -07:00
Pragmatic Software 0196e61b72 Plugin/WordMorph: add `check` command to check if a word exists 2022-09-06 08:02:07 -07:00
Pragmatic Software adaf4e2ed3 Plugin/WordMorph: several improvements
- add 2880 variant words to wordlist
- morph generator skips words with same suffix
- default steps increased from 3 to 4
- default minimum word length increased from 4 to 5

Note that you can override default steps and word lengths via `start`.
2022-09-04 16:47:43 -07:00
Pragmatic Software 82edbd2a18 Plugin/WordMorph: minor refactoring/clean-up 2022-08-31 23:09:10 -07:00
Pragmatic Software f71e08cf7f Plugin/WordMorph: minor refactoring/clean-up 2022-08-31 22:54:54 -07:00
Pragmatic Software 3c28dd046a Plugin/WordMorph: allow hinting from right-hand side 2022-08-31 18:27:31 -07:00
Pragmatic Software bc02854d15 Update WordMorph
- Ensure length of each step is correct
- Add WordMorph to plugin_autoload
2022-08-26 12:47:44 -07:00
Pragmatic Software c071bf7604 applets/cstd.pl: fix parsing of paragraphs 2022-08-26 11:18:20 -07:00
Pragmatic Software 0edfee6d15 Update WordMorph 2022-08-26 00:33:41 -07:00
Pragmatic Software b9dc225763 Plugin/WordMorph: improve hints with ? in place of next letter change 2022-08-24 23:11:47 -07:00
Pragmatic Software d5c336c058 Add WordMorph plugin 2022-08-24 14:37:02 -07:00
Pragmatic Software 4551318c56 applets/cstd.pl: Fix footnotes 2022-08-12 13:02:00 -07:00
Pragmatic Software 6a61de1026 Consolidate c{99,11,23}std.pl into cstd.pl 2022-08-12 12:28:58 -07:00
Pragmatic Software 43dec7b70f applets/gencstd23: fix paragraph diff special case for n1570 2022-08-08 18:45:15 -07:00
Pragmatic Software 9ddd38038a applets: add C23 draft (n3047) command
I really, really need to clean this mess up and combine
c99std.pl, c11std.pl and c23std.pl into one script!
2022-08-07 19:10:34 -07:00
Pragmatic Software c4602bc295 WebPaste: increase max width to 150 characters 2022-08-07 19:05:43 -07:00
Pragmatic Software 62849c9cc4 Bump version for previous revert 2022-08-03 11:31:09 -07:00
Pragmatic Software e656fb46cf Revert "FuncBuiltins: maybe-the: do it for all words"
This reverts commit 7093fa0ae4.
2022-08-03 11:25:05 -07:00
Pragmatic Software 7093fa0ae4 FuncBuiltins: maybe-the: do it for all words 2022-08-03 05:19:45 -07:00
Pragmatic Software d824255c6e Misc fixes and improvements
applets/random_quote.pl: URI encode arguments

Plugins/FuncSed: improve error handling
2022-08-03 05:18:33 -07:00
Pragmatic Software e4becb22a1 FuncBuiltins: maybe-the: special-case some indefinite nouns 2022-07-14 10:15:30 -07:00
Pragmatic Software f7d361beca Core: show previous server:port if connecting without disconnecting 2022-07-10 12:53:17 -07:00
Pragmatic Software 74380f2a72 Core: Use EXIT_SUCCESS/EXIT_FAILURE; misc clean-ups 2022-07-10 12:45:27 -07:00
Pragmatic Software 9f46cf0ebc Factoids: disable nickprefixing when action contains $args at any recursion level 2022-07-09 19:33:43 -07:00
Pragmatic Software d12a463987 Plugin/FuncBuiltins: do not ucfirst on nicks; add more POS to maybe-the 2022-07-09 19:09:27 -07:00
Pragmatic Software 10e49bbbb6 Update factoids 2022-07-08 12:50:30 -07:00
Pragmatic Software 421738498c cpanfile: add Lingua::EN::Tagger 2022-07-08 09:19:27 -07:00
Pragmatic Software 3ab4ed0a81 Plugin/FuncBuiltin: add `maybe-the` function
The `maybe-the` function examines the argument's part-of-speech
classification (noun, verb, etc) to determine whether to prepend
the word "the".
2022-07-08 09:11:56 -07:00
Pragmatic Software 833c20efbb Factoids: do not prefix nick if action has $args 2022-07-08 09:11:16 -07:00
Pragmatic Software a170b28a8b Factoids: fix behavior of factoid look-up 2022-07-05 23:12:12 -07:00
Pragmatic Software 0023790fec applets/(c99,c11)std: better handling of capture groups within -text option 2022-07-04 09:52:50 -07:00
Pragmatic Software 0cf80092a7 Plugins/Wttr: add observation time to default option 2022-07-03 07:22:33 -07:00
Pragmatic Software 87eff496e9 applets/wiktionary: group definitions w/examples; clean up output 2022-06-29 19:38:17 -07:00
Pragmatic Software 3ef58c2bfa applets/wiktionary: improve output 2022-06-27 20:35:02 -07:00
Pragmatic Software 41b69bdfa5 Factoids: add `keep-quotes` metadata for applet commands 2022-06-27 19:52:38 -07:00
Pragmatic Software 780d41e628 Factoids: correct quotemeta2 and make it slightly more readable 2022-06-26 08:42:01 -07:00
Pragmatic Software 5619d30a1b Factoids: fix Unicode issue with factfind 2022-06-25 17:34:06 -07:00
Pragmatic Software c0ade8a2f6 Plugin/GoogleSearch: show 3 matches instead of 1 2022-06-25 17:31:40 -07:00
Pragmatic Software 553fdb884c Plugin/Plang: do not use output_value() on exceptions 2022-06-12 19:33:53 -07:00
Pragmatic Software d003a326aa Plugins/Wttr: add -conditions to default option 2022-05-22 17:12:57 -07:00
Pragmatic Software e7f4729567 pbot-vm: rebuild without print_last_statement() if "cannot subscript something" error 2022-05-01 10:30:34 -07:00
Pragmatic Software 4b5d8aa535 pbot-vm: use %02X for escapes; do not escape \x03 (for IRC colors) 2022-04-08 13:12:37 -07:00
Pragmatic Software d3328a4acd Factoids: `factinfo` now says "Applet" instead of "Module" 2022-04-08 09:13:57 -07:00
Pragmatic Software 3d311296eb pbot-vm: output postprocessing: escape control characters/unprintable characters 2022-04-07 18:24:57 -07:00
Pragmatic Software 3375580a2d pbot-vm: fix parsing of quoted text within GDB/MI 2022-04-06 10:53:07 -07:00
Pragmatic Software 1c57e01fad pbot-vm: escape malformed Unicode on STDOUT 2022-04-04 22:32:53 -07:00
Pragmatic Software 110912e85d pbot-vm: use coderef to simplify escaping of malformed Unicode 2022-04-04 22:10:50 -07:00
Pragmatic Software 5bc47b61d9 pbot-vm: display escaped malformed Unicode in output instead of U+FFFD 2022-04-04 21:54:39 -07:00
Pragmatic Software 757088987d pbot-vm: fix invalid character encountered in JSON string 2022-04-04 21:41:27 -07:00
Pragmatic Software 8381fc7ad2 c99/c11 commands can now take `-text` option to filter output 2022-04-04 10:42:42 -07:00
Pragmatic Software 03fb901291 pbot-vm: fix potential time-out when outputting 0
If the output from a code snippet is `0` without a newline,
Perl treats this as a false value. When Guest::process_command()
returns a false value, that signals to guest-server::serial_server()
that it is the parent returning and so it will not send the result back
to the host.

However, `0\n` is a true value. Solution: always append a final newline to
the guest output.
2022-03-31 19:52:46 -07:00
Pragmatic Software d80b70a2e5 Dequeue cache events when removing SQLite Storage entries 2022-03-23 23:45:00 -07:00
Pragmatic Software 23efee674a Plugin/UrlTitles: update user-agents 2022-03-17 19:17:31 -07:00
Pragmatic Software 1abc466e7a Plugin/UrlTitles: include URL in history file 2022-03-17 16:47:06 -07:00
Pragmatic Software bf8749ff9e Fix `blacklist` command 2022-03-09 12:56:38 -08:00
Pragmatic Software 756895b17f Plugin/UrlTitles: fix indentation 2022-02-27 17:11:55 -08:00
Pragmatic Software c1cfa0ef4e Plugins/UrlTitles: fix indentation 2022-02-27 17:08:30 -08:00
Pragmatic Software 02cc7fc488 Refactor UrlTitles plugin
Moved logic from get_title.pl applet to plugin.
Removed get_title.pl applet.
ProcessManager::execute_process() can now take a reader subref.
2022-02-27 16:58:01 -08:00
Pragmatic Software 76fd5f5fd7 pbot-vm: fix encoding issues; misc clean-ups 2022-02-24 10:39:15 -08:00
Pragmatic Software a7b27098ca Update PBot version 2022-02-15 11:42:55 -08:00
Pragmatic Software 619ff86a94 Rename `compiler` factoid to `vm-client` 2022-02-14 16:47:46 -08:00
Pragmatic Software 3f5a11e608 Plugin/Plang: fix run-time unhandled exception error reporting 2022-01-18 13:42:06 -08:00
Pragmatic Software 02a600fa32 Plugin/Plang: improve error message of unhandled exceptions 2022-01-18 10:59:56 -08:00
Pragmatic Software e421f9b6bc Replace U+200b (zwsp) with U+feff (zwnbsp)
U+feff is now used instead of U+200b for nick-dehighlighting.

U+feff is non-breaking; it will not break-up the word when wrapping. It also
appears to be much more widely supported. In fact, some terminals will simply
strip the bytes -- this allows copying the text as-is, etc.

Additionally, an exclude-list was added to prevent dehighlighting of specific
nicknames. This is because several terminals do not fully support Unicode's
zero-width spaces -- they show up as plain spaces. Certain words for the #c
channel have been added to this exclude list since they are also somewhat
popular as nicknames there.
2022-01-18 10:32:21 -08:00
Pragmatic Software 731a95ef11 Plugins/Plang: rename Grammar to ParseRules 2022-01-03 15:47:30 -08:00
Pragmatic Software c04467b50f Fix minor uninitialized object warning 2022-01-01 21:32:01 -08:00
Pragmatic Software f78e7bea88 Fix `chanrem` command 2022-01-01 21:30:20 -08:00
Pragmatic Software 3d97dc2c33 Rename "modules" to "applets"
"Applet" is a much better name for the external command-line
scripts and programs that can be loaded as PBot commands. They
will no longer be confused with Perl modules.

https://en.wikipedia.org/wiki/Applet
2021-11-19 18:05:50 -08:00
Pragmatic Software 136460e6b4 Expand factoid variables/selectors in arguments to code factoids 2021-11-05 13:08:45 -07:00
Pragmatic Software 4cf1e76169 Update commands and factoids 2021-10-19 21:14:52 -07:00
Pragmatic Software 85fd8397c2 Fix auto-rejoin channels when reconnecting 2021-10-19 21:09:21 -07:00
Pragmatic Software 4809341e0f Commands/Factoids: minor formatting clean-up 2021-10-19 21:05:16 -07:00
Pragmatic Software 347e4ac69f modules/compiler_vm: replace ix.io with 0x0.st for pastes 2021-09-17 13:38:04 -07:00
Pragmatic Software eae16b14b8 modules/compiler_vm: fix -noheaders; manually #including a header once again replaces default includes 2021-09-17 13:30:46 -07:00
Pragmatic Software 3d1479aa59 Users: simplify previous commit 2021-09-14 16:15:00 -07:00
Pragmatic Software fa65bfc878 Users: `id` command can now search by wildcarded hostmasks 2021-09-14 14:23:35 -07:00
Pragmatic Software 5cf9ac1b9f BanList: misc refactors to improve readability 2021-09-12 22:24:29 -07:00
Pragmatic Software 153d771960 BanList: do not update existing bans with server bans
For some reason, various IRC networks do not propagate banlist metadata
such as owner and timestamp when a server rejoins. This causes the
server's banlist entries to contain "set by server" instead of the
original individual who set it and "set on now" instead of when it was
originally set.

This commit modifies PBot's banlist monitoring to only update PBot's
internal banlist metadata when the ban doesn't exist or when the ban is
being updated by an actual individual instead of the server. Now PBot
will remember the original setter and the original timestamp
regardless of whether the IRC server can.
2021-09-12 18:59:36 -07:00
Pragmatic Software 6924bc236d cpanfile: add missing JSON::XS module for significant JSON speed-ups 2021-09-12 11:13:12 -07:00
Pragmatic Software c7bb4b51cd Plugin/Spinach: fix path to Storage::HashObject 2021-09-12 11:11:44 -07:00
Pragmatic Software 74401977e1 Factoids: look-up use_output_queue/preserve_whitespace properly 2021-09-10 11:03:20 -07:00
Pragmatic Software a0265b4a6f MessageHistory: `recall` can use -a and -b together again 2021-09-08 14:05:35 -07:00
Pragmatic Software c3e16410c2 Whoops, execute_process() cannot return undef
If ProcessManager::execute_process() returns undef,
then the loop in Interpreter::interpret() thinks that
the command didn't get handled, and so goes on to look
for other commands. This is now corrected.
2021-09-07 10:18:12 -07:00
Pragmatic Software 7e539cc633 Fix typo 2021-09-06 13:03:01 -07:00
Pragmatic Software e60c4dc1f2 MessageHistory: Add `akadelete` command 2021-09-06 12:43:18 -07:00