Как получать сообщения из бота в телеграмме

от admin

Bot API: часто задаваемые вопросы

Если вы незнакомы с ботами в Telegram, рекомендуется сначала прочитать ознакомительную статью.

Также, возможно, вас заинтересует описание Bot API.

Общие вопросы

Как я могу создать бота?

Создание бота для Telegram крайне простое, однако, вам понадобится кое-какой опыт в программировании. Для работы вашего бота вам необходимо осуществить первоначальную настройку через бота @BotFather, а затем подключить его к вашему серверу через API.

К сожалению, какого-либо способа создать бота без программирования не существует. Поэтому, если вы не разработчик, лучше поищите себе готового бота или закажите его разработку.

Можно посмотреть примеры кода?

Вот два бота-образца, написанных на PHP:

    : демонстрация основных возможностей Bot API. : более сложный бот, поддерживающий оба способа получения обновлений (long-polling и вебхуки).

Многие разработчики создают своих ботов с открытым исходным кодом. Мы собираем их на специальной странице.

Добавьте в ботов фичу X!

API ботов — весьма молодой проект. Есть ещё масса возможностей, которые уже рассматриваются к реализации. Пока что администрация Telegram наблюдает за тем, как пользователи используют своих ботов, чтобы понять, в каком направлении необходимо развивать платформу.

Если у вас есть мысли по этому поводу, вы можете высказать их пользователю @BotSupport (на английском).

Какие сообщения может получать мой бот?

При создании бота у него автоматически включается режим приватности, который влияет на получения сообщений в группах. Это значит, что ваш бот будет получать сообщения из групп только при следующих условиях:

  • Сообщение было ответом боту или нажатием на его клавиатуру
  • В сообщении есть @упоминание бота по его имени пользователя
  • В сообщении содержится общая команда (напр., /start ) или команда, предназначающаяся вашему боту (напр., /start@YourBot )
  • Сообщение является служебным (о смене названия группы, выходе кого-либо из чата, и т. д.)

При выключении режима приватности, ваш бот будет получать все сообщения из групп, за исключением:

  • Сообщений от других ботов
  • Команд для других ботов (напр., /start@NotYourBot )
  • Ответов на сообщения от других ботов, за исключением случаев, когда в сообщении содержится @упоминание вашего бота.

Почему мой бот не видит сообщений от других ботов?

Диалог двух ботов может привести к нежелательным бесконечным циклам, когда боты отвечают друг другу по кругу. Поэтому было принято решение не давать ботам возможности видеть сообщения от других ботов.

Получение обновлений

Как можно получать обновления?

На текущий момент доступно два способа. Вы можете использовать либо опрос, либо вебхуки. Обратите внимание: если вы используете вебхуки, метод getUpdates работать не будет.

Принципиальное отличие: при опросе вашему приложению самому нужно запрашивать обновления у API, а используя вебхуки — сервера Telegram будут отправлять на ваш сервер каждое обновление с помощью HTTPS POST-запроса.

Вебхуки могут работать только через HTTPS, допустимо использование самозаверенного сертификата.

Доступные порты: 443, 80, 88, 8443.

Опрос всегда выдаёт один и тот же результат!

Метод getUpdates выдаёт 100 последних неподтверждённых обновлений. Чтобы подтвердить обновление, используйте параметр offset при вызове getUpdates вот так:

Все обновления с update_id меньшим или равным offset будут отмечены как подтверждённые и не будут больше возвращаться сервером.

У меня проблема с вебхуками

Если вы успешно задали адрес вебхука, но не получаете обновлений, убедитесь, что:

  • SSL-сертификат вашего вебхука валиден и корректен
  • При использовании самозаверенного сертификата, вы передаёте его публичный ключ в поле certificate метода setWebhook. Необходимо загружать InputFile , отправка строки не сработает.
  • Ваш вебхук работает на одном из допустимых портов: 443, 80, 88, 8443.

У меня проблема с самозаверенным сертификатом

Ознакомьтесь с инструкцией по созданию сертификатов. Если после прочтения у вас остались вопросы, напишите пользователю @BotSupport.

Как мне убедиться, что запросы идут с серверов Telegram?

Для этого включите ваш токен в адрес вебхука, примерно так:

Так как никто посторонний не знает вашего токена, запросы на этот адрес смогут отсылать только сервера Telegram.

Как делать запросы в HTTP-ответах к обновлениям?

Это возможно при использовании вебхуков. Преимуществом является сокращение числа запросов, недостатком — невозможность получения результата запроса и его статуса.

Всякий раз при получении обновления на вебхук, у вас есть два варианта:

2. Ответить напрямую, указав метод в виде JSON в HTTP-ответе:

Ответ в запросе

Пример реализации этой возможности на PHP можно посмотреть в коде HelloBot.

Обработка медиафайлов

Как скачивать файлы?

Для этого используйте метод getFile .

Этот метод работает только для файлов объёмом до 20 МБ.

Как закачать большой файл?

На текущий момент боты могут отправлять файлы объёмом до 50 МБ, так что крупные файлы отправить не получится. Возможно, это ограничение будет снято в будущем.

Как долго хранится file_id у файлов?

file_id у отправленных вашим ботом файлов будут удалены после отправления нескольких тысяч файлов.

Для принятых файлов file_id можно считать вечным и неизменным.

Массовая рассылка

Каков лимит сообщений в секунду?

При работе с отдельным чатом, избегайте отправки более 1 сообщения в секунду. Конечно, допустимы небольшие пики, но со временем вы начнёте получать ошибку 429.

При рассылке уведомлений нескольким пользователям, API не позволит отправлять более 30 сообщений в секунду. Для преодоления этого лимита вам необходимо разбить отправку на части с большим интервалом между собой (около 8-12 часов).

При работе с группой ограничение установлено на 20 сообщений в минуту.

Как получить список всех подписчиков моего бота?

К сожалению, пока сделать это встроенными методами нельзя. Возможно, в будущем будут добавлены пару строк для управления подписчиками.

Чтобы максимально эффективно рассылать сообщения, вам необходимо разбивать отправку на несколько частей с интервалом в 8-12 часов. Также недопустимо отправление более 30 сообщений разным пользователям в секунду — иначе вы будете получать ошибку 429.

Сайт про Telegram на русском (неофициальный).

Здесь собраны приложения на базе MTProto, переведена некоторая документация с официального сайта, а также работает Webogram.

Всё, о чём должен знать разработчик Телеграм-ботов

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй «как я создал такого-то бота» и туториалов вроде «как создать бота, который будет говорить hello world». При этом многие неочевидные моменты просто нигде не описаны.

Как вообще устроены боты? Как они взаимодействуют с пользователями? Что с их помощью можно реализовать, а что нельзя?

Подробный гайд о том, как работать с ботами — под катом.

Статья обновлена в январе 2022

Обновлена информация об id пользователей и чатов: теперь их нельзя хранить в 32-битном типе чисел.

Добавлен раздел о сообщениях от лица групп и каналов

Обновлена информация о различных меню команд для отдельных чатов и пользователей.

Добавлена информация о спойлерах в разметке сообщений.

Добавлен раздел об обновлениях Bot API.

Содержание

Начало работы

Telegram API vs Telegram Bot API

Рассказываю по порядку.

Телеграм использует собственный протокол шифрования MTProto. MTProto API (он же Telegram API) — это API, через который ваше приложение Телеграм связывается с сервером. Telegram API полностью открыт, так что любой разработчик может написать свой клиент мессенджера.

Для написания ботов был создан Telegram Bot API — надстройка над Telegram API. Перевод с официального сайта:

Чтобы использовать Bot API, вам не нужно ничего знать о том, как работает протокол шифрования MTProto — наш вспомогательный сервер будет сам обрабатывать все шифрование и связь с Telegram API. Вы соединяетесь с сервером через простой HTTPS-интерфейс, который предоставляет простую версию Telegram API.

Среди упрощений Bot API: работа через вебхуки, упрощенная разметка сообщений и прочее.

Почему-то мало кто знает о том, что боты могут работать напрямую через Telegram API. Более того, таким образом можно даже обойти некоторые ограничения, которые даёт Bot API.

Вся информация ниже будет по умолчанию относиться и к Bot API, и к Telegram API. О различиях я буду упоминать. От некоторых ограничений Bot API можно избавиться с помощью локального сервера, об этом в конце статьи.

На чём пишут Телеграм-ботов

Бот должен уметь отправлять запросы Телеграм-серверу и получать от него апдейты (updates, обновления).

Как получать апдейты в Bot API

Получать апдейты можно одним из двух способов:

Поллинг — просто регулярно отправлять запрос к серверу Телеграма для получения обновлений,

Вебхук — сделать так, чтобы Телеграм сам отправлял запросы по нужному URL.

Конечно, удобнее использовать библиотеки, чем делать http-запросы «руками».

Если вы попробуете загуглить, как написать Телеграм-бота на Python, вам предложат воспользоваться библиотеками python-telegram-bot и telebot. Но не стоит.

Ну, если вы только хотите познакомиться с разработкой ботов и написать своего hello-world-бота, то можете, конечно использовать и их. Но эти библиотеки могут далеко не всё. Среди разработчиков ботов лучшей библиотекой для ботов на Python считается aiogram. Она асинхронная, использует декораторы и содержит удобные инструменты для разработки. Ещё был хороший Rocketgram, но он давно не обновлялся.

Также ботов часто пишут на JavaScript, для этого обычно используется Telegraf. Библиотеки есть и для многих других языков, но используют их реже.

Если же вы хотите использовать Telegram API, то можете воспользоваться Python’овскими Telethon и Pyrogram.

Пример кода бота

Если вы хотите получить какое-то представление о том, как вообще выглядит код бота, вот вам пример использования на aiogram с его странички на GitHub:

Этот бот будет отвечать на команды /start и и /restart.

Создание бота

Единственная информация о Телеграм-ботах, которой в интернете полным-полно: как создать бота. Это делается через специального бота BotFather. Когда вы создадите бота, BotFather даст вам его токен. Токен выглядит примерно так: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw . Именно с помощью токена вы сможете управлять ботом.

Один пользователь может создать до 20 ботов.

В BotFather удобно управлять ботами своими командой /mybots .

Юзернеймы

При создании бота нужно выбрать юзернейм. После этого поменять его будет очень сложно.

Как поменять юзернейм бота

Если у вас есть бот, и вы хотите дать ему более короткий юзернейм (который может быть занят неработающим ботом), то вы, теоретически, можете это сделать через @BotSupport.

Для этого бот должен (внезапно) быть рабочим, а также поддерживать английский язык.

Принято использовать такой формат обращения в поддержку:

Если вы везунчик 9999 lvl — вам ответят.

Юзернейм бота выглядит как обычный юзернейм, но он должен заканчиваться на «bot».
Вы могли видеть ботов с именами @pic, @vid, @sticker, @gamee — это официальные боты Телеграма. Им можно нарушать все правила 🙂

Очень многие юзернеймы уже заняты. Свободных коротких юзернеймов осталось очень мало. И что самое грустное: почти все эти боты мертвы. Просто не отвечают на сообщения. Наверное, это просто разные любопытные люди хотят сделать бота, создают его, а потом забивают. У меня самого есть несколько лежащих ботов. Так что, думаю, лимит в 20 ботов на одного владельца вполне оправдан 🙂

Оформление бота

Открыв бота, пользователи могут увидеть его профиль.

Оформление бота настраивается в BotFather: меню /mybots → Edit Bot . Там можно изменить:

Описание (Description) — это текст, который пользователи будут видеть в начале диалога с ботом под заголовком «Что может делать этот бот?»

Информация (About) — это текст, который будет виден в профиле бота.

Аватарка. Аватарки ботов, в отличие от аватарок пользователей и чатов, не могут быть анимированными. Только картинки.

Команды — тут имеются ввиду подсказки команд в боте. Подробнее о командах ниже.

Inline Placeholder — об инлайн-режиме см. ниже.

Стандартный совет: Потратьте свое время и заполните описание и информацию бота, чтобы пользователям было понятнее и проще его использовать. Можете оставить там свои контакты. И поставьте аватарку, чтобы бота было проще отличать от других чатов в списке.

Сообщения и чаты

Запуск бота пользователем

Когда пользователь впервые открывает бота, он видит кнопку «Запустить» или «Начать» (зависит от платформы пользователя), на английском — «Start». Нажимая на эту кнопку, он отправляет команду /start .

Таким образом, первое сообщение от пользователя — это всегда /start (либо /start с параметрами, об этом ниже в разделе «Диплинки»).

. если пользователь использует официальный клиент

На стороне сервера это не проверяется, поэтому теоретически пользователь может отправить боту любое сообщение через Telegram API.

Сообщения

Понятно, что главная функция бота — отправлять и получать сообщения.

И то, и другое можно делать со всеми видами сообщений (фото и видео, файлы, опросы, голосовые сообщения и т. д.).

В Телеграме можно делиться файлами до 2 ГБ, но в Bot API более жесткие лимиты: боты могут скачивать файлы до 20 МБ и отправлять файлы до 50 МБ.

Работа с файлами в Bot API

Если бот уже загрузил файл на сервер Телеграма, то он может использовать file_id, чтобы отправлять этот файл.

Загружать файл на сервер можно в том числе и по URL файла.

Куда может писать бот

Бот может писать в личку только тем пользователям, которые его запустили. Пользователь может заблокировать бота, и тогда бот снова не сможет ему писать.

Боты не могут писать другим ботам.

Бота можно добавить в группу (если в BotFather включена соответствующая настройка). По умолчанию он видит не все сообщения (об этом ниже, в разделе «Видимость сообщений в группах»).

В группе боту можно дать права администратора, чтобы он мог выполнять действия админов.

В одной группе может быть до 20 ботов. В публичные группы (группы с юзернеймом) ботов могут добавлять только админы.

Также бота можно добавить в канал, причем только как администратора. Самый частый способ использования ботов в каналах — добавление кнопок под постами («лайки», ссылки и прочее).

Как боты добавляют кнопки

У админа канала может быть специальное право: «Редактирование чужих публикаций». С помощью него боты редактируют посты, добавляя к ним кнопки.

Подробнее о кнопках тоже ниже.

Супергруппы

На самом деле многие группы в Телеграме являются супергруппами.

Почему так? Раньше было четкое разделение на группы и супергруппы. По задумке, супергруппы — это группы для сообществ. Супергруппы могут иметь больше участников, публичные ссылки и другие плюшки.

Со временем, видимо, решили, что это неудобная концепция. Теперь обычная группа становится супергруппой, когда у группы меняются какие-нибудь настройки (подробнее тут). Вот такой костыль.

В этой статье под группами я подразумеваю и супергруппы, и обычные группы.

Супергруппу нельзя обратно превратить в группу. С точки зрения API супергруппа устроена так же, как и канал. Важное отличие супергрупп от обычных групп состоит в нумерации сообщений: о нём чуть ниже.

id пользователей и чатов

У каждого пользователя, бота, группы, канала в Телеграме есть собственный id. Различать чаты в коде бота следует именно по id, потому что он никогда не меняется.

В токене бота первая часть — это его id. Например, токен 110201874:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw принадлежит боту с id 110201874 .

В Bot API перед id супергрупп и каналов пишется -100. Так, id 1356415630 превращается в -1001356415630 .

Не следует хранить id пользователей и чатов в 32-битном типе числа: теперь id могут превышать 2 31 -1.

id сообщений

Каждое сообщение в Телеграме имеет свой id. Это относится и к системным сообщениям (пользователь зашел в группу, изменилось название группы и т. д.)

Через Telegram API боты могут получать по запросу сообщения в любом чате по их id.

id сообщений в супергруппах и каналах уникальны для чата: первое сообщение в чате имеет номер 1, второе имеет номер 2 и так далее.

id сообщений в личных сообщениях и обычных группах работают по другому. Там, можно сказать, нумерация сквозная: id сообщения уникально для каждого отправившего его пользователя. Так, первое сообщение от пользователя во всех личках и группах имеет номер 1, второе сообщение от того же пользователя имеет номер 2 и так далее.

Видимость сообщений в группах

Обычно бот должен реагировать именно на команды. Телеграм не уведомляет бота об остальных сообщениях, и это гарантирует приватность переписки.

Но если боту нужно видеть все сообщения в группе (например, если это чат-бот или антиспам-бот), для него можно отключить Privacy mode.

Privacy mode — настройка в BotFather, которая по умолчанию включена. В таком режиме бот в группах видит только такие сообщения:

Сообщения с упоминанием бота,

Ответы на сообщение бота, ответы на ответы и так далее,

Команды — о них в следующем пункте.

А если Privacy mode выключен, то бот видит все сообщения в группе.

Если бот — админ в группе, то он в любом случае видит все сообщения.

Бот, работающий через Bot API, в любом случае не будет видеть сообщения от других ботов.

Бот видит не все сообщения

Бот видит не все сообщения Я включил Privacy mode, а он не работает

Нужно удалить бота из группы и добавить заново.

Недавно был найден баг: боты не могли видеть некоторые сообщения от юзеров, если сообщения выглядят как команды с юзернеймом пользователя на конце.

Это могло нарушить работу антиспам- и других ботов.

Сейчас баг уже исправлен.

Сообщения от лица групп и каналов

В группах могут быть не только сообщения от пользователей, но и:

Сообщения в группе из привязанного канала (с точки зрения API это пересланные сообщения)

Сообщения от лица группы от анонимных администраторов той же группы

Сообщения от лица публичных каналов от любых пользователей

Учитывайте это при разработке ботов для групп.

Команды

Часто используемый способ «общения» пользователей с ботом — команды. Команды начинаются на «/» и состоят из латинских букв (можно использовать цифры и нижние подчеркивания).

Команды подсвечиваются как ссылки: нажатие отправляет команду в чат.

В группах, чтобы различать команды от разных ботов, Телеграм предлагает ставить в конце команды юзернейм бота. Например: /start@examplebot .

В BotFather можно указать подсказки команд для бота. Он будут отображаться при вводе «/» и команд. Если есть подсказки, рядом с кнопкой «Отправить» появляется кнопка для открытия меню команд.

Если в подсказках команд есть /help , в профиле бота появляется кнопка «Помощь с ботом». Нажатие на кнопку отправляет эту команду.

Если в подсказках команд есть /settings , в профиле бота появляется кнопка «Настройки бота». Нажатие на кнопку отправляет эту команду.

С 2021 года боты могут показывать разные меню команд для разных пользователей и групп, а также меню команд может зависеть от языка пользователя и того, является ли участник группы админом.

Разметка сообщений

Как вы, наверное, знаете, сообщения в Телеграме могут содержать не только обычный текст, но и жирный, курсив и др. В Bot API разметку сообщений можно делать в HTML и Markdown.

Разметка в Telegram API

В Telegram API для разметки надо вместе с сообщением передавать entities (MessageEntityBold, MessageEntityItalic и так далее). Хорошие библиотеки сами превращают HTML/Markdown в текст и entities.

Способы выделения текста:

Жирный текст

Моноширинный текст («в строке» и «блоком»)

Спойлер — текст, который показывается только после нажатия на плашку

Упоминание пользователя — текст, похожий на ссылку, клик по которому открывает профиль пользователя. Если упомянуть в группе её участника, он получит уведомление.
Чтобы вставить в сообщение упоминание пользователя, в Bot API нужно встроить ссылку на tg://user?id=123456789.

Кнопки

Инлайн-кнопки

Бот может оставлять кнопки под своими сообщениями.

Кнопки под сообщениями (они же inline keyboards / inline buttons) в основном бывают трёх видов:

URL button — кнопка с ссылкой.

Callback button. При нажатии на такую кнопку боту придёт апдейт. С созданием кнопки можно указать параметр, который будет указан в этом апдейте (до 64 байтов). Обычно после нажатий на такие кнопки боты изменяют исходное сообщение или показывают notification или alert.

Switch to inline button. Кнопка для переключения в инлайн-режим (об инлайн-режиме см. ниже). Кнопка может открывать инлайн в том же чате или открывать меню для выбора чата. Можно указать в кнопке запрос, который появится рядом с никнеймом бота при нажатии на кнопку.

Login URL button — специальная кнопка для авторизации пользователей на сайте. Использовалась, например, в официальном боте @discussbot (до добавления нативных комментариев в Телеграм).

Callback game button — кнопка для открытия HTML-игры. См. пункт «HTML-игры».

Pay button — кнопка для платежей. См. пункт «Платежи через ботов».

Клавиатурные кнопки

Есть другой тип кнопок: keyboard buttons. Они отображаются вместо клавиатуры как подсказки. При нажатии на такую кнопку пользователь просто отправит этот текст.

При этом в личных чатах с помощью кнопки можно:

Запросить номер телефона пользователя,

Запросить геолокацию пользователя,

Открыть у пользователя меню создания опроса.

Есть опция resize_keyboard, которая отвечает за то, изменять ли высоту этой «клавиатуры из кнопок». По умолчанию она, почему-то, выключена, и тогда высота клавиатуры стандартная большая. Получаются кнопки как на этой картинке:

Чтобы показать клавиатурные кнопки, бот должен отправить сообщение. Можно отправить клавиатуру, которая свернётся (но не пропадёт) после нажатия на кнопку.

По умолчанию, если показать кнопки в группе, они будут видны всем пользователям. Вместо этого можно отобразить кнопки одновременно для этих пользователей:

Для пользователей, юзернеймы которых были в тексте сообщения,

Читать:
Как забанить человека в боте телеграмм

Если это ответ на другое сообщение: для пользователя, который его отправил.

Ещё о кнопках

Оба типа кнопок могут составлять несколько рядов, в каждом из которых по несколько кнопок. Ограничения: в ряду может быть до 8 кнопок, а всего с сообщением до 100 кнопок.

При отправке сообщения можно выбрать одно (но не больше) из следующих действий:

Добавить к сообщению инлайн-кнопки,

Показать клавиатурные кнопки,

Убрать все клавиатурные кнопки,

Force reply: автоматически заставить пользователя ответить на сообщение. Так произойдёт то же самое, что и при нажатии пользователем кнопки «Ответить». Это нужно для того, чтобы бот мог общаться с пользователями в группах, не нарушая Privacy mode.

Таким образом, нельзя показать оба типа кнопок одновременно.

Взаимодействие с ботом

Ссылки на бота

Юзернеймы ботов работают так же, как и любые другие юзернеймы в Телеграме: бота @examplebot можно открыть по ссылке t.me/examplebot.

Также существует прямая ссылка: tg://resolve?domain=examplebot

Подробнее о ссылках tg://

Такие ссылки могут не только заменять ссылки t.me, но и задавать свои действия. Например, tg://settings открывает настройки.

Список известных таких ссылок есть канале @DeepLink.

Ссылка на добавление в группу

По ссылке t.me/examplebot?startgroup=true у пользователя откроется меню: выбор группы для добавления бота.

Прямая ссылка: tg://resolve?domain=examplebot&startgroup=true

Диплинки

По ссылке t.me/examplebot?start=<ваш текст> пользователь может запустить бота с каким-то стартовым параметром ( <ваш текст> ).

Что происходит, когда пользователь переходит по такой ссылке:

Бот открывается как обычно.

Отображается кнопка «Запустить», даже если пользователь уже запускал бота.

Пользователь нажимает на кнопку и видит сообщение /start (всё как обычно).

Боту вместо этого приходит сообщение /start <ваш текст>

Так бот может отреагировать на запуск не как на обычный «/start», а другим способом.

Часто диплинки используются для реферальных программ (в качестве параметра можно передавать id пользователя, который поделился ссылкой). Есть и другие применения.

Прямая ссылка: tg://resolve?domain=examplebot&start=<ваш текст>

Инлайн-режим

Инлайн-режим (inline mode) — это специальный режим работы бота, с помощью которого пользователь может использовать бота во всех чатах.

Выглядит это так: пользователь вводит юзернейм бота в поле для ввода сообщения. После юзернейма можно ещё записать запрос (текст до 256 символов).

Появляется менюшка с результатами. Выбирая результат, пользователь отправляет сообщение.

Инлайн-режим можно включить в BotFather, там же можно выбрать плейсхолдер вместо стандартного «Search. «

В группе можно запретить использовать инлайн всем или некоторым участникам. В официальных приложениях Телеграм это ограничение объединено с ограничением на отправку стикеров и GIF.

Результаты инлайн-режима

Результаты можно отображать двумя способами:

Сеткой. Удобно для выдачи картинок.

Вертикальным списком. Удобно для выдачи текста.

Можно совмещать два типа, но корректно отображается это только на Telegram Desktop.

Приватность и геопозиция в инлайне

Когда пользователь вызывает инлайн-режим, бот не может получить никакую информацию о контексте, кроме информации о пользователе. Таким образом, бот не может узнать ни чат, в котором вызвали инлайн, ни сообщение, на которое пользователь отвечает.

Но зато если включить в BotFather настройку «Inline Location Data», то бот сможет видеть геопозицию пользователей, когда они используют инлайн (на мобильных устройствах). Перед этим у пользователей показывается предупреждение.

Inline feedback

Inline feedback — это апдейты о выбранных инлайн-результатах. Включаются через BotFather.

Предполагается использование inline feedback для сбора статистики, но не всегда он используется так. Inline feedback позволяет «подгружать» не все результаты сразу, а только выбранный. Например, если бот используется для поиска музыки, то он может загружать не все песни сразу, а только одну.

Важный момент: если вы получили апдейт об отправке инлайн-сообщения, то вы можете его редактировать, только если к нему прикреплены инлайн-кнопки. (Если кнопок нет, то в апдейте не указывается id инлайн-сообщения, по которому происходит редактирование).

Создание наборов стикеров

Боты (и только боты!) могут создавать наборы стикеров. При этом каждый набор стикеров должен принадлежать какому-то пользователю. Посмотреть свои наборы стикеров пользователь может с помощью бота @Stickers.

Платежи через ботов

Телеграм предоставляет ботам возможность принимать платежи от пользователей. Это делается через провайдеров ЮMoney, Сбербанк, Stripe и ещё 7.

Эта возможность используются редко, потому что для использования провайдеров нужно юридическое лицо.

UPD 04.2021. В новом обновлении появилось больше возможностей платежей для разработчиков. Теперь боты могут отправлять платежи не только в лс, но и в группы и в каналы. Это позволяет сделать из канала «витрину», на которой можно сразу купить товар. Вы можете посмотреть, как это выглядит, в официальном демо-канале.

HTML-игры в ботах

Боты могут позволять пользователям играть в HTML5-игры в чатах. Бот может отправлять сообщения-игры или создавать их через инлайн-режим. Как это работает, можно посмотреть на примере официального @gamebot.

Telegram Login Widget

Вы можете добавить на свой сайт авторизацию через Телеграм. Процесс авторизации будет проходить так:

Пользователь должен будет ввести свой номер телефона.

Бот Telegram попросит подтвердить вход.

Пользователь авторизуется и нажимает на «Принять» на сайте.

Telegram Login Widget не связан с Login URL button (см. раздел про кнопки выше), а является его альтернативой.

Разработка ботов

Какие апдейты можно получать

Бот не может получить старые сообщения из чата. Бот не может получить список всех своих пользователей. Все, что может получать бот — это информацию об обновлениях. В этом заключается главная сложность разработки ботов.

Вы можете получать информацию о новых сообщениях в боте и других событиях, но только один раз. Вам придётся самим хранить список чатов, старых сообщений (если это зачем-то нужно) и так далее. Если вы случайно сотрёте/потеряете эту информацию, вы её больше никак не получите.

В Telegram API бот может чуточку больше: он может получать сообщения по id, получать список участников группы и прочее.

Получение апдейтов: Bot API vs Telegram API

Если вы получили апдейт в Bot API, то второй раз вы его уже не получите.

В Telegram API это не так: пользователь может пользоваться мессенджером через несколько клиентов, каждый из которых должен получать апдейты.

Если запустить для одного бота несколько программ на Telegram API, то каждая из них будет получать все апдейты.

Ограничения Bot API не позволяют сделать то же самое.

Обновления API

Telegram API и Telegram Bot API обновляются с появлением новых фич в Телеграме. Все обновления Bot API описаны на отдельной странице в документации и в официальном канале BotNews.

Лимиты

Конечно, на запросы к серверу существуют лимиты. В Bots FAQ на сайте Telegram названы следующие:

Не больше одного сообщения в секунду в один чат,

Не больше 30 сообщений в секунду вообще,

Не больше 20 сообщений в минуту в одну группу.

Эти лимиты не строгие, а примерные. Лимиты могут быть увеличены для больших ботов через поддержку.

Другие известные ограничения в Telegram собраны на limits.tginfo.me — см. раздел про ботов.

Рассылка по пользователям

Ниже в Bots FAQ сказано, что Bot API не позволяет рассылать сообщения всем юзерам одновременно и что в будущем, может быть, они что-то для этого сделают. И написано это уже несколько лет.

Они советуют растянуть рассылку на длительное время (8-12 часов) и замечают, что API не позволит отправлять сообщения более чем

30 пользователям в секунду.

Смена владельца бота

Осенью 2020 года появилась возможность передавать ботов другому человеку. Это можно сделать в настройках бота в BotFather. Для этого на вашем аккаунте должна быть включена двухфакторная авторизация — не менее, чем за 7 дней до передачи. Передать бота можно только пользователю, который что-либо ему писал.

Локальный сервер Bot API

Также осенью 2020 года исходники Bot API выложили на GitHub. Теперь вы можете поднять собственный сервер Bot API. На GitHub перечислены следующие преимущества:

Скачивание файлов с сервера без ограничения (ограничение на отправку файлов пользователями в Телеграме — 2 ГБ),

Загрузка файлов на сервер до 2000 МБ,

Загрузка файлов на сервер с помощью локального пути и URI файла,

Использование HTTP URL для вебхука,

Использование любого локального IP-адреса для вебхука,

Использование любого порта для вебхука,

Возможность увеличить максимальное число соединений до 100000,

Получение локального пути файла вместо загрузки файла с сервера.

Юзерботы

В начале статьи я рассказывал о том, что такое Telegram API и Telegram Bot API.

Telegram API используется не только для ботов — тогда в чём проблема управлять аккаунтами пользователей, как ботами? Люди это делают. Кто-то автоматически ставит текущее время себе на аватарку, кто-то скриптом реагирует на свои сообщения как на команды, кто-то сохраняет сообщения из публичных групп и каналов. Всё это называют юзерботами.

Юзерботов следует использовать аккуратно: за большую подозрительную активность аккаунт могут ограничить или забанить.

Заключение

Я постарался собрать в одном месте и структурировать информацию о всех возможностях Телеграм-ботов. Большое спасибо vanutp, NToneE и Grinrill за помощь с фактами. Если мы что-то забыли — пишите, исправлю.

Я специально не разделял большую статью на несколько постов, чтобы можно было быстро найти нужную информацию. К тому же, в начале статьи есть её содержание. Так что можете сохранить её к себе и использовать как справочник 🙂

Вообще интерфейс бота (то есть интерфейс чата) имеет много ограничений. Но плохо ли это? Действительно удобнее использовать инструмент, когда это часть привычной среды. Я часто прямо в переписке нахожу нужную картинку или информацию с помощью инлайн-ботов. Как заядлый пользователь Телеграма, я люблю использовать ботов. И создаю ботов. И вы создавайте.

Создаем бот обратной связи в Телеграм

Превью к статье о создании бота обратной связи в Телеграм

Как создать бот обратной связи в Телеграм и получить дополнительное средство коммуникации, расскажу в сегодняшней статье.

Зачем нужны боты обратной связи в Телеграм

Для начала разберу, зачем используют боты обратной связи.

Раньше главной задачей ботов было создание коммуникации между людьми. Например, между админом и аудиторией канала, продавцом и покупателем и т.д. Отсюда и название «Бот обратной связи». Создавались такие боты на базе конструкторов и имели минимальный функционал. Меню, кнопок, автоответов в них не было.

Со временем ситуация изменилась. Появилась возможность делать в ботах меню, кнопки, собирать данные по пользователям и проводить рассылки.

Сегодня через боты обратной связи, помимо коммуникации, возможно реализовать и другие задачи. Например, собирать контент от подписчиков, автоматизировать продажу товаров и пр.

Пригодятся боты и для связи с людьми, получившими бан за спам, и не имеющими возможность писать другим пользователям мессенджера первыми.

Пример бана за спам

В боты при бане писать все равно возможно.

Создать бот обратной связи возможно через два конструктора: LivegramBot и FleepBot. Ниже я разберу пошагово создание бота в каждом конструкторе. И выскажу свое мнение о лучшем.

Уголок Админа — авторский блог о Телеграм. Только качественная и полезная информация о продвижении и развитии Телеграм-каналов.

Создаем бот обратной связи через FleepBot

Для примера я создам простой бот для связи с одной кнопкой.

Настройка и подключение

1. Нахожу в поиске и запускаю @FleepBot

FleepBot

2. В боте уже есть качественная инструкция по настройке. Удобно.

Интерфейс FleepBot

3. Нажимаю кнопку «Fleep.бизнес» снизу слева.

Создаем бот обратной связи

Теперь необходимо перейти в @BotFather и создать в нем бот, затем подключить его к Fleep, отправив токен. Перехожу в @BotFather и создаю бот.

4. Запускаю @BotFather, он выдает список команд.

Команды в @BotFather

5. Ввожу команду /newbot, бот просит придумать название. Назову просто «Бот для связи».

6. Название дано, выбираю юзернейм (на окончании обязательно должно быть слово «bot»). Даю юзернейм «live_support22_bot». Если бот ругается, значит юзернейм занят и следует попробовать другой.

Даем название боту и юзернейм

Бот готов, получаю поздравления и токен. Теперь проработаю внешний вид и описание бота.

7. Использую команду /setuserpic для добавления аватарки и отправляю фото. Отправляю команду, выбираю бот и присылаю фото для аватарки.

Добавляем боту аватарку

8. Аватарка сделана, добавляю описание. Есть две команды: /setdescription и /setabouttext. Команда /setabouttext дает возможность установить описание бота в шапке. Команда /setdescription дает возможность установить описание бота при старте.

9. Ввожу /setabouttext и даю описание бота в шапке. Например «Бот для связи с администратором канала».

10. Ввожу /setdescription и отправляю текст для описания бота при старте. Сделаю текст таким же как и в шапке бота «Бот для связи с администратором канала».

Даем описание бота в шапке

11. С первичной настройкой все, копирую токен бота и отправляю его в @Fleepbot.

Подключаем бот к Fleepbot

Все готово, теперь создаю кнопки в боте.

Инструкция по созданию кнопок

1. Захожу в созданный бот и запускаю его.

Бот обратной связи в телеграм

2. Запустил бот, теперь настраиваю его. Нажимаю «Настройки».

Бот обратной связи в телеграм, настраиваем бот

3. Я делаю простой бот с одной кнопкой. Нажимаю «Меню», затем «Главное меню», жму на значок плюса и нажимаю «Обычная»

Бот обратной связи в телеграм, создаем кнопку

Создаем бот обратной связи в Телеграм

4. Бот просит ввести название для кнопки. Назову ее «Техподдержка».

Бот обратной связи в телеграм, создаем кнопку 2

5. Ввожу ответ — текст, который получит пользователь, нажав на кнопку в боте. Я ввожу, например, такой: «По всем возникшим вопросам вы можете написать мне в личные сообщения @tolstoy87» и нажимаю «Готово».

Создаем бот обратной связи в Телеграм

6. Кнопка готова, бот отправляет сообщение о ее успешном создании.

Проверка бота

Бот создан, пора найти и проверить его.

1. С другого аккаунта Телеграм ищу в поиске свой созданный бот.

бот обратной связи в телеграм

Бот обратной связи в телеграм

3. Проверяю кнопку. Все работает, по нажатию бот выдает нужную информацию.

Бот обратной связи в телеграм, проверка функций

Чтобы убрать вотермарку «Бот создан с помощью сервиса @FleepBot», необходимо использовать платную версию Fleep-отложки или оплатить подписку на бот.

Итак, бот обратной связи в Телеграм получился полностью рабочим и удобным. Дополнительно познакомиться с возможностями конструктора FleepBot возможно в видео ниже.

Создаем бота обратной связи через LivegramBot

Второго бота буду создавать через @LivegramBot

Настройка и подключение

1. Нахожу бота @LivegramBot в поиске Телеграм, запускаю и ввожу команду /addbot

Интерфейс бота Livegram

2. Выскакивает сообщение с просьбой о создании бота в @BotFather, перехожу в него.

Бот обратной связи в телеграм, инструкция по настройке

3. В @BotFather ввожу команду /newbot и придумываю имя для бота. Я назову его Support_bot (название возможно и на русском).

Команда для создания бота

4. Теперь нужно создать юзернейм для бота(@юзернейм). Важно — на конце обязательно должно быть слово bot, о чем и предупреждают. Подбираю подходящее. Если бот пишет ошибку, значит оно уже занято. Со второй попытки я создал подходящий юзернейм.

Подбираем юзернейм

Все, выскакивает сообщение об успешном создании бота и в самом низу выдается токен. (Длинная строка с цифрами и буквами).

5. Боту можно дать описание и аватарку. Через команды в @BotFather

команды в @BotFather

Я добавлю одну аватарку через команду /setuserpic. Ввожу ее и загружаю фото. Теперь у бота есть аватарка.

Создаем бот обратной связи в Телеграм

По желанию добавляем описание к боту. Я этого делать не буду.

6. Далее пересылаю сообщение с токеном в @LivegramBot или просто копируем и вставляем его.

Отправляем токеy и подключаем к Livegram

Успешно создаем бот обратной связи в Телеграм.

7. Запускаю созданный бот. Получаю стандартное сообщение. Его возможно поменять в дальнейшем. Но предложение «Этот бот был создан с помощью @LivegramBot» убрать никак нельзя. Это своеобразная плата за использование функций бота.

Бот обратной связи в телеграм, стандартное приветствие

Проверка бота

Теперь через бот возможно общаться с пользователями. Проверю. Нахожу созданный бот в поиске Телеграм.

Создаем бот обратной связи в Телеграм

Запускаю и пишу ему с основного аккаунта.

бот обратной связи в телеграм

Получаю сообщение в боте на втором аккаунте (том, на котором я его создал).

бот обратной связи в телеграм

Теперь я попробую ответить. Выбираю сообщение и нажимаю пункт «Ответить» и пишу.

бот обратной связи в телеграм

бот обратной связи в телеграм

Ответ пришел мне в бот, запущенный на основном аккаунте.

бот обратной связи в телеграм

Все работает, получаю двухстороннюю связь.

Подключаем боты к чату

Бот обратной связи в Телеграм возможно подключить к любому чату. Возможно подключить к чату как бот созданный через FleepBot, так и созданный через LivegramBot. Для подключения бота, просто добавьте его в нужный чат с того аккаунта, где его создавали.

После подключения к чату, бот будет пересылать все сообщения от пользователей в чат. Отвечать на сообщения будет возможно прямо из чата. Удобно, если у вас есть отдельная админская группа. В этом случае вы ничего не пропустите, а отвечать на сообщения смогут и другие админы чата.

Пример подключения бота к чату

Пример подключения к чату бота, созданного через FleepBot

Пример подключения бота к чату

Пример подключения к чату бота, созданного через LivegramBot

Какой конструктор выбрать для создания бота обратной связи в Телеграм

Чтобы ответить на этот вопрос, разберу плюсы и минусы каждого конструктора. Конструктор LivegramBot.

  • Бесплатный.
  • Простой в настройке.
  • Есть рассылка по пользователям, запустившим бот.
  • Скудный функционал: нельзя создавать кнопки, делать выборочную рассылку, ставить автоответы и пр.
  • Есть неубираемая реклама «Этот бот был создан с помощью @LivegramBot»
  • Нет чата с поддержкой.
  • Бесплатный.
  • Простой в настройке.
  • Есть рассылка не только по пользователям, запустившим бот, но и по пользователям, нажавшим определенные кнопки, или недавно использующим бот
  • Вотермарку «Бот создан с помощью сервиса @FleepBot» возможно убрать.
  • Есть чат с техподдержкой.

Минусов я не обнаружил.

Оба конструктора выполняют свои задачи, но, на мой взгляд, лучше выбрать для работы FleepBot.

Заключение

Вот так легко и просто возможно создать бот обратной связи в Телеграм. Советую обязательно использовать его под разные задачи.

Надеюсь, статья была для вас полезной. Всегда рад видеть ваши комментарии. Подписывайтесь на канал для админов в телеграм и рассылку, делитесь статьей.

Успехов вам! До новых встреч в следующих статьях. С уважением, Дмитрий Толстой.

Большое превью к статье Как защитить Телеграм-канал от взлома и мошенников".

Большое превью к статье "Обязательная подписка в Телеграм".

Большое превью к статье "Пригласительные ссылки в Телеграм".

Большое превью к статье "Как найти и отслеживать каналы-конкуренты в Телеграм".

Большое превью к статье "Notepost - обзор, инструкция по настройке".

Выбираем тематику для Телеграм-канала правильно

Здравствуйте Дмитрий.
Не совсем понял, зачем создавать бот-фидбек, если можно просто работать в группе телеграм.
И пока не разобрался, что за дублирование в канале и в ливграм?
Как пользователи в канале смогут отправить фидбек?
Спасибо.

Внимательно перечитайте статью, там все подробно написано. Бот создаем в первую очередь для пользователей, имеющих «спам блок» (для тех, кто не может писать другим первыми, из-за бана телеграм за спам, в чаты они также писать не могут при бане, а вот запустить бота и написать ему при бане можно!) Либо для обратной связи, если не хотим указывать свои контакты (по всем вопросам пользователи будут писать в бот, а вы общаться с ними через него (ваши контакты они не увидят)).

Через бот общаемся с каждым пользователем по отдельности (например, вопрос покупки/продажи рекламы, ответ на конкретный вопрос и пр). Это удобно.

Пример. Вы имеете канал. В шапке канала указаны для связи контакты @admin и бот обратной связи @bot_admin. Я хочу купить рекламу. Но у меня вечный бан за спам. Я не могу писать первым никуда (ни в личные сообщения пользователям, ни в чаты). Как мне с вами связаться? Написать в личку @admin? Невозможно. Поэтому, я запускаю вашего бота @bot_admin и пишу ему свои вопросы. Вы через него мне отвечаете. Связь установлена.

Пример. Я подписчик вашего канала. Хочу задать вам вопросы. Вы не хотите раскрывать по каким-то причинам свое имя пользователя в телеграм @admin (возможно из соображений безопасности). Поэтому, вы указываете только бот обратной связи в шапке канала @bot_admin. Я запускаю вашего бота @bot_admin и пишу ему свои вопросы. Вы через него мне отвечаете. Я не вижу вашего имени пользователя (диалог для меня идет только с ботом). Связь установлена, ваши личные данные остались конфиденциальны.

Что значит «можно просто работать в группе телеграм»? Про бот я все подробно расписал выше. Возможно вам нужно плотно работать со всей аудиторией вашего канала? Тогда нужно подключать к каналу отдельный чат (сейчас это возможно) и уже в нем вы сможете отвечать на все вопросы пользователей и видеть их будут все участники чата.

Про «дублирование в канале и в ливграм» также неясно, что вы имели ввиду.

На вопрос «Как пользователи в канале смогут отправить фидбек?» отвечаю. В самом канале никак, но они могут посмотреть шапку канала и общаться с вами через бот обратной связи задавая свои вопросы.

Добрый день!
Спасибо за полезную статью!
Есть проблема — через форму обратной связи в телеграмм посыпалась тонна спама. Форма простая, одно поле с телефоном. Так вот вместо заявки от реального клиента идут сотни писем с левыми номерами.
Сама идея получать заявки с сайта сразу в телефон удобная конечно, но среди сотен левых номеров как распознать 1 реальный ждущий звонка…
Можете подсказать решение данной проблемы?
Спасибо!

Здравствуйте, со спамом придется работать вручную, какой-либо модерации по ключевым словам в боте не предусмотрено.
Так как бот работает на платформе Livegram, советую задать ваш вопрос разработчикам платформы через @LivegramSupportBot , возможно у них будет решение. И вот еще на всякий случай FAQ по платформе: https://telegra.ph/what-is-livegram-bot-02-19

Спасибо за инструкцию! Все получилось! Хотелось бы только убрать футпринт «Этот бот был создан с помощью @LivegramBot» — вы знаете как это сделать?

Его не убрать, это своеобразная плата за использование функций бота. Как вариант — сделать бот обратной связи через @FleepBot (инструкция почти такая же), там тоже есть вотемарка, но ее можно убрать за 199 руб. в месяц. Плюс во Флипе у ботов обратной связи можно добавлять кнопки.

Дмитрий, здравствуйте хотела создать бота ,но в Fleepbot-е нет команды обратной связи ,что делать тогда?

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Похожие статьи