Markov: add support for chatter targets, channels we log messages to or randomly speak in
This commit is contained in:
parent
a61fb37394
commit
1945637752
|
@ -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."""
|
||||
|
||||
|
|
Loading…
Reference in New Issue