Linking of message accounts is now significantly less likely to produce
false-positives.
Previously, any hostmasks with matching nick!*@* would be strongly linked
together. This led to falsely-linking accounts, either inadvertently or
intentionally.
For example, Bob might also be known as Bob_ and Bobby,
but primarily uses Bob as his main nick. Somebody else might join with
Bobby and end up being linked to Bob. Now both Bob and the new Bobby are
linked together as the same person, but likely with different *!user@host.
Now if the new Bobby ever gets banned, then Bob will also end up being
banned for evading Bobby's ban.
This was a sore spot in the previous linking implementation.
This new implementation has several adjustments to more intelligently link
accounts only when they're proven beyond a reasonable doubt to be the same
person (e.g. by matching nickserv accounts, etc).
Consequently, rather than aggressively linking accounts and catching more
ban-evaders at the risk of potentially falsely-linking accounts and falsely
detecting innocent people as ban-evaders, this new implementation will instead
link accounts more reliably at the risk of potential ban-evaders not yet being
linked together and thus being able to evade a ban.
This is a more preferable and reasonable risk. Active channel ops should be
able to catch any obnoxious ban-evaders that slip through this net.
Add $event->{interpreted} field to events to notify other handlers
whether an event was successfully interpreted by the interpreter.
An $event->{interpreted} that is equal to or greater than 100 means the entire
message was consumed and handlers shouldn't do any further processing of it
that would generate any output to channels or users.
Otherwise, $event->{interpreted} is incremented by 1 for each referenced
command that was processed.
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.
chanops: moved flushqueues to inside loop
anti-flood/bantracker: now tracks quiets as well as bans
anti-flood: should now ban proxied hosts using a banned nickserv account -- untested
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.