Начало работы¶
В этом туториале мы запустим Hello world бота сразу на трех платформах. Мы пройдем все этапы от настройки и конфигурации до запуска и тестирования.
Пару слов о принципе работы библиотеки¶
Если вы знаете как работают боты, можете пропустить этот пункт.
Обычно платформы работают с ботами, используя два метода на выбор: Callback API и Long Poll API. Различия между этими методами заключаются в способах получения событий (например нового сообщения):
- В первом случае вы создаете свой сервер, который принимает запросы от платформы, когда происходит событие (при этом платформа должна знать адрес вашего сервера)
- Во втором - вы постоянно отправляете запросы на сервер платформы с определенной периодичностью, чтобы получить все события, произошедшие за интервал ожидания
Наш фреймворк использует первый метод, так как он является наиболее стабильным и применим на всех платформах, с короторыми мы работаем.
Фреймворк - сервер¶
Если вы работали с веб-разработкой на Python, то вы скорее всего слышали о таких фреймворках как Django и Flask. Наши боты будут работать на асинхронном фреймворке нового поколения Starlette.
Почему именно Starlette?
Этот фреймоврк сочетает в себе простоту Flask`a и высокую скорость работы благодаря ASGI. По версии бенчмарка TechEmpower является одним из самых быстрых на Python
Структура проекта¶
На данный момент для работы предлагается использовать папку template. В дальнейшем, когда библиотека будет добавлена в PyPi, будет реализован генератор шаблона. В проекте имеетются следующие файлы:
- .conf - в нем будут хранится все конфигурационные данные (токены и адреса)
- bot.py - основной файл с логикой вашего бота
Файл .conf¶
Файл конфигурации, содержащий токены и адреса. Далее будут описаны действия, чтобы получить значения для каждой перменной
VK_TOKEN - Токен ВК бота
- Открыть/создать группу
- Выбрать пункт Управление
- Пройти на вкладку Работа с API
- Нажать на кнопку Создать ключ
- Выбрать все права в появившемся меню
VK_CONFIRMATION - Код для привязки сервера к Callback API VK
- Открыть группу
- Выбрать пункт Управление
- Пройти на вкладку Работа с API
- В меню сверху нажать на Callback API
- Найти пункт Строка, которую должен вернуть сервер
TELEGRAM_TOKEN - Токен Telegram бота
- Найти @BotFather
- Создать своего бота
TELEGRAM_GROUP - ID группы, в которую будут отправляться файлы для предзагрузки. Подробнее об этом будет написано в пункте Подготовка и запуск
ALICE_TOKEN - Токен вашего навыка
- Зайти в личный кабинет
- Создать/выбрать навык
- Найти пункт Идентификатор диалога
ALICE_AUTH - Защитный токен для загрузки
- Пройти в документацию навыков
- Нажать на OAuth-токен для Диалогов
PUBLIC_URL - публичная ссылка вашего сервера. Подробнее в разделе про ngrok
PROXY_URL - Адрес прокси сервера для работы Telegram на территории РФ, можно найти в публичных списках бесплатных прокси
Опасно
Прокси сервера могут перехватывать трафик, если ваш бот обладает конфединциальной информацией, не используйте публичные прокси сервера
Внимание
Если на вашем серевере, не будет появляться сообщение о том, что hook установлен или будут вознимать ошибки из-за превышения времени ожидания, следует поменять прокси