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)
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)
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)
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)
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()
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)
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)
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()
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))
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)
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)