import sys, xmpp #Основной класс бота class JabberBot: def __init__(self, jid, password): jid = xmpp.JID(jid) self.user, self.server, self.password = jid.getNode(), jid.getDomain(), password self.connect() self.auth() #Метод проверки подключения к серверу xmpp def connect(self): self.conn = xmpp.Client(self.server, debug = []) conn_result = self.conn.connect() if not conn_result: print("Can't connect to server!\n") sys.exit(1) #Метод аутентификации def auth(self): auth_result = self.conn.auth(self.user, self.password) if not auth_result: print("Can't to authorize!\n") sys.exit(1) #Метод для привязки функций к событиям def register_handler(self, name, handler): self.conn.RegisterHandler(name, handler) def step_on(self): try: self.conn.Process(1) #с какой частотой происходит подключение к серверу, в данном случае каждую секунду except KeyboardInterrupt: return 0 return 1 def fake_api_call(message): cli.send_message(self.user, self.password, "test@msg.sharix-app.org", message) def bot_log(message): #далее надо будет переделать запись в файл вероятно cli.send_message(self.user, self.password, "test@msg.sharix-app.org", message) # recipient - это конкретный jid следующего обработчика заявки, ticket - json с заявкой. def proceed_status(recipient, ticket): #тут могут быть различные проверки дополнительные, а так вообще эта функция нужна для передачи заявки на обработку следующему cli.send_message(self.user, self.password, recipient, ticket) #сюда можно как параметры передавать переменную для значения Process в вызываемой функции, а также передавать информацию о том, какой из обработчиков ввызывать в бесконечном цикле def start(self, handler, *args): self.conn.sendInitPresence()#статус аккаунта бота (активен или нет) print("Bot started!") while self.step_on(): #это вызов конкретной функции для обработки статуса конкретным ботом handler(args) pass