def new_addres(message): global address if message.text == 'Отмена': bot.send_message(message.from_user.id, 'Отменено', keyboards.remove_keyboard()) menu(message) else: address = message.text bot.send_message(message.from_user.id, 'Контактная информация изменена', keyboards.remove_keyboard()) menu(message)
def add_item_final(message): photo = None about = None if message.photo is None: about = message.text.split('\n') else: raw = message.photo[-1].file_id file_info = self.bot.get_file(raw) photo = self.bot.download_file(file_info.file_path) about = message.caption.split('\n') if len(about) != 4: self.bot.send_message( message.from_user.id, 'Неправильно заполнена информация, попробуйте еще раз.', reply_markup=remove_keyboard()) return print(photo) print(about) try: item = Item(name=about[0], clothe_size=about[2], description=about[3], category=category, price=about[1], picture=photo) self.db.add_model(item) self.db.commit_session() self.bot.send_message(message.from_user.id, 'Товар добавлен') except Exception as e: self.bot.send_message(message.from_user.id, 'Не удалось добавить товар')
def add_category2(message): new_category = message.text if new_category == 'Отмена': self.bot.send_message(message.from_user.id, 'Операция добавления отменена', reply_markup=remove_keyboard()) return try: self.db.add_model(Category(category_name=new_category)) self.db.commit_session() self.bot.send_message( message.from_user.id, 'Категория "{}" была добавлена'.format(new_category), reply_markup=remove_keyboard()) except Exception as e: print(e) self.bot.send_message(message.from_user.id, 'Произошла ошибка', reply_markup=remove_keyboard())
def add_item_set_name(message): cat_name = message.text if cat_name == 'Отмена': return category = queries.get_category(self.db, cat_name) self.bot.send_message( message.from_user.id, 'Введите на каждой строке информацию о товаре. На первой ' 'строке название товара \nцена \nразмер \nописание товара ' '\nа так же прикрепите фотографию', reply_markup=remove_keyboard()) def add_item_final(message): photo = None about = None if message.photo is None: about = message.text.split('\n') else: raw = message.photo[-1].file_id file_info = self.bot.get_file(raw) photo = self.bot.download_file(file_info.file_path) about = message.caption.split('\n') if len(about) != 4: self.bot.send_message( message.from_user.id, 'Неправильно заполнена информация, попробуйте еще раз.', reply_markup=remove_keyboard()) return print(photo) print(about) try: item = Item(name=about[0], clothe_size=about[2], description=about[3], category=category, price=about[1], picture=photo) self.db.add_model(item) self.db.commit_session() self.bot.send_message(message.from_user.id, 'Товар добавлен') except Exception as e: self.bot.send_message(message.from_user.id, 'Не удалось добавить товар') self.bot.register_next_step_handler(message, add_item_final)
def create_task_threaded(task: TelegramTask, message: types.Message): logging.debug("Creating task...") logging.debug("Wait creating enable...") task_thread.update_enable.wait(0.3) # ToDo logging.debug("Disable updates...") task_thread.update_enable.clear() task_thread.new_task_count += 1 with task_creating_lock: retry = 5 logging.debug("Sending request to server...") while True: try: new_task = api.create_task(task) except api.new_api.APIError as e: print(e) retry -= 1 if not retry: bot.send_message(message.chat.id, ('Ошибка создания заявки!\n' 'Позвоните на номера тех поддержки.')) return time.sleep(5) else: logging.debug('Sending done!') break logging.debug(f"Create IntraserviceTask({new_task['Id']})...") try: intraservice_task = IntraserviceTask.objects.get(id=new_task['Id']) except ObjectDoesNotExist: logging.debug(f"Creating IntraserviceTask({new_task['Id']}): not found!") intraservice_task = IntraserviceTask.objects.update_or_create( id=new_task['Id'], status=new_task['StatusId'], is_mass=new_task['IsMassIncident'], edit_person=new_task['Creator'], description=new_task['Description'], priority=task.priority, executor_group=EXECUTOR_GROUP_IDS['Техподдержка'])[0] else: logging.debug(f"Creating IntraserviceTask({new_task['Id']}): found!") intraservice_task.is_mass = new_task['IsMassIncident'] intraservice_task.status = new_task['StatusId'] intraservice_task.edit_person = new_task['Creator'] intraservice_task.description = new_task['Description'] intraservice_task.priority = task.priority intraservice_task.executor_group = EXECUTOR_GROUP_IDS['Техподдержка'] intraservice_task.save() task.delete() client = Client.objects.get(telegram_user__user_id=message.from_user.id) # type: Client client.intraservicetask_set.add(intraservice_task) client.save() add_filled_task() logging.debug(f'Sending message to TelegramUser({message.chat.id}) after creating task...') try: bot.send_message(message.chat.id, intraservice_task.register_message, parse_mode="Markdown", reply_markup=kb.remove_keyboard()) except telebot.apihelper.ApiException: logging.warning(f"Can't send message to TelegramUser({message.chat.id})") else: logging.info(f'Message to TelegramUser({message.chat.id}) sended!') start_handler(message) logging.debug('Enable updates...') task_thread.update_enable.set()
def steps_handler(message): try: task = TelegramTask.objects.get(client__telegram_user__user_id=message.from_user.id) except ObjectDoesNotExist: start_handler(message) return if TaskStep(task.current_step) == TaskStep.WAIT_FOR_BRAND: # get position if message.text in r.BRANDS: task.brand = message.text # task.priority = PRIORITY_STATUSES[[x[1] for x in r.USER_POSITIONS if x[0] == message.text][0]] task.current_step = TaskStep.WAIT_FOR_SHOP_FULLNAME.value task.save() add_created_task() bot.send_message(message.chat.id, r.ENTER_SHOP_FULLNAME, reply_markup=kb.cancel_keyboard()) else: bot.send_message(message.chat.id, r.CHOICE_BRAND, reply_markup=kb.brands_keyboard()) elif TaskStep(task.current_step) == TaskStep.WAIT_FOR_SHOP_FULLNAME: task.shop_fullname = message.text task.current_step = TaskStep.WAIT_FOR_MOBILE_NUMBER.value task.save() bot.send_message(message.chat.id, r.MOBILE_NUMBER_SELECT, reply_markup=kb.cancel_keyboard()) elif TaskStep(task.current_step) == TaskStep.WAIT_FOR_MOBILE_NUMBER: if len(message.text) < 4: bot.send_message(message.chat.id, r.MOBILE_NUMBER_SELECT_ERROR, reply_markup=kb.remove_keyboard()) else: task.mobile_number = message.text task.current_step = TaskStep.WAIT_FOR_SERVICE.value task.save() bot.send_message(message.chat.id, r.TASK_DESCRIPTION_SELECT, reply_markup=kb.mass_problems()) elif TaskStep(task.current_step) == TaskStep.WAIT_FOR_SERVICE: description = message.text try: if description in MASS_PROBLEMS: task.description = description if task.description == 'Неисправность ФР': task.current_step = TaskStep.WAIT_FOR_KKM_NUMBER.value task.save() bot.send_message(message.chat.id, r.ENTER_KKM_NUMBER, reply_markup=kb.cancel_keyboard()) else: task.current_step = TaskStep.WAIT_FOR_DESCRIPTION.value task.save() bot.send_message(message.chat.id, r.ENTER_ENTER_TRUE_DESCRIPTION, reply_markup=kb.cancel_keyboard()) else: bot.send_message(message.chat.id, r.TASK_DESCRIPTION_SELECT_ERROR, reply_markup=kb.mass_problems()) except Exception as e: logging.warning(e) bot.send_message(message.chat.id, r.TASK_DESCRIPTION_SELECT_ERROR, reply_markup=kb.remove_keyboard()) elif TaskStep(task.current_step) == TaskStep.WAIT_FOR_KKM_NUMBER: task.kkm_number = message.text task.current_step = TaskStep.WAIT_FOR_DESCRIPTION.value task.save() bot.send_message(message.chat.id, r.ENTER_ENTER_TRUE_DESCRIPTION, reply_markup=kb.cancel_keyboard()) elif TaskStep(task.current_step) == TaskStep.WAIT_FOR_DESCRIPTION: task.true_description = message.text task.current_step = TaskStep.WAIT_FOR_TEAM_VIEWER.value task.save() bot.send_message(message.chat.id, r.ENTER_TEAM_VIEWER, reply_markup=kb.skip_and_cancel_keyboard()) elif TaskStep(task.current_step) == TaskStep.WAIT_FOR_TEAM_VIEWER: if message.text != r.SKIP_BUTTON: task.team_viewer = message.text task.current_step = TaskStep.WAIT_FOR_BLOCK.value task.save() bot.send_message(message.chat.id, r.ENTER_IS_BLOCK, reply_markup=kb.block_keyboard()) elif TaskStep(task.current_step) == TaskStep.WAIT_FOR_BLOCK: if message.text in [r.ENTER_IS_BLOCK_YES, r.ENTER_IS_BLOCK_NO]: task.block_work = message.text == r.ENTER_IS_BLOCK_YES if task.block_work: task.priority = PRIORITY_STATUSES["Критический"] else: if task.description in MASS_PROBLEMS: task.priority = PRIORITY_STATUSES[MASS_PROBLEMS_PRIORITY[task.description]] else: task.priority = PRIORITY_STATUSES["Низкий"] task.current_step = TaskStep.WAIT_FOR_SCREENSHOT.value task.save() bot.send_message(message.chat.id, r.SCREENSHOT_ATTACH_ASK, reply_markup=kb.screenshot_ask_keyboard()) else: bot.send_message(message.chat.id, r.ENTER_IS_BLOCK, reply_markup=kb.block_keyboard()) elif TaskStep(task.current_step) == TaskStep.WAIT_FOR_SCREENSHOT: if message.text == r.SCREENSHOT_ATTACH_YES: bot.send_message(message.chat.id, r.SCREENSHOT_ATTACH_CALL, reply_markup=kb.screenshot_wait_keyboard()) elif message.text == r.SCREENSHOT_ATTACH_CANCEL or message.text == r.SCREENSHOT_ATTACH_NO: task.current_step = TaskStep.FILLED.value task.save() bot.send_message(message.chat.id, r.TASK_FILLED, reply_markup=kb.remove_keyboard()) threading.Thread(target=create_task_threaded, kwargs=({'task': task, 'message': message})).start() start_handler(message) elif message.content_type == "photo": task.current_step = TaskStep.FILLED.value screenshot = get_screenshot(message.photo[-1].file_id) filename = f"{message.from_user.id}_{timezone.now().strftime('%Y-%m-%dT%H:%M:%S')}.jpg" task.screenshot.save(filename, ContentFile(screenshot)) task.save() bot.send_message(message.chat.id, r.TASK_FILLED, reply_markup=kb.remove_keyboard()) threading.Thread(target=create_task_threaded, kwargs=({'task': task, 'message': message})).start() start_handler(message)