Commit Graph

395 Commits

Author SHA1 Message Date
Brian S. Stephan 3e63c2e458 since sending arbitrary text and replying now have very different goals, add Module.sendmsg
this just sends a privmsg to the specified target on the specified
connection. pretty straightforward. also, update the modules that
need it to use it.
2011-02-17 12:31:51 -06:00
Brian S. Stephan 2aa369add7 rewrite recursion/alias code for the 500th time.
more of a moving of the code, actually, it now exists in (an overridden)
_handle_event, so that recursions happen against irc events directly,
rather than an already partially interpreted object.

with this change, modules don't need to implement do() nor do we have a
need for the internal_bus, which was doing an additional walk of the
modules after the irc event was already handled and turned into text. now
the core event handler does the recursion scans.

to support this, we bring back the old replypath trick and use it again,
so we know when to send a privmsg reply and when to return text so that
it may be chained in recursion. this feels old hat by now, but if you
haven't been following along, you should really look at the diff.

that's the meat of the change. the rest is updating modules to use
self.reply() and reimplementing (un)register_handlers where appropriate
2011-02-17 01:08:45 -06:00
Brian S. Stephan 64df118c65 move Twitter._unescape to Module._unencode_xml 2011-01-26 20:28:34 -06:00
Brian S. Stephan 28f450ab5d Markov: improve min_size by implementing min_search_tries
if the end of a chain has been reached via __end, but min_size
has not been satisfied, discard the last couple elements in the
chain and try again. use min_search_tries so we don't do this
forever.
2011-01-25 20:42:52 -06:00
Brian S. Stephan 7b4b86dc0d Markov: add support for requesting desired min/max size of a reply
note that since the min_size support is kind of crude at the moment,
this only partially works
2011-01-25 20:25:15 -06:00
Brian S. Stephan 157f1bf361 Twitter: add command for a twitter-native reply 2011-01-25 19:36:24 -06:00
Brian S. Stephan c732466129 Merge branch 'master' of git.incorporeal.org:dr.botzo 2011-01-24 16:51:52 -06:00
Brian S. Stephan 2f3feb093d have !markov learn echo the text it learned, in case someone wants to chain it with other commands for some reason 2011-01-24 16:51:05 -06:00
Brian S. Stephan 4e8b60c201 Karma: add top to reportpattern 2011-01-20 14:50:51 -06:00
Brian S. Stephan 18fc614a4a assorted whitespace nitpicking 2011-01-20 14:15:10 -06:00
Brian S. Stephan 7601b025e1 Merge remote branch 'origin/mjb' 2011-01-20 14:08:39 -06:00
Mike Bloy ce42bca43a add new help text for new karma command 2011-01-20 10:12:28 -06:00
Mike Bloy 2cc79b42a6 add a top karma givers report 2011-01-20 10:08:20 -06:00
Brian S. Stephan 5ec7ac7177 Twitter: unescape some xml entities that may show up in the input.
this should maybe be moved into DrBotIRC or something, it'll likely
be handy elsewhere.
2011-01-19 23:12:01 -06:00
Brian S. Stephan a961180065 Twitter: support for polling the bot's timeline and mentions feeds
needs authentication. this adds a sqlite database, to track a couple
settings. one, since_id, tracks the last successful time this poll
happened, so it's pretty important you don't muck around with it.
default value is 0, so the first time this poll occurs, it may be a
bit spammy.
2011-01-19 22:56:49 -06:00
Brian S. Stephan e88a934569 Twitter: cleanup/organize the code a bit 2011-01-19 19:44:04 -06:00
Brian S. Stephan 89905ac771 Twitter: tweet_or_retweet_text -> _return_tweet_or_retweet_text 2011-01-19 19:26:28 -06:00
Brian S. Stephan 7c05f60ffd Markov: implement a min_size, which tries to make a chain of at least min_size words.
note that this isn't guaranteed, if the chain is such that the
current tuple has nowhere to go but to the end of the line, then
it will follow it --- it doesn't try to go back and rebuilt a different
chain or anything.
2011-01-19 18:44:07 -06:00
Brian S. Stephan ac0429569e Markov: size -> max_size, since I'm going to try adding a min_size soon 2011-01-19 18:35:01 -06:00
Brian S. Stephan 176ca25c68 Markov: increase the default max length from 25 words to 100 words.
it's expected that, usually, the chain will have hit an end before this.
2011-01-19 18:32:15 -06:00
Brian S. Stephan d592d3f3bb Markov: regexes should only match start of line --- add ^ 2011-01-19 10:20:20 -06:00
Brian S. Stephan 3283fac1ff Markov: remove some debugging i forgot to clean out before the initial commit 2011-01-18 22:51:40 -06:00
Brian S. Stephan 8dd223f778 Markov: a module to implement a chatterbot via markov chains.
yeah, we have MegaHAL, but i can't find a good implementation in
python that actually works and is stable, so we'll implement a
simple thing ourselves. works pretty much like MegaHAL does, but
without the string corruption.

original code provided by ape, care of mike bloy
2011-01-18 22:30:59 -06:00
Brian S. Stephan 8f86b7484a Storycraft: fix progress math 2011-01-09 22:36:56 -06:00
Brian S. Stephan 10cbe1944f Storycraft: add a terse progress string to the output when messaging players.
this is so that people know when they should start wrapping their
story up.
2011-01-09 22:17:22 -06:00
Brian S. Stephan e9c22d33f3 Storycraft: write completed story to disk via !storycraft export # 2011-01-09 21:41:23 -06:00
Brian S. Stephan e39d55f03d Storycraft: display how over the user went when writing their line, if they went over 2011-01-09 21:40:03 -06:00
Brian S. Stephan 2f001e274b Storycraft: notify (via privmsg) a player who has had a game newly assigned to them, and show the line. 2011-01-09 13:50:16 -06:00
Brian S. Stephan 487ca2e862 Storycraft: display the number of logged lines when doing an in progress status 2011-01-09 12:30:55 -06:00
Brian S. Stephan 7ae2a75732 Storycraft: when picking a new random player in the middle of a game, avoid picking the same person as the last turn 2011-01-09 12:28:37 -06:00
Brian S. Stephan b133b37d61 Storycraft: list games waiting for me.
shows games in progress where the current line is assigned to the queryer,
and games open (waiting for registrations) that the queryer started
2011-01-09 11:51:10 -06:00
Brian S. Stephan 26a510ff40 Storycraft: add 'list games my games', which is the open/in progress games the queryer is in 2011-01-09 11:32:09 -06:00
Brian S. Stephan ce7d9e8010 Storycraft: allow listing of completed games 2011-01-09 11:16:36 -06:00
Brian S. Stephan 940ed57f2e Storycraft: tell the master channel when someone joins a game 2011-01-09 11:13:06 -06:00
Brian S. Stephan 797f660a9e Storycraft: don't flood the target with storycraft_listgames, display only ids if count > 5 2011-01-09 11:12:27 -06:00
Brian S. Stephan fd22cb64d4 Storycraft: add command to show the assignee the line to reply to.
apparently at 3 AM i forgot to implement important features, because
this is pretty critical to the game actually being playable. let
the assignee, if the game is still open, get the text of the line
they are to reply to.

also display it, rather than the add line command, where appropriate.
2011-01-09 10:41:57 -06:00
Brian S. Stephan 8c1d98cb74 Storycraft: order by id in addition to time in _get_lines_for_game query 2011-01-09 10:39:08 -06:00
Brian S. Stephan 22d3ce44bf Storycraft: trivial comment correction 2011-01-09 10:38:25 -06:00
Brian S. Stephan 656468f955 Storycraft: proper argument order in _update_line 2011-01-09 10:36:21 -06:00
Brian S. Stephan 95e7a243d1 tighten up the regexes since we only use integer IDs for operations.
i'd originally intended to use strings, too, but never decided on
if there should be a game name, or the commands should search
something, or what, so i'll just quit waffling and remove it. numbers
only for now.
2011-01-09 10:12:27 -06:00
Brian S. Stephan 90d38c1741 Storycraft - collaborative nonsense story writing
this module implements a game where players write a line in a story,
probably a nonsensical one, a couple lines at a time. once the player
who started the story has written something, the last line is
passed along to someone else in the game, who continues the story ---
or disregards the small bit of context entirely and writes their own
thing.

eventually you get a story like this:
line 1 by user 1
line 2 by user 1
line 3 by user 2 (who only read line 2)
line 4 by user 2
line 5 by user 3 (who only read line 4)
...

conceptually, that's the idea of the game. the code itself is still
a bit rough around the edges, but i can bang through a game by
myself. it needs some robustification, but it's fairly well
documented and the module does try to provide some clues to IRC while
you're playing.

config option explanations, more such options, etc. to come. critically
important is a way to get completed stories out of the bot, of course.

more to come, i'll shut up now and commit.
2011-01-09 03:27:12 -06:00
Mike Bloy 66a736b108 added help for the IrcAdmin module 2011-01-08 23:41:41 -06:00
Mike Bloy d68487de95 added help for Karma module 2011-01-08 23:21:36 -06:00
Mike Bloy 07d3775842 added help text to the Help module 2011-01-08 22:47:51 -06:00
Mike Bloy 87088e67d1 attempt to ask the modules for help text 2011-01-08 22:32:18 -06:00
Mike Bloy 763f8906d7 Help module responds to commands
Responding to
!help
!help module
!help module [detail...] form
2011-01-08 22:02:04 -06:00
Brian S. Stephan a2ac73325c turns out we do indeed need modules/__init__.py, so add it back
it doesn't need to do anything special though, so it's blank ---
just the standard hint to the python module compiler
2011-01-08 09:39:05 -06:00
Brian S. Stephan 1664cf2de7 since the save command was saving both modules and config, call it !save, not !config save 2011-01-08 09:16:37 -06:00
Brian S. Stephan a6c7b6b0b2 list loaded modules in DrBotIRC, display it via IrcAdmin 2011-01-08 01:22:31 -06:00
Brian S. Stephan 3e533890a1 IrcAdmin: following the last change to saving, have !save also call a new save_modules() 2011-01-08 00:49:10 -06:00
Brian S. Stephan 1e0de47d84 MegaHAL: we don't need to sync the brain in shutdown(), since we sync it in save() 2011-01-08 00:46:20 -06:00
Brian S. Stephan 07be2f3a85 MegaHAL: do add_global_handler in the right place, actually do remove_global_handler 2011-01-08 00:31:19 -06:00
Brian S. Stephan 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
Brian S. Stephan 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
Brian S. Stephan d4062cbe99 oops. continue to learn messages in MegaHAL that we don't reply to 2011-01-07 23:12:06 -06:00
Brian S. Stephan 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
Brian S. Stephan 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
Brian S. Stephan 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
Brian S. Stephan efb92ddc83 reload should call irc.reload_module, not unload_module 2011-01-07 19:09:09 -06:00
Brian S. Stephan d637983ae1 apparently ply doesn't like docstrings in its functions 2011-01-07 18:42:56 -06:00
Brian S. Stephan 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
Brian S. Stephan 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
Brian S. Stephan 02b3266b46 give MegaHAL priority 95 (which is low priority, which always confuses me) 2011-01-07 11:24:38 -06:00
Brian S. Stephan b4f1c5facd MegaHAL: docstring stuff 2011-01-07 11:23:46 -06:00
Brian S. Stephan b7ce4b6dcc add Alias at priority 1 (so that it is handled first) 2011-01-07 01:11:35 -06:00
Brian S. Stephan de3f9d9ae7 provide a priority (default 50) to add_global_handler 2011-01-07 01:10:52 -06:00
Brian S. Stephan 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
Brian S. Stephan a3d30daacb given how we load modules now, we don't need modules/__init__.py 2011-01-06 23:27:52 -06:00
Brian S. Stephan 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
Brian S. Stephan 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
Brian S. Stephan 40888869b0 fix the cheap unicode escapes in GoogleTranslate 2011-01-06 22:53:21 -06:00
Brian S. Stephan 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
Brian S. Stephan bd95764f9f cleanup the sentence feedback 2011-01-06 22:12:19 -06:00
Brian S. Stephan 5293e8dc24 add support for listing one alias via list, which shows the value 2011-01-06 22:08:23 -06:00
Brian S. Stephan 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
Brian S. Stephan 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
Brian S. Stephan 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
Brian S. Stephan 0878c8809d implement a save() for modules, use it in MegaHAL to sync brain to disk 2011-01-06 00:28:50 -06:00
Brian S. Stephan 5c0323fc26 Merge branch 'master' of ayu.incorporeal.org:dr.botzo 2011-01-06 00:18:37 -06:00
Brian S. Stephan 9732ed2f34 use a different megahal implementation, which seems to be better at saving the brain.
note that nothing megahal is shipped with the bot now, including
train files. this bot will expect a ./megahal.trn, and will write
to ./megahal.brn (in addition to a slew of other ./megahal.*
files).

implementation is from http://megahal.alioth.debian.org/
2011-01-06 00:14:16 -06:00
Brian S. Stephan 157d1145ea specify ellipses continuation as a python string 2011-01-05 09:34:19 -06:00
Brian S. Stephan 4241071b7e print tweet id when printing tweets.
will be necessary if we ever implement any kind of reply-to-id replying
2011-01-03 00:31:23 -06:00
Brian S. Stephan b748d43bbd have SIGINT handler call modules' shutdown() 2010-12-24 13:46:48 -06:00
Brian S. Stephan 63a85fba3f Merge remote branch 'origin/mjb/fix_init' 2010-12-24 13:27:33 -06:00
Brian S. Stephan 0e7e2bf50c add tweet subcommand to twitter, to send tweets.
needs admin, until i figure out if i want more authentication for it
2010-12-24 13:19:50 -06:00
Brian S. Stephan d9b85f4364 track whether or not the twitter module has been authenticated 2010-12-24 13:19:11 -06:00
Brian S. Stephan 41a5c43284 use the right signature for Module.reload() 2010-12-24 13:18:23 -06:00
Brian S. Stephan f590daf5cd have all modules run a shutdown() when quitting, use it to have MegaHAL close the brain 2010-12-24 10:41:12 -06:00
Brian S. Stephan 0ff44e1a47 don't have megahal learn internal commands 2010-12-24 09:48:04 -06:00
Brian S. Stephan 9ed1586783 shouldn't need this unicode workaround anymore (fingers crossed) 2010-12-24 09:42:49 -06:00
Brian S. Stephan c513a0bebc extlib/megahal.py: don't crash when the input string ends in ' 2010-12-23 10:01:11 -06:00
Brian S. Stephan ae6eda2c6a encode facts coming out of Facts to python string 2010-12-20 22:22:37 -06:00
Mike Bloy 8ffcecdff0 hacked out loading of all modules from __init__
Discussion with bss implies that this is no longer needed, now that
the dynamic loader and unload is in place.

empirical testing seems to confirm this
2010-12-17 22:52:53 -06:00
Brian S. Stephan 107b754a0d move recursion scan after alias setup, and do another after alias replace 2010-12-17 16:12:45 -06:00
Brian S. Stephan 1fe9575502 move recursion stuff out of Module.py and into modules/Alias.py
this comes with a recursion rewrite and simplification; it works
a bit more intuitively, now, but i still haven't figured out what
caused the bug that led me down this rabbit hole.

in any event, Alias now rules the roost when it comes to recursion,
which means it's a bit poorly named, but also means that there
won't (shouldn't) be multiple accidental runs for one output, caused
by multiple modules doing the recursion (despite only one really
having a legitimate reason to) --- a classic case of the intended
use of recursion (including the comment to only recurse when you
*know* the input is for you) being lost and forgotten with time

this also obsoletes meta.skip_recursion_scan. between this commit
and the last, people would be wise to revise their config files
2010-12-16 23:43:16 -06:00
Brian S. Stephan bda1eb9560 add uppercase text transform 2010-12-16 20:28:26 -06:00
Brian S. Stephan 699f550ba3 change authentication to over IRC process 2010-12-16 20:15:49 -06:00
Brian S. Stephan 3ba38bd90d it would help if i got the < vs > right 2010-12-16 15:44:51 -06:00
Brian S. Stephan efafb95f5a ability to look up tweets for a user, relative to the latest 2010-12-16 15:23:35 -06:00
Brian S. Stephan 57ddba744e optionally print the source of the tweet in question
useful if you don't know it, such as if the tweet was specified
by id rather than by user
2010-12-16 15:22:34 -06:00
Brian S. Stephan a18897fcde print the native tweet of retweets (rather than the possibly-truncated one)
this now depends on a modified twitter.py, although i could probably
send my patch upstream
2010-12-16 13:04:58 -06:00
Brian S. Stephan 1bacfe047e fix (god i hope fix) unicode in Twitter
also remove some unnecessary unicode conversions right before printing?
commented out until i'm convinced there was no need for it.

protip: clearest description i've read to date:
http://stackoverflow.com/questions/368805/python-unicodedecodeerror-am-i-misunderstanding-encode#370199
2010-12-16 10:36:50 -06:00
Brian S. Stephan 37a677946d fetch more tweets in case the latest was a RT (which we are filtering)
comment about how i'm not really sure about this approach
2010-12-15 23:52:59 -06:00
Brian S. Stephan 7e4e6ab23f look up most recent tweet by username 2010-12-15 23:31:26 -06:00
Brian S. Stephan e4edc7f6f4 first bit of bot twitter functionality 2010-12-15 23:08:08 -06:00
Brian S. Stephan ea0f795194 add unload method to IrcAdmin, which unloads a module
hopefully this all works right. i remove two known references
to the object, and then call a del for good measure, which i
think covers it?
2010-12-15 21:28:57 -06:00
Brian S. Stephan 2295f524d4 add load command to IrcAdmin, which (naturally) loads a module and adds it to the autoload list 2010-12-15 21:17:24 -06:00
Brian S. Stephan 467c72847a clean up some IrcAdmin output, which i was using to test reloading 2010-12-15 20:58:13 -06:00
Brian S. Stephan e0565a9bb1 take a stab at commenting how MegaHAL reload is broken, keep it unimplemented for the moment 2010-12-15 20:55:40 -06:00
Brian S. Stephan 22615d7b9a rewrite reload support, making it an IrcAdmin command
only lightly tested for the moment
2010-12-15 20:43:14 -06:00
Brian S. Stephan d92d60ec7a don't try to be clever with the +-/-+ commands, since it wasn't doing what I wanted
and it wasn't the right thing to do anyway
2010-12-15 20:29:25 -06:00
Brian S. Stephan e5934bccba add echo module, which echos text. why i never implemented this, i don't know 2010-12-11 00:22:26 -06:00
Brian S. Stephan e084c28113 handle potential newlines in output 2010-12-11 00:10:26 -06:00
Brian S. Stephan 977675c593 add base64 to text transformations 2010-12-10 23:59:49 -06:00
Brian S. Stephan 5a81f4d1fc fix spaces in city name 2010-12-09 13:09:01 -06:00
Brian S. Stephan 2690c0208c trivial formatting fix 2010-12-08 22:15:26 -06:00
Brian S. Stephan 1709df19ec properly self.reply in last commit 2010-12-08 22:14:34 -06:00
Brian S. Stephan 53e2da7bd3 self.reply karma_modify stuff, add return strings from double functions
note that there's only something to reply with if there was an sqlite error
2010-12-08 22:08:56 -06:00
Brian S. Stephan 7fa9c1f9a0 modify the karma_modify header:
* remove parameters i never intended to be necessary for the function in the first place
* return a string, rather than doing the reply thing
2010-12-08 22:05:46 -06:00
Brian S. Stephan 4013a93dc9 Merge branch 'bloy-karma' 2010-12-08 22:00:39 -06:00
Brian S. Stephan a19dcdb690 fix string concat thinko 2010-12-06 16:31:16 -06:00
Brian S. Stephan a8562f71a0 slight code cleanup, add windchill calculation 2010-12-06 16:01:49 -06:00
Mike Bloy 9340c76361 remove trailing whitespace 2010-12-01 10:58:04 -06:00
Mike Bloy b425895107 optimist/pessimist report 2010-11-25 13:05:23 -06:00
Mike Bloy acee8752a5 highest and lowest karma report 2010-11-25 13:01:23 -06:00
Mike Bloy 30d49bcd5d karma stat command
added ability to get stats on a particular users karma
2010-11-25 11:41:12 -06:00
Mike Bloy a434c3738f error reporting in karma_modify
the connection and replypath paramaters are required for graceful error reporting
2010-11-25 11:20:48 -06:00
Mike Bloy 647a2edb5c thinking about new karma commands 2010-11-23 23:38:56 -06:00
Mike Bloy 120dcc9fda slightly more anal silly karma handling 2010-11-23 21:45:47 -06:00
Brian S. Stephan f4dc667c77 dodge another unicode crash 2010-11-22 20:25:28 -06:00
Brian S. Stephan daa018c64b handle silly +- syntax, which will do both an increment and a decrement
(this won't impact the overall rank, of course, but does create log
entries that may be interesting for later analysis
2010-11-19 09:33:37 -06:00
Brian S. Stephan 50e45b2a0d move the karma logging into a separate method, since i'm about to reuse it in a new way 2010-11-19 09:26:49 -06:00
Brian S. Stephan 12d5425644 vi modeline in Karma.py 2010-11-19 09:20:48 -06:00
Brian S. Stephan 526d553220 require whitespace or end of line after increment/decrement
this is to avoid stuff like http://somegross/url--more/garbage as being
a decrement of http://somegross/url
2010-11-17 10:25:49 -06:00
Brian S. Stephan 8cc411956e much more permissive karma regexes 2010-11-17 10:21:30 -06:00
Brian S. Stephan 9014e076bf drop the timeout to 1 sec 2010-11-03 22:52:42 -05:00
Brian S. Stephan 436fcd1132 provide timeout to the megahal system, so that the bot doesn't spin forever on a reply
not that that just happened or anything
2010-11-03 22:50:34 -05:00
Brian S. Stephan c484dde5b8 Merge branch 'kad' 2010-11-01 22:12:51 -05:00
kad e1d5d9f522 Fix negative modifier issue 2010-10-31 18:01:15 -05:00
Brian S. Stephan 0bcefc49b5 Merge branch 'kad' 2010-10-31 13:36:59 -05:00
kad c2280aaf1e Remove diceply.py 2010-10-31 12:14:18 -05:00
kad 4f56e40ca7 Use PLY to parse dice strings 2010-10-30 15:09:16 -05:00
Brian S. Stephan 694f051994 allow karma to happen anywhere in a sentence (rather than just the start), switch to re.search() throughout 2010-10-29 13:08:48 -05:00
Brian S. Stephan b7f2b9bd0e use re.search() rather than re.match() in a couple places
(search() looks for the regex anywhere in the string whereas
match() only looks for the regex starting from the beginning)
2010-10-29 00:30:02 -05:00
Brian S. Stephan b5e71d677f first cut at a database-driven fact storage module.
may still be a bit brittle
2010-10-29 00:00:55 -05:00
Brian S. Stephan 8fbd58e2c6 chmod -x modules/Karma.py 2010-10-28 20:56:59 -05:00
Brian S. Stephan aabc8904ad properly handle recursion, so that the alias actually works 2010-10-28 20:46:09 -05:00
Brian S. Stephan 0dfe8bcdd6 have karma module use the normal, non-alias-like command ('rank' rather than '!rank') 2010-10-28 20:15:48 -05:00
Brian S. Stephan 352b9e1830 more punctuation in the regex 2010-10-28 20:08:30 -05:00
Brian S. Stephan 5dda9ac1e5 change the format of the pi output a bit 2010-10-28 20:05:08 -05:00
Brian S. Stephan aae4dfa062 remove a (hopefully) useless unicode() call 2010-10-27 22:48:52 -05:00
Brian S. Stephan cb7044e64a this encode('utf-8')/decode('utf-8') seems to unnecessary and accomplishes nothing?
still haven't figured out how to get around the whole character replace nonsense though
2010-10-27 22:09:59 -05:00
Brian S. Stephan 7c4125e099 properly use encode() to do the rot13 conversion, ignore conversion failures 2010-10-27 21:56:18 -05:00
Brian S. Stephan 1bc0dd0b2a TextTransform module. right now it only does rot13 2010-10-27 19:57:18 -05:00
Brian S. Stephan eefc41a6d7 last_insert_rowid() only makes sense for the current connection, so ORDER BY id DESC instead 2010-10-27 19:32:09 -05:00
Brian S. Stephan 2d8a86950c remove unneeded ConfigParser 2010-10-27 19:31:43 -05:00
Brian S. Stephan 97893a3b7a convert Pi.py to use sqlite backend 2010-10-27 18:02:26 -05:00
Brian S. Stephan 1d73deda1c sqlite related stuff as part of making sqlite the canonical backend
* Module.py __init__ sets up sqlite db connection by default
* Module.py __init__ calls init_db() which is empty, expects subclasses to implement as necessary
* Module.py doesn't close sqlite connection by default

Changes call for a couple updates in Karma.py, namely implementing db_init
and excepting sqlite3.Error rather than closing the connection
2010-10-27 17:59:01 -05:00
Brian S. Stephan 70b49ecbcc whitespace nitpicking 2010-10-25 21:14:35 -05:00
Brian S. Stephan 3d65a6a158 Merge branch 'bloy-sqlite'
Resolved conflicts:
	modules/Karma.py - re-added support for (long items)
2010-10-25 21:11:40 -05:00
Brian S. Stephan 8cfeef2efd Revert "Merge branch 'bloy-sqlite'" because i want to merge this the right way
This reverts commit 5a76a9866a.
2010-10-25 21:06:01 -05:00
Brian S. Stephan c1c29648d7 Revert "whitespace nitpicking" because I want to merge this the right way
This reverts commit b9c2be8c54.
2010-10-25 21:05:33 -05:00
Brian S. Stephan b9c2be8c54 whitespace nitpicking 2010-10-25 20:50:59 -05:00
Brian S. Stephan 5a76a9866a Merge branch 'bloy-sqlite' 2010-10-25 20:49:12 -05:00
Brian S. Stephan 5f6ced3066 add ' to karma matcher regex 2010-10-25 19:21:39 -05:00
Brian S. Stephan 9a1086e855 added support for karma for things with spaces, by wrapping it in ()
e.g.: (this is one really long thing that i like)++
2010-10-25 19:11:17 -05:00
Brian S. Stephan 2973d904f4 pythonic header 2010-10-25 18:44:28 -05:00
Brian S. Stephan a4839fd35f whitespace nitpickery 2010-10-25 18:37:30 -05:00
Brian S. Stephan 69c8922024 Merge branch 'bloy-master' 2010-10-25 18:31:28 -05:00
Brian S. Stephan ebd89d35cc (hopefully) properly catch/log URLError, IndexError 2010-10-25 18:23:25 -05:00
Mike Bloy 84ba3107f0 include rank in karma output 2010-10-24 15:13:01 -05:00
Mike Bloy 98f07105bc karma data store moved to sqlite 2010-10-24 15:13:00 -05:00
Mike Bloy 40ab270324 fixed rank trigger for karma 2010-10-24 14:57:23 -05:00
Mike Bloy e557137f82 fix karma formatting 2010-10-24 09:37:43 -05:00
Mike Bloy e453778791 clean up karma module 2010-10-24 09:36:15 -05:00
Mike Bloy a64c83ce59 working karma module 2010-10-23 22:52:15 -05:00
Brian S. Stephan a45af7a0a7 Pi -> pi, fixing what I'm going to claim is a typo. 2010-10-20 11:57:31 -05:00
Brian S. Stephan c3270ef3df module to calculate pi over time, via the monte carlo method.
idea pinched from #linode.
2010-10-18 22:48:51 -05:00
Brian S. Stephan 95a27cc44b read brainfile filename from config file, allow default 2010-10-09 20:37:15 -05:00
Brian S. Stephan 05f1ce325a put MegaHAL module load in __init__, which is now being implemented here
obviously, we need to call Module.__init__ as well, and as a nice
side effect, doing all of this lets us not need to do the on_connect
nonsense, which was the wrong thing to do anyway
2010-10-09 19:36:00 -05:00
Brian S. Stephan 827d1b2c86 megahal library crashes if the text ends with ' for some reason, so work around it 2010-09-13 20:22:08 -05:00
Brian S. Stephan 1988662c0a have ^megahal$ trigger a no-input reply from the megahal module.
mostly useful for chaining random bot nonsense into other commands
2010-09-08 22:22:43 -05:00
Brian S. Stephan d5c4750dd8 use proper pluralization, commas in countdown output 2010-09-08 21:39:56 -05:00
Brian S. Stephan e6c9747dad remove overload of on_pubmsg() 2010-09-08 20:44:09 -05:00
Brian S. Stephan fd7834756b add !alias list that displays the existing alias commands. limited utility, really. 2010-09-08 20:12:19 -05:00
Brian S. Stephan 3e91000acc now that we have meta.strip_bot_name_from_input there is no need to overload on_pubmsg 2010-09-08 19:51:18 -05:00
Brian S. Stephan 14973388e5 remove pubmsg/privmsg overloading in Alias now that we have 'meta.skip_recursion_scan'.
also, the last commit's message should have referred to this meta option
instead of what it actually did. oops.
2010-09-08 19:40:16 -05:00
Brian S. Stephan f3e9568fe3 create the array of arguments in all the methods that need them 2010-09-08 19:24:26 -05:00
Brian S. Stephan 6541e6a193 first attempt at using HTTP POST for translate 2010-09-08 19:07:01 -05:00
Brian S. Stephan 47022f9428 add ctech dice rolling method, for cthulhutech.
does greatest/best set/best straight methods. use normal roll for
stuff that should be summed, like damages
2010-09-05 11:00:11 -05:00
Brian S. Stephan 27ff7e257d fix a bug that was getting the trailing semicolon wrong, and do it better anyway. 2010-09-05 10:44:59 -05:00
Brian S. Stephan 053c3f0ae6 properly call admin functions within do.
before this, recursion type stuff wasn't responded to properly because
do wasn't returning the methods' text
2010-09-04 12:26:50 -05:00
Brian S. Stephan 8c1c10a4bc remove debugging print statement 2010-09-04 12:26:20 -05:00
Brian S. Stephan 92281151ff don't display the comment twice, now that we print the entire roll string 2010-09-04 12:09:37 -05:00
Brian S. Stephan a0fd33b070 only append the roller's nick once, at the end, if there is a reply 2010-09-04 12:08:13 -05:00
Brian S. Stephan 27b27ecb61 split roll string and properly ignore "roll" from roll attempt 2010-09-04 12:04:24 -05:00
Brian S. Stephan 5b44b66c4d demand a roll prefix on the Dice module 2010-09-04 11:56:35 -05:00
Brian S. Stephan b9ef46606d don't output anything if the aliasified command is the same as the reply.
this indicates that none of the modules could actually do anything with that
text, so whatever happened probably didn't fire any modules (and if it did,
they didn't provide return text anyway)
2010-09-04 11:55:10 -05:00
Brian S. Stephan b1e1254564 reloading MegaHAL.py seems broken somehow, so just avoid doing it 2010-09-04 11:49:18 -05:00
Brian S. Stephan a5dbb27622 Alias module to turn text into other text.
mostly for sending commands to the bot without addressing the bot with
bot: (and potentially triggering MegaHAL) yet also without exposing
sensitive commands to the non-addressable mode (like wtf/quit). speak
the alias and the bot will run the looked-up text through the modules,
regardless of their addressable settings
2010-09-04 11:29:18 -05:00