Пример #1
0
    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
Пример #2
0
    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