Factoids can now have an effective-level metadata field. When set, certain
functionality requiring an effective-level will be enabled.
For now, that is currently only the /kick command, which has an effective-level
of 10.
Factoids with an effective-level set will also have the locked metadata
attribute set as well to prevent people from changing the factoid. The
locked and/or effective-level attributes will be removable only by admins
whose level is equal to or greater than the effective-level.
These are different from the loadable factoid modules. The factoid modules
are external executable shell commands that take stdin as arguments and print
to stdout as a return value. As such, they are not integrated into the bot
and cannot make use of the bot's internal subroutines.
These plugins are loaded internally and integrated into the bot such that they
can interface with the bot's internal subroutines and state.
All files in the Pluggable directory not beginning with an underscore will be
automatically loaded at bot start-up.
Plugins (including those starting with an underscore) can be manually loaded
or unloaded with the `plug` and `unplug` commands. Use `pluglist` to list
loaded plugins.
Randomize nick when connecting and change to botnick after identifying.
Identify after receiving connection welcome message.
Ghost existing nick if it is already in use and then attempt to regain it.
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.
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.
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.
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.