Commit Graph

658 Commits

Author SHA1 Message Date
Brian S. Stephan 79ddce0bcb Babelfish: already a smattering of bugfixes and cleanups 2012-01-23 22:05:25 -06:00
Brian S. Stephan c018bb9634 Babelfish: since google translate's API has been discontinued, let's use babelfish 2012-01-23 21:44:52 -06:00
Brian S. Stephan c0e2de11f7 Twitter: tweet output tweaks
prefer @username printing over Full Name. previous output was inconsistent
2012-01-18 13:00:08 -06:00
Brian S. Stephan a608f509ca TextTransform: al bhed translator 2011-10-21 17:17:37 -05:00
Brian S. Stephan ef66c855f3 Achievements: new dumb feature, add irc achievements
stats on users are tracked, and achievements are defined by writing
sql queries against those stats. silly fun
2011-10-21 17:01:49 -05:00
Brian S. Stephan 8c1ffc54ba Markov: drop the max id stuff, get a bunch of chains and pick one randomly. cooler this way. 2011-10-21 17:01:09 -05:00
Brian S. Stephan e3ef3f48dc Markov: add support for temporarily disabling chatter by supplying a negative chance 2011-10-21 16:59:57 -05:00
Brian S. Stephan 78f7614987 Module: it's come to this. bump the default sqlite connection timeout to 60 sec 2011-10-18 00:48:46 -05:00
Brian S. Stephan b82dd382ee DrBotIRC: swallow the rare exception that trickles up this far 2011-10-18 00:48:11 -05:00
Brian S. Stephan d4f7941b7b TODO: logging module 2011-10-18 00:41:15 -05:00
Brian S. Stephan cda1d43606 Markov: index on (v, context) and other enhancements for the last commit
reduce some infinite loop possibilities, and add an index with the old <= id trick
to speed up the searching for backwards chains
2011-10-16 21:13:27 -05:00
Brian S. Stephan 42962bc48d Markov: add support for starting in the middle of a chain and working backwards
this only makes sense if we have a target word set, which we usually do.
start with the target word and go backwords, finding k2s that lead to it
(and that lead to that k2, and so on) until we get to the start-of-chain
value, when we know we're done working backwards. then resume the normal
appending logic

probably needs some work, probably a bit slow on huge databases. analysis
pending, but this appears to work
2011-10-16 20:19:51 -05:00
Brian S. Stephan ad93ea28ec Dice: fix display of multi-run rolls (e.g. 6#d20) 2011-10-14 14:22:56 -05:00
Brian S. Stephan 86e6cd3db0 Dice: change the output format so it's a bit more readable 2011-10-13 21:08:09 -05:00
kad 93761df5ed Allow spaces after ; for separated rolls 2011-10-13 20:30:59 -05:00
Brian S. Stephan 50fbbbfedd Markov.py: tweaking the shut up check, this has been pretty good for a while 2011-09-20 01:20:27 -05:00
Brian S. Stephan 70e1ee017f make drbotzo_modules.module a primary key so that we can use INSERT OR REPLACE INTO
WARNING! if you have an existing drbotzo_modules, you MUST RECREATE IT
WITH THE PRIMARY KEY. things will be wonky without it.

easiest way is to (by hand) create drbotzo_modules_temp as shown in the code,
INSERT INTO drbotzo_modules_temp SELECT * FROM drbotzo_modules, DROP the old
table, and ALTER TABLE RENAME TO the new one.

again, if you don't do this, newer modules will do all sorts of crazy
things, namely trying to create tables that already exist (because they have
multiple, differing values in drbotzo_modules)
2011-07-26 18:32:06 -05:00
Brian S. Stephan 9ecd66f94a Module: upsert drbotzo_modules 2011-07-06 21:51:30 -05:00
Brian S. Stephan 4566d1734e change the default sqlite timeout to 30 seconds
this should make the bot wait longer for table locks, assuming i
read the docs right
2011-07-01 18:42:49 -05:00
Brian S. Stephan a51f0cb54c Markov: refer to the actual target from a chatter target when shutting up 2011-07-01 18:42:04 -05:00
Brian S. Stephan 9abdc98487 Twitter: catch ValueError 2011-06-27 20:17:30 -05:00
Brian S. Stephan 678350fe5d Markov: trivial change to allow for more advanced randomness later 2011-06-22 19:00:01 -05:00
Brian S. Stephan 9745cfc9be Twitter: catch ValueError if the provided index isn't a number at all 2011-06-21 17:24:31 -05:00
Brian S. Stephan ad4d75f724 Module: move REGEXP definition to every get_db() call
also remove some self.conn stuff that no one used anymore
2011-06-21 17:22:24 -05:00
Brian S. Stephan 7220025f0a Markov: randomly say something to a list of approved channels
check interval is every 10 minutes, rows in markov_chatter_target
have a 1 in chance chance of leading to a line being generated,
every 10 minutes. (so an interval of 144 = 10 min * 6 * 24 = one line
per day, on average)
2011-06-20 22:49:25 -05:00
Brian S. Stephan 1e87fe59d8 even more close connections from get_db() 2011-06-20 22:34:27 -05:00
Brian S. Stephan 097077174b close connections from get_db() 2011-06-20 22:20:41 -05:00
Brian S. Stephan c08e7cabc0 Module.py: make get_db() threadsafe by having it create a new connection every time 2011-06-20 22:08:49 -05:00
Brian S. Stephan 152ef2a1ad Module: remove the timer stuff, since individual modules can do this better themselves
Markov, Twitter: switch to forking a thread ourselves, and check every
second whether or not to quit. this is the "better" part above, as
now we can instantly quit the thread rather than waiting for all
the timers to fire and expire
2011-06-20 21:18:55 -05:00
Brian S. Stephan c7846e415a IrcAdmin: don't crash by trying to tell #chan that you just left #chan 2011-06-20 20:27:20 -05:00
Brian S. Stephan 75ba29739c don't treat the string 'debug' as an alias from the config file
stuff like '!echo debug' would result in 'false'. oops
2011-06-20 20:05:03 -05:00
Brian S. Stephan 111b068ed4 Dice: trivial whitespace cleanup, merging last two commits from kad 2011-06-20 19:32:17 -05:00
kad 35df9f9425 Change output for selection rolls. Output of die rolls is no longer sorted. 2011-06-20 15:48:24 -06:00
kad a767b3d6e2 Fix trying to roll a zero-sided die error 2011-06-20 15:45:08 -06:00
Brian S. Stephan c7b7e6e3ad Seen: don't track seen data for stuff without a location
like the last commit, this happens on [subcommands]
2011-06-16 21:26:13 -05:00
Brian S. Stephan df3de56c4c Markov: don't add chains if the context is null
that should only be possible on non-pub/privmsgs, or if there
is a [subcommand] being analyzed. in any event, don't learn it.
2011-06-16 21:25:22 -05:00
Brian S. Stephan 74c03cff88 update markov chain import script for always using a context, specified on command line
also read stdin rather than a file for lines
2011-06-15 20:40:24 -05:00
Brian S. Stephan a8031909b4 Markov: bite the bullet and make each markov chain automatically assigned a context (channel/query)
still kind of testing this, but i think it's easiest
2011-06-15 12:29:18 -05:00
Brian S. Stephan 476bd92010 Seen: per-channel (or privmsg speaker, i suppose) seen data
now mean words in one channel aren't leaked via !seen in another
2011-06-15 11:07:32 -05:00
Brian S. Stephan fe305f4388 remove documenting a BUG about Module.get_db() not being thread-safe
this is still true, but Twitter and Markov work around it suitably
2011-06-14 22:42:50 -05:00
Brian S. Stephan 1a69610785 Alias: fix ^!alias$ == crash bug 2011-06-14 22:40:45 -05:00
Brian S. Stephan a0588869f3 Markov: add selecting by context, in order to segregate chains by channel
adding chains by context has existed for a while, this should allow for
querying for chains with null context or the current context. lightly
tested
2011-06-14 22:10:57 -05:00
Brian S. Stephan 02e77f3aed Karma: make karma case insensitive, by popular request 2011-06-14 21:22:56 -05:00
Brian S. Stephan 57be7f8026 Markov: remove some cruft that is now obsolete 2011-06-14 21:08:01 -05:00
Brian S. Stephan 45af15a1ef document more BUGS i'll fix one day 2011-06-02 15:24:38 -05:00
Brian S. Stephan 90be2d1855 Markov: trying a simpler form of shut up check 2011-05-03 22:13:49 -05:00
Brian S. Stephan c55852129a Twitter: Markov used our "need to create our own db object" logic and then improved it.
most importantly, don't clobber the first thread's db instances
2011-05-01 10:42:24 -05:00
Brian S. Stephan 5e8e93beba Markov: clean up the whole "need to create our own db object" thing 2011-05-01 10:41:59 -05:00
Brian S. Stephan 03d0d6bc2d Markov: shut up if we've been too chatty in too short a period of time.
track all lines seen and all lines said by Markov. every 30 seconds,
if there have been more than 20 such lines, and Markov is responsible
for roughly half of them, then shut up for 30 seconds, because the
bot probably got stuck talking to another bot.

this should mean that such a reply infinite loop can't happen for
more than a minute.

i'm not entirely sure on the 30 sec/20 lines ratio. this may need
tuning.
2011-05-01 10:38:46 -05:00
Brian S. Stephan 7692d295f6 Markov: don't clobber existing database objects in the forked thread 2011-05-01 10:26:06 -05:00