Разбор кода¶
Рассмотрим содержимое bot.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
StarletteBot - основной класс, отвечающий за бота. Является композицией других классов, таких как SDK и SessionManager. Подробнее о нем написано в соответствуюзем разделе.
Бот¶
1 2 3 | |
В данном случае мы не задаем никаких аргументов при создании экземпляра, потому что библиотека может автоматически инициализировать все за нас. Для этого необходимо, чтобы в папке вашего бота находится файл .conf
1 | |
Объявляем переменную, содержащую Starlette серевер. Она нужна, для uvicorn
Обработчик¶
1 2 3 4 | |
Здесь мы создаем обработчик сообщений и регистрируем его в нашем боте при помощи декоратора @bot.global_handler
Стоит отметить, что функция-обработчик должна принимать всегда 3 аргумента. Посмотрим, за что они отвечают.
- request - информация от пользователя. Содержит его сообщение (request.user_message)
- response - ответ, который будет отправлен пользователю. Может содержать как простой текст, так и картинки
- session - сессия пользователя. Обладает хранилищем, которое можно наполнить произвольной информацией
1 2 | |
Метод set_message задает сообщение, которое будет отправлено в ответ.
return True дает понять фреймворку, что сценарий этого обработчика выполнился корректно и ответ был успешно
сформирован.
Зачем это нужно?
Данный механизм необходим для более сложных сценариев, когда одно сообщение может пройти сразу через несколько обработчиков. Подробнее про архитектуру и особенности выполнения обработчиков написано здесь
Uvicorn¶
1 2 3 | |
Эта последняя часть нужна для упрощенного старта работы. Благодря ней вы можете запустить бота прямо из PyCharm. При этом будет работать live reload, который сам перезапускает сервер, если в коде произойдут изменения.
Заключение¶
Вот мы и подошли к концу туториала. Теперь вы можете самостоятельно реализовать Эхо-бота.
Последующие разделы будут посвящены подробному разбору всех частей нашего фреймворка. Также будет рассмотрен пример бота со сложным сценарием.