Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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(),
     }
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
 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)