bot v0.1
This commit is contained in:
		
							parent
							
								
									8f011cb864
								
							
						
					
					
						commit
						b5056d6a00
					
				
					 1 changed files with 60 additions and 0 deletions
				
			
		
							
								
								
									
										60
									
								
								Bot/bot.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								Bot/bot.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,60 @@ | |||
| import plugin_super_class | ||||
| from PySide import QtCore | ||||
| import time | ||||
| 
 | ||||
| 
 | ||||
| class InvokeEvent(QtCore.QEvent): | ||||
|     EVENT_TYPE = QtCore.QEvent.Type(QtCore.QEvent.registerEventType()) | ||||
| 
 | ||||
|     def __init__(self, fn, *args, **kwargs): | ||||
|         QtCore.QEvent.__init__(self, InvokeEvent.EVENT_TYPE) | ||||
|         self.fn = fn | ||||
|         self.args = args | ||||
|         self.kwargs = kwargs | ||||
| 
 | ||||
| 
 | ||||
| class Invoker(QtCore.QObject): | ||||
| 
 | ||||
|     def event(self, event): | ||||
|         event.fn(*event.args, **event.kwargs) | ||||
|         return True | ||||
| 
 | ||||
| _invoker = Invoker() | ||||
| 
 | ||||
| 
 | ||||
| def invoke_in_main_thread(fn, *args, **kwargs): | ||||
|     QtCore.QCoreApplication.postEvent(_invoker, InvokeEvent(fn, *args, **kwargs)) | ||||
| 
 | ||||
| 
 | ||||
| class Bot(plugin_super_class.PluginSuperClass): | ||||
| 
 | ||||
|     def __init__(self, *args): | ||||
|         super(Bot, self).__init__('Bot', 'bot', *args) | ||||
|         self._callback = None | ||||
|         self._timer = QtCore.QTimer() | ||||
|         self._timer.timeout.connect(self.initialize) | ||||
| 
 | ||||
|     def start(self): | ||||
|         self._timer.start(10000) | ||||
| 
 | ||||
|     def initialize(self): | ||||
|         self._timer.stop() | ||||
|         self._callback = self._tox.friend_message_cb | ||||
| 
 | ||||
|         def incoming_message(tox, friend_number, message_type, message, size, user_data): | ||||
|             self._callback(tox, friend_number, message_type, message, size, user_data) | ||||
|             if self._profile.status == 1: | ||||
|                 self.answer(friend_number, str(message, 'utf-8')) | ||||
| 
 | ||||
|         self._tox.callback_friend_message(incoming_message, None) | ||||
| 
 | ||||
|     def stop(self): | ||||
|         self._tox.callback_friend_message(self._callback, None) | ||||
| 
 | ||||
|     def close(self): | ||||
|         self.stop() | ||||
| 
 | ||||
|     def answer(self, friend_number, message): | ||||
|         invoke_in_main_thread(self._profile.send_message, message, friend_number) | ||||
| 
 | ||||
| 
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 ingvar1995
						ingvar1995