В большинстве инструкций по работе с телеграм-ботом не сказано про то, как получить тот самый RECIPIENT_CHAT_ID , в который надо слать сообщения из PHP.
Вот типичный пример отправки сообщения из Laravel-приложения в Телеграм:
Route::post(‘bot/sendmessage’, function() < Telegram::sendMessage([ ‘chat_id’ =>’RECIPIENT_CHAT_ID’, ‘text’ => ‘Привет, мир!’ ]); return; >);
Предположим, что наша задача — слать уведомления пользователю в телеграм, если на сайте ему ответили на комментарий. Такое уведомление нужно отправлять только конкретному пользователю, а не всем сразу.
Простой способ для привязки пользователя на сайте и чата с ботом в телеграме — использование ссылки-инвайта для добавления чат-бота. Вы даёте пользователю специальную ссылку с параметром, и когда он на неё кликает — открывается чат с ботом, бот получает инструкцию «начать работу» и отправляет информацию на сервер вместе с тем самым параметром из ссылки, а также CHAT_ID . По этому параметру вы находите в своей базе пользователя и назначаете ему CHAT_ID .
Показываем пользователю на сайте ссылку:
https://telegram.me/arutyunov_bot?start=asd123
Когда пользователь перейдёт по ссылке, у него откроется чат 1-на-1 с ботом. Как только пользователь нажмёт кнопку Start, бот получит сообщение вида:
/start PAYLOAD
Вместо PAYLOAD и будет тот самый токен. В нашем примере это asd123 . Теперь вам нужно обработать это сообщение на своём сервере.
Вот пример для обработчика, который привязан к Webhook:
if ($message->getText()) < if (strpos(‘/start’, $message->getText()) !== false) < $textStrings = explode(‘ ‘, $message->getText()); if (isset($textStrings[1])) < $token = $textStrings[1]; $chatId = $message->getChat()->getId(); if ($token) < $user = User::find([‘telegram_token’ =>$token]); if ($user !== null) < $user->telegram_chat_id = $chatId; return response()->json([‘status’ => $user->save()]); > > > > >
В официальной документации Телеграм есть описание этого механизма, который называется Deep linking .
В телеграме каждый чат имеет свой уникальный CHAT_ID . Обратите внимание, что чат с ботом будет иметь числовой CHAT_ID больше 0, а если вы добавили бота в группу, то CHAT_ID будет отрицательный.
Источник: arutyunov.me
Как написать в ТГ по Айди
Возникает необходимость связаться с пользователем в Telegram, используя его ID? Не беда! В этой статье мы расскажем, как написать сообщение пользователю в Telegram веб- или десктоп-версии, исходя из его ID. Мы поделимся несколькими методами и пошаговой инструкцией для выполнения данной задачи.
- Зачем нужно знать ID пользователя в Telegram
- Как найти ID пользователя в Telegram
- Значение ID пользователя в Telegram
- Как указать свой Telegram ID
- Полезные советы и выводы
Зачем нужно знать ID пользователя в Telegram
Информация об ID пользователя необходима для настройки ботов, которые взаимодействуют с пользователями или группами чатов в Telegram. При использовании Telegram API для отправки сообщений боту потребуется знать ID чата, в который он будет писать. Это важно для обеспечения корректной работы и связи с конкретными пользователями.
Как найти ID пользователя в Telegram
Существует несколько способов найти ID пользователя в Telegram. Рассмотрим один из них:
- Откройте диалог с пользователем, ID которого вы хотите узнать.
- Нажмите на значок «Прикрепить» (иконка в виде скрепки) в правом верхнем углу окна чата.
- В появившемся меню выберите опцию «TestAttachment» (или аналогичную).
- Прокрутите вниз до конца страницы, где появится JSON-объект с данными, включая ID пользователя.
Значение ID пользователя в Telegram
Айди пользователя в Telegram — это уникальный номер, присваиваемый аккаунту при его создании и сохраняемый в системе даже при изменении номера телефона, никнейма или аватара. Таким образом, по ID пользователя всегда можно идентифицировать аккаунт в Telegram.
Как указать свой Telegram ID
Если вы хотите указать свой Telegram ID, чтобы другие пользователи могли использовать его для связи с вами, выполните следующие шаги:
- Откройте меню Telegram и перейдите в настройки (Settings).
- Выберите пункт «Изменить профиль» (Edit Profile).
- Нажмите на ваше имя пользователя.
- В открывшемся окне редактирования профиля вы найдете готовую ссылку на ваш профиль.
- Нажмите на ссылку, чтобы скопировать ее в буфер обмена.
- Теперь вы можете вставить эту ссылку и поделиться ею с другими пользователями.
Полезные советы и выводы
- Используйте Telegram ID для настройки и работы с ботами, связанными с пользователями и чатами в Telegram.
- При необходимости узнать ID пользователя в Telegram, используйте описанный выше метод.
- Telegram ID является уникальным номером аккаунта, который не меняется при изменении других данных профиля.
- Указывайте свой Telegram ID в профиле, чтобы другие пользователи могли связываться с вами.
Надеемся, что эта статья помогла вам разобраться, как написать в Telegram по ID пользователя. Вы можете использовать данную информацию для связи с вашими контактами или для настройки ботов в Telegram.
Как узнать ник в телеграмме по ID
Если вы хотите написать пользователю в Telegram, используя его ID, есть несколько вариантов.
Также можно воспользоваться ссылкой вида https://t.me/username, где username — это имя пользователя или его ID.
Если вы пользуетесь десктопной версией Telegram, откройте приложение и введите в поисковую строку ID пользователя. Выберите его из списка результатов поиска и нажмите кнопку «Написать сообщение».
Учтите, что для того, чтобы написать сообщение пользователю, вы должны знать его ID или имя пользователя.
- Как настроить безопасность в Телеграм
- Как запретить скачивание файлов в телеграмме
Источник: telegramy.ru
Бот Телеграм на PHP
Примеры как зарегистрировать бота в Telegram, описание и взаимодействие с основными методами API. Документация на core.telegram.org и tlgrm.ru (неофициальный, на русском).
Все запросы к API должны осуществляться по HTTPS, подойдет бесплатный сертификат «Let’s Encrypt».
Регистрация бота
Следующим сообщением отправляем название для бота, обязательно на конце имени должно быть слово «bot» или «_bot». Ответным сообщением получим токен:
Тут же можно настроить описание и аватарку:
/setname | Имя |
/setdescription | Краткое описание |
/setabouttext | Описание бота |
/setuserpic | Юзерпик |
Далее нужно поставить «Webhook» чтобы все сообщения из Telegram приходили на PHP скрипт ( https://example.com/bot.php ). Для этого нужно пройти по ссылке в которой подставлены полученный токен и адрес скрипта. https://api.telegram.org/bot /setWebhook?url= https://example.com/bot.php
В ответе будет
При смене токена, установку вебхука нужно повторить.
Входящие сообщения
Сообщения приходят POST-запросом, с типом application/json . Получить его в PHP можно следующим образом:
$data = file_get_contents(‘php://input’); $data = json_decode($data, true);
Чтобы посмотреть входящие данные, их придется дампить в файл:
file_put_contents(__DIR__ . ‘/message.txt’, print_r($data, true));
Текстовое сообщение
Запрос от Телеграм:
Array ( [update_id] => 17584194 [message] => Array ( [message_id] => 26 [from] => Array ( [id] => 123456789 [is_bot] => [first_name] => UserName [language_code] => ru-US ) [chat] => Array ( [id] => 123456789 [first_name] => UserName [type] => private ) [date] => 1541888068 [text] => Привет бот! ) )
Получим текст сообщения:
if (!empty($data[‘message’][‘text’]))
Фотографии
При отправки фото боту, на скрипт приходит массив превьюшек, последним элементом будет оригинальное фото. Максимальный размер файла 20МБ.
Запрос от Телеграм:
Array ( [update_id] => 17584194 [message] => Array ( [message_id] => 38 [from] => Array ( [id] => 123456789 [is_bot] => [first_name] => UserName [language_code] => ru-US ) [chat] => Array ( [id] => 123456789 [first_name] => UserName [type] => private ) [date] => 1541924962 [photo] => Array ( [0] => Array ( [file_id] => AgADAgADUqexG7u8OEudBvlhgMzKC1agOQ8ABC6Bx26USA7Mw3gAAgI [file_size] => 1196 [width] => 51 [height] => 90 ) [1] => Array ( [file_id] => AgttAgADUqoxG7u8OEudBvlhgMzKC1agOQ8ABKwp_3jDPrIlxHgAAgI [file_size] => 21146 [width] => 180 [height] => 320 ) [2] => Array ( [file_id] => AgADAgADUqyxG7u8OEudBvlhgMzKC1agOQ8ABAN8gJWpUT1MxXgAAgI [file_size] => 90940 [width] => 449 [height] => 800 ) [3] => Array ( [file_id] => AgADAgADUqouu7u8OEudBvlhgMzKC1agOQ8ABIqVC1nEpbLDwngAAgI [file_size] => 114363 [width] => 719 [height] => 1280 ) ) ) )
Чтобы скачать файл нужно отправить POST или GET запрос на получение c параметром file_id изображения по URL: https://api.telegram.org/bot /getFile В ответ придет информация о файле:
Array ( [ok] => 1 [result] => Array ( [file_id] => AgADAgADUqoxG5u88E0dBvlhgMzKC1agOQ8ABIqVC1nEpbLDwngAAgI [file_size] => 114363 [file_path] => photos/file_1.jpg ) )
Далее его можно скачать по ссылке: https://api.telegram.org/file/bot / В PHP сохранение файла на сервер можно реализовать следующим образом:
$token = ‘123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11’; if (!empty($data[‘message’][‘photo’])) < $photo = array_pop($data[‘message’][‘photo’]); $ch = curl_init(‘https://api.telegram.org/bot’ . $token . ‘/getFile’); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, array(‘file_id’ =>$photo[‘file_id’])); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); $res = curl_exec($ch); curl_close($ch); $res = json_decode($res, true); if ($res[‘ok’]) < $src = ‘https://api.telegram.org/file/bot’ . $token . ‘/’ . $res[‘result’][‘file_path’]; $dest = __DIR__ . ‘/’ . time() . ‘-‘ . basename($src); copy($src, $dest); >>
Документ
Запрос от Телеграм:
Array ( [update_id] => 17474201 [message] => Array ( [message_id] => 44 [from] => Array ( [id] => 123456789 [is_bot] => [first_name] => UserName [language_code] => ru-US ) [chat] => Array ( [id] => 123456789 [first_name] => UserName [type] => private ) [date] => 1541925844 [document] => Array ( [file_name] => IMG_7947.JPG [mime_type] => image/jpeg [thumb] => Array ( [file_id] => AAQCABMNv_QOAATwQugveIZBldZ3AAIC [file_size] => 2644 [width] => 67 [height] => 90 ) [file_id] => BQADAgADtQEAAqu9OEhzn2cEz8LpkgI [file_size] => 1976218 ) ) )
Скачивание файлов происходит по такой же схеме как у фотографий.
if (!empty($data[‘message’][‘document’])) < $file_id = $data[‘message’][‘document’][‘file_id’]; $ch = curl_init(‘https://api.telegram.org/bot’ . $token . ‘/getFile’); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, array(‘file_id’ =>$file_id)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); $res = curl_exec($ch); curl_close($ch); $res = json_decode($res, true); if ($res[‘ok’]) < $src = ‘https://api.telegram.org/file/bot’ . $token . ‘/’ . $res[‘result’][‘file_path’]; $dest = __DIR__ . ‘/’ . time() . ‘-‘ . basename($src); copy($src, $dest); >>
Ответы бота
Отправка текста
$response = array( ‘chat_id’ => $data[‘message’][‘chat’][‘id’], ‘text’ => ‘Хай!’ ); $ch = curl_init(‘https://api.telegram.org/bot’ . $token . ‘/sendMessage’); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $response); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_exec($ch); curl_close($ch);
Отправка картинки
$response = array( ‘chat_id’ => $data[‘message’][‘chat’][‘id’], ‘photo’ => curl_file_create(__DIR__ . ‘/image.png’) ); $ch = curl_init(‘https://api.telegram.org/bot’ . $token . ‘/sendPhoto’); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $response); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_exec($ch); curl_close($ch);
Отправка файла
Пример скрипта
Источник: snipp.ru