- 17, Oct 2024
- #1
Добавляет возможность авторизоваться через Telegram Login Widget
Поднимаем свой прокси-сервер
Добавляет возможность авторизоваться через Telegram Login Widget. Из-за особенностей работы последнего, вместо моментального редиректа на Telegram, происходит открытие страницы с предложением нажать на кнопку авторизации.
P.S.: Т.к. провайдеры блокируют доступ к серверам Telegram, скорее всего, кнопка авторизации Telegram не будет видна без VPN/прокси. Для них предусмотрен вариант перехода в клиент Telegram.
Подробный разбор установки 2.х
С 1.х многое поменялось. Что-то стало проще, что-то - сложнее. Мне показалось, что будет разумнее написать один большой пост про установку и ссылаться, в случае чего, на него. Ну и ссылку на него в описание впилить...
В этом "подробном" разборе будет опущена процедура скачивания архива, его распаковки и загрузки на удалённый сервер посредством любого протокола (FTP / SFTP / WebDav) с последующим нажатием кнопки Установить в админке. Это такие банальные вещи, которые надо уже уметь делать без явных уточнений, что и как.
Готово. Можно проверить, всё ли работает. Хоть из админки.
Если выбран Direct способ, и бот Вам ничем не отвечает (читай: не работает) после установки веб-хуков (если Cron - нужно время, чтобы задача сработала), есть два возможных корня проблемы:
Вот и вся настройка. Всё не так сложно, как кажется.
По мере необходимости, пост буду дополнять.
Скрытая информация :: Авторизуйтесь для просмотра »
#[Telegram] Core
Поднимаем свой прокси-сервер
Добавляет возможность авторизоваться через Telegram Login Widget. Из-за особенностей работы последнего, вместо моментального редиректа на Telegram, происходит открытие страницы с предложением нажать на кнопку авторизации.
P.S.: Т.к. провайдеры блокируют доступ к серверам Telegram, скорее всего, кнопка авторизации Telegram не будет видна без VPN/прокси. Для них предусмотрен вариант перехода в клиент Telegram.
Подробный разбор установки 2.х
С 1.х многое поменялось. Что-то стало проще, что-то - сложнее. Мне показалось, что будет разумнее написать один большой пост про установку и ссылаться, в случае чего, на него. Ну и ссылку на него в описание впилить...
В этом "подробном" разборе будет опущена процедура скачивания архива, его распаковки и загрузки на удалённый сервер посредством любого протокола (FTP / SFTP / WebDav) с последующим нажатием кнопки Установить в админке. Это такие банальные вещи, которые надо уже уметь делать без явных уточнений, что и как.
- Переходим в Telegram и через поиск находим "отца ботов" (@BotFather).
- В диалоге с ним нажимаем Start.
- В ответ, отец напишет Вам, что он помогает с созданием и управление ботами в Telegram, и выведет перечень всех команд, которые он для этого знает. Нас интересует /newbot. Нажимаем на неё прямо в сообщении.
Трюк с нажатием на команду в тексте сообщения точно работает в официальных клиентах. Если у Вас - неофициальный, наберите/скопируйте её руками и отправьте в чат как обычно.
В ответ последовательно сообщаем отцу имя нашего бота и его имя пользователя.
- В ответ, отец пришлёт нам токен бота. На скриншоте ниже, его местоположение будет выделено красной рамочкой.
Обратите внимание на предостережение отца ботов касательно токена. Никому его [токен] не показывайте! Это важно!
- Для возможности использовать авторизацию через Telegram, нам так же нужно сообщить отцу ботов, на каком домене располагается наш сайт. Для этого, мы либо листаем в диалоге выше, находим команду /setdomain и нажимаем левой кнопкой мыши по ней, либо вводим её вручную в чате.
В вылезшей клавиатуре выбираем нашего бота и отправляем в ответ чисто домен (без протокола; пример ниже).
Клавиатура может вылезть, а может и не вылезть.
Своего первого бота я делал в 2016 году, и с тех пор утекло много воды. Всех деталей я не помню.
Но, на данный момент, на моём аккаунте приличное кол-во аккаунтов ботов (не менее 10 штук), и я всегда вижу эту клавиатуру. Вылезает ли она, когда бот один - я, соответственно, не помню.
- На этом наши приготовления бота завершены. Если необходимо - можете так же через отца задать аватарку (/setuserpic) или изменить имя (/setname). Изменить тег бота не представляется возможным на данный момент. Если Вы на этом этапе резко осознали, что выбрали плохой тег боту - самое время удалить бота (/deletebot) и сделать его с нуля.
- Переходим на форум и заходим в панель администратора (/admin.php). В меню сбоку заходим в Setup → Service providers → Connected accounts, в списке находим Telegram и нажимаем левой кнопкой мыши по нему.
- В отличие от 1.х, где нам нужно было ввести и имя бота в определенном формате (без символа собаки) и токен, в 2.х теперь нужен только токен. Его и заполняем, выбираем способ авторизации и нажимаем Save.
Если при сохранении вылезает ошибка, а токен верный (и без пробелов в начале или в конце)...
Похоже, Ваш хостинг-провайдер чтит законы РФ и блокирует доступ к Telegram. Поздравляем.
На эти случаи, аддон имеет возможность настройки прокси-сервера. Она локальная и распространяется только на запросы к Telegram API.
В Setup → Options находим Telegram (/admin.php?options/groups/smodders_telegram/). Там будет опция Proxy connection string. В неё нам нужно ввести адрес прокси-сервера в определённой URL-схеме (для тех, кому нужны подробности - на странице настроек, прямо в описании данного пункта есть ссылочка).
Пара моих прокси, сделанных как раз на такие случаи (сразу в формате, который принимает аддон):
- socks5h://telegram
:[email protected]
:61555
- socks5h://telegram
:[email protected]
:25
- socks5h://telegram
:[email protected]
:2525
- socks5h://telegram
:[email protected]
:1080
Тут можно напороться снова на хостинг-провайдера, который блокирует запросы к неизвестным портам.
Чтож, тут можно написать в техническую поддержку с просьбой открыть исходящие TCP-соединения на порт выбранного прокси-сервера.
Свои сервера я стараюсь держать в максимальном аптайме, но иногда что-то идёт не по плану. О таких проблемах, когда хостинг-провайдер точно не причём (и даже клиент Telegram отказывается работать) можно сообщать мне напрямую в ЛС.
- socks5h://telegram
- В настройках аддона (Setup → Options находим Telegram (/admin.php?options/groups/smodders_telegram/)) включаем веб-хуки в идеале для того, чтобы все выполняемые действия с ботом (новые сообщения, например, к нему от кого-то; нужно если выбрали Direct способ авторизации) приходили на наш сервер самостоятельно.
Если Вы до сих пор сидите без HTTPS, можете даже не пробовать включать веб-хуки.
Telegram без HTTPS присылать веб-хуки откажется, и единственно верным решением для Вашей ситуации будет лонг-поллинг (крон-задача), но тут надо понимать, что по-умолчанию, cron-задачи обрабатываются XF только когда кто-то заходит на сайт, потому задумайтесь об установке хотя бы Lets Encrypt сертификата.
Готово. Можно проверить, всё ли работает. Хоть из админки.
Если выбран Direct способ, и бот Вам ничем не отвечает (читай: не работает) после установки веб-хуков (если Cron - нужно время, чтобы задача сработала), есть два возможных корня проблемы:
- Хостинг-провайдер чтит законы, и блокирует входящие запросы от Telegram.
Честно, редко такое вижу (на ру-хостах, да), но оно есть. На такие случаи реализован "финт ушами" в виде проксирования веб-хуков.
На GitHub опубликован скрипт
, который все входящие POST-запросы с типом application/json "реплицирует" на полученный в GET-параметрах адрес. Такой простой, но действенный "финт ушами".
Я его тоже захостил. Кому необходимо - значение для настройки https://one.oracle.kruzya.me/telegramWebHookProxy.php?_target=
{webHook}
- "Анти-ддос" сервисы (привет, CloudFlare).
Решается добавлением IP-адресов Telegram в белый список на файрволе. Подсети IP-адресов, откуда приходят веб-хуки, опубликованы на сайте Telegram
, но если Вам мешает РКН - 149.154.160.0/20 и 91.108.4.0/22 (актуально на 16.11.2019).
Вот и вся настройка. Всё не так сложно, как кажется.
По мере необходимости, пост буду дополнять.
Скрытая информация :: Авторизуйтесь для просмотра »
#[Telegram] Core