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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user