Как сделать уведомления в телеграмм при входе на сайт?

Ссылка скопирована
1 ответ

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

const xhr = new XMLHttpRequest();  xhr.open('GET', 'https://api.ipify.org?format=json', true);  xhr.onreadystatechange = function () {  if (this.readyState === 4 && this.status === 200) {  var response = JSON.parse(this.responseText);  var ip = response.ip;  var text = `New visit to site!nIP Adress: ${ip}`  xhr.open('GET', `https://api.telegram.org/bot${token}/sendMessage?chat_id=${admin}&parse_mode=html&text=${text}`) xhr.send();  } };

const xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.ipify.org?format=json', true); xhr.onreadystatechange = function () { if (this.readyState === 4 && this.status === 200) { var response = JSON.parse(this.responseText); var ip = response.ip; var text = `New visit to site!nIP Adress: ${ip}` xhr.open('GET', `https://api.telegram.org/bot${token}/sendMessage?chat_id=${admin}&parse_mode=html&text=${text}`) xhr.send(); } };

Дополнительно:

Так а в чем вопрос?

  • Saboteur, тут скорее не вопрос, а проблема в том, что часть кода не работает :(
    В консоли ошибок тоже нет, вот надеюсь на помощь
  • Возможно следует почитать доку к телеграм АПИ.
    Например попробовать выполнить POST а не GET
  • Пробовал и через GET и через POST запросы прокидывать, не работает.
    Если же запрос просто вставить в адресную строку, то сообщение придет (смотрел для теста)
  • Semen_Miroslavv, Saboteur, а ещё лучше - вытащить вызов xhr.send() из обработчика ОТВЕТА на запрос. Ну и разумеется после xhr.open(...https://api.telegram.org/bot...) должен быть свой xhr.send().
  • AUser0, Доброго времени суток, суть вашего ответа понятна, но не особо доходит как это можно привести в действие, буду признателен если поможете.
  • <script> const xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.ipify.org?format=json', true); xhr.onreadystatechange = function () {   if (this.readyState === 4 && this.status === 200) {     var response = JSON.parse(this.responseText);     var ip = response.ip;     var text = `New visit to site!nIP Adress: ${ip}`     xhr.open('GET', `https://api.telegram.org/bot${token}/sendMessage?chat_id=${admin}&parse_mode=html&text=${text}`)     xhr.send();   } }; xhr.send(); </script>

    <script> const xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.ipify.org?format=json', true); xhr.onreadystatechange = function () { if (this.readyState === 4 && this.status === 200) { var response = JSON.parse(this.responseText); var ip = response.ip; var text = `New visit to site!nIP Adress: ${ip}` xhr.open('GET', `https://api.telegram.org/bot${token}/sendMessage?chat_id=${admin}&parse_mode=html&text=${text}`) xhr.send(); } }; xhr.send(); </script>

    Вот как-то так.

    Ещё момент, переменные ${token} и ${admin} вы собираетесь отправлять в браузер пользователя? И тогда любой пользователь, увидивший этот скрипт на странице, сможет слать на Телеграмовский аккаунт любые сообщения (в особенности спам)? Ню-ню, удачи......

  • AUser0, Благодарю за помощь, действительно работает.
    Меня терзают сомнения что пользователи увидевшие этот скрипт, найдут ему применение, ну или возможно когда буду выкладывать на прод, придумаю что-нибудь :p

    Ещё столкнулся с ошибкой что верный адрес оно выдает. но при этом дальше начинает флудить месседжами New visit to site!IP Adress: undefined

  • Значит в response.ip отсутствует IP-адрес. Делайте отправку себе полного содержимого this.responseText, смотрите, что там.
  • Да не суйте вы запрос к API телеграм в клиент!!! Ну не все пользователи не понимают, что творится под капотом вашего сайта.
    Запрос лучше всего отправлять через язык сервера. На сайте должны быть запросы только те, которые без обидны и не смогут навредить.
    А у вас что?

    Меня терзают сомнения что пользователи увидевшие этот скрипт, найдут ему применение, ну или возможно когда буду выкладывать на прод, придумаю что-нибудь :p

    Вот именно.
    У вас явно вот он бот, вот токен, вот чат. Сыпь ему рекламу или ещё того хуже...

  • А потом на ваш сайт придут поисковые боты и ваш телеграм порвётся от количества сообщений в секунду.
  • Сергей Горностаев, скорее Телеграм забанит, у них это есть.
  • Semen_Miroslavv, Им не ваш скрипт нужен, а логин к вашему телеграм боту, от имени которого пойдет спам.

    Ни в коем случае нельзя делать такое на стороне клиента. На стороне бэкенда отправляйте уведомление

  • Ответы:

    У вас подход изначально неправильный.

    1. Ни в коем случае нельзя ключи от API в открытом виде размещать на своем сайте

    2. За отправку уведомлений должен отвечать тот же скрипт, который отдает html-страницу

    3. В случае с php просто делаете запрос на API телеги используя CURL, примеров в сети полно

    https://vk-book.ru/otpravka-soobshhenij-v-telegram...

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Игорь Волков Ответ

    Для того чтобы настроить уведомления в Telegram при входе на сайт, можно воспользоваться следующими шагами:

    1. Создать бота в Telegram и получить уникальный API ключ для доступа к боту.
    2. Настроить веб-сервер для отправки запросов к API Telegram.
    3. Написать скрипт на языке программирования, который будет отправлять уведомления в Telegram.
    4. Интегрировать этот скрипт в процесс аутентификации на вашем сайте.

    Пример кода на PHP для отправки уведомления в Telegram:

     

    Замените `YOUR_TELEGRAM_BOT_TOKEN` на ваш уникальный API ключ бота и `YOUR_TELEGRAM_CHAT_ID` на ID вашего чата в Telegram. После этого при каждом успешном входе на сайт будет отправляться уведомление в ваш чат в Telegram.

    Это лишь пример решения задачи. Не забудьте учесть безопасность и возможные ограничения Telegram API при использовании данного метода.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно