def handle_state(self, bot_user: BotUser, message: Message): state = bot_user.state handlers_map = { 'switch_mode': self.switch_mode, # self.switch_mode() 'switch_notebook': self.switch_notebook, # self.switch_notebook() } state_handler = handlers_map[state] state_handler(bot_user, message.text) bot_user.state = None self.users.save(bot_user.asdict())
def handle_state(self, bot_user: BotUser, message: Message): state = bot_user.state handlers_map = { "switch_mode": self.switch_mode, # self.switch_mode() "switch_notebook": self.switch_notebook, # self.switch_notebook() } state_handler = handlers_map.get(state) if not state_handler: raise EvernoteBotException(f"Invalid state: {state}") state_handler(bot_user, message.text) bot_user.state = None self.users.save(bot_user.asdict())
def switch_mode_command(bot, message: dict): user_id = message['from']['id'] user_data = bot.users.get(user_id) if not user_data: raise TelegramBotError("Unregistered user {0}. You've to send /start to register.") user = BotUser(**user_data) buttons = [] for mode in ('one_note', 'multiple_notes'): title = mode.capitalize().replace('_', ' ') if user.bot_mode == mode: title = f'> {title} <' buttons.append({'text': title}) keyboard = { 'keyboard': [[b] for b in buttons], 'resize_keyboard': True, 'one_time_keyboard': True, } bot.api.sendMessage(user.telegram.chat_id, 'Please, select mode', json.dumps(keyboard)) user.state = 'switch_mode' bot.users.save(user.asdict())
def switch_notebook_command(bot, message: Message): user_id = message.from_user.id user_data = bot.users.get(user_id) user = BotUser(**user_data) all_notebooks = bot.evernote.get_all_notebooks(user.evernote.access.token) buttons = [] for notebook in all_notebooks: name = notebook["name"] if name == user.evernote.notebook.name: name = f"> {name} <" buttons.append({"text": name}) keyboard = { "keyboard": [[b] for b in buttons], "resize_keyboard": True, "one_time_keyboard": True, } bot.api.sendMessage(user.telegram.chat_id, "Please, select notebook", json.dumps(keyboard)) user.state = "switch_notebook" bot.users.save(user.asdict())
def switch_mode_command(bot, message: Message): mode = message.text user_id = message.from_user.id user_data = bot.users.get(user_id) user = BotUser(**user_data) buttons = [] for mode in ('one_note', 'multiple_notes'): title = mode.capitalize().replace('_', ' ') if user.bot_mode == mode: title = f'> {title} <' buttons.append({'text': title}) keyboard = { 'keyboard': [[b] for b in buttons], 'resize_keyboard': True, 'one_time_keyboard': True, } bot.api.sendMessage(user.telegram.chat_id, 'Please, select mode', json.dumps(keyboard)) user.state = 'switch_mode' bot.users.save(user.asdict())
def switch_notebook_command(bot, message: dict): user_id = message['from']['id'] user_data = bot.users.get(user_id) if not user_data: raise TelegramBotError("Unregistered user {0}. You've to send /start to register.") user = BotUser(**user_data) evernote_api = bot.get_evernote_api(user_id) all_notebooks = evernote_api.get_all_notebooks() buttons = [] for notebook in all_notebooks: name = notebook['name'] if name == user.evernote.notebook.name: name = f'> {name} <' buttons.append({'text': name}) keyboard = { 'keyboard': [[b] for b in buttons], 'resize_keyboard': True, 'one_time_keyboard': True, } bot.api.sendMessage(user.telegram.chat_id, 'Please, select notebook', json.dumps(keyboard)) user.state = 'switch_notebook' bot.users.save(user.asdict())