Bläddra i källkod

update message_handlers

blezz-tech 1 månad sedan
förälder
incheckning
77e086948c
1 ändrade filer med 23 tillägg och 2 borttagningar
  1. 23 2
      handlers/handlers/open_access_request_pending.py

+ 23 - 2
handlers/handlers/open_access_request_pending.py

@@ -38,6 +38,9 @@ INTERVAL_ATTEMPTS = 3
 # INTERVAL_TIME = 30 * 60  # 30 минут в секундах
 INTERVAL_TIME = 5 # Для проверки
 
+TEMP_TICKETS: List[Ticket] = []
+ID_TICKETS_FOR_REMOVE: List[int] = []
+
 def message_handler(msg: Message):
     """Обработчик входящих сообщений"""
 
@@ -45,21 +48,39 @@ def message_handler(msg: Message):
         text = msg['body']  # текст сообщения боту
         sender = msg['from']  # отправитель сообщения
 
-        if (str(sender).split("/")[0]) in listen_to:
+        sender_name = str(sender).split("/")[0]
+        if sender_name in listen_to:
             if text is not None:
                 logging.info(f"Сообщение получено")
 
+                # match ACTION:
+                #     case "add_ticket":
+                #         match sender_name:
+                #             case "open_*_request_*":
+                #                 TEMP_TICKETS.append(ticket)
+                #     case "remove_ticket":
+                #         ID_TICKETS_FOR_REMOVE.append(id)
+
+
 def start_handler():
     """Событие запуска обработчика."""
 
     logging.info(">>>>>  %s  |---| %s  <<<<<", JID, PASSWORD)
 
-    tickets: List[Ticket]  = get_fake_data()
+    tickets: List[Ticket] = get_fake_data()
 
     with ThreadPoolExecutor() as executor:
         killer = SystemdKiller()
 
         while not killer.exit_event.is_set():
+            # Получение тикетов от других обработчиков
+            tickets += TEMP_TICKETS
+            TEMP_TICKETS = []
+
+            # Фильтрация тикетов от лишних id
+            tickets = [ticket for ticket in tickets if ticket.id not in ID_TICKETS_FOR_REMOVE]
+            ID_TICKETS_FOR_REMOVE = []
+
             # Параллельная обработка всех тикетов
             processed = list(executor.map(run_process(interval_attempts_unlimited, processing), tickets))