this serves as a good example of how to reuse code for the XML-RPC
interface. we wrap it for convenience, so that all that needs to be
supplied to the web service method is the message to echo. of course,
other modules can wrap things how they feel the need to, even adding
authentication, i guess, if they wanted
note that it doesn't unregister the XML-RPC method. for starters, i
didn't add an unregister to DrBotIRC, so it can't, and secondly, it
looks like reregistering overwrites the old one. this hasn't been
extensively tested but that's what i'm seeing
this is the first implementer of the new regex handler code, by all
accounts it's working fine, hopefully the underlying code in DrBotIRC
won't need to change as i go forward, but it might
this probably dates back to the beginning of the bot, a lot of things
that are handling irc events use event.arguments()[0] because it was
observed that that always had the entire message body, but i don't know
if that's actually the case --- in any event, we should probably loop
over it and try to find a way to handle everything
putting this off because the previous commit refactoring will obsolete
some methods, and because those that remain probably need to be reworked
to not return, and instead do something else to handle looping
add_global_regex_handler and remove_global_regex_handler are new methods
that work the same as irclib's non-regex versions, but check patterns
before adding/removing. this allows for a more direct link between event
loop and module methods
i'm hoping that one day it will allow for the removal of ancient
shortcuts that just get in the way now, like do() and
on_pub_or_privmsg()
lightly tested, if anything is still brittle it's recursion, no doubt
sorry, mikeb. it never really caught on and seemed kind of janky. i
intend to have something that uses docstrings in the future, with the
helping baked into Module or maybe even DrBotIRC
another "this is unnecessary" change, obviously impacting all the
modules that override __init__ as well as the base class. again, they
can use the DrBotIRC instance for anything, which is (with one
exception) only for add/remove_global_handler, which i'm planning on
working my way off of anyway
obviously this means all of the modules changed to accomodate. this is
one of many steps to reduce the number of times we pass connections and
servers and other such info around, when it's mostly unnecessary because
modules have a reference to DrBotIRC
we still override the nickhost guess with what comes out of the ircd's
welcome message, if it is a full nick!user@host (although now i'm
doubting if we should expect such a thing or if it was just unrealircd
being nice), but this produces more accurate guesses for the cases where
we don't do that override. this was affecting splitting
when matching patterns, !rank item++ would not get replied to
since the karma matcher would hit, increment item, and then return
(with no response). now it hits but lets processing continue.
doing !rank item++ of course still increments item, which is probably
not what you want to have happen, but i'm not sure how i feel about
fixing it yet, since even if it's not what you /want/ it's probably
what you /expect/.
when starting another sentence because the main one is too short,
do a bit of work in an attempt to avoid "nick: blah" starts, since
they're fairly common. instead we just ignore nick: and start with
"blah blah"