def process_trello_token_conv(self, bot, update, user_data): logger.info("Got to process_trello_token") trello_token = update.message.text.strip() trello = Trello(trello_token) starred_boards = trello.get_starred_boards() if starred_boards is None: update.message.reply_text( "Sorry, the token looks invalid. " "Restart the process using /setup and then " "choose a new, valid one.\nEND." ) return ConversationHandler.END user_data["trello_token"] = trello_token update.message.reply_text( "Token validated successfully. Please choose, among these, your preferred board for " "ideas collection. There are listed only starred boards. " "If it's not among them, star your preferred board, and then restart the process.", reply_markup=ReplyKeyboardMarkup( [ [ '{name} ({part_id})'.format(name=x['name'], part_id=x['id'][:4]) for k, x in starred_boards.items() ], ['/cancel'] ], one_time_keyboard=True, ), ) return _CONV_STATE_SETUP_BOARD
def process_trello_board_conv(self, bot, update, user_data): logger.info("Got to process_trello_board") trello_token = user_data["trello_token"] chosen_board_name = update.message.text.split("(")[0].strip() chosen_board_id = update.message.text.split("(")[1].replace(")", "") trello = Trello(trello_token) starred_boards = trello.get_starred_boards() if starred_boards is None: return self.error(update, user_data, "invalid trello token") candidate_boards = [v for k, v in starred_boards.items() if chosen_board_id in k] final_board = None for candidate_board in candidate_boards: if candidate_board['name'] == chosen_board_name: final_board = candidate_board break if final_board is None: return self.error(update, user_data, "No valid board found") else: chosen_board_id = final_board['id'] chosen_board_name = final_board['name'] board_lists = trello.get_board_lists(chosen_board_id) if board_lists is None: return self.error(update, {}, "Trello token expired. Restart doing /setup and " "then saving your stuff again.") inbox_list_id = None for k, l in board_lists.items(): if l['name'] == DEFAULT_LIST_NAME: inbox_list_id = l['id'] break else: if len(board_lists.items()) > 0: inbox_list_id = [v for k, v in board_lists.items()][0]['id'] self.setup_user(tg_id=update.message.from_user.id, trello_token=trello_token, chosen_board_id=chosen_board_id, chosen_board_name=chosen_board_name, inbox_list_id=inbox_list_id) update.message.reply_text("Setup completed. You can now fully use the bot.") return ConversationHandler.END