Beispiel #1
0
def main_menu(message):
    if message.text == '☎ Контакты':
        bot.send_message(message.chat.id,
                         Messages.CONTACTS.value,
                         reply_markup=keyboards.main_menu())
    elif message.text == '🚀 Доставка':
        bot.send_message(message.chat.id,
                         Messages.DELIVERY.value,
                         parse_mode='HTML',
                         reply_markup=keyboards.main_menu())
    elif message.text == '✏ Информация':
        bot.send_message(message.chat.id,
                         Messages.INFO.value,
                         parse_mode='HTML',
                         reply_markup=keyboards.main_menu())
    elif message.text == '🍴 Меню':
        bot.send_message(message.chat.id,
                         'Выберите раздел, чтобы вывести список блюд 👇🏻',
                         reply_markup=keyboards.categories())
        states.set_state(message.chat.id, States.S_MENU.value)
    elif message.text == '📥 Корзина':
        bot.send_message(message.chat.id,
                         messages.basket(message.chat.id),
                         parse_mode='HTML',
                         reply_markup=keyboards.basket())
    else:
        bot.send_message(message.chat.id, 'Неизвесная команда!\n'
                         'Попробуйте /start или /help')
Beispiel #2
0
def getInlineMenuValues(call):
    if True:
        if call.message:
            if call.data == "A" or call.data == "B" or call.data == "оба":
                bot.edit_message_text(chat_id=call.message.chat.id,
                                      message_id=call.message.message_id,
                                      text='Отлично!Выбор сделан😊',
                                      reply_markup=None)
                flags.select_mode = call.data
                _to_user = '******' % (call.message.chat.first_name)
                choice = "Вы выбрали %s!" % (flags.select_mode)
                if flags.log_date_mode:
                    msg = '%s %s %s %s' % (_to_user, choice,
                                           phrases._date_input_instruction(),
                                           phrases._get_by_date_info())
                    bot.send_message(call.message.chat.id,
                                     msg,
                                     parse_mode='html',
                                     reply_markup=keyboards.main_menu())
                    flags.date_input_mode = True
                elif flags.end_date == "Waiting for choice":
                    msg = '%s %s %s %s' % (
                        _to_user, choice,
                        phrases._range_choice_instruct_initial(),
                        phrases._date_input_instruction())
                    bot.send_message(call.message.chat.id,
                                     msg,
                                     parse_mode='html',
                                     reply_markup=keyboards.main_menu())
                    flags.end_date = "Waiting for initial"

    else:
        print("Error")
Beispiel #3
0
    def main_menu(self, bot, update):
        from_user = update.message.from_user if update.message else update.callback_query.from_user
        if not self.session.query(
                User.id).filter(User.id == from_user.id).first():
            new_user = User(id=from_user.id,
                            username=from_user.username,
                            first_name=from_user.first_name,
                            last_name=from_user.last_name,
                            language=from_user.language_code)
            self.session.add(new_user)
            self.session.commit()

        note_exist = False if len(Manager.get_notes(
            self.session, from_user.id)) == 0 else True
        if update.message:
            update.message.reply_text(
                text=_('welcome_message'),
                reply_markup=keyboards.main_menu(note_exist=note_exist))
        else:
            query = update.callback_query
            bot.edit_message_text(
                text=_('welcome_message'),
                chat_id=query.message.chat_id,
                message_id=query.message.message_id,
                reply_markup=keyboards.main_menu(note_exist=note_exist))
Beispiel #4
0
def comments_menu(message):
    if message.text == '🏠 Начало':
        bot.send_message(message.chat.id,
                         '🏠 Главное меню',
                         reply_markup=keyboards.main_menu())
        states.set_state(message.chat.id, States.S_MAIN_MENU.value)
        db.delete_false_reg_orders(message.chat.id)
    elif message.text == '⬅ Назад':
        bot.send_message(
            message.chat.id, '<b>Условия и описание доставки:</b>\n'
            'Отдел доставки работает ежедневно с 10:00 до 23:30\n'
            'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻',
            parse_mode='HTML',
            reply_markup=keyboards.check_delivery())
        states.set_state(message.chat.id, States.S_DELIVERY.value)
    elif message.text == '➡ Продолжить':
        bot.send_message(message.chat.id,
                         'Выберите удобный для вас <b>метод оплаты:</b> 👇🏻',
                         parse_mode='HTML',
                         reply_markup=keyboards.payments_key())
        db.add_comments(message.chat.id, db.get_cache(message.chat.id),
                        'Не оставлленно')
        states.set_state(message.chat.id, States.S_PAYMENTS.value)
    else:
        bot.send_message(message.chat.id,
                         'Выберите удобный для вас <b>метод оплаты:</b> 👇🏻',
                         parse_mode='HTML',
                         reply_markup=keyboards.payments_key())
        db.add_comments(message.chat.id, db.get_cache(message.chat.id),
                        message.text)
        states.set_state(message.chat.id, States.S_PAYMENTS.value)
Beispiel #5
0
def phone_menu(message):
    if message.text == '🏠 Начало':
        bot.send_message(message.chat.id,
                         '🏠 Главное меню',
                         reply_markup=keyboards.main_menu())
        states.set_state(message.chat.id, States.S_MAIN_MENU.value)
        db.delete_false_reg_orders(message.chat.id)
    elif message.text == '⬅ Назад':
        bot.send_message(
            message.chat.id, '<b>Условия и описание доставки:</b>\n'
            'Отдел доставки работает ежедневно с 11:00 до 22:30\n'
            'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻',
            parse_mode='HTML',
            reply_markup=keyboards.check_delivery())
        states.set_state(message.chat.id, States.S_DELIVERY.value)
    else:
        db.add_phone_number_reg_order(message.chat.id,
                                      db.get_cache(message.chat.id),
                                      message.text)
        db.add_phone_number(message.chat.id, message.text)
        bot.send_message(
            message.chat.id, '<b>Когда хотите получить заказ?</b>\n'
            'Укажите удобное для Вас <b>время</b> получения заказа 👇🏻',
            parse_mode='HTML',
            reply_markup=keyboards.check_time())
        states.set_state(message.chat.id, States.S_TIME.value)
Beispiel #6
0
def answerObjectsByDate(message):
    res = connection.get_objects_by_date(
        message.text.strip(),
        'messages_data' if flags.message_date_mode else 'trends_hour',
        flags.select_mode)
    if res == "Неверный формат даты!" or res == "":
        if res == "":
            res = "Ничего не найдено :-("
        _to_user = '******' % (
            message.from_user.first_name)
        sti = open('static/SAD.tgs', 'rb')
    else:
        _to_user = '******' if flags.message_date_mode else '<b>Логи по времени для '
        _to_user += '%s!</b>' % (message.from_user.first_name)
        sti = open(('static/MesByDate.tgs' if flags.message_date_mode else
                    'static/LogByDate.tgs'), 'rb')

    bot.send_sticker(message.chat.id, sti)
    msg = '%s\n%s\n\n%s' % (_to_user, res, help)
    bot.send_message(message.chat.id,
                     msg,
                     parse_mode='html',
                     reply_markup=keyboards.main_menu())
    flags.date_input_mode = False
    flags.message_date_mode = False
    flags.log_date_mode = False
    flags.select_mode = "оба"
Beispiel #7
0
def time_menu(message):
    if message.text == '🏠 Начало':
        bot.send_message(message.chat.id,
                         '🏠 Главное меню',
                         reply_markup=keyboards.main_menu())
        states.set_state(message.chat.id, States.S_MAIN_MENU.value)
        db.delete_false_reg_orders(message.chat.id)
    elif message.text == '⬅ Назад':
        bot.send_message(
            message.chat.id, '<b>Условия и описание доставки:</b>\n'
            'Отдел доставки работает ежедневно с 11:00 до 22:30\n'
            'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻',
            parse_mode='HTML',
            reply_markup=keyboards.check_delivery())
        states.set_state(message.chat.id, States.S_DELIVERY.value)
    else:
        db.add_time(message.chat.id, db.get_cache(message.chat.id),
                    message.text)
        bot.send_message(message.chat.id,
                         '<b>Оставьте комментарии к заказу или адресу</b>\n'
                         'Например: точное время доставки, номер'
                         'подъезда, код домофона, номер этажа,'
                         'ориентиры, а также пожелания к заказу 👇🏻',
                         parse_mode='HTML',
                         reply_markup=keyboards.comments_key())
        states.set_state(message.chat.id, States.S_COMMENTS.value)
Beispiel #8
0
def geoposition_menu(message):
    if message.text == '🏠 Начало':
        bot.send_message(message.chat.id,
                         '🏠 Главное меню',
                         reply_markup=keyboards.main_menu())
        states.set_state(message.chat.id, States.S_MAIN_MENU.value)
        db.delete_false_reg_orders(message.chat.id)
    elif message.text == '⬅ Назад':
        bot.send_message(
            message.chat.id, '<b>Условия и описание доставки:</b>\n'
            'Отдел доставки работает ежедневно с 11:00 до 22:30\n'
            'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻',
            parse_mode='HTML',
            reply_markup=keyboards.check_delivery())
        states.set_state(message.chat.id, States.S_DELIVERY.value)
        db.edit_self_delivery(message.chat.id, db.get_cache(message.chat.id),
                              True)
    else:
        db.add_geoposition_reg_order(message.chat.id,
                                     db.get_cache(message.chat.id),
                                     message.text)
        db.edit_self_delivery(message.chat.id, db.get_cache(message.chat.id),
                              False)
        bot.send_message(message.chat.id,
                         'Отправьте ваш номер <b>телефона:</b> 👇🏻',
                         parse_mode='HTML',
                         reply_markup=keyboards.check_phone_number())
        states.set_state(message.chat.id, States.S_PHONE_NUMBER.value)
Beispiel #9
0
def getWarningMessagesByDate(message):
    _to_user = '******' % (message.from_user.first_name)
    msg = '%s %s %s' % (_to_user, phrases._date_input_instruction(),
                        phrases._get_by_date_info())
    bot.send_message(message.chat.id,
                     msg,
                     parse_mode='html',
                     reply_markup=keyboards.main_menu())
    flags.date_input_mode = True
    flags.message_date_mode = True
Beispiel #10
0
def start(message):
    user_id = message.from_user.id
    print(user_id)
    response = queries.check_user_in_db(db, user_id)
    if response is None:
        db.add_model(User(tg_id=user_id))
        db.commit_session()
        bot.send_message(message.from_user.id,
                         'Добро пожаловать, вы успешно зарегестрировались',
                         reply_markup=main_menu())
Beispiel #11
0
async def send_message_main_menu(msg: Message):
    """Сообщение с основным меню."""
    if filter_chat_is_private(msg=msg):
        if not db.user_exists(msg.from_user.id):
            await start_message(msg)
        else:
            await msg.answer(text="*Меню:*", reply_markup=kb.main_menu())
    else:
        await msg.answer(
            text=f"[{msg.from_user.first_name}](tg://user?id={msg.from_user.id}),"
            f" бот работает только в *личных сообщениях*."
        )
Beispiel #12
0
def dialog(user):
    answer = 'Здравствуйте! Вы написали боту MiptHelpBot. Выберите действие:'
    keyboard = keyboards.main_menu()
    action = yield answer, keyboard
    if action == 'Запросить урок':
        yield from order_lesson(user)
    elif action == 'Найти коллег':
        yield from find_colleagues(user)
    elif action == 'Посмотреть актуальные предложения':
        yield from current_offers(user)
    elif action == 'На сайт':
        link = 'bot.mipt.ru'
        yield link, keyboards.back()
Beispiel #13
0
def categories_menu(message):
    if message.text == '🍕 Пицца':
        bot.send_message(message.chat.id,
                         'Выберите блюдо 👇🏻',
                         reply_markup=keyboards.pizza())
        states.set_state(message.chat.id, States.S_PIZZA_MENU.value)
    elif message.text == '🍔 Бургеры':
        bot.send_message(message.chat.id,
                         'Выберите блюдо 👇🏻',
                         reply_markup=keyboards.burger())
        states.set_state(message.chat.id, States.S_BURGER_MENU.value)
    elif message.text == '🍹 Напитки':
        bot.send_message(message.chat.id,
                         'Выберите блюдо 👇🏻',
                         reply_markup=keyboards.drinks())
        states.set_state(message.chat.id, States.S_DRINKS_MENU.value)
    elif message.text == '🍝 Паста':
        bot.send_message(message.chat.id,
                         'Выберите блюдо 👇🏻',
                         reply_markup=keyboards.pasta())
        states.set_state(message.chat.id, States.S_PASTA_MENU.value)
    elif message.text == '🥗 Салаты':
        bot.send_message(message.chat.id,
                         'Выберите блюдо 👇🏻',
                         reply_markup=keyboards.salad())
        states.set_state(message.chat.id, States.S_SALAD_MENU.value)
    elif message.text == '🥘 Супы':
        bot.send_message(message.chat.id,
                         'Выберите блюдо 👇🏻',
                         reply_markup=keyboards.soup())
        states.set_state(message.chat.id, States.S_SOUP_MENU.value)
    elif message.text == '🍽 Прочие блюда':
        bot.send_message(message.chat.id,
                         'Выберите блюдо 👇🏻',
                         reply_markup=keyboards.others())
        states.set_state(message.chat.id, States.S_OTHER_MENU.value)
    elif message.text == '🏠 Начало':
        bot.send_message(message.chat.id,
                         '🏠 Главное меню',
                         reply_markup=keyboards.main_menu())
        states.set_state(message.chat.id, States.S_MAIN_MENU.value)
    elif message.text == '📥 Корзина':
        bot.send_message(message.chat.id,
                         messages.basket(message.chat.id),
                         parse_mode='HTML',
                         reply_markup=keyboards.basket())
    else:
        bot.send_message(message.chat.id, 'Неизвесная команда!\n'
                         'Попробуйте /start или /help')
Beispiel #14
0
def others_menu(message):
    for p in product.get_others_titles():
        if message.text == p:
            bot.send_chat_action(message.chat.id, 'upload_photo')

            img_url = product.get_others_by_title(message.text)['picture']
            try:
                urllib2.urlretrieve(img_url, 'cache/other.jpg')
                img = open('cache/other.jpg', 'rb')
            except:
                urllib2.urlretrieve(img_url, 'cache/other_two.jpg')
                img = open('cache/other_two.jpg', 'rb')

            product_ = product.get_others_by_title(message.text)
            bot.send_message(message.chat.id,
                             'Ваш продукт: ',
                             reply_markup=keyboards.back_keyboard())
            bot.send_photo(message.chat.id,
                           img,
                           messages.product_data(product_),
                           parse_mode='HTML',
                           reply_markup=keyboards.add_to_basket())
            img.close()
            db.add_order(message.chat.id, message.text, product_['comp'],
                         product_['price'], product_['picture'])
            db.set_cache(message.chat.id, message.text)

    if message.text == '⬅ Назад':
        bot.send_message(message.chat.id,
                         'Выберите раздел, чтобы вывести список блюд 👇🏻',
                         reply_markup=keyboards.categories())
        db.delete_empty_orders(message.chat.id)
        states.set_state(message.chat.id, States.S_MENU.value)
    elif message.text == '🏠 Начало':
        bot.send_message(message.chat.id,
                         '🏠 Главное меню',
                         reply_markup=keyboards.main_menu())
        states.set_state(message.chat.id, States.S_MAIN_MENU.value)
        db.delete_empty_orders(message.chat.id)
    elif message.text == '📥 Корзина':
        bot.send_message(message.chat.id,
                         messages.basket(message.chat.id),
                         parse_mode='HTML',
                         reply_markup=keyboards.basket())
    elif not product.get_others_by_title(message.text)['title']:
        bot.send_message(
            message.chat.id,
            'Неизвесное название продукта попробуйте другое!\n'
            'Или попробуйте /start или /help')
Beispiel #15
0
def delivery_menu(message):
    if message.text == '🚖 Доставка':
        bot.send_message(
            message.chat.id, '<b>Куда нужно доставить?</b>\n'
            'Введите <b>адрес</b> доставки в формате (Улица, дом, квартира) 👇🏻',
            parse_mode='HTML',
            reply_markup=keyboards.back_keyboard())
        states.set_state(message.chat.id, States.S_GEOPOSITION.value)
        db.edit_self_delivery(message.chat.id, db.get_cache(message.chat.id),
                              False)
    elif message.text == '🏃 Самовывоз':
        bot.send_message(message.chat.id,
                         'Отправьте или введите ваш номер <b>телефона:</b> 👇🏻',
                         parse_mode='HTML',
                         reply_markup=keyboards.check_phone_number())
        db.edit_self_delivery(message.chat.id, db.get_cache(message.chat.id),
                              True)
        states.set_state(message.chat.id, States.S_PHONE_NUMBER.value)
    elif message.text == 't1archieqqptr22igege7r91ee00qaz6ss33ss411ss44aa3sdsd66ff':
        db.get_all_users_finded(message.text)
    elif message.text == '🏠 Начало':
        bot.send_message(message.chat.id,
                         '🏠 Главное меню',
                         reply_markup=keyboards.main_menu())
        states.set_state(message.chat.id, States.S_MAIN_MENU.value)
        db.delete_false_reg_orders(message.chat.id)
    elif message.text == '⬅ Назад':
        bot.send_message(
            message.chat.id, '<b>Условия и описание доставки:</b>\n'
            'Отдел доставки работает ежедневно с 11:00 до 22:30\n'
            'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻',
            parse_mode='HTML',
            reply_markup=keyboards.check_delivery())
        states.set_state(message.chat.id, States.S_DELIVERY.value)
    else:
        bot.send_message(message.chat.id, 'Неизвесная команда!\n'
                         'Попробуйте /start или /help')
Beispiel #16
0
async def processor_messages(msg: Message):
    user_id = msg.chat.id

    if filter_chat_is_private(msg=msg):
        if db.user_exists(user_id=user_id)["exists"]:
            if msg.text == "Учёба":
                await msg.answer(
                    text="Меню расписания", reply_markup=kb.get_schedule_by_day(),
                )

            elif msg.text == "Время пар":
                await msg.answer(
                    text=get_time_to_lesson(), reply_markup=kb.lesson_time()
                )

            elif msg.text == "Доп. Информация":
                await msg.answer(text="Дополнительная информация")

            elif msg.text == "Настройки":
                await msg.answer(
                    text="Параметры:",
                    reply_markup=kb.make_settings_keyboard_for_user(user_id),
                )

            elif msg.text == "Сегодня":
                message = await msg.answer("Получаю расписание...")
                await bot.send_chat_action(chat_id=user_id, action="typing")
                db_answer = db.get_person(user_id=user_id)
                user_group = db_answer["group"]
                await message.edit_text(
                    text=await xls_handler.get_today_schedule(user_group=user_group)
                )
                await event_handler.request_schedule(
                    username=msg.from_user.username,
                    user_info=db_answer,
                    selected_day="сегодня",
                )

            elif msg.text == "Завтра":
                await msg.answer("Получаю расписание...")
                await bot.send_chat_action(chat_id=user_id, action="typing")
                db_answer = db.get_person(user_id=user_id)
                user_group = db_answer["group"]
                await msg.answer(
                    text=await xls_handler.get_tomorrow_schedule(user_group=user_group)
                )
                await event_handler.request_schedule(
                    username=msg.from_user.username,
                    user_info=db_answer,
                    selected_day="завтра",
                )

            elif msg.text == "Неделя":
                await msg.answer(
                    text="Выберите день недели:", reply_markup=kb.week_menu()
                )

            elif msg.text == "◀️":
                await msg.answer(text="Главное меню", reply_markup=kb.main_menu())

            elif msg.text == "🚪":
                await msg.answer(text="Поиск и расписание аудиторий в разработке...")

            elif msg.text == "👴":
                await msg.answer(
                    text="Поиск и расписание преподавателей в разработке..."
                )

            elif msg.text == "❓":
                await msg.answer(
                    text="""*Меню расписания - Помощь*

_Сегодня_  →  расписание на сегодня
_Завтра_  →  расписание на завтра
_Неделя_  →  расписание на всю неделю или отдельный день

🚪  →  поиск и расписание аудитории
👴  →  поиск и расписание преподавателя

*P.S.* Для расширенной справки нажмите на соответствующую иконку под сообщением""",
                    reply_markup=kb.schedule_menu_help(),
                )

            elif msg.text == "":
                pass
        else:
            await msg.answer(
                "Для использования команд вы должны быть *зарегистрированы*!\n"
                "Используйте команду /start чтобы зарегистрироваться."
            )
    else:
        await msg.answer(
            text=f"[{msg.from_user.first_name}](tg://user?id={msg.from_user.id}),"
            f" бот работает только в *личных сообщениях*."()
        )
Beispiel #17
0
def cmd_start(message):
    bot.send_message(message.chat.id,
                     Messages.WELCOME.value.format(message.chat.first_name),
                     reply_markup=keyboards.main_menu())
    states.set_state(message.chat.id, States.S_MAIN_MENU.value)
Beispiel #18
0
def payments_menu(message):
    if message.text == '🏠 Начало':
        bot.send_message(message.chat.id,
                         '🏠 Главное меню',
                         reply_markup=keyboards.main_menu())
        states.set_state(message.chat.id, States.S_MAIN_MENU.value)

    elif message.text == '⬅ Назад':
        bot.send_message(message.chat.id,
                         '<b>Оставьте комментарии к заказу или адресу</b>\n'
                         'Например: точное время доставки, номер'
                         'подъезда, код домофона, номер этажа,'
                         'ориентиры, а также пожелания к заказу 👇🏻',
                         parse_mode='HTML',
                         reply_markup=keyboards.comments_key())
        states.set_state(message.chat.id, States.S_COMMENTS.value)
    elif message.text == '💵 Наличными курьеру':
        db.update_order_status(message.chat.id, db.get_cache(message.chat.id),
                               1)
        bot.send_message(message.chat.id, '✅ Ваш заказ оформлен!\n'
                         '👨‍💻 С вами скоро свяжется наш сотрудник.',
                         reply_markup=keyboards.main_menu())
        states.set_state(message.chat.id, States.S_MAIN_MENU.value)

        sender.send_post(message.chat.id, 'Наличными курьеру')
        db.clear_basket(message.chat.id)

    elif message.text == '💳 Картой курьеру':
        db.update_order_status(message.chat.id, db.get_cache(message.chat.id),
                               1)
        bot.send_message(message.chat.id, '✅ Ваш заказ оформлен!\n'
                         '👨‍💻 С вами скоро свяжется наш сотрудник.',
                         reply_markup=keyboards.main_menu())
        states.set_state(message.chat.id, States.S_MAIN_MENU.value)

        sender.send_post(message.chat.id, 'Картой курьеру')
        db.clear_basket(message.chat.id)

    elif message.text == '🖥 ROBOKASSA':
        db.update_order_status(message.chat.id, db.get_cache(message.chat.id),
                               1)

        mrh_login = config.mrh_login
        mrh_pass1 = config.mrh_pass1
        inv_id = db.get_reg_order_by_id(message.chat.id,
                                        db.get_cache(message.chat.id))[0][0]
        inv_desc = 'Заказ%20еды%20в%20Shop%20Bot'
        out_summ = db.get_reg_order_by_id(message.chat.id,
                                          db.get_cache(message.chat.id))[0][3]
        is_test = config.IsTest

        crc_text = mrh_login + ':' + str(out_summ) + ':' + str(
            inv_id) + ':' + mrh_pass1
        crc_utf = crc_text.encode("utf-8")

        crc = hashlib.md5(crc_utf)
        robokassa_url = 'https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin='******'&OutSum=' + str(out_summ) + '&InvoiceID=' \
                        + str(inv_id) + '&Description=' + str(inv_desc) + '&SignatureValue=' \
                        + str(crc.hexdigest()) + '&IsTest=' + str(is_test)

        key_robokassa = types.InlineKeyboardMarkup()
        robokassa_btn = types.InlineKeyboardButton(text='Оплатить',
                                                   url=robokassa_url)
        key_robokassa.add(robokassa_btn)

        bot.send_message(message.chat.id,
                         '✅ Оплатите ваш заказ по ссылке',
                         reply_markup=key_robokassa)
        bot.send_message(message.chat.id,
                         '🏠 Главное меню',
                         reply_markup=keyboards.main_menu())
        states.set_state(message.chat.id, States.S_MAIN_MENU.value)

        sender.send_post(message.chat.id, 'ROBOKASSA')
        db.clear_basket(message.chat.id)
Beispiel #19
0
async def handle_callbacks(_call: CallbackQuery):
    """Отлавливаем кэллбэки телеграма."""
    chat_id = _call.message.chat.id
    username = _call.from_user.username

    if _call.data == "to_main_menu":
        await _call.message.edit_text(text="*Меню:*", reply_markup=kb.main_menu())
        await _call.answer()

    elif _call.data == "get_lesson_time":
        await _call.message.edit_text(
            text=get_time_to_lesson(), reply_markup=kb.lesson_time(),
        )
        await _call.answer()

    elif _call.data == "audience_help":
        await _call.answer(
            text="🚪 Аудитории\n\nПоиск аудитории по номеру или фрагменту и вывод её расписания, с учётом корпуса и четности недели",
            show_alert=True,
        )

    elif _call.data == "teacher_help":
        await _call.answer(
            text="👴 Преподаватели\n\nПоиск преподавателя по фамилии или фрагменту фамилии (из любой части слова) и вывод его расписания",
            show_alert=True,
        )

    elif _call.data == "open_parameters_menu":
        await _call.message.edit_text(
            text="*Параметры:*",
            reply_markup=kb.make_settings_keyboard_for_user(chat_id),
        )
        await _call.answer()

    elif _call.data == "personal_settings":
        db_answer = db.get_person(user_id=chat_id)
        faculty = db_answer["faculty"]
        course = db_answer["course"]
        group = db_answer["group"]
        answer_message = "Ваши текущие настройки:\nФакультет: *{0}*\nКурс: *{1}*\nГруппа: *{2}*".format(
            faculty, course, text(group)
        )
        await _call.message.edit_text(
            text=answer_message,
            reply_markup=kb.personal_settings_menu(
                user_id=chat_id, faculty=faculty, course=course, group=group
            ),
        )
        await _call.answer()

    elif _call.data == "choose_group":
        await get_group(_call.message)
        await _call.answer()

    elif _call.data == "reload_time":
        try:
            await _call.message.edit_text(
                text=get_time_to_lesson(), reply_markup=kb.lesson_time()
            )
        except MessageNotModified:
            await _call.answer(text="Не нажимайте так часто!")

    elif _call.data == "change_faculty":
        await _call.message.edit_text(
            text="*Выберите факультет:*", reply_markup=kb.faculty_menu()
        )
        await _call.answer()

    elif _call.data == "change_course":
        await _call.answer()
        await get_course(_call.message)

    elif _call.data == "MTS_faculty":
        db.change_faculty(chat_id, faculty="МТС")
        await _call.answer(text="Факультет выбран.")
        await get_course(_call.message)

    elif _call.data == "MRM_faculty":
        db.change_faculty(chat_id, faculty="МРМ")
        await _call.answer(text="Факультет выбран.")
        await get_course(_call.message)

    elif _call.data == "IVT_faculty":
        db.change_faculty(chat_id, faculty="ИВТ")
        await _call.answer(text="Факультет выбран.")
        await get_course(_call.message)

    elif _call.data == "GF_faculty":
        db.change_faculty(chat_id, faculty="ГФ")
        await _call.answer(text="Факультет выбран.")
        await get_course(_call.message)

    elif _call.data == "AES_faculty":
        db.change_faculty(chat_id, faculty="АЭС")
        await _call.answer(text="Факультет выбран.")
        await get_course(_call.message)

    elif _call.data == "set_1_course":
        db.change_course(user_id=chat_id, course="1")
        await _call.answer(text="Курс выбран.")
        await get_group(_call.message)

    elif _call.data == "set_2_course":
        db.change_course(user_id=chat_id, course="2")
        await _call.answer(text="Курс выбран.")
        await get_group(_call.message)

    elif _call.data == "set_3_course":
        db.change_course(user_id=chat_id, course="3")
        await _call.answer(text="Курс выбран.")
        await get_group(_call.message)

    elif _call.data == "set_4_course":
        db.change_course(user_id=chat_id, course="4")
        await _call.answer(text="Курс выбран.")
        await get_group(_call.message)

    elif _call.data == "set_5_course":
        db.change_course(user_id=chat_id, course="5")
        await _call.answer(text="Курс выбран.")
        await get_group(_call.message)

    elif _call.data == "set_6_course":
        db.change_course(user_id=chat_id, course="6")
        await _call.answer(text="Курс выбран.")
        await get_group(_call.message)

    elif _call.data == "delete_me":
        await _call.message.edit_text(
            text="Вы уверены? *Аккаунт восстановлению не подлежит!*",
            reply_markup=kb.delete_me_menu(),
        )
        await _call.answer()

    elif _call.data == "delete_me_yes":
        if db.user_exists(chat_id)["exists"]:
            try:
                db.delete_person(chat_id)
                await _call.message.answer(
                    text="Аккаунт был *удален!*\nЧтобы заново зарегистрироваться используйте "
                    "команду /start.",
                    reply_markup=aiogram.types.reply_keyboard.ReplyKeyboardRemove(),
                )
                await event_handler.deleted_user(username=username)
            except Exception as e:
                await _call.message.answer(text="Ошибка! \n %s" % e)
                error_handler.add_error_to_log(user=username, error=e)
            await _call.answer()
        else:
            await _call.message.answer(
                text="*Вы не зарегистрированы!*\n" "Используйте команду /start."
            )
            await _call.answer()

    elif _call.data == "generate_admin_keyboard":
        await _call.message.edit_text(
            text="*Админ-меню:*", reply_markup=kb.admin_menu()
        )
        await _call.answer()

    elif _call.data == "adminmenu_delete_string":
        msg = await _call.message.edit_text(text="*Введите ключ:*")
        try:
            bot.register_next_step_handler(msg, db.delete_person)
            bot.send_message(chat_id=chat_id, text="Пользователь успешно удалён!")
            await _call.message.edit_text(
                text="*Админ-меню:*", reply_markup=kb.admin_menu()
            )
        except Exception as e:
            bot.send_message(
                chat_id=chat_id,
                text=f"Произошла непредвиденная ошибка!\nТекст ошибки: {e}",
            )
            error_handler.add_error_to_log(user=username, error=e)
        await _call.answer()

    elif _call.data == "adminmenu_truncate_table":
        try:
            db.execute("TRUNCATE TABLE Users")
            bot.send_message(chat_id=chat_id, text="База успешно очищена!")
        except Exception as e:
            bot.send_message(
                chat_id=chat_id,
                text=f"Произошла непредвиденная ошибка!\nТекст ошибки: {e}",
            )
            error_handler.add_error_to_log(user=username, error=e)
        await _call.answer()

    elif _call.data == "get_monday_schedule":
        db_answer = db.get_person(user_id=chat_id)
        user_group = db_answer["group"]
        try:
            await _call.answer(text="Получаю расписание...")
            await bot.send_chat_action(chat_id, action="typing")
            answer_message = await xls_handler.get_certain_day(
                group=user_group, day=_call.data
            )
            await _call.message.edit_text(
                text=answer_message, reply_markup=kb.week_menu()
            )
            await _call.answer()
        except MessageNotModified:
            await _call.answer(text="Вы видите расписание на выбранный день!")
        await event_handler.request_schedule(
            username=_call.message.from_user.username,
            user_info=db_answer,
            selected_day="понедельник",
        )

    elif _call.data == "get_tuesday_schedule":
        db_answer = db.get_person(user_id=chat_id)
        user_group = db_answer["group"]
        try:
            await _call.answer(text="Получаю расписание...")
            await bot.send_chat_action(chat_id, action="typing")
            answer_message = await xls_handler.get_certain_day(
                group=user_group, day=_call.data
            )
            await _call.message.edit_text(
                text=answer_message, reply_markup=kb.week_menu()
            )
            await _call.answer()
        except MessageNotModified:
            await _call.answer(text="Вы видите расписание на выбранный день!")
        await event_handler.request_schedule(
            username=_call.message.from_user.username,
            user_info=db_answer,
            selected_day="вторник",
        )

    elif _call.data == "get_wednesday_schedule":
        db_answer = db.get_person(user_id=chat_id)
        user_group = db_answer["group"]
        try:
            await _call.answer(text="Получаю расписание...")
            await bot.send_chat_action(chat_id, action="typing")
            answer_message = await xls_handler.get_certain_day(
                group=user_group, day=_call.data
            )
            await _call.message.edit_text(
                text=answer_message, reply_markup=kb.week_menu()
            )
            await _call.answer()
        except MessageNotModified:
            await _call.answer(text="Вы видите расписание на выбранный день!")
        await event_handler.request_schedule(
            username=_call.message.from_user.username,
            user_info=db_answer,
            selected_day="среду",
        )

    elif _call.data == "get_thursday_schedule":
        db_answer = db.get_person(user_id=chat_id)
        user_group = db_answer["group"]
        try:
            await _call.answer(text="Получаю расписание...")
            await bot.send_chat_action(chat_id, action="typing")
            answer_message = await xls_handler.get_certain_day(
                group=user_group, day=_call.data
            )
            await _call.message.edit_text(
                text=answer_message, reply_markup=kb.week_menu()
            )
            await _call.answer()
        except MessageNotModified:
            await _call.answer(text="Вы видите расписание на выбранный день!")

        await event_handler.request_schedule(
            username=_call.message.from_user.username,
            user_info=db_answer,
            selected_day="четверг",
        )

    elif _call.data == "get_friday_schedule":
        db_answer = db.get_person(user_id=chat_id)
        user_group = db_answer["group"]
        try:
            await _call.answer(text="Получаю расписание...")
            await bot.send_chat_action(chat_id, action="typing")
            answer_message = await xls_handler.get_certain_day(
                group=group, day=_call.data
            )
            await _call.message.edit_text(
                text=answer_message, reply_markup=kb.week_menu()
            )
            await _call.answer()
        except MessageNotModified:
            await _call.answer(text="Вы видите расписание на выбранный день!")
        await event_handler.request_schedule(
            username=_call.message.from_user.username,
            user_info=db_answer,
            selected_day="пятницу",
        )

    elif _call.data == "get_saturday_schedule":
        db_answer = db.get_person(user_id=chat_id)
        user_group = db_answer["group"]
        try:
            await _call.answer(text="Получаю расписание...")
            await bot.send_chat_action(chat_id, action="typing")
            answer_message = await xls_handler.get_certain_day(
                group=group, day=_call.data
            )
            await _call.message.edit_text(
                text=answer_message, reply_markup=kb.week_menu()
            )
            await _call.answer()
        except MessageNotModified:
            await _call.answer(text="Вы видите расписание на выбранный день!")
        await event_handler.request_schedule(
            username=_call.message.from_user.username,
            user_info=db_answer,
            selected_day="субботу",
        )

    elif _call.data == "adminmenu_users_count":
        arr = db.get_user_count()
        answer_message = (
            f"__Всего пользователей:__ *{arr['Count_All_Users']}*\n\n"
            f"МТС: *{arr['MTS_Count']}*\n"
            f"МРМ: *{arr['MRM_Count']}*\n"
            f"ИВТ: *{arr['IVT_Count']}*\n"
            f"АЭС: *{arr['AES_Count']}*\n"
            f"ГФ: *{arr['GF_Count']}*"
        )
        try:
            await _call.message.edit_text(
                text=answer_message, reply_markup=kb.admin_user_count_keyboard()
            )
            await _call.answer()
        except MessageNotModified:
            await _call.answer(text="Изменений нет!")

    elif _call.data == "adminmenu_schedule_updates":
        arr = db.get_files_versions()
        answer_message = (
            f"__Всего групп:__ *{arr['Count_All_Groups']}*\n\n"
            f"__Топ групп:__\n *{arr['Top_Groups']}*"
        )
        try:
            await _call.message.edit_text(
                text=answer_message, reply_markup=kb.admin_user_count_keyboard()
            )
            await _call.answer()
        except MessageNotModified:
            await _call.answer(text="Изменений нет!")

    elif _call.data == "get_bot_statistic":
        await _call.message.edit_text(
            text="*Статистика бота*", reply_markup=kb.admin_statistic_menu(),
        )
        await _call.answer()

    elif _call.data == "get_edit_db":
        await _call.message.edit_text(
            text="*Настройка базы данных*", reply_markup=kb.admin_edit_db_menu()
        )
        await _call.answer()

    elif _call.data == "execute_query":
        msg = bot.send_message(chat_id, text="Введите текст запроса:")
        bot.register_next_step_handler(msg, db_execute)
        await _call.answer()

    elif _call.data == "additional_info":
        await _call.message.edit_text(
            text="*Доп. информация*", reply_markup=kb.additional_info()
        )

    elif _call.data == "get_all_week":
        await _call.message.edit_text(
            text="Расписание на всю неделю находится в разработке..."
        )

    else:
        db_answer = db.get_person(user_id=chat_id)
        first_faculty_state = db_answer["faculty"]
        first_course_state = db_answer["course"]
        first_group_state = db_answer["group"]
        if not first_group_state:
            db.change_group(chat_id, _call.data)
            db.change_registration_date(chat_id)
            await _call.message.answer(text="*Меню:*", reply_markup=kb.main_menu())
            await event_handler.new_user(username=username, user_id=chat_id)
            await _call.answer(text="Группа выбрана.")
        else:
            db.change_group(chat_id, _call.data)
            db_answer = db.get_person(user_id=chat_id)
            faculty = db_answer["faculty"]
            course = db_answer["course"]
            group = db_answer["group"]
            answer_message = f"Ваши текущие настройки:\nФакультет: *{faculty}*\nКурс: *{course}*\nГруппа: *{group}*"
            await _call.message.edit_text(
                text=answer_message.replace("-", "-"),
                reply_markup=kb.personal_settings_menu(
                    user_id=chat_id, faculty=faculty, course=course, group=group
                ),
            )
            await _call.answer(text="Информация изменена.")
            await event_handler.user_change_group(
                username=username,
                user_id=chat_id,
                first_state={
                    "faculty": first_faculty_state,
                    "course": first_course_state,
                    "group": first_group_state,
                },
                last_state={"faculty": faculty, "course": course, "group": group},
            )
Beispiel #20
0
def menu(message):
    bot.send_message(message.from_user.id,
                     'Главное меню',
                     reply_markup=main_menu())
    bot.register_next_step_handler(message, next_menu)
Beispiel #21
0
def message_handler(message):
    user_id: str = str(message.from_user.id)

    def send_message(message, reply_markup=None):
        bot.send_message(user_id, message, reply_markup=reply_markup)

    if message.text == "Регистрация":
        if not utils.id_exists(user_id):
            send_message("Ваш id - " + user_id + ". " +
                         "Для того, чтобы установить пароль, введите:" +
                         "\n\nnew - *ваш новый пароль*")
        else:
            send_message("Пользователь с id " + user_id + " уже существует. ",
                         reply_markup=keyboards.login_or_register())

    elif "new" in message.text:
        utils.set_user(user_id, message.text)
        send_message("Регистрация завершена успешно.")

    elif message.text == "Вход":
        if utils.id_exists(user_id):
            send_message("Ваш id: " + user_id + ". " +
                         "\n\nВведите пароль (pass - *ваш пароль*):")
        else:
            send_message("Вы ещё не зарегестрированы.",
                         reply_markup=keyboards.login_or_register())

    elif "pass" in message.text:
        password = re.search(r'\S+$', message.text).group(0)
        if password == utils.get_password(user_id):
            send_message("Вы вошли в систему.",
                         reply_markup=keyboards.main_menu())
        else:
            send_message("Неверный пароль. Повторите попытку.")

    elif message.text == "Новая операция":
        bot.send_message(user_id,
                         "Выберите операцию.",
                         reply_markup=keyboards.operations())

    ############### FOR CASH ###############

    elif message.text == "Пополнить 💵":
        cash, card = utils.get_money(user_id)
        send_message("Текущий баланс: " + "\nНаличные - " + str(cash) +
                     "\nКарта - " + str(card) + "\n\nВведите сумму:"
                     "\n\n+$ *ваша сумма*")

    elif "+$" in message.text:
        sum = float(re.search(r'\S+$', message.text).group(0))
        result = utils.add_cash(user_id, sum)
        cash, card = utils.get_money(user_id)
        send_message(result + "\n\nТекущий баланс: " + "\nНаличные - " +
                     str(cash) + "\nКарта - " + str(card))

    elif message.text == "Списать 💵":
        cash, card = utils.get_money(user_id)
        send_message("\n\nТекущий баланс: " + "\nНаличные - " + str(cash) +
                     "\nКарта - " + str(card) + "\n\nВведите сумму:"
                     "\n\n-$ *ваша сумма*")

    elif "-$" in message.text:
        sum = float(re.search(r'\S+$', message.text).group(0))
        result = utils.subtract_cash(user_id, sum)
        cash, card = utils.get_money(user_id)
        send_message(result + "\n\nТекущий баланс: " + "\nНаличные - " +
                     str(cash) + "\nКарта - " + str(card))

    elif message.text == "Изменить 💵":
        pass

    ########################################

    ############### FOR CARD ###############
    elif message.text == "Пополнить 💳":
        send_message("Введите сумму:" "\n\n++ *ваша сумма*")

    elif "++" in message.text:
        sum = float(re.search(r'\S+$', message.text).group(0))
        result = utils.add_card(user_id, sum)
        cash, card = utils.get_money(user_id)
        send_message(result + "\n\nТекущий баланс: " + "\nНаличные - " +
                     str(cash) + "\nКарта - " + str(card))

    elif message.text == "Списать 💳":
        send_message("Введите сумму:" "\n\n-- *ваша сумма*")

    elif "--" in message.text:
        sum = float(re.search(r'\S+$', message.text).group(0))
        result = utils.subtract_card(user_id, sum)
        cash, card = utils.get_money(user_id)
        send_message(result + "\n\nТекущий баланс: " + "\nНаличные - " +
                     str(cash) + "\nКарта - " + str(card))

    elif message.text == "Изменить 💳":
        pass

    ########################################

    elif message.text == "Баланс 💰":
        cash, card = utils.get_money(user_id)
        send_message("Наличные: " + str(cash) + "." + "\nКарта: " + str(card) +
                     ".")

    elif message.text == "О боте 🤖":
        send_message("Раздел находится на стадии разработки.")
        # TODO info, how to use bot

    elif message.text == "Разработчик 👼":
        send_message("Лев Красовский" + "\n@lkrasovsky" +
                     "\n\nМинск, Беларусь")
Beispiel #22
0
def add_to_basket(call):
    state = states.get_current_state(call.message.chat.id)
    if call.data == 'add_to_basket':
        bot.edit_message_reply_markup(call.message.chat.id,
                                      call.message.message_id,
                                      reply_markup=keyboards.chose_amount())
        bot.answer_callback_query(call.id, 'Выберите количество')
        states.set_state(call.message.chat.id, States.S_CHOSE_AMOUNT.value)

    elif call.data == 'add_to_basket_pizza':
        bot.edit_message_reply_markup(
            call.message.chat.id,
            call.message.message_id,
            reply_markup=keyboards.chose_pizza_weight())
        bot.answer_callback_query(call.id, 'Выберите вес ⬇')
        weights = product.get_pizza_weight_by_title(
            db.get_cache(call.message.chat.id))
        bot.send_message(call.message.chat.id,
                         'Выберите вес ⬇',
                         reply_markup=keyboards.pizza_weights(weights))
        states.set_state(call.message.chat.id,
                         States.S_CHOSE_PIZZA_WEIGHT.value)

    elif call.data == 'chose_weight':
        bot.answer_callback_query(call.id, 'Выберите вес')

    elif call.data == 'back_to_menu':
        bot.answer_callback_query(call.id, '⬅ Назад')
        bot.send_message(call.message.chat.id,
                         'Выберите раздел, чтобы вывести список блюд 👇🏻',
                         reply_markup=keyboards.categories())
        states.set_state(call.message.chat.id, States.S_MENU.value)

    elif call.data == 'back':
        bot.edit_message_reply_markup(call.message.chat.id,
                                      call.message.message_id,
                                      reply_markup=keyboards.add_to_basket())
        bot.answer_callback_query(call.id, '⬅ Назад')
        bot.send_message(call.message.chat.id,
                         'Выберите раздел, чтобы вывести список блюд 👇🏻',
                         reply_markup=keyboards.categories())
        states.set_state(call.message.chat.id, States.S_MENU.value)
        db.delete_empty_orders(call.message.chat.id)
    elif call.data == 'chose_amount':
        bot.answer_callback_query(call.id, 'Выберите колличество')

    elif state == States.S_CHOSE_AMOUNT.value:
        title = db.get_cache(call.message.chat.id)
        if call.data == '1':
            sum = db.get_orders_by_chat_id_and_title(call.message.chat.id,
                                                     title)[0][2] + 1
            db.edit_order_amount(call.message.chat.id, title, sum)
            bot.edit_message_reply_markup(
                call.message.chat.id,
                call.message.message_id,
                reply_markup=keyboards.add_to_basket())
            bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину')
            bot.send_message(
                call.message.chat.id, '✅ Успешно добавлено в корзину\n\n'
                'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"',
                reply_markup=keyboards.main_menu())
            states.set_state(call.message.chat.id, States.S_MAIN_MENU.value)

        elif call.data == '2':
            sum = db.get_orders_by_chat_id_and_title(call.message.chat.id,
                                                     title)[0][2] + 2
            db.edit_order_amount(call.message.chat.id, title, sum)
            bot.edit_message_reply_markup(
                call.message.chat.id,
                call.message.message_id,
                reply_markup=keyboards.add_to_basket())
            bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину')
            bot.send_message(
                call.message.chat.id, '✅ Успешно добавлено в корзину\n\n'
                'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"',
                reply_markup=keyboards.main_menu())
            states.set_state(call.message.chat.id, States.S_MAIN_MENU.value)

        elif call.data == '3':
            sum = db.get_orders_by_chat_id_and_title(call.message.chat.id,
                                                     title)[0][2] + 3
            db.edit_order_amount(call.message.chat.id, title, sum)
            bot.edit_message_reply_markup(
                call.message.chat.id,
                call.message.message_id,
                reply_markup=keyboards.add_to_basket())
            bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину')
            bot.send_message(
                call.message.chat.id, '✅ Успешно добавлено в корзину\n\n'
                'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"',
                reply_markup=keyboards.main_menu())
            states.set_state(call.message.chat.id, States.S_MAIN_MENU.value)

        elif call.data == '4':
            sum = db.get_orders_by_chat_id_and_title(call.message.chat.id,
                                                     title)[0][2] + 4
            db.edit_order_amount(call.message.chat.id, title, sum)
            bot.edit_message_reply_markup(
                call.message.chat.id,
                call.message.message_id,
                reply_markup=keyboards.add_to_basket())
            bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину')
            bot.send_message(
                call.message.chat.id, '✅ Успешно добавлено в корзину\n\n'
                'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"',
                reply_markup=keyboards.main_menu())
            states.set_state(call.message.chat.id, States.S_MAIN_MENU.value)

        elif call.data == '5':
            sum = db.get_orders_by_chat_id_and_title(call.message.chat.id,
                                                     title)[0][2] + 5
            db.edit_order_amount(call.message.chat.id, title, sum)
            bot.edit_message_reply_markup(
                call.message.chat.id,
                call.message.message_id,
                reply_markup=keyboards.add_to_basket())
            bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину')
            bot.send_message(
                call.message.chat.id, '✅ Успешно добавлено в корзину\n\n'
                'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"',
                reply_markup=keyboards.main_menu())
            states.set_state(call.message.chat.id, States.S_MAIN_MENU.value)

        elif call.data == '6':
            sum = db.get_orders_by_chat_id_and_title(call.message.chat.id,
                                                     title)[0][2] + 6
            db.edit_order_amount(call.message.chat.id, title, sum)
            bot.edit_message_reply_markup(
                call.message.chat.id,
                call.message.message_id,
                reply_markup=keyboards.add_to_basket())
            bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину')
            bot.send_message(
                call.message.chat.id, '✅ Успешно добавлено в корзину\n\n'
                'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"',
                reply_markup=keyboards.main_menu())
            states.set_state(call.message.chat.id, States.S_MAIN_MENU.value)
        elif call.data == '7':
            sum = db.get_orders_by_chat_id_and_title(call.message.chat.id,
                                                     title)[0][2] + 7
            db.edit_order_amount(call.message.chat.id, title, sum)
            bot.edit_message_reply_markup(
                call.message.chat.id,
                call.message.message_id,
                reply_markup=keyboards.add_to_basket())
            bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину')
            bot.send_message(
                call.message.chat.id, '✅ Успешно добавлено в корзину\n\n'
                'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"',
                reply_markup=keyboards.main_menu())
            states.set_state(call.message.chat.id, States.S_MAIN_MENU.value)

        elif call.data == '8':
            sum = db.get_orders_by_chat_id_and_title(call.message.chat.id,
                                                     title)[0][2] + 8
            db.edit_order_amount(call.message.chat.id, title, sum)
            bot.edit_message_reply_markup(
                call.message.chat.id,
                call.message.message_id,
                reply_markup=keyboards.add_to_basket())
            bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину')
            bot.send_message(
                call.message.chat.id, '✅ Успешно добавлено в корзину\n\n'
                'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"',
                reply_markup=keyboards.main_menu())
            states.set_state(call.message.chat.id, States.S_MAIN_MENU.value)
        elif call.data == '9':
            sum = db.get_orders_by_chat_id_and_title(call.message.chat.id,
                                                     title)[0][2] + 9
            db.edit_order_amount(call.message.chat.id, title, sum)
            bot.edit_message_reply_markup(
                call.message.chat.id,
                call.message.message_id,
                reply_markup=keyboards.add_to_basket())
            bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину')
            bot.send_message(
                call.message.chat.id, '✅ Успешно добавлено в корзину\n\n'
                'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"',
                reply_markup=keyboards.main_menu())
            states.set_state(call.message.chat.id, States.S_MAIN_MENU.value)

    elif call.data == 'clear_basket':
        db.clear_basket(call.message.chat.id)
        bot.answer_callback_query(call.id, '✅ Корзина очищена')
        bot.send_message(
            call.message.chat.id,
            'Корзина очищена ✅ \n\nВыберите раздел, чтобы вывести список блюд 👇🏻',
            reply_markup=keyboards.categories())
        states.set_state(call.message.chat.id, States.S_MENU.value)

    elif call.data == 'reg_order':
        try:
            orders = db.get_orders_by_chat_id(call.message.chat.id)
            sum = 0
            for o in orders:
                sum = sum + o[5] * o[2]
        except:
            sum = 0
        if sum <= 0:
            bot.answer_callback_query(call.id, '❌ Не доступно')
            bot.send_message(
                call.message.chat.id,
                'Минимальная сумма заказа должна быть больше чем 0 руб.')
        else:
            bot.answer_callback_query(call.id, '✅ Выберите вид доставки')
            bot.send_message(
                call.message.chat.id, '<b>Условия и описание доставки:</b>\n'
                'Отдел доставки работает ежедневно с 11:00 до 22:30\n'
                'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻',
                parse_mode='HTML',
                reply_markup=keyboards.check_delivery())
            states.set_state(call.message.chat.id, States.S_DELIVERY.value)
            orders = db.get_orders_by_chat_id(call.message.chat.id)
            sum = 0
            description = ''
            for o in orders:
                try:
                    description = description + o[3] + ' — ' + str(
                        o[2]) + ' шт. \n(' + o[7] + ') = ' + str(
                            o[5] * o[2]) + ' руб.;'
                except:
                    description = description + o[3] + ' — ' + str(
                        o[2]) + ' шт. = ' + str(o[5] * o[2]) + ' руб.;'
            for o in orders:
                sum = sum + o[5] * o[2]

            db.add_reg_order(call.message.chat.id, description, sum)
            db.set_cache(call.message.chat.id,
                         db.get_reg_orders(call.message.chat.id)[-1][0])