Добавление комментариев на сайте через Telegram и вывод комментариев с канала Telegram на сайте

Nil
11 января 2022 обновлено 1 марта 2025
 Добавление комментариев на сайте через Telegram и вывод комментариев с канала Telegram  на сайте
Говоря о комментариях на сайте через Telegram, стоит разделить и чётко обозначить, что именно мы имеем ввиду.

1. Есть возможность для сайта организовать авторизацию пользователей на сайте через Telegram.

Все видели на разных сайтах кнопки "Войти через Google", "Войти через Вконтакте" и так далее.. Теперь доступна кнопка для сайтов "Войти через Telegram". В этом случае, пользователь использует свой аккаунт в Telegram для быстрой регистрации и последующей авторизации на сайте. При нажатии на кнопку, фактически создаётся аккаунт и пользователь может делать с этим аккаунтом разные вещи, которые доступны зарегистрированному пользователю сайта - получить доступ к закрытым разделам, отправлять личные сообщения и т.д.

Это одна история. И сейчас мы будет говорить не о ней.

2. Другая история.

На сайте присутствует виджет комментариев от Telegram. Он добавляется на сайт просто - всего пару строк готового кода, которые нужно добавить в исходный код страницы.

Такой виджет позволяет пользователю Telegram только оставлять комментарии на тех страницах где присутствует виджет. Пользователь использует только свой аккаунт в Telegram, он никак не регистрируется на сайте и не проходит какую либо авторизацию на нём. Если со страницы сайта удалить виджет с комментариями, никаких следов пользователей, которые комментировали на сайте через Телеграм, не останется, при этом сами комментарии могут всё ещё присутствовать где-то в базах данных Telegram.

В этом обзоре мы будет рассматривать этот второй вариант.

И здесь снова есть разделение на два направления.

1. Первый вариант.

Она предназначена для сайтов, которые имеют свой канал в Telegram, отправляют ссылки со своими новыми статьями (через бота или вручную) на свой канал. Если в настройках канала Telegram включены комментарии (есть привязанный чат канала), администратор сайта может организовать вывод комментариев из приложения на странице, а пользователи могут добавлять новые комментарии как через приложение, так и через виджет на сайте, они будут видны и в приложении и на сайте.

Схема такая: Мы разместили на сайте статью, отправили ссылку на статью на свой канал в приложении, подписчики канала комментируют пост в приложении - комментарии выводятся на канале в мессенджере, и комментарии выводятся на соответствующей странице сайта.

Через сайт тоже можно добавить комментарий в эту ветку, он появится и на сайте и на канале, но здесь интересная особенность. Во время моих тестов этого виджета я заметил, что с сайта могу добавлять комментарии только от имени каналов Telegram, где я админ, но не могу добавить комментарий от имени своего личного аккаунта.

Чтобы добавить на сайт такие комментарии открываем страницу: https://core.telegram.org/widgets/discussion и копируем код виджета.



В коде виджета меняем имя канала на своё и НЕ указываем номер поста. Ссылка должна вести на канал, но не на конкретный пост. Если указать ссылку на конкретный пост, то виджет будет выводить комментарии только к указанному посту на всех страницах сайта.

Теперь, чтобы магия заработала и виджет смог связать посты на канале с конкретными страницами на сайте, нужно выполнить ещё одно условие.

В исходном коде сайта между тегами <head> и </head> добавьте тег:

<link rel="canonical" href="адресстраницы"/>

В параметре href="" указываем адрес текущей страницы. Если такой тег canonical уже есть в коде сайта, то, соответственно, этот шаг можно пропустить.

Ответ на вопрос - как добавить тег на все страницы сайта, во многом зависит от того, на чём построен сайт. Если сайт состоит из статичных html страниц, придётся в исходном коде каждой страницы в ручную добавлять нужный канонический адрес (тег canonical). Если сайт построен на CMS, обычно достаточно добавить тег в один файл шаблона или index.php. При этом адрес страницы обычно генерируется автоматически на уровне CMS. Независимо от того, на какой CMS построен сайт, если вы добавляете тег в файл .php выводить адрес каждой страницы автоматически можно так:

<link rel="canonical" href="https://<?php echo $_SERVER['HTTP_HOST']; ?>/<?php echo $_SERVER['REQUEST_URI']; ?>"/>

Возможно в вашей CMS имеется какая то опция для вывода канонического адреса страницы и в этом случае достаточно только включить её.

Итак, если вы выполнили эти пункты:
1) виджет вставлен на страницы, в настройках виджета указан адрес канала;
2) в мета тегах страницы присутствует тег canonical и там указан адрес текущей страницы,
можно сказать - готово!

Виджет ищет на указанном канале Telegram пост, в котором указана ссылка на текущую страницу сайта и выводит в виджете на сайте комментарии к этому посту.

Если вы не отправляли ссылку на эту страницу сайта на свой канал, вместо формы добавления комментариев данный виджет будет выводить сообщение о том, что дискуссия на этой странице пока недоступна. Владелец канала увидит предложение разместить ссылку на эту страницу на канале, чтобы активировались комментарии.



Во время тестов этого варианта была обнаружена интересная особенность. Если ссылка на страницу была размещена на телеграм-канале, а затем удалена оттуда, при повторном добавлении ссылки на канал, на сайте виджет не работает. Для каждой страницы он включается только при первом добавлении ссылки в приложение и деактивируется при удалении с канала без возможности восстановления. Возможно, в будущем это будет исправлено, но сейчас - так.

2. Второй вариант.

Можно добавить на сайт виджет комментариев Telegram который не будет связан с публикациями на телеграм-канале.

Чтобы подключить виджет нужно зайти сюда: https://comments.app/ и подключить свой сайт.

Если вы впервые используете веб-интерфейс комментариев Telegram, нужно будет авторизоваться в нём (придёт уведомление через приложение). Затем заходим в настройки сайта и берём код виджета.

Перед тем, как копировать код виджета, стоит заполнить поле PAGE ID - можно ввести туда любые символы, чтобы в коде виджета просто появился параметр PAGE ID.



Если на сайте много страниц и на все добавить виджет с одинаковым PAGE ID или не добавлять его совсем, то на всех страницах сайта виджет будет выводить один и тот же список комментариев.

Если мы хотим, чтобы под каждой статьёй на сайте шла отдельная дискуссия, нужно сделать так, чтобы на каждой странице сайта виджет имел уникальное значение параметра PAGE ID.

Как именно этого добиться зависит от сайта. Если сайт на чистом html меняйте для каждой страницы PAGE ID (любой набор латинских букв и цифр без пробелов). Если страницы вашего сайта генерируются программными средствами, на php можно сделать так:


$upid = md5($_SERVER['REQUEST_URI']);
data-page-id="<?php echo $upid; ?>"

то есть виджет будет выглядеть так:


<?php $upid = md5($_SERVER['REQUEST_URI']); ?>
<script async src="https://comments.app/js/widget.js?3" data-comments-app-website="3rp_kS4a" data-limit="5" data-page-id="<?php echo $upid; ?>"></script>

*data-comments-app-website= - здесь у вас должно быть другое своё значение не 3rp_kS4a

В этом случае в параметр PAGE id мы передаём md5 хэш полученный из адреса текущей страницы без домена. Я использовал шифрование с помощью md5 чтобы избежать возможности попадания в PAGE ID каких нибудь нежелательны символов, которые могут содержаться в адресе страницы и не подходить для PAGE ID. Символы, которые выдаёт md5() - точно подходят и id будет уникальным для каждой страницы - насколько уникальным в рамках сайта его адрес.

После этого на страницах сайта, где добавлен такой виджет появляется форма комментирования от Telegram.

Демо: Чтобы посмотреть рабочий пример этого варианта, прокрутите эту страницу вниз. Там должен присутствовать виджет с комментариями Телеграм.

Модерация комментариев. Если вы добавили на свой сайт такой виджет, не забудьте подписаться на все комментарии оставляемые на вашем сайте через Телеграм. В форме виджета комментариев, справа сверху нажмите на три точки и там нажмите на "Подписаться", потом выбирайте на все комментарии. И в самом приложении подключитесь к боту https://t.me/discussbot. Когда на вашем сайте появятся новый комментарий бот уведомит вас на какой странице и какой комментарий, вы сможете его просмотреть, удалить, заблокировать пользователя или назначить его модератором.

Как добавить комментарий на сайте при помощи аккаунта в Telegram

Итак, если на сайте имеется виджет комментариев Telegram, посетитель сайта, имеющий аккаунт в мессенджере, может добавлять комментарии не регистрируясь на сайте.

Если пользователь Telegram впервые использует данной возможностью через данный браузер, ему будет предложено авторизоваться в системе https://comments.app/ от Telegram - это не означает регистрации или авторизации на сайте, где размещён виджет, никакая чувствительная информация о пользователе не передаётся на сайт. При этом комментарий будет публичным, будет видно имя пользователя в Telegram и любой сможет открыть профиль комментатора в Telegram, кликнув по его аватару.

Если пользователь уже авторизован comments.app Telegram, он может без регистрации на сайте добавить комментарий через виджет и, если в настройках виджета оставлена такая возможность, загрузить изображение.

Если другой участник обсуждения в этой ветке обратится к пользователю, ответит на его комментарий, пользователь получит уведомление через бота в самом приложении Telegram и сможет вернуться на страницу сайта, чтобы ответить.

Администратор виджета, сайта, может модерировать комментарии, удалять нежелательные, удалять все комментарии определённого пользователя и банить пользователей, главный админ виджета на сайте, может назначать других модераторов.

Публикации по теме "разработка, мастерская вебмастера" не являются основными и даже преобладающими на этом сайте. Поэтому, возможно следующий раз будет не очень скоро. Но, если и когда будет настроение написать по данному направлению, думаю, это будет серия подсказок по созданию Telegram-бота для сайта и по теме создания PWA-приложений для сайта.

Комментарии (8)

Сурен vestilipetsk.ru
17 апреля 2024 в 02:27
Единственный человек, кто путем объяснил
Олег
1 марта 2025 в 17:59
Здравствуйте! Подскажите пожалуйста, почему у меня отображаются надписи в форме заполнения не на русском. Т.е. редактировать, удалить, написать комментарий и т.д. Как исправить?
Nil
1 марта 2025 в 19:10
Здравствуйте. Интерфейс виджета на английском. Без настроек и без авто определения языка пользователя. Если видели где-то такой виджет с русским языком, напишите подробнее, будем разбираться. Но пока, насколько я понял, он только на английском.
sinchro
18 марта 2025 в 11:54
Добрый день, а есть идеи по кастомизации iframe с комментариями? Изменить цвет бэкграунда или форму границ. В dev tools, поправляя .bc-content в https://comments.app/css/comments.css - всё хорошо работает, но как его попросить брать style.css с локального хранилища а не от себя - не понятно.
Nil
18 марта 2025 в 13:46
Не получится. Из-за ограничений Same-origin policy и из-за того, что содержимое виджета выводится в iframe окне, которое транслирует содержимое страницы расположенной на другом домене. В инспекторе кода можно видеть адрес этой страницы и даже открыть её в новой вкладке на весь экран.
Наверно можно что-то сотворить через загрузку (php file_get_contains) и обработку содержимого виджета на сервере, с последующим возвратом на страницу.

Или, не уверен, но можно посмотреть по теме js PostMessage(). Хотя если что-то и получится соорудить с помощью этого, вряд ли это будет удобная и устойчивая конструкция.

Оно того не стоит. Не знаю, возможно три года назад, когда я тестировал виджет, было ещё слишком рано, но особой пользы он не принёс, почему я его и снял. Сейчас, когда идёт постоянная информация о взломах ТГ через социальную инженерию, кмк, пользователь будет опасаться авторизовываться в тг аккаунте на сайте ради комментария, если только это не постоянное сообщество.
sinchro
18 марта 2025 в 16:09
Спасибо за ответ. И да, я согласен с вами по поводу возросших страхов за свою безопасность.
P.S. Кстати, мне кажется, вам тут не хватает возможности подписки на ответы.
Nil
18 марта 2025 в 16:38
Пока не хочется устраивать регистрацию пользователей на сайте. Для отправки уведомлений на email это необходимо, хотя бы в минимальном виде. Комментариев не так много, пока исхожу из того, что, если кому-то интересен ответ, вспомнит и заглянёт попозже. Если нет, ответ может быть полезен для остальных.
Но буду иметь ввиду. Возможно, что нибудь через специальный канал, чат или бота в тг или через пуш уведомления.
Nil
18 марта 2025 в 17:45
Проверка доставки в телеграм-чат https://t.me/unilaruchat уведомлений о новых комментариях на сайте