HTML Diff
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-ЧАТА}&amp; text={СООБЩЕНИЕ}</p>
84 <p>https://api.telegram.org/bot{ТОКЕН}/sendMessage? chat_id={ID-ЧАТА}&amp; 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&amp;text=Привет!</p>
90 <p>https://api.telegram.org/bot7432444009:AAG62HGsVhddP5kq5Cbdf1ugTcYpTriV1Mg/sendMessage?chat_id=123456789&amp;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>