def favorites_article(user): fav_list = Favorite.select_all(user) text = favorites._favorites_categories_md( fav_list) + '\n\n' + messages.PROMOTION_MESSAGE return InlineQueryResultArticle( id=uuid4(), title=captions.FAVORITES, input_message_content=InputTextMessageContent(message_text=text, parse_mode="Markdown"), )
def remove_favorite_menu(bot, update): uid = util.uid_from_update(update) user = User.from_update(update) favorites = Favorite.select_all(user) fav_remove_buttons = [InlineKeyboardButton( '✖️ {}'.format(str(f.bot.username)), callback_data=util.callback_for_action(CallbackActions.REMOVE_FAVORITE, {'id': f.id})) for f in favorites] buttons = util.build_menu(fav_remove_buttons, 2, header_buttons=[ InlineKeyboardButton(captions.DONE, callback_data=util.callback_for_action(CallbackActions.SEND_FAVORITES_LIST)) ]) reply_markup = InlineKeyboardMarkup(buttons) bot.formatter.send_or_edit(uid, util.action_hint("Select favorites to remove"), to_edit=util.mid_from_update(update), reply_markup=reply_markup)
def send_favorites_list(bot, update, to_edit=None): uid = util.uid_from_update(update) user = User.from_update(update) t = threading.Thread(target=_too_many_favorites_handler, args=(bot, update, user)) t.start() favorites = Favorite.select_all(user) buttons = [ [ InlineKeyboardButton(captions.ADD_FAVORITE, callback_data=util.callback_for_action(CallbackActions.ADD_FAVORITE)), InlineKeyboardButton(captions.REMOVE_FAVORITE, callback_data=util.callback_for_action(CallbackActions.REMOVE_FAVORITE_MENU)) ], [ InlineKeyboardButton('Layout: ' + Layouts.get_caption(user.favorites_layout), callback_data=util.callback_for_action( CallbackActions.TOGGLE_FAVORITES_LAYOUT, {'v': Layouts.get_next(user.favorites_layout)})), ], [ InlineKeyboardButton(captions.SHARE, switch_inline_query=DeepLinkingActions.FAVORITES), ] ] reply_markup = InlineKeyboardMarkup(buttons) if to_edit is None: to_edit = util.mid_from_update(update) if len(favorites) == 0: text = "You have no favorites yet." else: text = _favorites_categories_md(favorites, user.favorites_layout) bot.formatter.send_or_edit(uid, text, to_edit=to_edit, reply_markup=reply_markup)
def too_many_favorites(user): favs = Favorite.select_all(user) promo = max(len(messages.PROMOTION_MESSAGE), len(messages.FAVORITES_HEADLINE)) message_length = len(_favorites_categories_md(favs)) + promo + 4 return message_length > 4096