Развитие Телеграмм во многом определяется наличием большого числа ботов – небольших сервисных программ-роботов. Их может создать каждый пользователь, знакомый с программированием на среднем уровне. Telegram API Bot – это программный интерфейс, позволяющий программировать собственного бота.
API включает в себя объекты и команды, предназначенные для установки поведения бота Telegram. Используя интерфейс, вы можете создавать собственные программные коды, которые при запуске в Telegram начинают работать как боты.
Элементы управления

В Бот Телеграмм API все элементы управления представляют собой объекты, которые представлены в JSON, то есть в виде строки, заданной по определенным правилам. Это позволяет производить обмен данными по сети максимально быстро и наименее затратно, так как передается не программный код, а набор пар «ключ:значение» в текстовом виде. В таблице приведены все типы API. Большая часть объектов предназначена для создания команд бота. Ключи дадут более расширенное представление о возможностях объекта.
| Название | Описание | Ключи |
|---|---|---|
| User | Пользователь в Телеграмм | id first_name last_name username |
| Chat | Чат | id type title username first_name last_name all_members_are_administrators |
| Message | Сообщение | message_id from date chat forward_from forward_date reply_to_message text entities audio document photo sticker video voice caption contact location venue new_chat_member left_chat_member new_chat_title new_chat_photo delete_chat_photo group_chat_created supergroup_chat_created channel_chat_created migrate_to_chat_id migrate_from_chat_id pinned_message |
| MessageEntity | Отдельная сущность в текстовом сообщении (хештег, ссылка и пр.) | type length url offset |
| PhotoSize | Изображение заданного размера или превью фото, файла или стикера | file_id width height file_size |
| Audio | Аудиозапись | file_id duration performer title mime_type file_size |
| Document | Любой файл, не являющийся изображением, аудиозаписью или голосовой записью | file_id thumb file_name mime_type file_size |
| Sticker | Стикер | file_id width height thumb file_size |
| Video | Видеозапись | file_id width height duration thumb mime_type file_size |
| Voice | Голосовое сообщение | file_id duration mime_type file_size |
| Contact | Телефонный контакт | phone_number first_name last_name user_id |
| Location | Точка на карте | longitude latitude |
| Venue | Объект на карте | location title address foursquare_id |
| UserProfilePhotos | Фото профиля пользователя | total_count photos |
| File | Готовый к загрузке файл | file_id file_size file_path |
| ReplyKeyboardMarkup | Клавиатура с возможностью ответа | keyboard resize_keyboard one_time_keyboard selective |
| KeyboardButton | Кнопка клавиатуры для ответа | text request_contact request_location |
| ReplyKeyboardHide | Заменяет клавиатуру бота на стандартную клавиатуру Telegram | hide_keyboard selective |
| InlineKeyboardMarkup | Встроенная клавиатура, появляющаяся под сообщением | inline_keyboard |
| InlineKeyboardButton | Одна кнопка на встроенной клавиатуре | text url callback_data switch_inline_query switch_inline_query_current_chat callback_game |
| CallbackQuery | Входящий запрос обратной связи для встроенной кнопки с заданным параметром callback_data | id from message inline_message_id data |
| ForceReply | Эмулирует действия пользователя: выбор сообщения и нажатия кнопки «Ответить» | force_reply selective |
| ResponseParameters | Сообщает, почему запрос не выполнился успешно | migrate_to_chat_id retry_after |
Результирующие строки, которые присылает мессенджер, представлены в виде тех же объектов API.
Обмен сообщениями происходит в виде запросов. В следующей таблице приведены примеры некоторых из них.
| Метод | Действие |
|---|---|
| getMe | Позволяет получить информацию о пользователе |
| sendMessage | Отправляет сообщение |
| sendPhoto | Отправляет фото |
| sendAudio | Отправляет аудио |
| sendDocument | Отправляет документ |
| sendVideo | Отправляет видео |
| sendContact | Отправляет контакт |
| getUpdates | Получает обновления из чата |
Все методы (а их достаточно много) делятся на группы:
- Получение обновлений и информации.
- Работа в чате.
- Отправка различных элементов.
- Работа со стикерами.
- Обновление сообщений.
- Режим inline.
- Платежный функционал.
- Для игр.
Полной документации Telegram Bot API на русском пока не существует. Однако стандартный перевод в браузере Google Chrome прекрасно справляется с задачей.
Языки программирования
Telegram API поддерживается множеством языков программирования. Это дает возможность выбора создателю.
Любители JavaScript могут использовать Node.js Telegram Bot API. Здесь необходимо знание не только языка, но и умение обращаться с этим фреймворком, превратившим клиентский язык в полноценный серверный интерфейс.
Одним из самых популярных для написания ботов с использованием Telegram Bot API является PHP. Этот язык изначально был предназначен для создания серверных web-приложений. Он отличается простотой, логичностью и специализированностью именно для web-среды.
Часто используется Telegram Bot API в Python. Этот язык отличается минимализмом и достаточно прост в изучении. Он очень популярен за счет своей производительности.
Классикой является применение Telegram Bot API в С++. Язык нельзя назвать простым, но он является базой, на которой были созданы все остальные вышеперечисленные ЯП. Соответственно в нем не заложена определенная специализация. Инструменты позволяют создавать любые приложения.
Пример использования
Кроме объектов API имеет набор методов, которые позволяют отправлять сообщения, файл, фото стикеры, редактировать и многое другое. Все эти команды можно найти в описании API на официальном сайте.
Для создания в Telegram существует специальный сервис @Botfather. Зайдите в него и увидите набор команд, с помощью которых создается новый робот. Для начала наберите команду /newbot. Далее последовательно введите имя для пользователей и название. Последнее обязательно заканчивается на «bot». После того, как вам пришлют токен (идентификатор), новый бот создан. Авторизация осуществляется через токен. Чтобы запустить программу в Телеграмм, найдите свое детище и нажмите кнопку «Старт». Это запустит преопределённую команду /start. Также для каждого робота зарезервированы команды /settings и /help.
Все запросы имеют вид:
Всего существует 4 способа подачи запроса:
- Запрос в URL
- application/x-www-form-urlencoded
- application/json (не подходит для загрузки файлов)
- multipart/form-data (для загрузки файлов)
Доступны как GET, так и POST запросы.
Самый простой способ попробовать команды API – адресная строка в браузере. Зайдите в свой бот в web-версии или с мобильного устройства. Затем в браузере наберите команду:
В результате в окне появится JSON-строка
В браузере появится строка
А в чате Телеграмм вы увидите приветствие от созданного робота.
Как видите, создать с нуля новый элемент для Телеграмм не сложно. Трудности начинаются в момент программирования, но об этом расскажем в других статьях.
Сообщения боту отправлялись и он на них реагировал.
Как получить выдачу типа:
1 ответ 1
Данный метод возвращает только новые сообщения. Если бот уже реагировал на некие отправляемые ему сообщения, то он их уже получил (скорее всего этим же методом) и они помечены сервером Telegram как полученные. Соответственно, при каждом новом запросе они возвращаться уже не будут, иначе вы бы каждый раз получали всю историю сообщений с момента создания бота. В данном случае, у вас есть два варианта:
Пытаюсь получить данные используя метод getUpdates Telegram API — нашел вот такое руководство.
Пишу своему боту — t1Bot
Потом использую метод:
Получаю следующий результат
>>
Ведь должен быть результат такого вида:
<
«result»: [
<
«message»: <
«text»: «/start»,
«date»: 1435176541,
«chat»: <
«username»: «yourusername»,
«first_name»: «yourfirstname»,
«id»: 65535
>,
——
Но результат пустой.
Что я делаю не так?
- Вопрос задан более трёх лет назад
- 22964 просмотра
Данный метод возвращает только новые сообщения. Если бот уже реагировал на некие отправляемые ему сообщения, то он их уже получил (скорее всего этим же методом) и они помечены сервером Telegram как полученные. Соответственно, при каждом новом запросе они возвращаться уже не будут, иначе вы бы каждый раз получали всю историю сообщений с момента создания бота. В данном случае, у вас есть два варианта: