Разделение кода
Примечание
Разделение кода - очень важная вещь для создания структуры проекта
Чтобы делать это, в vkbottle можно использовать составляющие фреймворка отдельно от Bot
Разделение кода, кроме того может быть очень грамотно использовано для создания локальных изменений в лейблере, например auto_rules
поможет установить правила, которые будут накладываться на все хендлеры сообщений
Внимание
Правила в auto_rules
распространяются только на хендлеры сообщений, для сырых евентов вам нужен raw_event_auto_rules
и кастомные правила, работающие с ними
Стандартная иерархия файлов
Для удобства разработки больших проектов, рекомендуется использовать подобную структуру файлов:
config.py
Для начала создадим файл с конфигом, в котором будут храниться все глобальные переменные, которые будут использоваться в разных частях проекта
Примечание
В данном примере стейт диспенсер не используется, но объявлен для наглядности
Если вы хотите использовать его, то просто импортируйте из config.py
и используйте в своих хендлерах
Не забудьте указать state_dispenser
в Bot
в bot.py
ping.py
Теперь создадим файл ping.py
в папке handlers
, в котором будет простой хендлер, обрабатывающий сообщения с текстом ping
chat.py
В этом случае мы будем использовать auto_rules
, чтобы автоматически добавлять правила к хендлерам,
поэтому создадим новый лейблер, который будет использоваться только в этом файле
- Добавим в auto_rules правило, которое будет следить чтобы все сообщения шли только из чата
- Создадим правило, которое будет получать информацию о чате и возвращать ее для всех хендлеров этого лейблера
- Добавим несколько хендлеров
admin.py
Пусть эти команды будут доступны только, например, создателю бота
- Создадим проверку на id пользователя, написавшего сообщение
- Добавим несколько хендлеров
__init__.py
Теперь создадим файл __init__.py
в папке handlers
, в котором будем импортировать все лейблеры
bot.py
Теперь мы можем создать файл bot.py
, в котором будем создавать бота и регистрировать лейблеры
Так как мы создали файл
__init__.py
в папкеhandlers
, интерпретатор выполнит код вecho.py
и нам не нужно будет импортировать лейблер оттуда
Теперь нам нужно загрузить хендлеры в глобальный лейблер:
Далее нужно создать инстанс бота и указать, какой лейблер и стейт диспенсер использовать:
Осталось только запустить бота: