0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>20 мар 2025</li>
2
<ul><li>20 мар 2025</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Управляем телеграм-ботами без сторонних библиотек.</p>
4
</ul><p>Управляем телеграм-ботами без сторонних библиотек.</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6
<p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
6
<p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
7
<p>Обычно для разработки телеграм-ботов программисты используют специальные библиотеки и фреймворки, например Aiogram или Telegraf. Они ускоряют разработку и делают код компактным, однако их авторы не всегда успевают вовремя добавлять поддержку новых функций Telegram.</p>
7
<p>Обычно для разработки телеграм-ботов программисты используют специальные библиотеки и фреймворки, например Aiogram или Telegraf. Они ускоряют разработку и делают код компактным, однако их авторы не всегда успевают вовремя добавлять поддержку новых функций Telegram.</p>
8
<p>Альтернативное решение - Bot API. Это нативный интерфейс от создателей мессенджера, который лежит в основе всех ботов и библиотек. В этой статье рассказываем, для чего нужен Telegram Bot API и как им пользоваться.</p>
8
<p>Альтернативное решение - Bot API. Это нативный интерфейс от создателей мессенджера, который лежит в основе всех ботов и библиотек. В этой статье рассказываем, для чего нужен Telegram Bot API и как им пользоваться.</p>
9
<p><strong>Эксперт</strong></p>
9
<p><strong>Эксперт</strong></p>
10
<p>Principal Software Engineer, эксперт Skillbox по бэкенду и Java в коммерческой разработке.</p>
10
<p>Principal Software Engineer, эксперт Skillbox по бэкенду и Java в коммерческой разработке.</p>
11
<p><strong>Содержание</strong></p>
11
<p><strong>Содержание</strong></p>
12
<ul><li><a>Что такое Telegram Bot API</a></li>
12
<ul><li><a>Что такое Telegram Bot API</a></li>
13
<li><a>Какие API есть в Telegram</a></li>
13
<li><a>Какие API есть в Telegram</a></li>
14
<li><a>Как создать бота в Telegram</a></li>
14
<li><a>Как создать бота в Telegram</a></li>
15
<li><a>Ограничения ботов</a></li>
15
<li><a>Ограничения ботов</a></li>
16
<li><a>Как взаимодействовать с ботом через Bot API</a></li>
16
<li><a>Как взаимодействовать с ботом через Bot API</a></li>
17
<li><a>Как прочитать сообщение</a></li>
17
<li><a>Как прочитать сообщение</a></li>
18
<li><a>Как отправить сообщение</a></li>
18
<li><a>Как отправить сообщение</a></li>
19
<li><a>Как отправить стикер</a></li>
19
<li><a>Как отправить стикер</a></li>
20
<li><a>Какие ещё методы есть в Telegram Bot API</a></li>
20
<li><a>Какие ещё методы есть в Telegram Bot API</a></li>
21
<li><a>Библиотеки для разработки телеграм-ботов</a></li>
21
<li><a>Библиотеки для разработки телеграм-ботов</a></li>
22
</ul><p>Чтобы понять, что такое Telegram Bot API, для начала разберёмся с самим понятием API.</p>
22
</ul><p>Чтобы понять, что такое Telegram Bot API, для начала разберёмся с самим понятием API.</p>
23
<p><strong>API</strong>(application programming interface, программный интерфейс приложения) - это набор методов, с помощью которых различные сервисы и программы обмениваются данными между собой. Разработчики используют API для того, чтобы получить от сервиса нужную информацию или заставить его выполнить определённое действие.</p>
23
<p><strong>API</strong>(application programming interface, программный интерфейс приложения) - это набор методов, с помощью которых различные сервисы и программы обмениваются данными между собой. Разработчики используют API для того, чтобы получить от сервиса нужную информацию или заставить его выполнить определённое действие.</p>
24
<p>Процесс работы с API строится на модели "запрос - ответ". Программист или приложение отправляет запрос на сервер и в ответ получает нужные данные, подтверждение выполнения операции или код ошибки.</p>
24
<p>Процесс работы с API строится на модели "запрос - ответ". Программист или приложение отправляет запрос на сервер и в ответ получает нужные данные, подтверждение выполнения операции или код ошибки.</p>
25
<p><strong>Telegram Bot API</strong> - это набор методов для управления телеграм-ботами. С его помощью можно обрабатывать сообщения пользователей, автоматизировать модерацию групповых чатов и создавать полезные утилиты на базе мессенджера.</p>
25
<p><strong>Telegram Bot API</strong> - это набор методов для управления телеграм-ботами. С его помощью можно обрабатывать сообщения пользователей, автоматизировать модерацию групповых чатов и создавать полезные утилиты на базе мессенджера.</p>
26
<p>Если вы никогда не работали с API и хотите узнать об этом больше, рекомендуем прочитать наше руководство.</p>
26
<p>Если вы никогда не работали с API и хотите узнать об этом больше, рекомендуем прочитать наше руководство.</p>
27
<p>Telegram предоставляет разработчикам несколько API для создания приложений, ботов и сторонних сервисов. Все они связаны с мессенджером, но у них разные цели и возможности:</p>
27
<p>Telegram предоставляет разработчикам несколько API для создания приложений, ботов и сторонних сервисов. Все они связаны с мессенджером, но у них разные цели и возможности:</p>
28
<ul><li><a><strong>Telegram API</strong></a> - низкоуровневый интерфейс, на базе которого реализованы основные функции Telegram, включая криптографический протокол<a>MTProto</a>. Официальные клиенты Telegram используют методы из этого набора.</li>
28
<ul><li><a><strong>Telegram API</strong></a> - низкоуровневый интерфейс, на базе которого реализованы основные функции Telegram, включая криптографический протокол<a>MTProto</a>. Официальные клиенты Telegram используют методы из этого набора.</li>
29
<li><a><strong>Bot API</strong></a> - HTTP-интерфейс, созданный для разработки ботов, внутренних мини-приложений и веб-игр. Благодаря ему программистам не надо разбираться в устройстве Telegram API для отправки сообщений и получения данных из чатов с пользователями в реальном времени. Достаточно отправить HTTP-запрос, получить ответ в формате JSON и обработать его.</li>
29
<li><a><strong>Bot API</strong></a> - HTTP-интерфейс, созданный для разработки ботов, внутренних мини-приложений и веб-игр. Благодаря ему программистам не надо разбираться в устройстве Telegram API для отправки сообщений и получения данных из чатов с пользователями в реальном времени. Достаточно отправить HTTP-запрос, получить ответ в формате JSON и обработать его.</li>
30
<li><a><strong>TDLib</strong></a> - библиотека, предназначенная для разработки альтернативных клиентов Telegram. Если вам кажется, что в приложении мессенджера нет какой-то важной функции, то с помощью TDLib можно создать собственное приложение и опубликовать его в интернете.</li>
30
<li><a><strong>TDLib</strong></a> - библиотека, предназначенная для разработки альтернативных клиентов Telegram. Если вам кажется, что в приложении мессенджера нет какой-то важной функции, то с помощью TDLib можно создать собственное приложение и опубликовать его в интернете.</li>
31
<li><a><strong>Gateway API</strong></a> - набор методов для отправки кодов авторизации через Telegram. Обычно компании отправляют коды с помощью SMS, но благодаря Gateway API можно сэкономить на оплате мобильной связи.</li>
31
<li><a><strong>Gateway API</strong></a> - набор методов для отправки кодов авторизации через Telegram. Обычно компании отправляют коды с помощью SMS, но благодаря Gateway API можно сэкономить на оплате мобильной связи.</li>
32
<li><a><strong>Bot Payments API</strong></a> - платформа для обработки платежей в телеграм-ботах. С её помощью разработчики могут получать деньги от пользователей за товары и услуги.</li>
32
<li><a><strong>Bot Payments API</strong></a> - платформа для обработки платежей в телеграм-ботах. С её помощью разработчики могут получать деньги от пользователей за товары и услуги.</li>
33
</ul><p>Перед тем как писать код, надо создать бота - зарегистрировать специальный аккаунт и получить уникальный токен для API. Разберём подробно этот процесс.</p>
33
</ul><p>Перед тем как писать код, надо создать бота - зарегистрировать специальный аккаунт и получить уникальный токен для API. Разберём подробно этот процесс.</p>
34
<p>Для разработчиков в Telegram есть BotFather - "крёстный отец" всех ботов. С его помощью можно зарегистрировать и настроить нового бота. Вот как это сделать:</p>
34
<p>Для разработчиков в Telegram есть BotFather - "крёстный отец" всех ботов. С его помощью можно зарегистрировать и настроить нового бота. Вот как это сделать:</p>
35
<ul><li><strong>Шаг 1.</strong>Запустите Telegram и перейдите в чат<a>BotFather</a>. Будьте внимательны, у официального бота должна быть галочка верификации.</li>
35
<ul><li><strong>Шаг 1.</strong>Запустите Telegram и перейдите в чат<a>BotFather</a>. Будьте внимательны, у официального бота должна быть галочка верификации.</li>
36
</ul>Официальный бот BotFather в Telegram<em>Скриншот:<a>BotFather</a>/ Telegram</em><ul><li><strong>Шаг 2.</strong>Нажмите кнопку Start, и BotFather пришлёт в ответ список доступных команд.</li>
36
</ul>Официальный бот BotFather в Telegram<em>Скриншот:<a>BotFather</a>/ Telegram</em><ul><li><strong>Шаг 2.</strong>Нажмите кнопку Start, и BotFather пришлёт в ответ список доступных команд.</li>
37
</ul>Список доступных команд<em>Скриншот:<a>BotFather</a>/ Telegram</em><ul><li><strong>Шаг 3.</strong>Выберите команду /newbot для создания нового бота.</li>
37
</ul>Список доступных команд<em>Скриншот:<a>BotFather</a>/ Telegram</em><ul><li><strong>Шаг 3.</strong>Выберите команду /newbot для создания нового бота.</li>
38
<li><strong>Шаг 4.</strong>BotFather попросит придумать боту имя, которое пользователи будут видеть в списке чатов. Можно использовать символы любого алфавита, цифры, знаки препинания и эмодзи. Например: Суперполезный бот 3000 ?.</li>
38
<li><strong>Шаг 4.</strong>BotFather попросит придумать боту имя, которое пользователи будут видеть в списке чатов. Можно использовать символы любого алфавита, цифры, знаки препинания и эмодзи. Например: Суперполезный бот 3000 ?.</li>
39
<li><strong>Шаг 5.</strong>После этого бот-отец попросит задать username - уникальное имя пользователя, с помощью которого вашего бота можно будет найти в Telegram. В этом случае можно использовать только латиницу, цифры и некоторые разделительные знаки, а на конце обязательно должно быть слово bot. Например: Super3kBot или Super3k_bot.</li>
39
<li><strong>Шаг 5.</strong>После этого бот-отец попросит задать username - уникальное имя пользователя, с помощью которого вашего бота можно будет найти в Telegram. В этом случае можно использовать только латиницу, цифры и некоторые разделительные знаки, а на конце обязательно должно быть слово bot. Например: Super3kBot или Super3k_bot.</li>
40
</ul><p>BotFather проверит доступность юзернейма, и, если он свободен, поздравит с созданием нового бота и пришлёт токен. Это специальный набор букв и цифр, который нужен для связи вашего бота с сервером Telegram. Выглядит он примерно так:</p>
40
</ul><p>BotFather проверит доступность юзернейма, и, если он свободен, поздравит с созданием нового бота и пришлёт токен. Это специальный набор букв и цифр, который нужен для связи вашего бота с сервером Telegram. Выглядит он примерно так:</p>
41
<p>7582552655:AAHmzfaKaoMnajrk47dLS76S2epa127gJ-0</p>
41
<p>7582552655:AAHmzfaKaoMnajrk47dLS76S2epa127gJ-0</p>
42
Сообщение с токеном нового бота<em>Скриншот:<a>BotFather</a>/ Telegram</em><p>Сохраните токен в надёжном месте и никому не показывайте. Если злоумышленники завладеют им, то смогут контролировать вашего бота, собирать данные пользователей и перенаправлять платежи. В случае утечки сгенерируйте новый токен с помощью команды /revoke в BotFather.</p>
42
Сообщение с токеном нового бота<em>Скриншот:<a>BotFather</a>/ Telegram</em><p>Сохраните токен в надёжном месте и никому не показывайте. Если злоумышленники завладеют им, то смогут контролировать вашего бота, собирать данные пользователей и перенаправлять платежи. В случае утечки сгенерируйте новый токен с помощью команды /revoke в BotFather.</p>
43
<p>С помощью BotFather можно не только создавать новых ботов, но и управлять существующими. Вот какие команды ещё есть:</p>
43
<p>С помощью BotFather можно не только создавать новых ботов, но и управлять существующими. Вот какие команды ещё есть:</p>
44
<ul><li>/mybots - показать список всех ботов пользователя;</li>
44
<ul><li>/mybots - показать список всех ботов пользователя;</li>
45
<li>/setname - изменить имя бота;</li>
45
<li>/setname - изменить имя бота;</li>
46
<li>/setdescription - установить описание бота, которое отображается в профиле бота;</li>
46
<li>/setdescription - установить описание бота, которое отображается в профиле бота;</li>
47
<li>/setabouttext - заполнить поле "О боте" в профиле;</li>
47
<li>/setabouttext - заполнить поле "О боте" в профиле;</li>
48
<li>/setuserpic - установить аватарку;</li>
48
<li>/setuserpic - установить аватарку;</li>
49
<li>/setcommands - настроить список команд;</li>
49
<li>/setcommands - настроить список команд;</li>
50
<li>/setinline - включить inline-режим, чтобы ботом можно было пользоваться в любом чате Telegram;</li>
50
<li>/setinline - включить inline-режим, чтобы ботом можно было пользоваться в любом чате Telegram;</li>
51
<li>/setjoingroups - разрешить боту работать в группах;</li>
51
<li>/setjoingroups - разрешить боту работать в группах;</li>
52
<li>/deletebot - удалить бота.</li>
52
<li>/deletebot - удалить бота.</li>
53
</ul><p>Боты в Telegram могут отправлять сообщения, модерировать групповые чаты и получать данные из сторонних сервисов. Несмотря на это, разработчики мессенджера устанавливают ограничения, чтобы не перегружались серверы и спамеры не докучали пользователям.</p>
53
</ul><p>Боты в Telegram могут отправлять сообщения, модерировать групповые чаты и получать данные из сторонних сервисов. Несмотря на это, разработчики мессенджера устанавливают ограничения, чтобы не перегружались серверы и спамеры не докучали пользователям.</p>
54
<p>Работая над своим проектом, помните, что боты в Telegram не могут:</p>
54
<p>Работая над своим проектом, помните, что боты в Telegram не могут:</p>
55
<ul><li>писать первыми - для начала общения пользователь должен нажать кнопку Start;</li>
55
<ul><li>писать первыми - для начала общения пользователь должен нажать кнопку Start;</li>
56
<li>управлять группами, в которые их не добавили администраторы;</li>
56
<li>управлять группами, в которые их не добавили администраторы;</li>
57
<li>отправлять более 30 сообщений в секунду всего и более 20 сообщений в минуту в один чат;</li>
57
<li>отправлять более 30 сообщений в секунду всего и более 20 сообщений в минуту в один чат;</li>
58
<li>отправлять файлы размером более 50 МБ.</li>
58
<li>отправлять файлы размером более 50 МБ.</li>
59
</ul><p>Если превысить лимиты, то модераторы Telegram на время отключат бота. В случае повторных нарушений бота могут заблокировать.</p>
59
</ul><p>Если превысить лимиты, то модераторы Telegram на время отключат бота. В случае повторных нарушений бота могут заблокировать.</p>
60
<p>Для взаимодействия с ботом при помощи Telegram Bot API мы будем отправлять<a>HTTP-запросы</a>на сервер мессенджера. В ответ нам будут приходить данные в формате<a>JSON</a>. Отправлять запросы можно несколькими способами.</p>
60
<p>Для взаимодействия с ботом при помощи Telegram Bot API мы будем отправлять<a>HTTP-запросы</a>на сервер мессенджера. В ответ нам будут приходить данные в формате<a>JSON</a>. Отправлять запросы можно несколькими способами.</p>
61
<p>Самый простой способ отправить запрос - воспользоваться браузером. Вот как это можно сделать:</p>
61
<p>Самый простой способ отправить запрос - воспользоваться браузером. Вот как это можно сделать:</p>
62
<ul><li><strong>Шаг 1.</strong>Откройте любой браузер и введите адрес в формате https://api.telegram.org/bot{ТОКЕН}/{НАЗВАНИЕ-HTTP-МЕТОДА}.</li>
62
<ul><li><strong>Шаг 1.</strong>Откройте любой браузер и введите адрес в формате https://api.telegram.org/bot{ТОКЕН}/{НАЗВАНИЕ-HTTP-МЕТОДА}.</li>
63
<li><strong>Шаг 2.</strong>Перейдите по адресу, чтобы получить ответ от сервера.</li>
63
<li><strong>Шаг 2.</strong>Перейдите по адресу, чтобы получить ответ от сервера.</li>
64
</ul><p>В качестве примера проверим, работает ли наш бот, и запросим основную информацию о нём. Для этого отправим запрос getMe:</p>
64
</ul><p>В качестве примера проверим, работает ли наш бот, и запросим основную информацию о нём. Для этого отправим запрос getMe:</p>
65
<p>https://api.telegram.org/bot7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg/getMe</p>
65
<p>https://api.telegram.org/bot7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg/getMe</p>
66
<p>Если вы всё сделали правильно, то в окне браузера появится следующий код:</p>
66
<p>Если вы всё сделали правильно, то в окне браузера появится следующий код:</p>
67
{ "ok":true, "result": { "id":7432444009, "is_bot":true, "first_name":"Суперполезный бот 3000 ?", "username":"Super3kBot", "can_join_groups":true, "can_read_all_group_messages":false, "supports_inline_queries":false, "can_connect_to_business":false, "has_main_web_app":false } }<p>Из него мы можем узнать уникальный идентификатор бота, юзернейм, название и список разрешений - например, можно ли добавить бота в групповой чат и может ли он читать в нём все сообщения.</p>
67
{ "ok":true, "result": { "id":7432444009, "is_bot":true, "first_name":"Суперполезный бот 3000 ?", "username":"Super3kBot", "can_join_groups":true, "can_read_all_group_messages":false, "supports_inline_queries":false, "can_connect_to_business":false, "has_main_web_app":false } }<p>Из него мы можем узнать уникальный идентификатор бота, юзернейм, название и список разрешений - например, можно ли добавить бота в групповой чат и может ли он читать в нём все сообщения.</p>
68
<p>Запрос getMe можно отправить с помощью кода на Python и библиотеки<a>Requests</a>. Эта библиотека содержит функции, упрощающие процесс взаимодействия с различными API.</p>
68
<p>Запрос getMe можно отправить с помощью кода на Python и библиотеки<a>Requests</a>. Эта библиотека содержит функции, упрощающие процесс взаимодействия с различными API.</p>
69
import requests # Создаём переменные, в которых будут храниться токен бота и HTTP-запрос bot_token = "7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg" url = f"https://api.telegram.org/bot{bot_token}/getMe" response = requests.get(url) # Пишем условие для обработки ответа сервера if response.status_code == 200: json_data = response.json() print("Ответ API:", json_data) else: print(f"Ошибка: {response.status_code}")<p>После запуска кода в терминале<a>IDE</a>появится ответ сервера в виде JSON-файла. Ответ будет содержать всё то же самое, что и при отправке запроса через браузер: имя и идентификатор бота и список разрешений.</p>
69
import requests # Создаём переменные, в которых будут храниться токен бота и HTTP-запрос bot_token = "7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg" url = f"https://api.telegram.org/bot{bot_token}/getMe" response = requests.get(url) # Пишем условие для обработки ответа сервера if response.status_code == 200: json_data = response.json() print("Ответ API:", json_data) else: print(f"Ошибка: {response.status_code}")<p>После запуска кода в терминале<a>IDE</a>появится ответ сервера в виде JSON-файла. Ответ будет содержать всё то же самое, что и при отправке запроса через браузер: имя и идентификатор бота и список разрешений.</p>
70
<p>Пользователи могут активировать нашего бота и общаться с ним. Мы же можем получать эти сообщения и обрабатывать на своём сервере. Давайте напишем боту и попробуем прочитать чат с помощью Telegram Bot API.</p>
70
<p>Пользователи могут активировать нашего бота и общаться с ним. Мы же можем получать эти сообщения и обрабатывать на своём сервере. Давайте напишем боту и попробуем прочитать чат с помощью Telegram Bot API.</p>
71
Поздороваемся с ботом<em>Скриншот: Telegram / Skillbox Media</em><p>Список сообщений можно получить с помощью<a>HTTP-метода</a>getUpdates. Для этого просто перейдите в браузере по следующему адресу:</p>
71
Поздороваемся с ботом<em>Скриншот: Telegram / Skillbox Media</em><p>Список сообщений можно получить с помощью<a>HTTP-метода</a>getUpdates. Для этого просто перейдите в браузере по следующему адресу:</p>
72
<p>https://api.telegram.org/bot7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg/getUpdates</p>
72
<p>https://api.telegram.org/bot7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg/getUpdates</p>
73
<p>В браузере появится следующий JSON-код:</p>
73
<p>В браузере появится следующий JSON-код:</p>
74
{ "ok":true, "result": { "update_id":123456789, "message": { "message_id":1, "from": { "id":123456789, "is_bot":false, "first_name":"user", "username":"user", "language_code":"ru", "is_premium":true }, "chat": { "id":123456789, "first_name":"user", "username":"user", "type":"private" }, "date":123456789, "text":"Hello!" } } }<p>В нём:</p>
74
{ "ok":true, "result": { "update_id":123456789, "message": { "message_id":1, "from": { "id":123456789, "is_bot":false, "first_name":"user", "username":"user", "language_code":"ru", "is_premium":true }, "chat": { "id":123456789, "first_name":"user", "username":"user", "type":"private" }, "date":123456789, "text":"Hello!" } } }<p>В нём:</p>
75
<ul><li>update_id - уникальный номер обращения к боту;</li>
75
<ul><li>update_id - уникальный номер обращения к боту;</li>
76
<li>message - большой блок со всеми метаданными сообщения;</li>
76
<li>message - большой блок со всеми метаданными сообщения;</li>
77
<li>message_id - ID сообщения в чате;</li>
77
<li>message_id - ID сообщения в чате;</li>
78
<li>from - блок со всеми данными отправителя, включая ID пользователя, имя, никнейм и сведения о наличии подписки Telegram Premium;</li>
78
<li>from - блок со всеми данными отправителя, включая ID пользователя, имя, никнейм и сведения о наличии подписки Telegram Premium;</li>
79
<li>chat - блок с информацией о чате, включая ID, никнейм и тип (публичный или приватный);</li>
79
<li>chat - блок с информацией о чате, включая ID, никнейм и тип (публичный или приватный);</li>
80
<li>date - дата отправления;</li>
80
<li>date - дата отправления;</li>
81
<li>text - текст сообщения.</li>
81
<li>text - текст сообщения.</li>
82
</ul><p>Также запрос getUpdates можно отправить с помощью Python:</p>
82
</ul><p>Также запрос getUpdates можно отправить с помощью Python:</p>
83
import requests # Токен бота и HTTP-запрос bot_token = "7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg" url = f"https://api.telegram.org/bot{bot_token}/getUpdates" response = requests.get(url) # Обработка ответа сервера if response.status_code == 200: json_data = response.json() print("Ответ API:", json_data) else: print(f"Ошибка: {response.status_code}")<p>Теперь попробуем ответить на наше же сообщение от имени бота. Для этого воспользуемся методом sendMessage. Он немного сложнее предыдущих и требует передать на вход дополнительные параметры: ID чата и текст сообщения. В общем виде метод выглядит так:</p>
83
import requests # Токен бота и HTTP-запрос bot_token = "7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg" url = f"https://api.telegram.org/bot{bot_token}/getUpdates" response = requests.get(url) # Обработка ответа сервера if response.status_code == 200: json_data = response.json() print("Ответ API:", json_data) else: print(f"Ошибка: {response.status_code}")<p>Теперь попробуем ответить на наше же сообщение от имени бота. Для этого воспользуемся методом sendMessage. Он немного сложнее предыдущих и требует передать на вход дополнительные параметры: ID чата и текст сообщения. В общем виде метод выглядит так:</p>
84
<p>https://api.telegram.org/bot{ТОКЕН}/sendMessage? chat_id={ID-ЧАТА}& text={СООБЩЕНИЕ}</p>
84
<p>https://api.telegram.org/bot{ТОКЕН}/sendMessage? chat_id={ID-ЧАТА}& text={СООБЩЕНИЕ}</p>
85
<p>В нём:</p>
85
<p>В нём:</p>
86
<ul><li>{ТОКЕН} - токен, который нам выдал BotFather;</li>
86
<ul><li>{ТОКЕН} - токен, который нам выдал BotFather;</li>
87
<li>{ID-ЧАТА} - уникальный номер чата, в который бот отправит сообщение. Этот номер можно посмотреть в поле "chat": {"id": 123456789}, выполнив запрос getUpdates;</li>
87
<li>{ID-ЧАТА} - уникальный номер чата, в который бот отправит сообщение. Этот номер можно посмотреть в поле "chat": {"id": 123456789}, выполнив запрос getUpdates;</li>
88
<li>{СООБЩЕНИЕ} - текст сообщения.</li>
88
<li>{СООБЩЕНИЕ} - текст сообщения.</li>
89
</ul><p>Отправим сообщение "Привет!":</p>
89
</ul><p>Отправим сообщение "Привет!":</p>
90
<p>https://api.telegram.org/bot7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg/sendMessage?chat_id=123456789&text=Привет!</p>
90
<p>https://api.telegram.org/bot7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg/sendMessage?chat_id=123456789&text=Привет!</p>
91
<p>Если вы всё сделали правильно, то в чате появится сообщение от имени бота.</p>
91
<p>Если вы всё сделали правильно, то в чате появится сообщение от имени бота.</p>
92
Бот отправил в чат текст, который мы указали в запросе<em>Скриншот: Telegram / Skillbox Media</em><p>С помощью Python запрос sendMessage можно отправить так:</p>
92
Бот отправил в чат текст, который мы указали в запросе<em>Скриншот: Telegram / Skillbox Media</em><p>С помощью Python запрос sendMessage можно отправить так:</p>
93
import requests # Токен бота и HTTP-запрос bot_token = "7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg" chat_id = "123456789" message_text = "Привет!" url = f"https://api.telegram.org/bot{bot_token}/sendMessage" # Параметры запроса params = { "chat_id": chat_id, "text": message_text } response = requests.get(url, params=params) # Обработка ответа сервера if response.status_code == 200: json_data = response.json() print("Ответ API:", json_data) else: print(f"Ошибка: {response.status_code}")<p>Для отправки стикеров в Bot API есть метод sendSticker. Чаще всего этот запрос получается довольно длинным из-за объёмного ID стикера, поэтому вместо браузера удобнее использовать Python. В теле запроса надо обязательно передать токен бота, ID чата и стикера.</p>
93
import requests # Токен бота и HTTP-запрос bot_token = "7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg" chat_id = "123456789" message_text = "Привет!" url = f"https://api.telegram.org/bot{bot_token}/sendMessage" # Параметры запроса params = { "chat_id": chat_id, "text": message_text } response = requests.get(url, params=params) # Обработка ответа сервера if response.status_code == 200: json_data = response.json() print("Ответ API:", json_data) else: print(f"Ошибка: {response.status_code}")<p>Для отправки стикеров в Bot API есть метод sendSticker. Чаще всего этот запрос получается довольно длинным из-за объёмного ID стикера, поэтому вместо браузера удобнее использовать Python. В теле запроса надо обязательно передать токен бота, ID чата и стикера.</p>
94
<p>Как получить первые два параметра, мы уже знаем из примеров выше. Чтобы получить ID стикера, сделайте следующее:</p>
94
<p>Как получить первые два параметра, мы уже знаем из примеров выше. Чтобы получить ID стикера, сделайте следующее:</p>
95
<ul><li><strong>Шаг 1.</strong>Отправьте в чат с ботом нужный стикер.</li>
95
<ul><li><strong>Шаг 1.</strong>Отправьте в чат с ботом нужный стикер.</li>
96
<li><strong>Шаг 2.</strong>Выполните в браузере запрос getUpdates.</li>
96
<li><strong>Шаг 2.</strong>Выполните в браузере запрос getUpdates.</li>
97
<li><strong>Шаг 3.</strong>В JSON-ответе найдите данные последнего сообщения.</li>
97
<li><strong>Шаг 3.</strong>В JSON-ответе найдите данные последнего сообщения.</li>
98
<li><strong>Шаг 4.</strong>В поле file_id будет ID стикера. Например: "file_id":"CAACAgIAAxkBAAENhyhn18v1vykSL7iweWj0syat7KNAPwACmEcAAkYhyUrp2ZMtEnJVtTYE".</li>
98
<li><strong>Шаг 4.</strong>В поле file_id будет ID стикера. Например: "file_id":"CAACAgIAAxkBAAENhyhn18v1vykSL7iweWj0syat7KNAPwACmEcAAkYhyUrp2ZMtEnJVtTYE".</li>
99
</ul><p>Код запроса на Python выглядит так:</p>
99
</ul><p>Код запроса на Python выглядит так:</p>
100
import requests # Токен бота и HTTP-запрос bot_token = "7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg" chat_id = "123456789" sticker_id = "CAACAgIAAxkBAAENhyhn18v1vykSL7iweWj0syat7KNAPwACmEcAAkYhyUrp2ZMtEnJVtTYE" url = f"https://api.telegram.org/bot{bot_token}/sendSticker" # Параметры запроса params = { "chat_id": chat_id, "sticker": sticker_id } response = requests.get(url, params=params) # Обработка ответа сервера if response.status_code == 200: json_data = response.json() print("Ответ API:", json_data) else: print(f"Ошибка: {response.status_code}")<p>Если запустить код в IDE, то бот пришлёт указанный стикер в чат.</p>
100
import requests # Токен бота и HTTP-запрос bot_token = "7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg" chat_id = "123456789" sticker_id = "CAACAgIAAxkBAAENhyhn18v1vykSL7iweWj0syat7KNAPwACmEcAAkYhyUrp2ZMtEnJVtTYE" url = f"https://api.telegram.org/bot{bot_token}/sendSticker" # Параметры запроса params = { "chat_id": chat_id, "sticker": sticker_id } response = requests.get(url, params=params) # Обработка ответа сервера if response.status_code == 200: json_data = response.json() print("Ответ API:", json_data) else: print(f"Ошибка: {response.status_code}")<p>Если запустить код в IDE, то бот пришлёт указанный стикер в чат.</p>
101
Бот прислал стикер, ID которого мы указали в коде запроса<em>Скриншот: Telegram / Skillbox Media</em><p>Разработчики Telegram включили в Bot API несколько десятков методов. С их помощью можно отправлять обычный текст, стикеры, файлы, фотографии, голосовые сообщения, ставить реакции и управлять групповыми чатами. Например, можно запрограммировать бота для автоматической блокировки спамеров.</p>
101
Бот прислал стикер, ID которого мы указали в коде запроса<em>Скриншот: Telegram / Skillbox Media</em><p>Разработчики Telegram включили в Bot API несколько десятков методов. С их помощью можно отправлять обычный текст, стикеры, файлы, фотографии, голосовые сообщения, ставить реакции и управлять групповыми чатами. Например, можно запрограммировать бота для автоматической блокировки спамеров.</p>
102
<p>Все методы подробно описаны в <a>официальной документации</a>Bot API. В ней есть названия методов, принцип работы и список возможных параметров. Отдельно отмечены обязательные параметры, без которых сервер не сможет обработать запрос.</p>
102
<p>Все методы подробно описаны в <a>официальной документации</a>Bot API. В ней есть названия методов, принцип работы и список возможных параметров. Отдельно отмечены обязательные параметры, без которых сервер не сможет обработать запрос.</p>
103
<p>Вот некоторые из доступных методов в Bot API:</p>
103
<p>Вот некоторые из доступных методов в Bot API:</p>
104
<ul><li>forwardMessage - пересылает сообщение пользователя в другой чат;</li>
104
<ul><li>forwardMessage - пересылает сообщение пользователя в другой чат;</li>
105
<li>copyMessage - копирует сообщение;</li>
105
<li>copyMessage - копирует сообщение;</li>
106
<li>sendPhoto - отправляет изображение;</li>
106
<li>sendPhoto - отправляет изображение;</li>
107
<li>sendVoice - отправляет голосовое сообщение;</li>
107
<li>sendVoice - отправляет голосовое сообщение;</li>
108
<li>sendPoll - запускает в чате опрос;</li>
108
<li>sendPoll - запускает в чате опрос;</li>
109
<li>getUserProfilePhotos - получает аватарку пользователя;</li>
109
<li>getUserProfilePhotos - получает аватарку пользователя;</li>
110
<li>banChatMember - блокирует пользователя в групповом чате;</li>
110
<li>banChatMember - блокирует пользователя в групповом чате;</li>
111
<li>createChatInviteLink - создаёт ссылку-приглашение в групповой чат;</li>
111
<li>createChatInviteLink - создаёт ссылку-приглашение в групповой чат;</li>
112
<li>setChatPhoto - устанавливает аватарку группового чата;</li>
112
<li>setChatPhoto - устанавливает аватарку группового чата;</li>
113
<li>setChatTitle - устанавливает название группового чата;</li>
113
<li>setChatTitle - устанавливает название группового чата;</li>
114
<li>getChatAdministrators - получает список администраторов;</li>
114
<li>getChatAdministrators - получает список администраторов;</li>
115
<li>setMyCommands - метод для замены списка команд бота;</li>
115
<li>setMyCommands - метод для замены списка команд бота;</li>
116
<li>setMyName - метод для смены имени бота.</li>
116
<li>setMyName - метод для смены имени бота.</li>
117
</ul><p>Сочетая методы Bot API можно создавать ботов со сложной логикой. Главное преимущество "чистого" API перед библиотеками в том, что запросы можно отправлять с помощью любого языка программирования или вообще без кода. Это даёт больше преимуществ разработчикам, которые создают ботов на непопулярных языках программирования.</p>
117
</ul><p>Сочетая методы Bot API можно создавать ботов со сложной логикой. Главное преимущество "чистого" API перед библиотеками в том, что запросы можно отправлять с помощью любого языка программирования или вообще без кода. Это даёт больше преимуществ разработчикам, которые создают ботов на непопулярных языках программирования.</p>
118
<p>Главный минус работы с Bot API напрямую в том, что каждый раз приходится использовать много кода даже для простых запросов. Кроме того, надо разработать алгоритм, который может быстро получать сообщения из чата с пользователем и анализировать их. Это усложняет процесс создания ботов, поэтому вместо Bot API лучше использовать специальные библиотеки.</p>
118
<p>Главный минус работы с Bot API напрямую в том, что каждый раз приходится использовать много кода даже для простых запросов. Кроме того, надо разработать алгоритм, который может быстро получать сообщения из чата с пользователем и анализировать их. Это усложняет процесс создания ботов, поэтому вместо Bot API лучше использовать специальные библиотеки.</p>
119
<p>Для разработчиков ботов есть специальные библиотеки на базе Bot API, которые упрощают процесс отправки запросов. Они помогают сократить количество кода в проекте и предоставляют готовые алгоритмы мониторинга новых сообщений и обработки команд. С такими библиотеками разработка бота становится похожа на сборку конструктора - просто берём нужные функции, связываем их друг с другом и событиями в чате.</p>
119
<p>Для разработчиков ботов есть специальные библиотеки на базе Bot API, которые упрощают процесс отправки запросов. Они помогают сократить количество кода в проекте и предоставляют готовые алгоритмы мониторинга новых сообщений и обработки команд. С такими библиотеками разработка бота становится похожа на сборку конструктора - просто берём нужные функции, связываем их друг с другом и событиями в чате.</p>
120
<p>Рассмотрим популярные библиотеки для создания телеграм-ботов на разных языках программирования.</p>
120
<p>Рассмотрим популярные библиотеки для создания телеграм-ботов на разных языках программирования.</p>
121
<p>Python - самый популярный язык в сообществе разработчиков ботов. В большинстве гайдов, курсов и уроков именно на нём показывают все примеры кода. Для Python есть следующие библиотеки:</p>
121
<p>Python - самый популярный язык в сообществе разработчиков ботов. В большинстве гайдов, курсов и уроков именно на нём показывают все примеры кода. Для Python есть следующие библиотеки:</p>
122
<ul><li><a><strong>Aiogram</strong></a> - асинхронная библиотека для создания высоконагруженных ботов. Чаще всего именно её используют в масштабных проектах с десятками тысяч ежедневных пользователей. Разработчики Aiogram часто обновляют библиотеку и быстро внедряют новые функции Bot API.</li>
122
<ul><li><a><strong>Aiogram</strong></a> - асинхронная библиотека для создания высоконагруженных ботов. Чаще всего именно её используют в масштабных проектах с десятками тысяч ежедневных пользователей. Разработчики Aiogram часто обновляют библиотеку и быстро внедряют новые функции Bot API.</li>
123
<li><a><strong>TeleBot</strong></a> - одна из первых библиотек для Python. Обновления для неё выходят редко, а боты на базе TeleBot не справляются с большим количеством запросов. Из-за простого синтаксиса решение подойдёт новичкам, которые только изучают возможности Bot API.</li>
123
<li><a><strong>TeleBot</strong></a> - одна из первых библиотек для Python. Обновления для неё выходят редко, а боты на базе TeleBot не справляются с большим количеством запросов. Из-за простого синтаксиса решение подойдёт новичкам, которые только изучают возможности Bot API.</li>
124
<li><a><strong>Python-telegram-bot</strong></a> - библиотека с асинхронным и синхронным режимами работы. По возможностям и сложности находится между Aiogram и TeleBot. Обновления также выходят с интервалом в несколько месяцев.</li>
124
<li><a><strong>Python-telegram-bot</strong></a> - библиотека с асинхронным и синхронным режимами работы. По возможностям и сложности находится между Aiogram и TeleBot. Обновления также выходят с интервалом в несколько месяцев.</li>
125
</ul><p>Второй по популярности язык программирования для разработки телеграм-ботов -<a>JavaScript</a>. Для него и платформы<a>Node.js</a>тоже есть много обучающих материалов и библиотек. Ниже список популярных решений:</p>
125
</ul><p>Второй по популярности язык программирования для разработки телеграм-ботов -<a>JavaScript</a>. Для него и платформы<a>Node.js</a>тоже есть много обучающих материалов и библиотек. Ниже список популярных решений:</p>
126
<ul><li><a><strong>Telegraf.js</strong></a> - фреймворк с поддержкой JavaScript и TypeScript. Поддерживает основные функции мессенджера и выполняет код асинхронно.</li>
126
<ul><li><a><strong>Telegraf.js</strong></a> - фреймворк с поддержкой JavaScript и TypeScript. Поддерживает основные функции мессенджера и выполняет код асинхронно.</li>
127
<li><a><strong>GrammY</strong></a> - библиотека для разработки ботов на JavaScript и <a>TypeScript</a>, которых можно запускать в Node.js и <a>Deno</a>. Если вы уже создавали веб-проекты с нуля, то сможете быстро научиться писать код для телеграм-ботов. Во всяком случае, это гарантируют авторы GrammY.</li>
127
<li><a><strong>GrammY</strong></a> - библиотека для разработки ботов на JavaScript и <a>TypeScript</a>, которых можно запускать в Node.js и <a>Deno</a>. Если вы уже создавали веб-проекты с нуля, то сможете быстро научиться писать код для телеграм-ботов. Во всяком случае, это гарантируют авторы GrammY.</li>
128
<li><a><strong>Node.js Telegram Bot API</strong></a> - простая библиотека для Node.js. Обновления для неё выходят редко.</li>
128
<li><a><strong>Node.js Telegram Bot API</strong></a> - простая библиотека для Node.js. Обновления для неё выходят редко.</li>
129
</ul><p>Одно из преимуществ открытого Bot API в том, что сторонние разработчики могут создавать на его базе собственные библиотеки для любых языков программирования. Поддерживают их не так активно, как решения для Python и JavaScript, но базовые функции всегда работают. Ниже список библиотек для разных языков программирования.</p>
129
</ul><p>Одно из преимуществ открытого Bot API в том, что сторонние разработчики могут создавать на его базе собственные библиотеки для любых языков программирования. Поддерживают их не так активно, как решения для Python и JavaScript, но базовые функции всегда работают. Ниже список библиотек для разных языков программирования.</p>
130
<strong>Название</strong><strong>Язык программирования</strong><strong>Ссылка</strong>PHP Telegram BotPHP<a>GitHub</a>Telegram Bot Java LibraryJava<a>GitHub</a>Telegram.Bot.NET<a>GitHub</a>Tgbot-cppC++<a>GitHub</a>Kotlin Telegram BotKotlin<a>GitHub</a>Swift Telegram SDKSwift<a>GitHub</a>Telegram-bot-rubyRuby<a>GitHub</a><ul><li>Telegram Bot API - это набор HTTP-методов, с помощью которых можно отправлять запросы к серверу Telegram, получать ответы в формате JSON и управлять ботами.</li>
130
<strong>Название</strong><strong>Язык программирования</strong><strong>Ссылка</strong>PHP Telegram BotPHP<a>GitHub</a>Telegram Bot Java LibraryJava<a>GitHub</a>Telegram.Bot.NET<a>GitHub</a>Tgbot-cppC++<a>GitHub</a>Kotlin Telegram BotKotlin<a>GitHub</a>Swift Telegram SDKSwift<a>GitHub</a>Telegram-bot-rubyRuby<a>GitHub</a><ul><li>Telegram Bot API - это набор HTTP-методов, с помощью которых можно отправлять запросы к серверу Telegram, получать ответы в формате JSON и управлять ботами.</li>
131
<li>При использовании Bot API важно учитывать ограничения на количество запросов и соблюдать рекомендации по безопасности, чтобы избежать блокировок бота.</li>
131
<li>При использовании Bot API важно учитывать ограничения на количество запросов и соблюдать рекомендации по безопасности, чтобы избежать блокировок бота.</li>
132
<li>Открытый API позволяет сторонним разработчикам использовать любые языки программирования для управления ботами.</li>
132
<li>Открытый API позволяет сторонним разработчикам использовать любые языки программирования для управления ботами.</li>
133
<li>Работать напрямую с серверами Telegram сложно и не всегда рационально: код получается сложным, запутанным и надо самостоятельно реализовывать многие алгоритмы.</li>
133
<li>Работать напрямую с серверами Telegram сложно и не всегда рационально: код получается сложным, запутанным и надо самостоятельно реализовывать многие алгоритмы.</li>
134
<li>В качестве альтернативы можно использовать готовые библиотеки на базе Bot API. Существуют библиотеки для разных языков программирования, но авторы и сообщество активно поддерживают только решения для Python и JavaScript.</li>
134
<li>В качестве альтернативы можно использовать готовые библиотеки на базе Bot API. Существуют библиотеки для разных языков программирования, но авторы и сообщество активно поддерживают только решения для Python и JavaScript.</li>
135
</ul><a>Курс: "Создание Telegram-бота и продвижение в мессенджерах" Узнать больше</a>
135
</ul><a>Курс: "Создание Telegram-бота и продвижение в мессенджерах" Узнать больше</a>