Commit Graph

156 Commits

Author SHA1 Message Date
Pragmatic Software ecd2bad066 Add anti-kick-auto-rejoin module that temporarily kickbans offenders who immediately auto-rejoin after having been kicked 2014-12-28 00:44:15 +00:00
Pragmatic Software e5909965f7 Move anti-away stuff to its own AntiAway.pm module; add /me actions to anti-away detection 2014-12-27 04:53:42 +00:00
Pragmatic Software 598e2e4988 Add NickList module to track nicks present in channels; dispatch pbot.join/pbot.part events when bot joins/parts channels 2014-11-15 01:18:33 +00:00
Pragmatic Software d1e7abc175 Add event dispatcher module to allow modules to dispatch events and
to register handlers to listen for events.

Update IRCHandlers module to use new event dispatcher to dispatch
irc.events.  Update several modules to register with dispatcher
to listen for irc.events.

Improve handling of reconnection upon unexpected disconnection.

Todo: update more things to use new event dispatcher logic.
2014-11-01 00:15:21 +00:00
Pragmatic Software 068c6a0559 Add default handler for unhandled IRC events; ignore certain IRC events; improve handling of chan-op requests 2014-08-11 07:34:30 +00:00
Pragmatic Software f463852093 Add registry entry to toggle debugging of IRC module 2014-05-31 01:03:42 +00:00
Pragmatic Software 548b4681ac Add %conf to all module creation; add deop timeout registry entry 2014-05-19 22:59:51 +00:00
Pragmatic Software 937282a114 Add more values to registry for antiflood and lagchecker 2014-05-19 02:42:18 +00:00
Pragmatic Software 020d512ee4 Minor indentation fix 2014-05-18 22:51:37 +00:00
Pragmatic Software 30e3c5ce35 Remove PBot getter/setters; move anti-flood registry defaults to AntiFlood.pm 2014-05-18 20:09:05 +00:00
Pragmatic Software bf4920b866 Set default identify_password to "none" to avoid empty value in registry 2014-05-18 00:30:51 +00:00
Pragmatic Software e07df35cbf Move command modules out of PBot.pm and into their respective modules
E.g., FactoidCommands.pm is now loaded inside Factoids.pm, etc.

Misc reformatting/refactoring of PBot.pm
2014-05-18 00:27:57 +00:00
Pragmatic Software d955bfa06c Add centralized configuration registry module
Allows changing of bot configuration values without needing to restart
bot instance or needing to edit pbot.pl script.

Registry will initially be populated with default values from pbot.pl,
but if a registry file exists then the registry values will take
precedence over the pbot.pl values. For instance, if you regset the
bot trigger to '%' then the trigger will be '%' even if pbot.pl has '!'
or something else explicitly set.

Some registry items can have trigger hooks associated with them.  For
instance, the irc->botnick registry entry has a change_botnick_trigger
associated with it which changes the IRC nick on the server when a new
value is set via regset/regadd.

Tons of other fixes and improvements throughout.
2014-05-17 20:08:19 +00:00
Pragmatic Software d8d26b1cea Add registerable atexit functionality and trap SIGINT 2014-05-16 22:11:31 +00:00
Pragmatic Software cd54dcb573 Track and handle nick-change events; add anti-nick-flood detection 2014-05-16 00:48:46 +00:00
Pragmatic Software 1f242aeec4 Detect and handle KICK events 2014-05-15 15:49:56 +00:00
Pragmatic Software 54ac8ec0ef Convert message history to use SQLite database instead of Perl hashtable
Added MessageHistory.pm and MessageHistory_SQLite.pm.  May eventually port
and add MessageHistory_Hashtable.pm as was done with Quotegrabs, but this is
not particularly high on the todo list.

Antiflood.pm has been updated to use the new MessageHistory API.

The `recall` command has been moved from Quotegrabs into MessageHistory.  It
also now has the ability to ignore messages containing the recall command
itself, for improved usability.

Likewise, the `grab` command will now ignore previous `grab` commands when
grabbing by regex in order to prevent accidentally grabbing previous grab
attempts.

The `join` and `part` commands have been improved to accept multiple channels,
and `part` will use the current channel if none is provided.
2014-05-13 10:15:52 +00:00
Pragmatic Software 239e3de8ea Quotegrabs.pm now uses quotegrabs_db API for interfacing with storage backend
Two quotegrabs_db backends are now availble:

  * Quotegrabs_Hashtable.pm: the original hashtable implementation
  * Quotegrabs_SQLite.pm: the new SQLite implementation

Quotegrabs_SQLite.pm is now the default quotegrabs_db backend.

This was done to reduce the memory footprint of the bot by not needing to
keep the entire quotegrabs table in memory any longer.

A similiar change will be coming soon to the Factoids table as well as the
MessageHistory table.
2014-05-06 05:15:27 +00:00
Pragmatic Software 4a110848e9 Add SelectHandler class to register callbacks for selecting and reading handles; updating StdinReader to use SelectHandler 2014-03-14 05:51:15 +00:00
Pragmatic Software 80a29256ed Fix undefined variable $from when issuing commands from stdin 2014-03-07 16:50:35 +00:00
Pragmatic Software 5a61f57f3c Use Storable to save/load message history hash
Reuse config_dir/data_dir variable in pbot.pl
2014-02-05 01:10:56 +00:00
Pragmatic Software 416115f12f Ban timeouts hash converted to DualIndexHashObject to properly group masks by channels 2013-07-24 12:35:40 +00:00
Pragmatic Software dc52430044 Add SSL support, and other misc updates 2013-02-25 02:27:24 +00:00
Pragmatic Software 876d9fb5c6 Improved grab command to accept regex for history 2012-08-01 09:57:43 +00:00
Pragmatic Software 44ba3001cb Updated mode +q list tracking to updated freenode syntax; added ban whitelist (for evasion allowing) 2011-12-11 22:56:57 +00:00
Pragmatic Software 3c6288920e Added channel ban tracking 2011-02-13 05:07:02 +00:00
Pragmatic Software c4ed12b0cb anti-flood, IRC, etc: added support for tracking NickServ accounts; refactored flood message history to be keyed on hostmask instead of nick; placed message history channels into its own sub-key 2011-02-11 02:46:35 +00:00
Pragmatic Software 805832d977 pbot: allowed bot trigger to be customizable from pbot.pl; bot registry coming soon... 2011-01-30 03:22:00 +00:00
Pragmatic Software 8983a53732 pbot: slightly improved readability/flow of PBot.pm 2011-01-26 10:13:06 +00:00
Pragmatic Software aaa261b66e pbot: correct default config directory 2011-01-26 10:04:55 +00:00
Pragmatic Software e6e89023a0 pbot: made PBot.pm more readable and concise 2011-01-26 09:40:08 +00:00
Pragmatic Software 45a2a66d0f Moved lag-checking code to LagChecker.pm; improved output of !lagcheck command 2011-01-24 23:56:55 +00:00
Pragmatic Software b11b660929 antiflood/pbot: added basic support for lag detection 2011-01-22 09:26:04 +00:00
Pragmatic Software e3655749fd Added Net::IRC as PBot::IRC in order to support PONG events and possible future customisation 2011-01-22 08:35:31 +00:00
Pragmatic Software 4be7fe3b34 Refactored Factoids to use DualIndexHashObject; added factset/factunset to set factoid meta-data; factoids now per-channel; slightly unfinished 2010-06-20 06:16:48 +00:00
Pragmatic Software 547087b81d Corrected join flood to get correct time distance between join messages 2010-06-19 19:19:56 +00:00
Pragmatic Software fe96faded8 unban_timeouts is now a HashObject -- consequently, unban timeouts now save to and load from data file 2010-06-18 10:46:23 +00:00
Pragmatic Software 96fd2d7c7a Remove FLOOD_JOIN and FLOOD_CHAT from PBot.pm 2010-06-06 04:41:15 +00:00
Pragmatic Software 4b342be290 Add join flood protection 2010-06-05 06:07:15 +00:00
Pragmatic Software b1c2a12500 Move $VERSION out of PBot.pm and to its own VERSION.pm module 2010-06-05 04:34:14 +00:00
Pragmatic Software 4e4574d2b6 Setting PBot.pm $VERSION from build script instead 2010-06-05 00:30:03 +00:00
Pragmatic Software 4563ca7794 Finalizing SVN auto-props Id keyword for PBot.pm $VERSION 2010-06-04 23:18:50 +00:00
Pragmatic Software e3680adbb4 Testing SVN auto-props Id keyword for PBot.pm $VERSION 2010-06-04 23:12:32 +00:00
Pragmatic Software d01b724427 Testing SVN auto-props for Id keyword 2010-06-04 22:55:03 +00:00
Pragmatic Software 8ebe546850 New factoid loading/saving -- much more flexible! 2010-05-08 23:36:56 +00:00
Pragmatic Software 1131ab32df Truncate long output to codepad.org 2010-04-13 04:17:54 +00:00
Pragmatic Software 87ce882450 Added username/realname to config 2010-04-09 22:52:24 +00:00
Pragmatic Software 116577aefb Ignorelist now saves/loads; ignorelist timeout of -1 causes ignore to be permanent 2010-04-06 18:38:27 +00:00
Pragmatic Software a901a8a4c8 Correct autologin issue 2010-03-30 06:34:08 +00:00
Pragmatic Software cd73f1104e Admins management improved. Admins now save and load, and can be added and removed. 2010-03-29 12:30:35 +00:00
Pragmatic Software 21e4415289 Improved find command by adding optional -owner and -by search parameters 2010-03-26 08:58:25 +00:00
Pragmatic Software a743261059 See Changes file 2010-03-26 05:14:03 +00:00
Pragmatic Software d299a8fb0f 90% done in object-oriented conversion -- IgnoreList doesnt save/load/use regex yet. 2010-03-24 06:47:40 +00:00
Pragmatic Software fa50724b58 Progressing on object-oriented conversion. Some functionality may be missing. 2010-03-23 18:24:02 +00:00
Pragmatic Software bd46c11120 Half-way through converting everything to objects. Committing mostly working copy as preview. 2010-03-22 07:33:44 +00:00
Pragmatic Software f725743ccb == MAJOR NEW BETA RELEASE ==
Converted single large "amalgamate" monolithic pbot2.pl script into multiple Perl packages/modules.

Tons of refactoring and clean-ups.

Consider this version to be beta.  Use at your own risk.
2010-03-17 06:36:54 +00:00