From 194563775293f2f7dd46a2f6902755cb41da9c03 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Sun, 1 May 2011 09:47:45 -0500 Subject: [PATCH] Markov: add support for chatter targets, channels we log messages to or randomly speak in --- modules/Markov.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/modules/Markov.py b/modules/Markov.py index 76ab59b..fa0d637 100644 --- a/modules/Markov.py +++ b/modules/Markov.py @@ -143,6 +143,21 @@ class Markov(Module): db.rollback() print('sqlite error: ' + str(e)) raise + if (version < 5): + db = self.get_db() + try: + version = 5 + db.execute(''' + CREATE TABLE markov_chatter_target ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + target TEXT NOT NULL + )''') + db.commit() + self.db_register_module_version(self.__class__.__name__, version) + except sqlite3.Error as e: + db.rollback() + print('sqlite error: ' + str(e)) + raise def register_handlers(self): """Handle pubmsg/privmsg, to learn and/or reply to IRC events.""" @@ -362,6 +377,35 @@ class Markov(Module): print('sqlite error: ' + str(e)) raise + def _get_chatter_targets(self): + """Get all possible chatter targets.""" + + values = [] + try: + # need to create our own db object, since this is likely going to be in a new thread + dbfile = self.config.get('dr.botzo', 'database') + self.conn = sqlite3.connect(dbfile) + self.conn.row_factory = sqlite3.Row + db = self.conn + query = 'SELECT target FROM markov_chatter_target' + cursor = db.execute(query) + results = cursor.fetchall() + + for result in results: + values.append(result['target']) + + return values + except sqlite3.Error as e: + print('sqlite error: ' + str(e)) + raise + + def _get_one_chatter_target(self): + """Select one random chatter target.""" + + targets = self._get_chatter_targets() + if targets: + return targets[random.randint(0, len(targets)-1)] + def _get_context_for_target(self, target): """Get the context for a channel/nick, if defined."""