Exemple #1
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)
Exemple #2
0
def update(key):
    stmt = get_cache(key)
    if stmt is None:
        set_cache(key,10086)
        return "set success"
    else:
        return get_cache(key)
Exemple #3
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)
Exemple #4
0
def chose_weight_menu(message):
    weights = product.get_pizza_weight_by_title(db.get_cache(message.chat.id))

    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)

    else:
        for w in weights:
            if message.text in w['text']:
                product_ = product.get_pizza_by_title(
                    db.get_cache(message.chat.id))
                db.add_order_pizza(message.chat.id,
                                   db.get_cache(message.chat.id),
                                   product_['comp'], w['text'],
                                   int(product_['price']) + int(w['price']),
                                   product_['picture'])
                bot.send_message(message.chat.id,
                                 'Выбор количества ⬇',
                                 reply_markup=keyboards.back_keyboard())
                bot.send_message(
                    message.chat.id,
                    '<b>' + db.get_cache(message.chat.id) + '</b>\n<b>Цена: ' +
                    str(int(product_['price']) + int(w['price'])) + '</b> — ' +
                    message.text,
                    reply_markup=keyboards.chose_amount(),
                    parse_mode='HTML')
                states.set_state(message.chat.id, States.S_CHOSE_AMOUNT.value)
Exemple #5
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)
Exemple #6
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)
Exemple #7
0
 def get_status(self, id, include_entities=True):
     cache = db.get_cache(id)
     if not cache:
         url = '%s/statuses/show/%s.json' % (self.base_url, str(id))
         parameters = {'include_entities': int(bool(include_entities))}
         return self._fetch_url(url, parameters=parameters)
     else:
         return cache
Exemple #8
0
def phone_menu(message):
    db.add_phone_number(message.chat.id, message.contact.phone_number)
    db.add_phone_number_reg_order(message.chat.id,
                                  db.get_cache(message.chat.id),
                                  message.contact.phone_number)
    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)
Exemple #9
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')
def send_post(chat_id, pay):
    FROM = '*****@*****.**'
    TO = '*****@*****.**'
    username = '******'
    password = '******'
    server = smtplib.SMTP('smtp.gmail.com:587')

    id = db.get_cache(chat_id)
    sum = db.get_reg_order_by_id(chat_id, id)[0][3]
    desc = db.get_reg_order_by_id(chat_id, id)[0][2].replace(';', '\n\n')
    phone_number = db.get_reg_order_by_id(chat_id, id)[0][4]

    if int(db.get_reg_order_by_id(chat_id, id)[0][6]) == 1:
        delivery = 'Нет'
    else:
        delivery = 'Да'

    msg = MIMEMultipart()
    msg['From'] = FROM
    msg['To'] = TO
    msg['Subject'] = "НОВЫЙ ЗАКАЗ!!! №" + str(id)

    body = 'Сумма заказа: {} руб.\n\n' \
           'Оплата: {}\n\n' \
           'Номер телефона: {}\n\n' \
           'Доставка: {}\n\n' \
           'Товар:\n' \
           '{}\n\n' \
           ''.format(sum, pay, phone_number, delivery, desc)
    msg.attach(MIMEText(body, 'plain'))

    server.starttls()
    server.ehlo()
    server.login(username, password)
    server.sendmail(FROM, TO, msg.as_string())
    server.quit()
Exemple #11
0
def cache():
    return get_cache("394")
Exemple #12
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])
Exemple #13
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)