Browse Source

move register and connect to init EchoBot

blezz-tech 1 month ago
parent
commit
7365245462
2 changed files with 34 additions and 27 deletions
  1. 30 9
      handlers/EchoBot.py
  2. 4 18
      handlers/main.py

+ 30 - 9
handlers/EchoBot.py

@@ -1,22 +1,43 @@
 import logging
-from getpass import getpass
-from argparse import ArgumentParser
-
-import asyncio
 import slixmpp
+import config
+from datetime import datetime
 
 
-class EchoBot(slixmpp.ClientXMPP):
+class JabberBot(slixmpp.ClientXMPP):
     """
-    EchoBot
+    JabberBot
     """
 
     def __init__(self, jid, password):
         slixmpp.ClientXMPP.__init__(self, jid, password)
 
-        self.add_event_handler("session_start", self.start)
+        # Register plugins
+        self.register_plugin('xep_0030') # Service Discovery
+        self.register_plugin('xep_0004') # Data Forms
+        self.register_plugin('xep_0060') # PubSub
+        self.register_plugin('xep_0199') # XMPP Ping
+
+    def register_handler(self, name, handler):
+        self.add_event_handler(name, handler)
 
     async def start(self, event):
-        self.send_presence()
-        await self.get_roster()
+        # TODO: Нужно ли
+        # self.send_presence()
+        # await self.get_roster()
+
+        logging.info("Bot started!")
+
+        # Connect to the XMPP server and start processing XMPP stanzas.
+        self.connect()
+
+    def log(self, message):
+        # надо строчку лога сделать более информативной
+        logfile = open("logs/" + datetime.now().strftime('%Y-%m-%d') + "-" + self.user + ".log", "a")
+        logfile.write(message)
+        logfile.close()
+        print(message)
+
+    def stop(self):
+        self.disconnect()
 

+ 4 - 18
handlers/main.py

@@ -2,7 +2,7 @@ import hashlib
 from datetime import datetime
 import config
 import jsonAndRequest as jsreq
-from EchoBot import EchoBot
+from EchoBot import JabberBot
 
 import logging
 from getpass import getpass
@@ -13,14 +13,11 @@ botname = "open_basic_bot"
 operating_status = 0
 
 JID = botname + "@" + config.JSERVER
-PORT = config.PORT
 PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
-
-
 if __name__ == '__main__':
     # Setup the command line arguments.
-    parser = ArgumentParser(description=EchoBot.__doc__)
+    parser = ArgumentParser(description=JabberBot.__doc__)
 
     # Output verbosity options.
     parser.add_argument("-q", "--quiet", help="set logging to ERROR",
@@ -49,19 +46,8 @@ if __name__ == '__main__':
     # have interdependencies, the order in which you register them does
     # not matter.
 
-    print(JID, PASSWORD)
-
-
-    xmpp = EchoBot(JID, PASSWORD)
-    xmpp.register_plugin('xep_0030') # Service Discovery
-    xmpp.register_plugin('xep_0004') # Data Forms
-    xmpp.register_plugin('xep_0060') # PubSub
-    xmpp.register_plugin('xep_0199') # XMPP Ping
+    xmpp = JabberBot(JID, PASSWORD)
 
-    # Connect to the XMPP server and start processing XMPP stanzas.
-    xmpp.connect()
+    xmpp.send_message(JID, f"message send: {datetime.now()}")
 
-    xmpp.send_message(JID, "message1")
-    xmpp.send_message(JID, "message2")
-    xmpp.send_message(JID, "message3")
     asyncio.get_event_loop().run_forever()