예제 #1
0
def show_cart(message):
    user = User.get_or_create_user(message)
    current_user = User.objects.get(user_id=message.chat.id)
    cart = Cart.objects.filter(user_id=current_user.user_id,
                               is_archived=False).first()

    if not cart:
        bot.send_message(message.chat.id,
                         text=Texts.get_text('empty_cart', user.language))
        return

    if not cart.products:
        bot.send_message(message.chat.id,
                         text=Texts.get_text('empty_cart', user.language))
        return

    for product in cart.products:
        remove_keyboard = InlineKeyboardMarkup()
        remove_button = InlineKeyboardButton(
            text=Texts.get_text('remove_product', user.language),
            callback_data=f'{Modules.REMOVE_PRODUCT}_{product.id}')
        remove_keyboard.add(remove_button)
        bot.send_message(message.chat.id,
                         text=f'{product.title} {product.price} грн.',
                         reply_markup=remove_keyboard)

    submit_keyboard = InlineKeyboardMarkup()
    submit_button = InlineKeyboardButton(text=Texts.get_text(
        'submit', user.language),
                                         callback_data=Modules.SUBMIT)
    submit_keyboard.add(submit_button)
    bot.send_message(message.chat.id,
                     text=Texts.get_text('ask_to_submit', user.language),
                     reply_markup=submit_keyboard)
예제 #2
0
def products_by_cat(call):
    user = User.get_or_create_user(call.message)
    category = Category.objects.filter(id=Modules.get_id(call)).first()
    products = category.category_products[:5]
    for product in products:
        keyboard = InlineKeyboardMarkup(row_width=1)
        keyboard.add(
            InlineKeyboardButton(
                text=Texts.get_text('add_to_cart', user.language),
                callback_data=f'{Modules.ADD_TO_CART}_{product.id}'),
            InlineKeyboardButton(
                text=Texts.get_text('more_info', user.language),
                callback_data=f'{Modules.PRODUCT}_{product.id}'))
        bot.send_photo(call.message.chat.id,
                       photo=SHOP_URL + product.image_url,
                       caption=product.title,
                       reply_markup=keyboard)
예제 #3
0
def greetings(message):
    user = User.get_or_create_user(message)

    if user.language == 'ru':
        main_menu_keyboard.add(*RU_MENU)
    else:
        main_menu_keyboard.add(*UA_MENU)

    bot.send_message(user.user_id,
                     text=Texts.get_text('greetings', user.language),
                     reply_markup=main_menu_keyboard)
예제 #4
0
def language(message):
    user = User.get_or_create_user(message)
    inline_keyboard = InlineKeyboardMarkup()
    inline_keyboard.add(
        InlineKeyboardButton(text="Русский 🇷🇺",
                             callback_data=f'{Modules.CHANGE_LANGUAGE}_ru'),
        InlineKeyboardButton(text="Українська 🇺🇦",
                             callback_data=f'{Modules.CHANGE_LANGUAGE}_ua'),
    )
    bot.send_message(message.chat.id,
                     Texts.get_text('change_language', user.language),
                     reply_markup=inline_keyboard)
예제 #5
0
def submit_cart(call):
    user = User.get_or_create_user(call.message)
    current_user = User.objects.get(user_id=call.message.chat.id)
    cart = Cart.objects.filter(user_id=current_user.user_id,
                               is_archived=False).first()
    cart.is_archived = True

    order_history = OrdersHistory.get_or_create(current_user)
    order_history.orders.append(cart)
    bot.send_message(call.message.chat.id,
                     text=Texts.get_text('thank_you', user.language))
    cart.save()
    order_history.save()
예제 #6
0
def subcategories_by_cat(call):
    user = User.get_or_create_user(call.message)
    delete_last_message(bot, call)
    category = Category.objects.get(id=Modules.get_id(call))
    subcategories = category.sub_categories
    subcategories_kb = InlineKeyboardMarkup(row_width=2)

    buttons = []
    for subcategory in subcategories:
        if subcategory.is_parent:
            callback_data = f'{Modules.CATEGORY}_{subcategory.id}'
        else:
            callback_data = f'{Modules.SUBCATEGORY}_{subcategory.id}'
        buttons.append(
            InlineKeyboardButton(text=subcategory.title,
                                 callback_data=callback_data))
    subcategories_kb.add(*buttons)
    subcategories_kb.add(
        InlineKeyboardButton(text=Texts.get_text('back_to_categories',
                                                 user.language),
                             callback_data=f'{Modules.CATEGORY}'))
    bot.send_message(call.message.chat.id,
                     text=Texts.get_text('subcategory', user.language),
                     reply_markup=subcategories_kb)
예제 #7
0
def categories_common(message):
    user = User.get_or_create_user(message)
    categories_keyboard = InlineKeyboardMarkup(row_width=2)
    categories_objects = Category.objects(main=True)

    buttons = []
    for c in categories_objects:
        if c.is_parent:
            callback_data = f'{Modules.CATEGORY}_{c.id}'
        else:
            callback_data = f'{Modules.SUBCATEGORY}_{c.id}'
        buttons.append(
            InlineKeyboardButton(text=c.title, callback_data=callback_data))

    categories_keyboard.add(*buttons)
    bot.send_message(message.chat.id,
                     text=Texts.get_text('categories', user.language),
                     reply_markup=categories_keyboard)
예제 #8
0
def seed_texts():
    texts_dict = {
        'greetings': {'ru': "Приветствую в нашем магазине! Выбери действие:",
                      'ua': "Вітаю в нашому магазині! Обери дію:"},
        'news': {'ru': 'Новостей нет.',
                 'ua': 'Новин немає'},
        'information_for_user': {'ru': 'Здесь может быть ваша реклама.',
                                 'ua': "Тут може бути ваша реклама."},
        'categories': {'ru': 'Выберите категорию товара:',
                       'ua': "Оберіть категорію товару:"},
        'back_to_categories': {'ru': "<< Ко всем категориям",
                               'ua': "<< До всіх категорій"},
        'add_to_cart': {'ru': 'В корзину 🛒',
                        'ua': 'В корзину 🛒'},
        'more_info': {'ru': 'Подробнее 📝',
                      'ua': 'Детальніше 📝'},
        'subcategory': {'ru': 'Выберите подкатегорию товара:',
                        'ua': 'Оберіть підкатегорію товару:'},
        'empty_cart': {'ru': 'Корзина пустая!',
                       'ua': 'Корзина порожня!'},
        'remove_product': {'ru': 'Удалить продукт с корзины',
                           'ua': 'Видалити продукт з корзини'},
        'submit': {'ru': 'Оформить заказ',
                   'ua': 'Оформити замовлення'},
        'ask_to_submit': {'ru': 'Подтвердите Ваш заказ',
                          'ua': 'Підтвердіть Ваше замовлення'},
        'thank_you': {'ru': 'Благодарим за ваш заказ',
                      'ua': 'Дякуємо за ваше замовлення'},
        'change_language': {'ru': 'Выберите язык общения с ботом',
                            'ua': 'Оберіть мову спілкування з ботом'},
        'done': {'ru': 'Сделано!',
                 'ua': 'Зроблено!'},
    }
    for key, value in texts_dict.items():
        texts = Texts()
        texts.title = key
        texts.text_ru = value['ru']
        texts.text_ua = value['ua']
        texts.save()
예제 #9
0
def categories_from_inline(call):
    user = User.get_or_create_user(call.message)
    user.language = Modules.get_id(call)
    user.save()
    bot.send_message(call.message.chat.id,
                     Texts.get_text('done', user.language))
예제 #10
0
def info(message):
    user = User.get_or_create_user(message)
    bot.send_message(user.user_id,
                     Texts.get_text('information_for_user', user.language),
                     reply_markup=main_menu_keyboard)
예제 #11
0
def news(message):
    user = User.get_or_create_user(message)
    bot.send_message(user.user_id,
                     Texts.get_text('news', user.language),
                     reply_markup=main_menu_keyboard)