Commit Graph

107 Commits

Author SHA1 Message Date
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 25d0f2f5c3 connect to sqlite with isolation_level=None as an attempt to avoid (invalid) database is locked errors 2012-03-29 20:09:50 -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 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 4d6228b93a move DrBotIRC into a separate file, since we will probably be hacking more on it soon 2011-01-07 09:54:51 -06:00
Brian S. Stephan b487caf12d make the config file argument optional.
this should probably be robustified (--config-file=foo) eventually
2011-01-06 22:43:10 -06:00
Brian S. Stephan 00d5502477 remove some stuff that's been commented out for a while now 2011-01-06 22:40:45 -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 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 7a9b68f2c4 remove unnecessary method, preferring register_handlers 2010-12-15 20:53:52 -06:00
Brian S. Stephan da9e4b3142 better method of loading modules --- don't import *, import each individually 2010-12-10 23:25:56 -06:00
Brian S. Stephan eeb8ff83bf fix a lack of encoding bug in a place where it's probably been lingering for a while. 2010-10-27 23:16:07 -05:00
Brian S. Stephan 898a4aa6c0 Revert "remove even more unicode()/encode() calls."
turns out there was a reason why i did this one.
This reverts commit 1afa34554f.
2010-10-27 23:12:46 -05:00
Brian S. Stephan 1afa34554f remove even more unicode()/encode() calls.
it's now to the point that i have no idea what convinced me to
make them in the first damn place.
2010-10-27 22:54:26 -05:00
Mike Bloy 48427ecd21 create the database if it doesn't exist, on startup 2010-10-24 15:11:37 -05:00
Brian S. Stephan 52b740a52c split the register_handlers into a method other than the object constructor
the reasoning behind this is that we may want to load one object
but have it connect to multiple servers. this allows that.
2010-10-09 18:52:51 -05:00
Brian S. Stephan 599106e447 require config file on the command line 2010-10-02 21:44:03 -05:00
Brian S. Stephan 466eb6eff1 attempt to give up if we're doing too many splits 2010-09-30 19:38:21 -05:00
Brian S. Stephan 54af309bbc and username, password options to bot, and properly connect with those options. 2010-09-08 20:32:43 -05:00
Brian S. Stephan 713b1e560b get around occasional utf8 conversion exceptions by swallowing
those exceptions and moving on, since the output never seemed
wrong in these cases anyway
2010-08-24 13:25:30 -05:00
Brian S. Stephan 4d41314195 standardize config sections to use class name. NOTE: USERS NEED TO UPDATE THEIR CONFIG 2010-08-01 11:41:26 -05:00
Brian S. Stephan 54d62dd587 unicode fixes, in part to support what is going on in an in-dev weather module 2010-07-30 19:57:10 -05:00
Brian S. Stephan 7feb90242d renaming 'irclib' dir to 'extlib' 2010-07-30 18:34:10 -05:00
Brian S. Stephan 262ee2e3e1 PEP 257ifying dr.botzo.py and Module.py 2010-07-30 13:34:51 -05:00
Brian S. Stephan e1fe0eb4ca do splitting in DrBotServerConnection.privmsg 2010-07-30 08:01:45 -05:00
Brian S. Stephan 88186e1425 slight documentation and whitespace for subclassing irclib.IRC, irclib.ServerConnection 2010-07-29 23:26:30 -05:00
Brian S. Stephan 9191f25052 load modules at startup based on config file, remove that item from TODO 2010-07-29 23:13:15 -05:00
Brian S. Stephan 57090fdda4 long list of changes to allow modular Module reloads: server as module variable, class appends self to module list, unregister_handlers method which must be overridden, reload method which does the magic to create the a new object of the re-read class. drop use of the main rehash and reload_modules, and don't pass rehash around anymore. load initial objects 'the old way' again. feature modules change for compatability and implementation of all of the above changes 2010-07-29 22:36:08 -05:00
Brian S. Stephan a3da4f39c8 remove unnecessary stuff from dr.botzo.py import 2010-07-29 00:32:20 -05:00
Brian S. Stephan 91e535978f comment nitpicking and restyling 2010-07-29 00:04:01 -05:00
kad 02df2ca783 Cleanup code 2010-07-28 12:25:49 -06:00
kad 0c17196b32 Add some modelines and fix indentation, I hope. 2010-07-27 23:11:58 -06:00
kad 1704fc7c50 Add ability to rehash modules. Split modules into separate files. Rehash is a bit flakey, not sure of a better way to do it. 2010-07-27 19:29:28 -06:00
Brian S. Stephan c9c3b0e499 move irclib into its own subdirectory 2010-07-27 19:29:28 -06:00
Brian S. Stephan 74371727ed making comments more standard 2010-07-27 19:29:28 -06:00
Brian S. Stephan ea1b89540b add GPL notice to dr.botzo.py 2010-07-27 19:29:28 -06:00
kad 1c728b14bd Try to dynamically create modules 2010-07-26 21:46:48 -06:00
Brian S. Stephan 4f0908f873 move irclib into its own subdirectory 2010-07-26 22:36:07 -05:00
Brian S. Stephan 35b6545425 making comments more standard 2010-07-26 21:59:11 -05:00
Brian S. Stephan dbfcfd253d add GPL notice to dr.botzo.py 2010-07-26 21:51:03 -05:00
Brian S. Stephan 0fc413f2e3 remove executable bit, remove python shebang 2010-07-26 21:31:10 -05:00
Brian S. Stephan c1da6cc052 use the with keyword to open the file, so that the file is properly closed 2010-07-26 21:08:34 -05:00
Brian S. Stephan 5927d361ef bite the bullet and load the entire file into memory rather than doing the fun only-load-one-line trick, so that it's easier to search with a regex later 2010-07-26 21:06:59 -05:00
Brian S. Stephan 3037364ef9 more unicode fake replacements, now that i reverted the real fix 2010-07-26 20:54:54 -05:00
Brian S. Stephan 497554c314 Revert "handle unicode escapes the right way, now that i properly looked up what was going on" because it turns out that result languages like ja mix the escaped unicode and the natural unicode and that screws up every method i've found to parse so far, as they all appear to expect all escaped or all native. here's an example:
\u0026lt;ハイテク\u0026gt;

if you can figure that out, un-revert and apply your fix.

This reverts commit 9836ebf11f.
2010-07-26 20:48:54 -05:00
Brian S. Stephan 22c423f8b5 creating custom classes inheriting from irclib, in an attempt to figure out this unicode stuff and to do privmsg splitting eventually 2010-07-26 20:05:17 -05:00
Brian S. Stephan 9836ebf11f handle unicode escapes the right way, now that i properly looked up what was going on 2010-07-26 19:29:52 -05:00
Brian S. Stephan 9eabef8abe more html character replacements 2010-07-26 19:02:57 -05:00
Brian S. Stephan 3bd8fb13c2 do a couple simple conversions of htmlified characters to their ascii equivalent 2010-07-26 18:33:10 -05:00
Brian S. Stephan 8fba54e33d fact module. gets a random line out of the file, still needs search support, adding, whatever else 2010-07-26 18:14:33 -05:00