|
@@ -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))
|
|
|
|