Commit Graph

398 Commits

Author SHA1 Message Date
deedf330e3 Twitter: don't freak out about not being authed when checking if we're authed 2012-07-27 00:11:10 -05:00
f8974dd240 TextTransform: add a !lower
how i got so far without adding this i'll never know
2012-07-26 19:53:20 -05:00
d6561bf221 Twitter: show full tweet when printing a reply-tweet 2012-07-26 18:18:16 -05:00
9654f4de98 switch to use python's logging, with config file i'm not entirely happy about 2012-07-15 21:32:12 -05:00
4100b55de0 deleting MegaHAL, Trigger, Urls (all deleted in py3 as well) 2012-07-15 21:05:48 -05:00
8dba63e38c deleting FactFile, which i intended to do aeons ago 2012-07-15 20:54:58 -05:00
2b0b7abd58 Markov: unicode fixes and improvements 2012-07-15 01:11:21 -05:00
8f5b6d96c2 Twitter: add a flag to getstatus/getuserstatus that suppresses the printing of the source 2012-07-14 09:59:45 -05:00
a8fe6da14f Twitter: when printing tweets, making the printing of the ID optional
add a flag to getstatus/getuserstatus that suppresses the printing of the ID
2012-07-14 09:55:11 -05:00
709a0cfd9a Twitter: actually store the server connection, not the bot instance 2012-07-14 09:54:26 -05:00
d41d8ed0c9 Twitter: force timeline check to wait 5 minutes (for channel joins and antispam) 2012-07-14 09:54:02 -05:00
8a7660380b Twitter: persist the authentication tokens and reuse them on init 2012-07-14 09:29:12 -05:00
2650824dbd Markov: correct the documentation on min_size/max_size in _generate_line 2012-07-14 09:22:37 -05:00
2dd27dde4b Twitter: more cleanup, clarify the auth stuff a bit 2012-07-14 08:41:40 -05:00
82765c7404 Twitter: some code cleanups, use self.twit.VerifyCredentials rather than an authed variable 2012-07-14 08:17:21 -05:00
395d436008 Seen: punctuation nitpicking, and provide response when user was not seen 2012-07-10 17:15:52 -05:00
d94d7f0c88 Markov: register ._generate_line as markov_generate_line 2012-04-05 21:24:41 -05:00
2e1bc8d5e0 Dice: expose do_roll as XML-RPC method "dice_roll" 2012-03-30 17:54:42 -05:00
60b7a33f7b Dice: apply the irc formatting outside of the !roll handler 2012-03-30 17:54:06 -05:00
f5b367406b Dice: break out the !roll handler 2012-03-30 17:26:51 -05:00
731aec8c0c DrBotIRC, Facts: clean up some method header doc since it shows up in XML-RPC 2012-03-30 11:14:31 -05:00
4253c83694 Facts: expose _get_fact as an XML-RPC method 2012-03-30 10:19:16 -05:00
71688f2389 Facts: refactoring; move the database querying into its own method (for reuse) 2012-03-30 10:18:40 -05:00
05a3bd0af7 move XML-RPC support into DrBotIRC so everything can eventually use it 2012-03-30 09:43:30 -05:00
91faebf33a XmlRpcServer: expose functionality via XML-RPC
this could be fun. provide an XML-RPC web service that allows for
remote access into the bot. in addition to some obvious stuff, this
includes a method that lets you execute any arbitrary module's arbitrary
method (so be careful) and retrieve the results.

as a side effect this has made it apparent that i need to clean up
some of my modules so that functionality and irc responses are decoupled.
2012-03-30 00:44:25 -05:00
07744a0f66 indicate recursion better by adding _recursing to Event
for simplicity's sake, this was added to the extlib/irclib rather
than subclassing. because i'm lazy. anyway, check that flag instead
of doing the event._target = None hack, since that hack was breaking
Markov.

for an unrelated reason (what to learn and not learn), update Markov

also remove an unused method that was getting in my way while coding this
2012-03-29 20:07:32 -05:00
7d41564d02 Markov: allow for auto-context insertion
this should result in no chains having a null context --- if no pre-existing
context is created, one is created for the channel/nick and used. this makes,
for example, arbitrary queries "private" to that nick (again unless that has
been overridden). shouldn't affect much of anything, but adding this made
the context-less learning code obsolete, which is fine since it was never used
anyway
2012-03-19 00:12:29 -05:00
ce93480e9b Dice: allow !roll/!ctech strings anywhere, not just at the start of the line 2012-03-19 00:11:56 -05:00
ac14c2a8e8 Acro: use an actual variable :| 2012-03-02 20:10:39 -06:00
b08059df78 Acro: tuning the sleep times, added self.seconds_to_submit_step as another tunable 2012-03-02 20:05:47 -06:00
7e5d51f460 Acro: play a game commonly known as acromania.
the bot will generate acronyms of 3-8 characters in length. it's your
job to find the "best" phrase fitting the acronym. work in progress,
but this is still playable
2012-03-02 19:13:03 -06:00
26bc8bec34 Markov: rebuild the tables, use the context stuff in a better fashion this time
the module will drop your old tables if you have them, so if there's data there,
be sure to back them up and figure out some migration strategy (probably annoying
and probably having to script it).

the big change is that each line is associated to a context now, and channels
are also associated to contexts. this should allow for a better partitioning
of multiple brains, and changing which channels point to which brain.

also caught in the wake is some additional logging verbosity, and a change to
no longer lower() everything learned.

the script to dump a file into the database has also been updated with the above
changes
2012-02-28 23:23:14 -06:00
79ddce0bcb Babelfish: already a smattering of bugfixes and cleanups 2012-01-23 22:05:25 -06:00
c018bb9634 Babelfish: since google translate's API has been discontinued, let's use babelfish 2012-01-23 21:44:52 -06:00
c0e2de11f7 Twitter: tweet output tweaks
prefer @username printing over Full Name. previous output was inconsistent
2012-01-18 13:00:08 -06:00
a608f509ca TextTransform: al bhed translator 2011-10-21 17:17:37 -05:00
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
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
e3ef3f48dc Markov: add support for temporarily disabling chatter by supplying a negative chance 2011-10-21 16:59:57 -05:00
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
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
ad93ea28ec Dice: fix display of multi-run rolls (e.g. 6#d20) 2011-10-14 14:22:56 -05:00
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
50fbbbfedd Markov.py: tweaking the shut up check, this has been pretty good for a while 2011-09-20 01:20:27 -05:00
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
a51f0cb54c Markov: refer to the actual target from a chatter target when shutting up 2011-07-01 18:42:04 -05:00
9abdc98487 Twitter: catch ValueError 2011-06-27 20:17:30 -05:00
678350fe5d Markov: trivial change to allow for more advanced randomness later 2011-06-22 19:00:01 -05:00
9745cfc9be Twitter: catch ValueError if the provided index isn't a number at all 2011-06-21 17:24:31 -05:00
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
1e87fe59d8 even more close connections from get_db() 2011-06-20 22:34:27 -05:00
097077174b close connections from get_db() 2011-06-20 22:20:41 -05:00
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
c7846e415a IrcAdmin: don't crash by trying to tell #chan that you just left #chan 2011-06-20 20:27:20 -05:00
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 16:48:24 -05:00
kad
a767b3d6e2 Fix trying to roll a zero-sided die error 2011-06-20 16:45:08 -05:00
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
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
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
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
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
02e77f3aed Karma: make karma case insensitive, by popular request 2011-06-14 21:22:56 -05:00
57be7f8026 Markov: remove some cruft that is now obsolete 2011-06-14 21:08:01 -05:00
90be2d1855 Markov: trying a simpler form of shut up check 2011-05-03 22:13:49 -05:00
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
5e8e93beba Markov: clean up the whole "need to create our own db object" thing 2011-05-01 10:41:59 -05:00
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
7692d295f6 Markov: don't clobber existing database objects in the forked thread 2011-05-01 10:26:06 -05:00
a73aec8ff0 Markov: remove debugging noise that snuck in via 42d414a0a4 2011-05-01 10:11:04 -05:00
1945637752 Markov: add support for chatter targets, channels we log messages to or randomly speak in 2011-05-01 10:05:37 -05:00
14f2a027fe Markov: preliminary support for the bot to conditionally shut it self up (and recover from that) 2011-04-30 15:43:59 -05:00
42d414a0a4 Markov: consolidate _reply_to_line and _reply into _generate_line 2011-04-30 15:37:16 -05:00
aa6ea083fd remove reload support, since it was broken in the first place (somehow) 2011-04-27 22:49:04 -05:00
9ec73c4aa6 Markov: this is kind of embarrassing. remove a duplicate index. 2011-04-27 21:38:52 -05:00
6070ddc950 Markov: when looking up the start-of-sentence chain, get one random one
when finding a key for (__start1,__start2), instead of fetcihng all
(which can be a lot, in chatty channels and/or over time), get the
max ID in the table, pick a random ID between 1,max, and pick the
first id >= to it, and use that. just as random, nowhere near as
intensive.
2011-04-23 21:24:23 -05:00
6ef7865dba Markov: remove unused _get_chain_beginnings 2011-04-23 20:59:26 -05:00
7f922dd2c9 Markov: remove the 'starts' dictionary 2011-04-23 16:27:07 -05:00
116251398e Markov: index on markov_chain(k1,k2) 2011-04-23 16:25:01 -05:00
305625044a Markov: track the context of said lines
a context is a meta-classification ('banter, 'secrets', whatever)
based on targets (channels or nicknames). when a line is being
learned from a known target, the chains are placed in that context.

this is for allowing one brain to have multiple personalities, in
a sense, for large networks or cases where there may be a more
sanitized set of channels and a couple channels where everyone lets
it rip. a later enhancement would have sentence creation choose from
context-less chains (and contexts matching the current target), but
i need to go back to the drawing board on that one a bit.

ramble ramble ramble
2011-04-23 16:07:32 -05:00
4e7c19a02a Twitter: use Module's timer support including proper shutdown 2011-04-23 12:58:35 -05:00
5885983afd Markov: when learning lines, don't include the part direct addressing
e.g. if i say 'dr_botzo: hello dude', he only learns 'hello dude'.
this is mainly being done because the bot's name being in the brain
so many times was getting kind of silly, especially in channels that
have lots of conversations with the bot
2011-04-22 19:40:36 -05:00
9a4f8b019a Twitter: move timer reregistration up to the top of the timer routine
twitter will occasionally fail hard, when it was doing so this
check for updates wasn't reregistering, making the bot stop
checking eventually
2011-03-21 18:23:59 -05:00
5913a95165 Markov: append a stop if we have nothing to append from a chain
somehow a chain led us down a path where there are no values for
the keys in the chain. if that happens, just abort.

i'm not quite sure how this could happen
2011-03-17 17:24:11 -05:00
2b8f0d2843 Markov: don't crash when learning a sentence that's only whitespace 2011-03-14 13:14:56 -05:00
c17623bcf6 Karma: in the element regex, match ()ful version before ()less version
the motivation here is doing (foo)++ would match \S+ first, adding
(foo) to the karma database (rather than foo, which is probably what
the user meant)
2011-03-02 16:17:59 -06:00
250dd6c4b0 Merge branch 'master' of git.incorporeal.org:dr.botzo 2011-02-26 19:10:26 -06:00
cdb7a58240 Storycraft: attempt at handling unicode properly 2011-02-26 19:10:12 -06:00
87cc1ce15c Merge branch 'master' of ayu.incorporeal.org:dr.botzo 2011-02-26 19:08:36 -06:00
e78e6faad8 Storycraft: update usage hints to provide the proper commands 2011-02-26 19:07:16 -06:00
56bd5a687b Seen: unicode safety 2011-02-25 23:11:04 -06:00
713fb3e94a Seen: helps to actually import sqlite3 2011-02-25 23:09:41 -06:00
e020cdb476 Seen: convert to use sqlite database 2011-02-25 21:54:09 -06:00
67403971df Twitter: properly reverse the tweets list, remove it from the TODO 2011-02-25 21:10:54 -06:00
7a53aaa9a1 Markov: properly output unicode chains 2011-02-25 20:59:57 -06:00
87073d7fd3 Markov: cache the first word in markov chains
this eliminates the expensive database hit on every request for a line.
the cache is loaded when the module loads and learning new lines should
add the appropriate word to the list. seemed like a pretty good compromise
2011-02-24 21:06:29 -06:00
1712a7db53 Markov: use sqlite backend for brain
this keeps us from having the entire markov chain in memory and
having to do the pickling and so on. in many ways, this is a good
thing.

in one way, this is a bad thing. each line on irc will create a
__start1,__start2 item in the database, which means starting a
chain will be an expensive process. (approx 3 seconds, from irc
logs of 600,000 K lines). following selects run much faster, but
the first one is dog slow. a later commit should hopefully fix this.
2011-02-24 20:39:32 -06:00
28694ed82f chmod -x modules/Help.py 2011-02-23 19:40:06 -06:00
414514d3b2 Twitter: reverse the tweets list, to print in ascending order 2011-02-22 22:59:55 -06:00