Commit Graph

408 Commits

Author SHA1 Message Date
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 9841a51f21 .gitignore dr.botzo.markov 2011-01-18 22:34:03 -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
Brian S. Stephan 649e183337 allow for newlines in DrBotIRC.reply(), split on them for multiple lines of output 2011-01-08 14:40:01 -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 451084a1d9 BUGS: document a GoogleWeather crash i've seen once 2011-01-08 01:13:24 -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 f2668c3851 mention how Module.save() and Module.shutdown() are related 2011-01-08 00:45:42 -06:00
Brian S. Stephan faf37447cf make the module saving a bit more consistent 2011-01-08 00:44:37 -06:00
Brian S. Stephan 88d2a530c3 previous commit fixed the megahal-reacting-before-important-commands bug 2011-01-08 00:35:26 -06:00
Brian S. Stephan 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
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 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
Brian S. Stephan 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
Brian S. Stephan ae4411605d remove the bot admin/alias/recursion stuff from TODO 2011-01-07 23:17:37 -06:00
Brian S. Stephan 8bbfeba593 add note on the annoyingness of unicode escapes in GoogleTranslate bug 2011-01-07 23:16:59 -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 dbf02723e0 countdown formatting bug 2011-01-07 23:05:06 -06:00
Brian S. Stephan a234807335 move !alias manipulation commands out of try_alias and into the pubmsg/privmsg handler 2011-01-07 22:34:27 -06:00
Brian S. Stephan 4cac5f1a93 fixes and improvements to recursion and alias support 2011-01-07 22:31:30 -06:00
Brian S. Stephan 516940630c hack the replypath to the sender, if we're handling a privmsg 2011-01-07 21:14:14 -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 6b2af47552 don't display 'debug' in the alias list 2011-01-07 20:36:42 -06:00
Brian S. Stephan f0730a5edf update privmsg splitting bug 2011-01-07 19:34:20 -06:00
Brian S. Stephan efb92ddc83 reload should call irc.reload_module, not unload_module 2011-01-07 19:09:09 -06:00