Markov: add support for chatter targets, channels we log messages to or randomly speak in

This commit is contained in:
Brian S. Stephan 2011-05-01 09:47:45 -05:00
parent a61fb37394
commit 1945637752
1 changed files with 44 additions and 0 deletions

View File

@ -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."""