def back_to_the_catalog(chat_id, language, message_text=None, parent_category=None): bot.send_chat_action(chat_id, 'typing') if not message_text: catalog_message = strings.get_string('catalog.start', language) else: catalog_message = message_text if parent_category: catalog_message = strings.from_category_name(parent_category, language) categories = parent_category.get_siblings(include_self=True).all() category_keyboard = keyboards.from_dish_categories( categories, language) bot.send_message(chat_id, catalog_message, reply_markup=category_keyboard) if parent_category.parent: bot.register_next_step_handler_by_chat_id( chat_id, catalog_processor, parent_category=parent_category.parent) else: bot.register_next_step_handler_by_chat_id(chat_id, catalog_processor) return categories = dishservice.get_parent_categories(sort_by_number=True) category_keyboard = keyboards.from_dish_categories(categories, language) bot.send_message(chat_id, catalog_message, reply_markup=category_keyboard, parse_mode='HTML') bot.register_next_step_handler_by_chat_id(chat_id, catalog_processor)
def channel_processor(message: Message): chat_id = message.chat.id user_id = message.from_user.id language = userservice.get_user_language(user_id) def error(): error_msg = strings.get_string('package_offers.channel', language) bot.send_message(chat_id, error_msg) bot.register_next_step_handler_by_chat_id(chat_id, channel_processor) if not message.text: error() return if strings.get_string('go_back', language) in message.text: main_menu_message = strings.get_string('main_menu.choose_option', language) main_menu_keyboard = keyboards.get_keyboard('main_menu', language) bot.send_message(chat_id, main_menu_message, reply_markup=main_menu_keyboard) return try: package_offers = channelservice.get_package_offers_by_channel(message.text) except channelservice.ChannelNotFound: error() return for package_offer in package_offers: if package_offer.telegram_id: bot.send_document(chat_id, package_offer.telegram_id) else: bot.send_chat_action(chat_id, 'upload_document') file = open(package_offer.file_path, 'rb') sent_file = bot.send_document(chat_id, file) tg_id = sent_file.document.file_id channelservice.set_telegram_id_for_price_file(package_offer.id, tg_id) bot.register_next_step_handler_by_chat_id(chat_id, channel_processor)
def catalog(message: Message): chat_id = message.chat.id user_id = message.from_user.id language = userservice.get_user_language(user_id) bot.send_chat_action(chat_id, 'typing') dishes_keyboard = keyboards.get_keyboard('catalog.dish_keyboard') dish_message = strings.get_string('catalog.dish_action_helper', language) bot.send_message(chat_id, dish_message, reply_markup=dishes_keyboard) bot.register_next_step_handler_by_chat_id(chat_id, count_processor)
def catalog(message: Message): chat_id = message.chat.id user_id = message.from_user.id language = userservice.get_user_language(user_id) bot.send_chat_action(chat_id, 'typing') catalog_message = strings.get_string('catalog.start', language) category_keyboard = keyboards.from_dish_categories(language) bot.send_message(chat_id, catalog_message, reply_markup=category_keyboard) bot.register_next_step_handler_by_chat_id(chat_id, catalog_processor)
def back_to_the_catalog(chat_id, language, message_txt=None): bot.send_chat_action(chat_id, 'typing') if not message_txt: catalog_message = strings.get_string('catalog.start', language) else: catalog_message = message_txt categories = dishservice.get_all_categories(sort_by_number=True) category_keyboard = keyboards.from_dish_categories(categories, language) bot.send_message(chat_id, catalog_message, reply_markup=category_keyboard) bot.register_next_step_handler_by_chat_id(chat_id, catalog_processor)
def catalog(message: Message): chat_id = message.chat.id user_id = message.from_user.id language = userservice.get_user_language(user_id) bot.send_chat_action(chat_id, 'typing') catalog_message = strings.get_string('catalog.start', language) categories = dishservice.get_parent_categories(sort_by_number=True) if len(categories) == 0: empty_message = strings.get_string('catalog.empty', language) bot.send_message(chat_id, empty_message) return category_keyboard = keyboards.from_dish_categories(categories, language) bot.send_message(chat_id, catalog_message, reply_markup=category_keyboard) bot.register_next_step_handler_by_chat_id(chat_id, catalog_processor)
def rating_processor(message: Message): chat_id = message.chat.id user_id = message.from_user.id language = userservice.get_user_language(user_id) def error(): bot.register_next_step_handler_by_chat_id(chat_id, rating_processor) if not message.text: error() return if strings.get_string('main_menu', language) in message.text: _to_main_menu(chat_id, language) elif strings.get_string('rating.ratings', language) in message.text: rating = ratingservice.get_rating() if rating and rating.images.count() > 0: for image in rating.images.all(): if image.image_id: bot.send_photo(chat_id, image.image_id) else: bot.send_chat_action(chat_id, 'upload_photo') sent_file = bot.send_photo(chat_id, open(image.image_path, 'rb')) tg_id = sent_file.photo[-1].file_id ratingservice.set_rating_telegram_id(image, tg_id) else: empty_message = strings.get_string('ratings.empty', language) bot.send_message(chat_id, empty_message) bot.register_next_step_handler_by_chat_id(chat_id, rating_processor) return bot.register_next_step_handler_by_chat_id(chat_id, rating_processor) elif strings.get_string('rating.presentations', language) in message.text: presentations = channelservice.get_channel_presentations() if len(presentations) == 0: presentations_empty_message = strings.get_string('rating.presentations_empty', language) bot.send_message(chat_id, presentations_empty_message) bot.register_next_step_handler_by_chat_id(chat_id, rating_processor) for file in presentations: if file.telegram_id: bot.send_document(chat_id, file.telegram_id) else: bot.send_chat_action(chat_id, 'upload_document') sent_file = bot.send_document(chat_id, open(file.file_path, 'rb')) tg_id = sent_file.document.file_id channelservice.set_telegram_id_for_presentation_file(file.id, tg_id) bot.register_next_step_handler_by_chat_id(chat_id, rating_processor) else: error()