Серфинг по файловой системе Серфинг по файловой системе telegram bot python dir tree bs4

Серфинг по файловой системе

Open in new window

Отправка приветствия.

Все содержимое, которое наш бот будет отсылать пользователям находится в директории имени бота.

Этот каталог, в свою очередь, может содержать подкаталоги.

Каждый каталог может включать текстовые и файлы изображений из которых будем формировать сообщения в которых будут кнопки, позволяющие навигацию по каталогам.

def first_message(chat_id):
    start_path = '%s/%s/start.txt' % (DATA_DIR,botname)
    with open(start_path) as f:
        msg = f.read()
    bot.send_message(chat_id,msg)
    # image
    img_path = '%s/start.png' % bot_path
    if os.path.isfile(img_path):
        bot.send_photo(chat_id=chat_id, photo=open(img_path, 'rb'))
    #buttons
    but_path = '%s/buttons.txt' % bot_path
    if os.path.isfile(but_path):
        with open(but_path) as f:
            but_txt = f.read()

Определим функцию, которая отправляет первое приветствие текст из файла start.txt.

Далее отправляется изображение при существовании в корневом каталоге бота.

def first_message(chat_id):

    # first message
    start_path = '%s/%s/start.txt' % (DATA_DIR,botname)
    with open(start_path) as f:
        msg = f.read()
    bot.send_message(chat_id,msg)

    # image
    img_path = '%s/start.png' % bot_path
    if os.path.isfile(img_path):
        bot.send_photo(chat_id=chat_id, photo=open(img_path, 'rb'))

    #buttons
    but_path = '%s/buttons.txt' % bot_path
    if os.path.isfile(but_path):
        with open(but_path) as f:
            but_txt = f.read()
        soup = BeautifulSoup(but_txt, 'html.parser')
        bts = soup.findAll('button')
        btn_lst = []
        for bt in bts:
            btn_lst.append(InlineKeyboardButton(bt.text,callback_data=bt['value']))
        button_list = InlineKeyboardMarkup(build_menu(btn_lst,n_cols=1))
        msg = soup.find('message')
        bot.send_message(chat_id, msg.text, reply_markup=button_list)

Формат файла buttons.txt

<message>Select between:</message>

<button value="yes">
    Do you want to see the catalog?
</button>

<button value="no">
   No thank you
</button>

Для парсинга xml используем библиотеку BeautifulSoup.

pip install bs4

Функция навигации по файловой системе бота.

Other topics