Итак, наш бот уже имеет минимальную работоспособность и настало время попытаться понять структуру шаблона. Как это все работает и как примерно должно работать в будущем, назначение всех ключевых файлов и папок.
Для тех кто пропустил:
Шаблон представляет собой вот такую структуру папок и файлов, начнем с корня проекта:
В корневой директории находятся два файла 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
Шаблон на первый взгляд кажется большим и сложным, но при более детальном изучении, всё оказывается очень просто. Подобные шаблоны нужны как раз для того, чтобы упорядочить всевозможные события и реакции на них. Со временем программа растет, обрастает различными "фишками", функциями и чем дальше, тем трудней ориентироваться в одном файле main.py. Поэтому программа разбита на логические кусочки которые переплетаются между собой.
Вот вроде бы и всё по шаблону. Я еще сам в этом не просто "чайник" а "мегасамовар", я пытаюсь во всем этом разобраться и понять, и если где-то допускаю неточность - ну сорян! Все мы люди, все мы человеки.
Как-то так, всем счастья, любви и здоровья. А деньги заработаем.