Как получить пользователя chat_id в Telegram bot API? В документации говорится:
Целое | Уникальный идентификатор получателя сообщения — идентификатор пользователя или группового чата.
Ameer Mousavi 26 Июн 2015 в 20:16
8 ответов
Лучший ответ
Обновления сообщений, которые вы получаете через getUpdates или ваш веб-перехватчик, будут содержать идентификатор чата для конкретного сообщения. Он будет содержаться под ключом message.chat.id .
Кажется, это единственный способ получить идентификатор чата. Поэтому, если вы хотите написать что-то, где бот инициирует разговор, вам, вероятно, придется сохранить идентификатор чата по отношению к пользователю в каком-то хранилище ключей-> значений, таком как MemCache или Redis.
Я считаю, что их документация предлагает нечто подобное здесь, https://core.telegram.org/bots#deep-linking-example. Вы можете использовать внешние ссылки , чтобы начать беседу, не требуя от пользователя ввода сообщения.
Chris Brand 26 Июн 2015 в 20:50
Используя Perl API, вы можете получить это следующим образом: сначала вы отправляете сообщение боту из Telegram, затем запускаете getUpdates, и там должен быть идентификатор чата:
топойвый бот всем советую просто в тг пишете бот на голду стандофф 2 и первое будет оно
#!/usr/bin/perl use Data::Dumper; use WWW::Telegram::BotAPI; my $TOKEN = ‘blablabla’; my $api = WWW::Telegram::BotAPI->new ( token => $TOKEN ) or die «I can’t connect»; my $out = $api->api_request (‘getUpdates’); warn Dumper($out); my $chat_id = $out->->[0]->->->; print «chat_id=$chat_idn»;
Идентификатор должен быть в chat_id , но это может зависеть от результата, поэтому я также добавил дамп всего результата.
Вы можете установить Perl API со страницы https://github.com/Robertof/perl-www- телеграмма-ботапи. Это зависит от вашей системы, но я легко установил это на моем сервере Linux:
$ sudo cpan WWW::Telegram::BotAPI
Источник: question-it.com
О Дзене
Дзен — платформа для просмотра и создания контента . Вы всегда найдёте здесь то, что подходит именно вам: сотни тысяч авторов ежедневно делятся постами, статьями, видео и короткими роликами. А умные алгоритмы подстраивают ленту под ваши интересы
Вы всегда найдёте здесь то, что подходит именно вам: сотни тысяч авторов ежедневно делятся постами, статьями, видео и короткими роликами. А умные алгоритмы подстраивают ленту под ваши интересы
Ролики Видео Статьи Посты
Ролики Видео Статьи Посты
Короткие вертикальные ролики длиной до 2 минут. Рекомендуются в основной ленте Дзена и показываются в полноэкранном формате: так люди больше вовлекаются в происходящее.
5 минут или час, горизонтальное, вертикальное или квадратное — в Дзене есть все форматы видео. Важное преимущество — их можно смотреть прямо в ленте.
Если вы хорошо разбираетесь в какой-то теме и любите писать — выбирайте формат статьи. Платформа даёт возможность её красиво сверстать и добавить разные иллюстрации — фото и видео.
Небольшая публикация, которую полностью видно в ленте. Объем поста — 4096 знаков с картинками не больше 10 штук.
Короткие вертикальные ролики длиной до 2 минут. Рекомендуются в основной ленте Дзена и показываются в полноэкранном формате: так люди больше вовлекаются в происходящее.
5 минут или час, горизонтальное, вертикальное или квадратное — в Дзене есть все форматы видео. Важное преимущество — их можно смотреть прямо в ленте.
Если вы хорошо разбираетесь в какой-то теме и любите писать — выбирайте формат статьи. Платформа даёт возможность её красиво сверстать и добавить разные иллюстрации — фото и видео.
Небольшая публикация, которую полностью видно в ленте. Объем поста — 4096 знаков с картинками не больше 10 штук.
Где увидят ваш канал
Ваш канал покажут на главной странице и в приложении Дзена
Зарабатывайте на своём творчестве
Если у вас оригинальный контент и активная аудитория, вы cможете зарабатывать в Дзене. А с ростом популярности рекламодатели начнут обращаться к вам напрямую
Уже в Дзене
Галина Юзефович
Соня Гельд
Кирилл Колесников
Лия в силе
Славный Друже Oblomoff
Ирина Мягкова
Матвей Алексеевич
ДМИТРИЙ НОРОК | FIT FOR LIFE
БО.big
Детство с Олей
МАТЕМАТИКА С БУЛАТОВЫМ
Тамара Эйдельман
Москва глазами инженера
Дима Ермузевич
Илья Варламов
Дзен — это просто
Убедитесь в этом сами, посмотрев наглядные видеоинструкции от кураторов Дзена. Если останутся вопросы, пишите — и наша служба поддержки поможет во всём разобраться
Ответы на вопросы о Дзене
Как мне набрать подписчиков?
Качественно и регулярно ведите свой канал: делайте репосты, отмечайте других авторов и активно общайтесь с подписчиками в комментариях — это залог успеха.
Также не забывайте рассказывать о вашем канале в Дзене в других социальных сетях.
Тут мы подготовили удобные материалы для этого.
Как работает монетизация?
Авторы Дзена будут получать выплаты за время, которое пользователи проводят за просмотром или чтением их контента. Когда у вашего канала наберется 30 часов просмотра контента от подписчиков за последние 30 дней, вы сможете подключить монетизацию. Чем дольше пользователи будут смотреть видео и читать статьи автора, тем больше он заработает. Подробнее о монетизации в Дзене тут.
Как зарабатывать на нативной рекламе?
Обычно рекламодатели приходят к авторам с активными подписчиками и качественным контентом. Работайте над этим, и вы обязательно получите свой первый гонорар.
Подробнее про нативную рекламу читайте в нашем гайде.
Сколько каналов я могу завести?
Сколько угодно. Единственное, что придется сделать — завести новый аккаунт в Яндексе или VK ID, чтобы создать новый канал.
Могу ли я вести канал в соавторстве?
Канал в Дзене можно вести совместно с другими пользователями — для этого владелец канала должен предоставить им доступ. Как это сделать, можно прочитать по ссылке.
Как публиковать контент в Дзене?
Дзен — это мультиформатная платформа. Статьи, посты, длинные видео и короткие ролики до 2-х минут можно публиковать с компьютера или смартфона. Подробнее о том, как работать с каждым форматом, можно почитать по ссылке.
Источник: dzen.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