Commit Graph

377 Commits

Author SHA1 Message Date
015fe87e1a implement priority in calling do().
store module.do instead of module, making this an awful lot like
an internal command bus. steal a trick from irclib and sort based
on priority, while we're at it. we added priority a while ago, and
this means that low prio (high value) items are called later, meaning
we can do things like

!join #botname

and have the IrcAdmin handler handle it before MegaHAL gets to it
2011-01-08 00:32:46 -06:00
07be2f3a85 MegaHAL: do add_global_handler in the right place, actually do remove_global_handler 2011-01-08 00:31:19 -06:00
36fcbde267 do a deep copy of the string being learned from, since mh_python is weird/corrupty 2011-01-08 00:26:18 -06:00
bed3f7ec23 use add_global_handler on pubmsg/privmsg to learn from IRC.
this rather than inside do(), which could internal commands and stuff
that probably counts as noise
2011-01-08 00:14:11 -06:00
c23b59d705 improve upon the splitting (which was excessive following the last commit).
clarify the terminology a bit, too
2011-01-08 00:05:00 -06:00
bf7074b76e use a welcome handler to capture the bot's nickmask.
we do this deep in the server in order to have the split functionality
use it properly. i still don't know if it handles server privacy
masks properly (which would only be noticed if that cloak is sent
when you connect).

actually, on that note, this only works if the ircd sends the
nickmask in 001. but hey, it works on one server at least
2011-01-07 23:56:51 -06:00
ae4411605d remove the bot admin/alias/recursion stuff from TODO 2011-01-07 23:17:37 -06:00
8bbfeba593 add note on the annoyingness of unicode escapes in GoogleTranslate bug 2011-01-07 23:16:59 -06:00
d4062cbe99 oops. continue to learn messages in MegaHAL that we don't reply to 2011-01-07 23:12:06 -06:00
359ca24856 remove replypath and all the places it was used.
with alias calling do() internally, there is no need for all this
replypath nonsense, and if there's ever a module that needs to reply
to stuff on its own outside of do(), it'd have to be implementing
all of this anyway, so it was pretty irrelevant.

this makes DrBotIRC alias/recursion stuff a bit cleaner.
2011-01-07 23:09:07 -06:00
dbf02723e0 countdown formatting bug 2011-01-07 23:05:06 -06:00
a234807335 move !alias manipulation commands out of try_alias and into the pubmsg/privmsg handler 2011-01-07 22:34:27 -06:00
4cac5f1a93 fixes and improvements to recursion and alias support 2011-01-07 22:31:30 -06:00
516940630c hack the replypath to the sender, if we're handling a privmsg 2011-01-07 21:14:14 -06:00
fc2814e57c don't attach to pubmsg/privmsg events by default anymore.
this is possible because now the alias stuff in DrBotIRC calls
each module's do() on a pubmsg/privmsg.

this also gets rid of all the meta options (so remove them from
your config file!), and IrcAdmin now only needs to connect
to welcome.
2011-01-07 21:04:33 -06:00
0bd681c324 convert most modules to use ! commands.
okay, it's time. we got around for a while with all sorts of silly
config options and exceptions and common strings triggering bot
commands. but now it's time to man up and expect modules to be
more strict and less loosey-goosey.

convert the popular modules (i.e. the ones that still work) to
trigger on !pi rather than pi, etc. usually, this is achieved via
regex searches, although there are some weird bugs (ones i'm hoping
are caused by other recursion/alias bugs and not this commit).

more code around this will be gutted soon, but this, at least,
means you can't say 'tweet that shit, yo' and accidentally trigger
the bot.
2011-01-07 20:37:24 -06:00
6b2af47552 don't display 'debug' in the alias list 2011-01-07 20:36:42 -06:00
f0730a5edf update privmsg splitting bug 2011-01-07 19:34:20 -06:00
efb92ddc83 reload should call irc.reload_module, not unload_module 2011-01-07 19:09:09 -06:00
d637983ae1 apparently ply doesn't like docstrings in its functions 2011-01-07 18:42:56 -06:00
01d3c7c80c migrate some code that became pivotal to the bot into DrBotIRC.
this is a big change. DrBotIrc is now in charge of module loading
and unloading, aliases, and recursion. the Alias module is no more,
and a bunch of functionality was moved out of IrcAdmin, including
also config file saving, the sigint handler, and quitting the bot.

additionally, a lot of stuff got caught in the wake. dr.botzo.py
is simpler now, and lets DrBotIRC do the dynamic loading stuff.
Module.__init__ changed, modules no longer get modlist and instead
get a reference to the DrBotIRC object. IrcAdmin still has the same
exposed methods, but now calls out to DrBotIRC to achieve some of
them.

naturally, a recursion/alias rewrite was included with this change.
it is clearer now (i think), but probably brittle somewhere.
additionally, currently any module that has registered a pubmsg
handler can potentially fire more than once on one input (without
recursion). this may be the next thing to fix. do() may need to
be split, or maybe it's time to stop having modules deal with
pubmsg/privmsg entirely. need to decide.

WEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
2011-01-07 17:38:26 -06:00
973dbae90e document !part thinko 2011-01-07 17:23:15 -06:00
3333fe125e Revert "fix the cheap unicode escapes in GoogleTranslate"
unicode-escape appears to do bad things to hiragana and probably
all unicode characters that are not unicode escaped. ultimately
it seems that google's responses are not consistent.

back to the drawing board.

This reverts commit 40888869b0.
2011-01-07 17:11:00 -06:00
02b3266b46 give MegaHAL priority 95 (which is low priority, which always confuses me) 2011-01-07 11:24:38 -06:00
b4f1c5facd MegaHAL: docstring stuff 2011-01-07 11:23:46 -06:00
11dd04d4db document a bug i keep forgetting about 2011-01-07 09:59:10 -06:00
4d6228b93a move DrBotIRC into a separate file, since we will probably be hacking more on it soon 2011-01-07 09:54:51 -06:00
35419f9db9 to stop responding by default is too much power for one module to wield 2011-01-07 09:19:19 -06:00
b7ce4b6dcc add Alias at priority 1 (so that it is handled first) 2011-01-07 01:11:35 -06:00
de3f9d9ae7 provide a priority (default 50) to add_global_handler 2011-01-07 01:10:52 -06:00
8bec2e62a1 make it possible for a module to respond and tell irclib to stop calling other handlers.
this works via Module.reply(). if it produces IRC output, it returns
"NO MORE", which is returned by do(), which is returned by the handler,
which instructs irclib to cease calling handlers. now all we need
is some priorities for the modules (also supported by irclib) and
we may be in business
2011-01-07 00:44:31 -06:00
a451eceef3 TODO: some crap i can't decide on or am too lazy to undertake on a whim 2011-01-06 23:31:42 -06:00
8bbda8b575 if we add the module to the autoload list on a load, we should remove it on unload 2011-01-06 23:29:51 -06:00
a3d30daacb given how we load modules now, we don't need modules/__init__.py 2011-01-06 23:27:52 -06:00
acca8723b3 convert to/standardize docstrings a bit.
this got boring fast, so it's only half done
2011-01-06 23:25:46 -06:00
247719814e magic 8-ball module.
this could have been done with Facts, but for people who aren't
loading that, here's an alternative
2011-01-06 23:08:33 -06:00
40888869b0 fix the cheap unicode escapes in GoogleTranslate 2011-01-06 22:53:21 -06:00
b487caf12d make the config file argument optional.
this should probably be robustified (--config-file=foo) eventually
2011-01-06 22:43:10 -06:00
00d5502477 remove some stuff that's been commented out for a while now 2011-01-06 22:40:45 -06:00
2f90304a47 module loading/unloading looks pretty well implemented 2011-01-06 22:33:24 -06:00
85c5c69cb9 weird megahal corruption strikes again.
i should probably work this out one of these times rather than just
doing random hacks to dodge it
2011-01-06 22:26:24 -06:00
c1c9908d5d don't include metaopt meta.internal_only in lists (such as aliases) 2011-01-06 22:17:46 -06:00
bd95764f9f cleanup the sentence feedback 2011-01-06 22:12:19 -06:00
5293e8dc24 add support for listing one alias via list, which shows the value 2011-01-06 22:08:23 -06:00
f5f7814515 reload/unload changes appear to have fixed a number of related bugs 2011-01-06 20:00:26 -06:00
5913e0b183 remove MegaHAL's nullifying of reload() since it's obsolete.
note that the new module appears to support unload properly via shutdown()
2011-01-06 19:58:58 -06:00
ea0fd9d509 small but significant unload/reload changes.
IrcAdmin:
* have sub_unload_module() call the module's shutdown() before deleting stuff
* sub_unload_module() needs to delete the sys.modules entry too
* slightly more verbose output in sub_unload_module()
* sub_reload_module() now does a self.sub_unload_module() + self.sub_load_module()

Module:
* remove reload() --- modules must now safely handle shutdown
2011-01-06 19:54:16 -06:00
99b474c85b initial bug list - mostly load/reload/unload oddities, but also an annoying MegaHAL interaction 2011-01-06 17:17:10 -06:00
9c5d78891c make a deep copy of the string to feed to mh_python.
we were passing the same string everything else uses for input (by
reference), and it appears mh_python does some uppercasing
2011-01-06 17:15:57 -06:00
0878c8809d implement a save() for modules, use it in MegaHAL to sync brain to disk 2011-01-06 00:28:50 -06:00