3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-28 23:09:39 +01:00
Commit Graph

170 Commits

Author SHA1 Message Date
Pragmatic Software
bc05915905 Interpreter: improve parsing of embedded commands 2023-05-11 08:08:38 -07:00
Pragmatic Software
bd6af472e8 Interpreter: remove left-over malformed section 2023-05-11 06:08:26 -07:00
Pragmatic Software
329c8db33c Factoids: fix factrem/forget
Somehow I missed the `remove()` subroutine when converting
to subroutine signatures...
2023-05-07 13:47:25 -07:00
Pragmatic Software
097c657f0c Commands/ChanOp: minor code-formatting clean-up 2023-05-05 18:59:35 -07:00
Pragmatic Software
1bb5fe031d Use quietlist when setting mutes 2023-05-04 16:30:35 -07:00
Pragmatic Software
b04c06f396 Refactor ban/unmute commands 2023-05-04 16:03:24 -07:00
Pragmatic Software
8555e8f00e Core/BanList: correct ban_user() arguments 2023-04-28 00:46:22 -07:00
Pragmatic Software
2c3f8fb9fe Fix some inconsistent arguments 2023-04-21 15:56:43 -07:00
Pragmatic Software
860a6be156 Fix some inconsistent arguments 2023-04-17 10:33:02 -07:00
Pragmatic Software
7ddb32ea16 Update core to use subroutine signatures 2023-04-13 21:04:12 -07:00
Pragmatic Software
05cf63e00c Interpreter: fix $0 in commands that use &{subs} 2023-03-23 08:56:58 -07:00
Pragmatic Software
e736051de5 Fix UTF-8 encoding 2023-03-12 16:06:04 -07:00
Pragmatic Software
110f019bf2 MessageHistory: recall: fix incorrect whitespace appended to text argument if -t is not used 2023-02-24 20:50:19 -08:00
Pragmatic Software
13b09be29a Commands/Factoids: factchange: handle escaped delimiters 2023-02-23 13:16:17 -08:00
Pragmatic Software
8d5b992b4c Update copyright 2023-02-20 21:31:52 -08:00
Pragmatic Software
1eaf85239f NickList: handle nickchange before any other handlers 2023-02-13 16:27:26 -08:00
Pragmatic Software
21d06bc149 IRC: do not debug PONG events 2023-02-13 16:06:24 -08:00
Pragmatic Software
47d8f5724a Check for bans when CHGHOST
Remove redundant message type from log message
2023-02-02 09:22:51 -08:00
Pragmatic Software
9f314cd365 Enable aka_debug because AKA log entries are interesting 2023-02-02 09:13:36 -08:00
Pragmatic Software
7bbd5d8097 Fix QUIT log message 2023-02-01 17:47:25 -08:00
Pragmatic Software
6dd390540a Improve CHGHOST log message 2023-02-01 17:33:09 -08:00
Pragmatic Software
d3c8c74a9d Support IRCv3 CHGHOST extension
Clean up MessageHistory constants
2023-02-01 17:27:06 -08:00
Pragmatic Software
a173858fb8 Enable multi-prefix IRCv3 extension 2023-02-01 14:48:12 -08:00
Pragmatic Software
6240aee0a0 Simplify arguments for IRC handlers 2023-01-31 05:44:34 -08:00
Pragmatic Software
441e858a84 Make some log messages more consistent 2023-01-30 15:50:26 -08:00
Pragmatic Software
02d690600b Gate message-tags debug message with irc.debug_tags 2023-01-28 11:48:29 -08:00
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
7a6a150067 Begin refactoring message-history tracking 2023-01-22 07:36:11 -08:00
Pragmatic Software
d8803a4c29 Update irccloud detection/handling 2023-01-21 14:47:11 -08:00
Pragmatic Software
55407ce800 Factoids: factadd: include contents for factlog 2022-12-31 14:55:48 -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
c4602bc295 WebPaste: increase max width to 150 characters 2022-08-07 19:05:43 -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
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
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
d3328a4acd Factoids: factinfo now says "Applet" instead of "Module" 2022-04-08 09:13:57 -07:00
Pragmatic Software
d80b70a2e5 Dequeue cache events when removing SQLite Storage entries 2022-03-23 23:45:00 -07:00
Pragmatic Software
bf8749ff9e Fix blacklist command 2022-03-09 12:56:38 -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
619ff86a94 Rename compiler factoid to vm-client 2022-02-14 16:47:46 -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
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
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
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
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
Pragmatic Software
169a4c9fc7 Fix minor issue with command piping; misc clean-ups 2021-09-04 20:53:02 -07:00
Pragmatic Software
4096510d05 Replace Text::Levenshtein with Text::Levenshtein::XS
Existing PBot users: please run `cpanm Text::Levenshtein::XS` to install
this module.
2021-08-27 19:57:18 -07:00
Pragmatic Software
d1bb30ef94 Replace Text::Levenshtein with Text::Levenshtein::XS
Text::Levenshtein::XS is much, much, much, much faster and more
efficient.

Existing PBot users: Please run `cpanm Text::Levenshtein::XS` to install this
module.
2021-08-27 19:41:51 -07:00
Pragmatic Software
731d795c03 Interpreter: log bot output in message history
Bot output now appears in `recall` and can be `grab`bed.

Moved truncate_result() a bit further down to truncate after target nick
is prefixed to output.
2021-08-26 10:47:59 -07:00
Pragmatic Software
e9a8620fb0 Factoids/Selectors: Add missing use statement 2021-08-25 22:05:52 -07:00
Pragmatic Software
ff298a3862 Factoids: add factoid command
The `factoid` commands interprets its arguments as an anonymous factoid.
Useful for testing factoid actions without creating and deleting them.

E.g.:

  <pragma> !factoid /say $args[1:2] --args 'testing hello world args'
    <PBot> hello world
2021-08-25 21:25:18 -07:00
Pragmatic Software
fd1c5b66c9 Interpreter: move dehighlight/truncate to output_result() 2021-08-25 19:40:38 -07:00
Pragmatic Software
d9a9ef0cc0 Interpreter: fix truncated text with multiple nicks
dehighlight_nicks() was being invoked after truncate_result(), therefore
inserting \x200b zero-width space Unicode characters AFTER the message
was truncated.

Solution: moved dehighlight_nicks() to immediately preceding truncate_result().
2021-08-24 20:27:12 -07:00
Pragmatic Software
b7ce503a8d Interpreter: stop processing at the right spot 2021-08-23 22:11:33 -07:00
Pragmatic Software
a9eb7cc24b Interpreter: minor clean-up 2021-08-23 21:54:07 -07:00
Pragmatic Software
50d4a2a94d Interpreter: don't stop processing on empty result 2021-08-23 21:51:26 -07:00
Pragmatic Software
48373719d8 Factoids: preserve_whitespace now works for all factoids 2021-08-23 19:27:34 -07:00
Pragmatic Software
b638757f92 Interpreter: fix-up a/an article in front of &{cmdsub}s 2021-08-23 13:23:12 -07:00
Pragmatic Software
68490b6ac5 Factoids: add blank line between factlog entries 2021-08-22 09:55:50 -07:00
Pragmatic Software
49d92aa1bd MessageHistory: recall special characters can now be escaped 2021-08-19 11:05:36 -07:00
Pragmatic Software
d1df2d325c Improve output of truncation text
Instead of "... [truncated; see http://xxx for full text.]" it more
concisely says "... <truncated; http://...>".

Increased irc.max_msg_len from a very conservative 425 to a more
generous 460. If you have very long channel names or nicknames, or if
you see things being truncated incorrectly, reduce this value.
2021-08-12 22:30:56 -07:00
Pragmatic Software
defad20bfd Refactor and simplify atexit routines 2021-08-06 12:59:21 -07:00
Pragmatic Software
3fc39c9359 Core/Commands: remove(): fix arguments passed to unregister() 2021-08-06 11:14:40 -07:00
Pragmatic Software
dd54bc40cb DualIndexSQLiteObject: improve header comments 2021-08-04 22:46:51 -07:00
Pragmatic Software
f286ff44a0 Modules: fix load command 2021-08-02 17:53:16 -07:00
Pragmatic Software
a0e2ba3610 Interpreter: minor comments about getopt 2021-08-02 04:57:52 -07:00
Pragmatic Software
487c84e824 Registry: remove plugin_dir 2021-08-02 04:40:45 -07:00
Pragmatic Software
f4dbb68221 Rename irc.onemode to irc.modeflag
- rename track_mode to on_modeflag
- consistently return undef or 1 from handlers
2021-08-01 18:02:10 -07:00
Pragmatic Software
108c2924cc Move some handlers to relevant Handlers modules
- dispatch irc.onemode event for each mode flag
- misc clean-ups
2021-08-01 15:53:58 -07:00
Pragmatic Software
1c5dc69047 Plugins: die if plugin fails to autoload during start-up 2021-07-31 12:05:48 -07:00
Pragmatic Software
17e78cd7fc Commands: add(): improve named-parameter validation 2021-07-31 12:04:50 -07:00
Pragmatic Software
5aeb608052 Commands: fix minor typos in comments 2021-07-30 19:50:30 -07:00
Pragmatic Software
926d57990b Support named-parameters in command registration
- convert several plugins to use named-parameters
- misc clean-ups in unrelated files
2021-07-30 19:01:24 -07:00
Pragmatic Software
483984754a Simplify use of getopt() throughout 2021-07-30 15:01:38 -07:00
Pragmatic Software
7c4c5847ab Interpreter: find factoid channel for dont-replace-pronouns metadata 2021-07-28 18:05:14 -07:00
Pragmatic Software
5dd4566ad4 Add usershow command to show user metadata 2021-07-27 23:46:54 -07:00
Pragmatic Software
62a477b7c4 Fix rare case where dont-replace-pronouns was ignored 2021-07-27 23:25:38 -07:00
Pragmatic Software
39ee73f0b8 Fix version not updating after refresh 2021-07-27 22:38:19 -07:00
Pragmatic Software
59140d4096 Remove add_nick mess from ProcessManager 2021-07-27 21:27:03 -07:00
Pragmatic Software
8cff244256 Simplify VERSION.pm 2021-07-27 12:25:56 -07:00
Pragmatic Software
67d2dd5d95 Minor clean-up and polish
- add more comments to VERSION.pm
- minor clean up of logging messages
- minor refactoring
- VERSION.pm will no longer be updated as its own distinct commit
2021-07-27 12:01:42 -07:00
Pragmatic Software
6ba7864474 Add missing PBot::Core::Factoids::* files 2021-07-26 21:46:20 -07:00
Pragmatic Software
c75be8b4b0 Refactor PBot::Core::Factoids into PBot::Core::Factoids::* 2021-07-26 21:39:44 -07:00
Pragmatic Software
5567270f59 Factoids: ensure user has capability when factsetting cap-override 2021-07-26 07:46:50 -07:00