Commit Graph

60 Commits

Author SHA1 Message Date
Brian S. Stephan 8d6d66333b Module: don't pass DrBotServerConnection to init
another "this is unnecessary" change, obviously impacting all the
modules that override __init__ as well as the base class. again, they
can use the DrBotIRC instance for anything, which is (with one
exception) only for add/remove_global_handler, which i'm planning on
working my way off of anyway
2012-12-19 21:06:53 -06:00
Brian S. Stephan 3e76f75bba Module: remove reply(), use DrBotIRC's
obviously this means all of the modules changed to accomodate. this is
one of many steps to reduce the number of times we pass connections and
servers and other such info around, when it's mostly unnecessary because
modules have a reference to DrBotIRC
2012-12-19 20:51:35 -06:00
Brian S. Stephan bdba8e20f1 Karma: don't swallow potential commands
when matching patterns, !rank item++ would not get replied to
since the karma matcher would hit, increment item, and then return
(with no response). now it hits but lets processing continue.

doing !rank item++ of course still increments item, which is probably
not what you want to have happen, but i'm not sure how i feel about
fixing it yet, since even if it's not what you /want/ it's probably
what you /expect/.
2012-09-13 12:28:03 -05:00
Brian S. Stephan e7a573bce1 Karma: allow multiple karma expressions per line 2012-09-13 12:16:25 -05:00
Brian S. Stephan 8b2269c441 pyflakes cleanups 2012-07-27 20:38:45 -05:00
Brian S. Stephan 033631e5c2 no longer encode/decode UTF8 stuff when going to/from database
seems safe so far (famous last words)
2012-07-27 16:34:57 -05:00
Brian S. Stephan 7bd5558f05 ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin for case-sensitivity 2012-07-27 14:57:41 -05:00
Brian S. Stephan 1a36becead convert to a MySQL backend
WARNING!
there's no going back now. this change is *huge* but it was overdue.
WARNING!

the database backend is now mysql. modules that should use a database
but don't yet were left untouched, they'll come later. scripts haven't
been converted yet, though i'm pretty sure i'll need to soon.

while i was going through everything, connection/cursor idioms were
cleaned up, as were a bunch of log messages and exception handling. this
change is so gross i'm happy things appear to be working, which is
the case --- all modules are lightly tested.
2012-07-27 02:18:01 -05:00
Brian S. Stephan 9654f4de98 switch to use python's logging, with config file i'm not entirely happy about 2012-07-15 21:32:12 -05:00
Brian S. Stephan 097077174b close connections from get_db() 2011-06-20 22:20:41 -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 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
Brian S. Stephan 578c2ea29f Karma: allow for karma/query on unicode strings 2011-02-20 16:13:00 -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 4e8b60c201 Karma: add top to reportpattern 2011-01-20 14:50:51 -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
Mike Bloy d68487de95 added help for Karma module 2011-01-08 23:21:36 -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 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 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 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 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
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 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 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 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 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