def mensa_handler(update: Update, context: CallbackContext): text = " ".join(context.args) pattern = text.strip() code_name = None for retries in range(config.retries_api_failure): try: code_name = client.get_mensas(config.endpoint, pattern) break except JSONDecodeError: logging.debug( f"JSONDecodeError: Try number {retries + 1} / {config.retries_api_failure}" ) sleep(1) continue if code_name is None: logging.exception("Failed to load code_names") return mensa_chooser = InlineKeyboardMarkup( inline_keyboard=[ [InlineKeyboardButton(text=name, callback_data=code)] for code, name in sorted(code_name.items(), key=lambda item: item[1]) ] ) context.bot.send_message( update.effective_message.chat_id, emojize("Wähle Deine Mensa aus. :index_pointing_up:"), reply_markup=mensa_chooser, )
def mensa_handler(update: Update, context: CallbackContext): text = " ".join(context.args) pattern = text.strip() code_name = client.get_mensas(config.endpoint, pattern) mensa_chooser = InlineKeyboardMarkup( inline_keyboard=[[InlineKeyboardButton(text=name, callback_data=code)] for code, name in sorted(code_name.items(), key=lambda item: item[1])]) context.bot.send_message( update.message.chat_id, emojize("Wähle Deine Mensa aus. :index_pointing_up:"), reply_markup=mensa_chooser, )
def callback_handler(update: Update, context: CallbackContext): query = update.callback_query if query: if query.data.startswith("A"): allergen_number = query.data.lstrip("A") name = client.get_allergens(config.endpoint)[allergen_number] context.bot.answer_callback_query(query.id, text=f"„{name}” usgewählt.") allergens = user_db.allergens_of(query.message.chat_id) allergens.add(allergen_number) user_db.set_allergens_for(query.message.chat_id, allergens) logging.info(f"Set {query.message.chat_id} allergens to {allergens}") else: name = client.get_mensas(config.endpoint)[int(query.data)] context.bot.answer_callback_query( query.id, text=f"„{name}“ ausgewählt.", ) user_db.set_mensa_for(query.message.chat_id, query.data) logging.info(f"Set {query.message.chat_id} mensa to {query.data}")
def info_handler(update: Update, context: CallbackContext): number_name = client.get_allergens(config.endpoint) code_name = client.get_mensas(config.endpoint) myallergens = user_db.allergens_of(update.message.chat_id) mymensa = user_db.mensa_of(update.message.chat_id) subscribed = user_db.is_subscriber(update.message.chat_id) subscription_filter = (user_db.menu_filter_of(update.message.chat_id) or "kein Filter") context.bot.send_message( update.message.chat_id, "*MENSA*\n{mensa}\n\n*ABO*\n{subscription}\n\n*ALLERGENE*\n{allergens}" .format( mensa=code_name[mymensa] if mymensa is not None else "keine", allergens="\n".join(number_name[number] for number in myallergens), subscription=emojize( (":thumbs_up:" if subscribed else ":thumbs_down:") + " ({})".format(subscription_filter)), ), parse_mode=ParseMode.MARKDOWN, )
def callback_handler(update: Update, context: CallbackContext): query = update.callback_query if query: if query.data.startswith("A"): allergen_number = query.data.lstrip("A") name = client.get_allergens(config.endpoint)[allergen_number] context.bot.answer_callback_query( query.id, text=emojize(f"„{name}” ausgewählt. :heavy_check_mark:")) allergens = user_db.allergens_of(query.message.chat_id) allergens.add(allergen_number) user_db.set_allergens_for(query.message.chat_id, allergens) logging.info("Set {}.allergens to {}".format( query.message.chat_id, allergens)) else: name = client.get_mensas(config.endpoint)[int(query.data)] context.bot.answer_callback_query( query.id, text=emojize( "„{}“ ausgewählt. :heavy_check_mark:".format(name)), ) user_db.set_mensa_for(query.message.chat_id, query.data) logging.info("Set {}.mensa to {}".format(query.message.chat_id, query.data))