示例#1
0
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)
示例#2
0
            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,
                                          'Не удалось добавить товар')
示例#3
0
 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())
示例#4
0
        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)
示例#5
0
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()
示例#6
0
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)