Боты Telegram — это специальные аккаунты, для настройки которых не требуется дополнительный номер телефона. Пользователи могут взаимодействовать с ботами двумя способами:
- Отправлять сообщения и команды ботам, открывая с ними чат или добавляя их в группы.
- Отправлять запросы прямо из поля ввода, вводя @username бота и запрос. Это позволяет отправлять контент из встроенных ботов напрямую в любой чат, группу или канал.
Сообщения, команды и запросы, отправленные пользователями, передаются скрипту, работающему на сервере бота, при этом все шифрование и связь с Telegram API обеспечивают серверы Telegram.
1. Создание бота в Telegram
Бот в Telegram создается при помощи другого бота BotFather. Создаваемому боту необходимо задать имя и логин, который должен быть уникальными, поэтому подобрать логин следует предварительно, пользуясь поиском Telegram:
1 2 3 4 5 6 7 8 9 |
/newbot Alright, a new bot. How are we going to call it? Please choose a name for your bot. ReKS.biz Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot. ReKSbizBot Done! Congratulations on your new bot. You will find it at t.me/ReKSbizBot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this. Use this token to access the HTTP API: 1234567890:ABCDEF9hijklmn0pqrstu-vwXYzDEMOb0t Keep your token secure and store it safely, it can be used by anyone to control your bot. |
Полученный токен следует сохранить для обращения к методам бота на сайте Telegram. Токен обеспечивает авторизацию без пароля, поэтому токен следует хранить строго в тайне от посторонних. В случае, если токен окажется скомпрометирован, его можно будет отозвать и заменить новым с помощью BotFather.
Назначаем картинку…
2. Связь Telegram с ботом
Активный бот получает все сообщения своего чата, групп и каналов от сервера Telegram. Для этого сервер Telegram для каждого нового сообщения выполняет веб-запрос по назначенному url, в содержании которого находится сообщение и его свойства. Назначенный для этого url называется Webhook.
Чтобы бот мог отвечать на сообщения, необходимо создать скрипт с алгоритмом анализа входящих сообщений и синтеза ответов, разместить этот скрипт в файле на своем веб-сервере, и назначить url этого файла боту.
Для назначения или отмены Webhook необходимо использовать метод setWebhook в url по шаблону, в который необходимо внести token и webhook:
1 |
https://api.telegram.org/bot<token>/setWebhook?url=<webhook> |
Выполнить это можно в браузере, например:
1 |
https://api.telegram.org/bot1234567890:ABCDEF9hijklmn0pqrstu-vwXYzDEMOb0t/setWebhook?url=https://reks.biz/scripts/reksbizbot.php |
Если быть точным, строку запроса следует подвергнуть процентному кодированию для исключения зарезервированных символов, но в большинстве случаев можно обойтись и без такого кодирования:
1 |
https://api.telegram.org/bot1234567890:ABCDEF9hijklmn0pqrstu-vwXYzDEMOb0t/setWebhook?url=https%3A%2F%2Freks.biz%2Fscripts%2Freksbizbot.php |
Результатом успешной установки Webhook методом setWebhook будет json:
1 |
{"ok":true,"result":true,"description":"Webhook was set"} |
Отмена назначенного Webhook выполняется аналогичным url, в котором необходим только token:
1 |
https://api.telegram.org/bot<token>/setWebhook |
Результатом успешной отмены Webhook методом setWebhook будет json:
1 |
{"ok":true,"result":true,"description":"Webhook was deleted"} |
Для выполнения установки webhook можно использовать php-скрипт, размещенный в файле на веб-сервере:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php define('BOT_TOKEN', '1234567890:ABCDEF9hijklmn0pqrstu-vwXYzDEMOb0t); define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/'); define('WEBHOOK_URL', 'https://reks.biz/scripts/demobot.php'); $url = API_URL.'setWebhook'.'?'.http_build_query(array('url' => WEBHOOK_URL)); $handle = curl_init($url); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($handle, CURLOPT_TIMEOUT, 60); $response = curl_exec($handle); if ($response === false) { $errno = curl_errno($handle); $error = curl_error($handle); error_log("Curl returned error $errno: $error\n"); curl_close($handle); return false; } else { $response = json_decode($response, true); echo $response['description'] } curl_close($handle); ?> |
3.
Сообщения направленные в чат бота, Сходно с тем, как пользователи получают Алгоритм бота может быть реализован любыми средствами, доступными для !!!
3. Подключение бота к каналам Telegram
Любой пользователь может начать диалог с ботом, как с другим пользователем, для этого он должен найти его по имени. Для того чтобы бот мог взаимодействовать с аудиторией канала, его нужно добавить к каналу, самостоятельно бот это сделать не может. Добавленный в канал, бот может выполнять функции администратора, для этого бота надо сделать администратором.
3. Публикация сообщений через бота
Публикация сообщений от имени бота осуществляется через API. Осуществляется это через web-запрос по url, содержащий токен бота, методом POST, тип контента: application/json:
1 |
https://api.telegram.org/bot<token>/sendMessage |
Контент должен содержать текст с json-запись, где ключ chat_id определяет значение целевого канала, а ключ text – содержание сообщения:
1 |
{"chat_id":"@имя_канала", "text":"{{EntryTitle}} {{FeedUrl}}"} |
// содержание сообщения…
4. //
//
Источники
Telegram — кроссплатформенная система мгновенного обмена сообщениями (мессенджер) //ru.wikipedia.org
Bots: An introduction for developers //core.telegram.org/bots
- Telegram Bot API is an HTTP-based interface created for developers keen //core.telegram.org/bots/api
- Hellobot: The sample PHP bot demonstrates the basics of the Telegram Bot API./ //core.telegram.org/bots/samples/hellobot
Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram //infostart.ru
Телеграм бот. Отчеты на мобильном устройстве без изменения конфигурации (Telegram bot) //infostart.ru