# раскомментировать, когда перейдем на разные пароли import hashlib import threading import time from datetime import datetime import config # test import jsonAndRequest as jsreq from BotClass import JabberBot global tasklist botname = "status_changer" JID = botname + "@" + config.JSERVER PORT = config.PORT PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest() # таким образом хранится список jid, от которых можно получать сообщения этому боту listen_to = ["status_changer@ej.sharix-app.org"] # тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки proceed_to = ["numbers"] # максимальное значение попыток обработать заказ idle_value = 10 # обработчик входящих сообщений # def message_handler(conn, mess): # text = mess.getBody()#текст сообщения боту # user = mess.getFrom()#отправитель сообщения # if (str(user).split("/")[0]) in listen_to: # # print (str(user).split("/")[0]) # if text is not None: # orderObj = jsreq.jsonToOrder(text) # tasklist.append(orderObj) # bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n") def status_changer_wait(period, localtask): bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет ожидает\n") time.sleep(period) bot.proceed_status(proceed_to[0], localtask) bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет подождал и возвращен в очередь\n") def status_changer_process(ticket): bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет в обработчике\n") tickets_new = jsreq.requestGetTicket_user(token, config.API_URL + f"tickets/api/ticket_list/{ticket.id}") # if ticket.id == 2103: # for ticket_new in tickets_new: # metaservice_admin(ticket_new,ticket.group) if ticket.id == 2101: for ticket_new in tickets_new: company_status(ticket_new) elif ticket.id == 2102: for ticket_new in tickets_new: company_status(ticket_new, ticket.group) elif ticket.id == '': print('should be soon') # дополнить по всем айди тикетов # if ticket_new != []: # print(ticket_new) # api/v1/platform/sharix-users/1/ # bot.proceed_status(proceed_to[1], localtask) # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет успешно обработан и отправлен на pending\n") def company_status(ticket_new): if ticket_new.status == 141: # нужны доп проверки answer = jsreq.change_status_company(token, config.API_URL + f"dbsynce/api/client/{ticket_new.created_by}/") if answer != 200: print(f'Ошибка{answer}') else: print('Статус не ACCESS') # def company_status(ticket_new): # if ticket_new.status == 141:#нужны доп проверки # answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/",ticket_new.created_by) # if answer!=200: # print(f'Ошибка{answer}') # else: # print('Статус не ACCESS') def metaservice_admin(ticket_new, group): if ticket_new.status == 141: # нужны доп проверки answer = jsreq.change_groups(token, config.API_URL + f"api/v1/platform/sharix-users/{ticket_new.created_by}/", group) if answer != 200: print(f'Ошибка{answer}') else: print('Статус не ACCESS') def status_changer(): while True: ticketlist = jsreq.requestGetList(token, config.API_URL + "tickets/api/ticket_list/") for ticket in ticketlist: bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Тикет в очереди на обработке\n") t1 = threading.Thread(target=status_changer_process, args=(ticket,)) t1.start() t1.join() # Ожидаем завершения обработки тикета time.sleep(300) # Обновляем ticketlist каждые 5 минут # Авторизация и запуск бота # пустой список ticketlist = [] token = jsreq.requestGetToken(config.API_URL + "api/v1/auth/token/login/") # ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя # # print (len(tasklist)) bot = JabberBot(JID, PASSWORD, PORT) bot.start(status_changer)