Найти тему
Движение-Жизнь

Про шаблон структуры телеграмм-бота. Разработка на Python. Часть третья

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

Для тех кто пропустил:

Шаблон представляет собой вот такую структуру папок и файлов, начнем с корня проекта:

В корневой директории находятся два файла main.py (из этого файла бот запускается) и loader.py (из него подгружаются нужные боту переменные). Более подробно об этих файлах:

  • main.py по строкам:
    1. импорт бота из файла loader.py
    2. импорт папки обработчиков сообщений (хэндлеров)
    3. импорт команд которые будут вызываться из кнопки
    "Меню"
    6. установка в кнопку
    "Меню" команд
    7. бесконечный запуска бота
  • loader.py по строкам:
    1-3. Подгружаем необходимые модули для создания бота
    5. Создаем глобальную переменную для хранения состояний пользователя внутри сценария
    6. создается сам объект бота
  • .gitignore
    Игнорируемые файлы отслеживаются в специальном файле .gitignore, который регистрируется в корневом каталоге репозитория. В Git нет специальной команды для указания игнорируемых файлов: вместо этого необходимо вручную отредактировать файл .gitignore, чтобы указать в нем новые файлы, которые должны быть проигнорированы и не отправлены на сервер. Например файл .env, в котором содержатся ключи
  • requirements.txt этот файл нужен для того чтобы указать какие дополнительно используются модули. Которые нужно установить командой :
    pip install -r requirements.txt
  • .env здесь находятся наши токены и ключи для доступа к телеграмм-боту и сайту поиска отелей.

Переходим к папке config_data:

  • __init__.py файл может быть как пустым так и с кодом внутри него. Присутствие данного файла в папке делает её уже не просто папкой а пакетом. Команды которого будут доступны через точку.
  • config.py по строкам:
    1-2 импорт нужных элементов
    4-7 проверка на наличие файла с паролями
    .env, если файл не найден то работа интерпретатора прекращается с выводом соответствующего сообщения.
    Либо продолжаем работу и загружаем нужные нам пароли для доступа телеграмм и сайту hotels.com

database - в данной папке (пакете) будет храниться всё что отвечает за базы данных, в которых будет храниться история поиска.

handlers - этот пакет отвечает за обработку всех сообщений, которые будут отлавливаться ботом и обрабатываться как нам нужно

keyboards - здесь будут храниться все клавиатуры которые будут взаимодействовать с пользовательским вводом.

states - отвечает за инициализацию класса состояний пользователя внутри сценария. Когда вы хотите чтобы пользователь проходил разные этапы ввода данных - используются эти состояния. Чтобы было удобно понимать следующие шаги и чтобы бот понимал в каком хендлере ему дальше работать.

utils - в этой папке хранятся вспомогательные модули, например файл set_bot_commands.py в котором генерируются стандартные команды кнопки "меню". Которые берутся из папки config_data и файла config.py

-3

Шаблон на первый взгляд кажется большим и сложным, но при более детальном изучении, всё оказывается очень просто. Подобные шаблоны нужны как раз для того, чтобы упорядочить всевозможные события и реакции на них. Со временем программа растет, обрастает различными "фишками", функциями и чем дальше, тем трудней ориентироваться в одном файле main.py. Поэтому программа разбита на логические кусочки которые переплетаются между собой.

Вот вроде бы и всё по шаблону. Я еще сам в этом не просто "чайник" а "мегасамовар", я пытаюсь во всем этом разобраться и понять, и если где-то допускаю неточность - ну сорян! Все мы люди, все мы человеки.

Как-то так, всем счастья, любви и здоровья. А деньги заработаем.