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()
|
db.rollback()
|
||||||
print('sqlite error: ' + str(e))
|
print('sqlite error: ' + str(e))
|
||||||
raise
|
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):
|
def register_handlers(self):
|
||||||
"""Handle pubmsg/privmsg, to learn and/or reply to IRC events."""
|
"""Handle pubmsg/privmsg, to learn and/or reply to IRC events."""
|
||||||
@ -362,6 +377,35 @@ class Markov(Module):
|
|||||||
print('sqlite error: ' + str(e))
|
print('sqlite error: ' + str(e))
|
||||||
raise
|
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):
|
def _get_context_for_target(self, target):
|
||||||
"""Get the context for a channel/nick, if defined."""
|
"""Get the context for a channel/nick, if defined."""
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user