def update_callback(self, bot, update): query_data = update.callback_query.data if query_data == strings.change_email_tag: return BasicState.create_transition( tags.GET_EMAIL, edit_message_id=self.menu_message, email_exists=True) elif query_data == strings.go_back_tag: return BasicState.create_transition(tags.MAIN, send_keyboard=False)
def update(self, bot, update): email = update.message.text.strip().lower() keyboard_for_back_to_menu = None if not self.email_exists else InlineKeyboardMarkup( strings.get_email_back_keyboard) if self.user.check_email_correct(email): test_res = False message_id = None try: for message_len, message_text in strings.email_checking_dates: test_res, message_id = self.check_email_with_message( email, message_len, message_text, message_id, reply_keyboard=keyboard_for_back_to_menu) if test_res: break else: self.user.send_message(strings.no_timetable.format(email)) except python_ruz.utilities.NoEmailOrTimeout: self.user.send_message(strings.no_email_error.format(email)) if test_res: assert message_id is not None self.user.email = email self.user.edit_message(message_id, strings.email_correct_message) return BasicState.create_transition(tags.MAIN, invoke=True) else: self.user.send_message(strings.wrong_email_message, disable_web_page_preview=True)
def show_auditoriums(self, pair_no): if self.free_auditoriums is None: self.got_auditoriums_callback = functools.partial(self.show_auditoriums, pair_no) self.user.send_or_edit_message( strings.getting_free_auditoriums, invoke=False, reply_markup=self.get_go_to_pairs_choose() ) else: try: pairs_list = [auditorium_name for auditorium_name, pairs_availability in self.free_auditoriums.items() if pairs_availability[pair_no - 1]] pairs_list.sort() pairs_list_str = ', '.join(map(str, pairs_list)) self.user.send_or_edit_message( strings.free_auditoriums_list_format.format(strings.format_date(self.date), strings.get_weekday_name(self.date), self.building.building_address, pair_no, pairs_list_str), invoke=False, reply_markup=self.get_go_to_pairs_choose(), parse_mode=ParseMode.MARKDOWN, ) except: self.user.send_or_edit_message(strings.error_during_getting_schedule, invoke=True) logger.error('Error while getting free auditoriums {} {} {}'.format( self.date, self.building.building_oid, repr(self.free_auditoriums)), ) return BasicState.create_transition(tags.MAIN, invoke=True)
def __init__(self, user): super().__init__(user) get_today = self.get_today_method get_tomorrow = self.get_tomorrow_method get_settings = lambda: BasicState.create_transition(tags.SETTINGS, invoke=True) self.methods_map = { strings.get_today_markup: get_today, strings.get_today_cmd: get_today, strings.get_tomorrow_markup: get_tomorrow, strings.get_tomorrow_cmd: get_tomorrow, strings.get_settings_markup: get_settings, strings.get_settings_cmd: get_settings, strings.get_keyboard: lambda: self.send_keyboard_message(), }
def update_callback(self, bot, update): logger.debug('Parsing query for {}'.format(self.user.user_id)) query_id = update.callback_query.id try: query_data = json.loads(update.callback_query.data) except json.decoder.JSONDecodeError: return try: data_type = query_data['type'] if data_type == 'refresh': logging.debug('Refreshing timetable for {}'.format( self.user.user_id)) self.user.bot.answer_callback_query(callback_query_id=query_id) self.send_menu_message(invoke=False) elif data_type == 'GoDate': date = query_data['to'] logging.debug('User {} goes to date {}'.format( self.user.user_id, date)) self.user.bot.answer_callback_query(callback_query_id=query_id) if date == 'today': date = self.get_now() else: date = datetime.strptime(date, strings.date_format) self.go_date(date) elif data_type == strings.confirm_help_type: logging.debug('Sending help for {}'.format(self.user.user_id)) self.user.bot.answer_callback_query(callback_query_id=query_id) self.send_menu_message(invoke=False) elif data_type == 'free': building_id = query_data['building'] date = query_data['date'] date = datetime.strptime(date, strings.date_format) return BasicState.create_transition(tags.FREE_AUDITORIUMS, building_id=building_id, date=date) else: return except KeyError: return
def update_callback(self, bot, update): try: res = json.loads(update.callback_query.data) except json.JSONDecodeError: return try: query_type = res['type'] if query_type == 'pair': pair_no = res['no'] if 1 <= pair_no <= len(ruz_config.pairs): self.user.bot.answer_callback_query(callback_query_id=update.callback_query.id) return self.show_auditoriums(pair_no) elif query_type == 'back': self.user.bot.answer_callback_query(callback_query_id=update.callback_query.id) return BasicState.create_transition(tags.MAIN, send_keyboard=False, invoke=False, go_date=self.date) elif query_type == 'go_to_pairs': self.got_auditoriums_callback = None self.main_message(invoke=False) except KeyError: return
def update_callback(self, bot, update): if update.callback_query.data == strings.continue_inline_tag: return BasicState.create_transition( tags.GET_EMAIL, edit_message_id=self.menu_message)