Как отправлять сообщения с сайта в телеграм с помощью php

7911

В этой статье рассмотрим, как отправлять сообщения с сайта в телеграм из формы связи. Для примера я возьму форму из предыдущей статьи Форма обратной связи на php и после нехитрых манипуляций она сможет передавать сообщения и данные в мессенджер telegram.

Форма состоит из двух файлов: index.php с html разметкой, и обработчика telegram.php, который отправляет письмо с данными на почту и в telegram.

1

Создайте в корне сайта файл index.php c таким содержимым, или поместите html - разметку формы на страницу вашего сайта:

<form action="telegram.php" method="POST">
<input id="email" name="email" required="" type="email" placeholder="Ваш эл. адрес">
<textarea id="text" name="text" placeholder="Текст сообщения"></textarea>
<button class="send" type="submit">Отправить</button>
</form>
2

Для передачи данных из формы в телеграм нам нужны token телеграм и id чата, куда будут приходить сообщения.
Чтобы получить токен, необходимо создать бота. Для этого найдите в мессенджере @BotFather, нажмите внизу слева на кнопку "меню" и выберите команду /newbot.

Далее задайте боту имя (например mynewbot), и никнейм. Никнейм должен быть уникальным а так же обязательно оканчиваться на bot. Например, coderistu_bot. Если имя для бота уже занято, то вы увидите такое сообщение: Sorry, this username is already taken. Please try something different. Если имя не занято, то придет сообщение об успешной регистрации бота, где будет указан его токен.

Далее нужно узнать ваш chat_id, для чего находим в телеграм бота @getmyid_bot  и выбираем в меню  команду /start, после чего придет сообщение с вашим chat_id.

Отправка сообщений в телеграм из формы связи

3

В этой же директории на сервере, где лежит файл index.php нужно создать файл - обработчик формы telegram.php в котором прописываются полученные ранее токен telegram и chat_id.

<?php header('Content-type: text/html; charset=utf-8'); // задаем кодировку
if (!empty($_POST['email']) && (!empty($_POST['text']))) { //проверяем поля на пустоту
$to = "ваша почта" ; // куда отправляем письмо
$mail = 'Почта: '.$_POST['email']; // получаем данные из формы
$text='Сообщение:' .$_POST['text']; // получаем данные из формы
$message=$mail."\r\n". htmlentities($text); // формируем сообщение
$subject = "Письмо с сайта"; // тема письма
mail($to, $subject, $message); // отправка письма
$token='ваш_токен'; // ваш токен телеграм
$chat_id='ваш id'; // ваш id телеграм
if (isset ($token) && ($chat_id)) {
$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text=$mail%0A$text","r"); // отправка данных c формы в телеграм
}
echo "Письмо отправлено!"; // сообщение при отправке
} else {
echo "Заполните все поля"; // сообщение при ошибке
}
?>
<script type="text/javascript">
setInterval(function(){ document.location.replace("index.php"); }, 3000);
</script>

Как сделать перенос строки в telegram?

Т. к. телеграм не воспринимает php символы для переноса строки (\r\n, PHP_EOL и пр.), то для решения этой проблемы необходимо использовать символ %0A.



php

Комментарии

    Андрей

    (07.08.2022 - 01:37)

    Спасибо, все получилось. Давно хотел настроить передачу заявок с сайта в телеграм. Оказалось проще, чем я думал.

    Felix

    (26.08.2023 - 02:04)

    Самая лучшая статья, ебался с лид формами без знаний в коддинге. С первого раза все заработало в отличии от других скриптов.

Добавить комментарий

Ваш адрес email не будет опубликован.

*
code