Telegram-бот¶
Обрати внимание
Локальная среда разработки должна быть настроена и запущена.
Подготовка бота на стороне Telegram¶
- Написать @botfather, создать бота
- Полученный токен установить значением переменной
TG_BOT_TOKEN
в файле.env
репозиторияweb
- Командой
/mybots
в @botfather выбрать свежесозданного бота, далееEdit Bot
>Edit Commands
и отправить текст:list - Список плейлистов info - Подробности о плейлисте по его коду help - Помощь по командам бота links - Ссылки на все страницы проекта stats - Статистика по плейлистам и каналам
Проброс внешних запросов на локальную машину¶
-
Установить telebit и пройти примитивную регистрацию. В результате будет выдан уникальный адрес в формате
https://foo-bar-99.telebit.io
. На email, указанный при регистрации, будет оформлен бесплатный SSL-серификат Let's Encrypt для этого домена. Если адрес не используется месяц+, то сертификат протухнет, но он автоматически восстановится, если адрес начнёт использоваться вновь. -
В терминале выполнить:
гдеtelebit http 8080
8080
-- порт локальной машины, на который проброшен порт 80 из контейнераiptv-nginx
. Для выключения выполнить:telebit http
-
Проверить работу адреса, перейдя по нему браузером. Должен открыться твой локальный проект.
-
Полученный адрес установить значением переменной
APP_URL
в файле.env
репозиторияweb
-
Установить веб-хук, отправив запрос браузером или любым HTTP-клиентом на адрес:
где:https://api.telegram.org/bot$BOT_TOKEN/setWebhook?url=$TELEBIT_URL/bot/webhook&secret_token=$SECRET_TOKEN
$BOT_TOKEN
- авторизационный токен, который @botfather выдал твоему боту;$TELEBIT_URL
- адрес, который telebit выдал тебе;$SECRET_TOKEN
- секретный токен, опционален, см. ниже.
-
Проверить веб-хук, отправив запрос браузером или любым HTTP-клиентом на адрес:
где:https://api.telegram.org/bot$BOT_TOKEN/getWebhookInfo
$BOT_TOKEN
- авторизационный токен, который @botfather выдал твоему боту.
-
После разработки нужно установить "боевой" адрес веб-хука аналогично п4.
Что за секретный токен?¶
Telegram авторизует твоего бота по токену, который выдал ему сам.
Ты тоже можешь (не) авторизовать Telegram по токену, который ты выдашь ему.
Для этого нужно в значением переменной TG_BOT_SECRET
в файле .env
репозитория web
установить любую строку. Если ты это сделаешь, тогда ту же строку ты должен передать в параметре secret_token
метода setWebhook
.
В этом случае, все HTTP-запросы, которые приходят от Telegram, будут содержать заголовок X-Telegram-Bot-Api-Secret-Token
со этой строкой в качестве значения. Эта строка сверяется с той, что указана в .env
проекта. Если такого заголовка нет или его значение некорректно, входящий запрос отклоняется.
Если переменная TG_BOT_SECRET
не задана, то заголовок проверяться не будет.
См. подробности в документации: setWebhook