Боты Telegram: всё, что вы хотели про них спросить

Российский мессенджер Telegram в июне 2015 года открыл платформу для создания ботов, которые откликаются на команды пользователей и взаимодействуют с внешними сервисами. С тех пор многие СМИ уже создали своих ботов и с их помощью активно привлекают мобильную аудиторию на свои сайты. Мы попытаемся ответить на самые очевидные вопросы про ботов: что это, как с ними быть, что они могут и как сделать бота для своего СМИ. Итак, /start.
Максим Корнев, доцент кафедры ТРИТ факультета журналистики, Институт массмедиа РГГУ
Материал впервые опубликован в журнале «Журналист» №11/2015
Кто такие «боты»? Это «тролли на зарплате», которые в Ольгино сидят?
Нет. У слова «бот» сейчас несколько значений. И «ольгинские тролли» или «кремлеботы» тут ни при чем.
Изначально «бот» (сокращение от «робот») – программа, которая автоматически, по команде или заданному расписанию выполняет разные действия. Проще говоря, программа для совершения рутинных операций. Причем делает это через те же интерфейсы, что и обычный пользователь, как бы имитируя реального пользователя.
Чем бот лучше «реального пользователя»?
Бот, выполняя однообразную работу, не только экономит силы и время человека, но делает работу на более высоких скоростях.
У ботов лучше реакция и точность действий по сравнению с человеком – это находит применение в компьютерных играх, интернет-аукционах, рекламе, электронной биржевой торговле и так далее. Боты применяются для имитации человеческой деятельности, в частности, в чатах. Это так называемые «чат-боты».
Чат-бота можно настроить на выдачу адекватных ответов на человеческом языке. Конечно, при условии, что он распознает и поддерживает такого рода команды.
Хорошо, а в Telegram-то они что делают?
Боты в Telegram — это разновидность чат-ботов. По правилам все их имена должны оканчиваться словом «bot». По своей сути – это те же пользовательские аккаунты, которыми вместо людей управляют программы.
Они помогают выполнять разные действия: переводить и комментировать, обучать и тестировать, искать и находить, спрашивать и отвечать, играть и развлекать, транслировать и агрегировать, встраиваться в другие сервисы и платформы, взаимодействовать с датчиками и вещами, подключенными к интернету. Ботов Telegram можно «Добавить в группу» (Add To Group), или ими «Поделиться» (Share). И это далеко не все возможности, которые представляет платформа для их создания.
Да, все боты, как и сам Телеграм, бесплатны. Однако возможность взимать плату с пользователей в сентябре 2015 года анонсировал создатель мессенджера Павел Дуров.

Зачем эти боты нужны? Какая от них польза?
Боты – это маленькие умные помощники. Их прелесть в том, что вам не нужно покидать экосистему мессенджера, чтобы решить элементарную задачу: спросить, уточнить, узнать, посчитать. Каждый бот сам по себе, но вместе они образуют вашу личную армию ассистентов, каждому из которых вы даете поручение, а они безропотно и четко выполнят ваши пожелания.
Боты — это небольшие шестеренки и приводные ремни к вашим задачам, которые могут действовать слаженно, если с умом подогнать их друг к другу. Скажем, на какие-то конкретные действия вы можете настроить ботов к определенному времени. Например, доставлять вам с утра свежие новости, прогноз погоды, ситуацию по пробкам. А вечером – рекомендацию по фильму, смешные анекдоты и рецепт дня.
В умелых руках боты могут стать очень мощным ресурсом для организации своего времени и автоматизации повторяющихся действий.
Как общаться с ботом? Как он работает?
Начать работу с ботом просто: достаточно выбрать его из каталога, перейти по ссылке или найти по имени через поиск и вступить с ним в переписку. Чаще всего, для запуска бота вводится команда /start или предлагается нажать кнопку старта на виртуальной клавиатуре. Для работы могут использоваться программируемые кнопки виртуальной клавиатуры, за счет которых бот превращается в мини-приложение с интуитивно понятным интерфейсом.
Дальше бот пришлет вам информацию о себе, инструкции, а также список команд или выведет доступные команды-кнопки на экран.
Есть ли у ботов применение в быту или это очередная игрушка для гиков?
Боты могут быть крайне полезны во всех сферах жизни.С помощью ботов можно связывать объекты материального мира с пользователем. Особенно большие перспективы рисуются в связи с развитием интернета вещей (Internet of Things).
Связь с устройствами и датчиками позволяет реализовать концепцию «умного дома» даже без больших финансовых затрат. Например, российские разработчики научили домашние счетчики воды общаться с владельцем квартиры через мессенджер Telegram. То есть человеку достаточно запросить у бота данные по счетчикам и получить телеметрические сведения прямо к себе на смартфон. Систему планируют привязать к Google Speech API, что позволит использовать голосовое управление.
А кто-то использует ботов Telegram для организации взаимодействия людей, например, позволяя заказчику видеть ход работ и контролировать рабочий процесс.
Что могут дать боты журналистам и издателям?
Применение ботов ограничено только фантазией издателя. Самое просто, что можно сделать – создать мини-представительство своей редакции или проекта. В нём, например, можно дать описание своего издания и контакты, а также настроить обновления по выходу всех или выборочных материалов.
С помощью ботов можно проводить опросы, установить напоминания или привлечь бота в дискуссию, задав ему предварительно параметры для ответов.
Для оживления беседы в групповой чат можно позвать ботов, рассказывающих скабрезные «Анекдоты категории Б» или проверяющих грамматику и указывающих на ошибки.
Боты помогут также вести статистику и наблюдать за активностью в ваших чатах. Сотрудниками Яндекса на базе сервиса статистики Яндекс.Метрика уже создана система аналитики для Telegram-ботов — Botan.
Новые полезные боты для деловых людей появляются регулярно, как и обзоры таких ботов.
Это неопасно? Может, они крадут персональные данные или содержат вирусы?
Боты безопасны. Теоретически боты могут предложить выйти на внешние ресурсы по ссылке, где вас будет поджидать небезопасный контент или вирусы. И это не будет отличаться от того, что вам случайно или специально могут прислать в сообщении другие пользователи.
Однако в рамках самого Telegram боты не могут сделать ничего плохого, так как по своей сути это те же аккаунты пользователей, только управляются алгоритмически. Как и обычного пользователя, надоевшего бота можно удалить и заблокировать.
Важно, что бот не выступает инициатором беседы – это вы первый отправляете ему запрос, поэтому без вашего позволения бот не может вас побеспокоить. Кроме того, даже бот, добавленный к вам в группу, по умолчанию настроен так, чтобы не «видеть» ваших переговоров. То есть его создатель не сможет шпионить и перехватывать сообщения из чата, куда добавлен бот.
Где мне найти бота?
Обзоры ботов появляются регулярно в разных медиа. Однако гораздо удобнее использовать каталоги ботов. Например, Telegram Bot Store. Там боты ранжированы по популярности и свежести, разобраны по языкам и категориям (игры, развлечения, фото и видео, обучение, новости, утилиты, для взрослых и так далее).
Такого рода бот-сторы упорядочивают и делают более понятной и доступной экосистему телеграм-ботов. Можно также подписаться на одно из сообществ в соцсетях.
Как сделать своего бота? Нужны ли специальные навыки?
Чтобы сделать бота с персональными настройками, очевидно, понадобятся специальные знания. Прежде всего, знание английского языка, чтобы разобраться в описании возможностей ботов и интерфейсе взаимодействия с ботами (Bot API).
В Интернете с каждым днём становится всё больше советов, инструкций и мануалов по созданию и настройке ботов даже без специальных знаний.
Например, с помощью ботов Telegram вы можете настроить за 15 минут чат-помощника на собственный сайт.
Хочу сделать бота для своего медиа? Есть варианты, как это сделать без специальных навыков?
Для создания нового бота нужно пойти к «отцу ботов» в аккаунт @BotFather, создать нового бота, дать ему имя и получить уникальный ключ-идентификатор. Дальше, если у вас нет знаний в программировании, идёте к другому боту @Paquebot. Он предложить привязать вашего бота к себе, а дальше вы сможете рассылать сообщения всем, кто установил и запустил вашего бота, в том числе и в групповых чатах.

Также есть возможность настроить автоматическую рассылку ваших сообщений посредством RSS, через связку @Paquebot и программы Zapier.
Пять медиа, у которых уже есть свои боты:
1. Лайфхакер (@LifeHackerRuBot) – Оповещает о выходе новых материалов, а также доставит вам в ленту картинки котиков и комиксы xkcd.
2. National Geographic (@nationalgeographic_bot) – традиционно красивые фотографии со всего мира. Можно настроить ежедневные рассылки в формате дайджеста или выбрать снимки по тематикам или животным.
3. Блогер Илья Варламов (@varlamovbot) – бот присылает новые публикации известного блогера, фотографии его кошки Марты, а также предлагает сыграть в игру «угадай город по фотографии».
4. Meduza (@meduzaprobot) – бот новостного проекта Meduza. Поддерживает множество команд, в том числе, вывод трех топ-новостей и поиск по материалам.
5. Vc.ru (@smmrussiabot) — Официальный бот издания, присылает ссылки на свежие материалы.

Читайте наши самые популярные материалы:
База знаний
Добро пожаловать в Базу знаний Messaggio!
Здесь вы найдёте инструкции о том, как использовать платформу.
Авторизация
- С чего начать
- Как войти в личный кабинет Messaggio
- Моя учетная запись Messaggio
- Как принять условия оферты
Панель управления
Отправители
- Как зарегистрировать имя отправителя
- Сколько длится проверка заявки
- Абонентская плата за имя отправителя
- Как изменить имя отправителя после активации
- Требования к имени отправителя Viber
- Требования к имени отправителя SMS
- Требования к имени отправителя WhatsApp
- Требования к имени отправителя VK
- Как подключить услугу Flash Call verification
- Как начать чат
- Панель управления чатами
- Поиск по чатам
- Как создать мультиканальную рассылку
- Как добавить контакты в рассылку
- Как указать чёрный список получателей
- Как протестировать рассылку
- Как быстро отправляется рассылка
- Как запланировать рассылку
- Как отправить рассылку плавно
- Как остановить рассылку
- Как повысить эффективность рассылки: A/B-тестирование
- Как начать общаться с клиентами через Телеграм бот
- Как создать шаблон сообщения
- Как создать мультиканальный шаблон
- Как активировать шаблон
- Как персонализировать сообщение
- Требования к содержимому и формату сообщений Viber
- Как создать транзакционный шаблон сообщения Viber
- Как отправлять видео в Viber
- Требования к содержимому и формату сообщений SMS
- Требования к содержимому и формату сообщений WhatsApp
- Требования к содержимому и формату сообщений VK
- Как работает сокращатель ссылок: статические и динамические ссылки
Группы контактов
- Как загрузить базу контактов
- Как создать черный список контактов
Статистика
- Как связаться с нашей командой
- Где найти техническую документацию
- Глоссарий
- Как пополнить баланс
- Как применить промокод
- Уведомления о низком балансе
- Автоплатёж
- Где получить закрывающие документы
- Тарифы Messaggio: как выбрать?
Пользователи
- Как добавить в избранное
- Как использовать документы
- Как создать проект
- Как указать webhook для статусов сообщений
- Как получить секретный ключ для API
Интеграции
- Интеграция с Pyrus
- Интеграция с amoCRM
- Интеграция с WooCommerce
- Интеграция с HubSpot
- Интеграция с OpenCart
- Интеграция с 1C:Предприятие
- Интеграция с YCLIENTS
- Интеграция с InSales
- Интеграция с МойСклад
- Настройка связей с Messaggio в ApiX-Drive
- Интеграция Messaggio и Google Sheets
- Интеграция Messaggio и CallTouch
- Настройка связей с Messaggio в Zapier
- Интеграция с Prestashop
- Интеграция Messaggio и REES46
- Интеграция Messaggio и Planfix
- Интеграция с Битрикс24
Как начать общаться с клиентами через Телеграм бот
Создайте Телеграм бота
- Для этого воспользуйтесь @BotFather*. Нажмите «Начать», а затем выберите в меню команду /newbot.
*@BotFather — это главный сервис Телеграма, через который проходит регистрация всех пользовательских ботов.



Привяжите бота к аккаунту Messaggio, создав отправителя Телеграм
- Зайдите в личный кабинет Messaggio, перейдите в раздел «Отправители», нажмите «Создать».


Создайте шаблон сообщения
- Среди действий с отправителем выберите «Создать шаблон с отправителем».



Возможности рассылки от Телеграм бота из Messaggio
Телеграм бот позволяет общаться с клиентами 3 способами:
- Отправка сообщий от имени бота в Телеграм канал.
- Отправка сообщений от имени бота в Телеграм группу.
- Отправка сообщений в личный Телеграм-чат с пользователем, подписавшимся на бота.
Рассмотрим порядок настройки бота для каждого способа коммуникации.
Рассылка в Телеграм канал / Телеграм группу
Добавьте бота в Телеграм канал / Телеграм группу
- Откройте Телеграм канал / Телеграм группу, в который планируете отправлять сообщения.
- Кликните на название канала, перейдите в раздел «Подписчики».


Теперь бот может отправлять сообщения в канал / группу от своего имени.
Запустите рассылку по подписчикам канала / группы
- В личном кабинете Messaggio перейдите в раздел «Рассылки» и нажмите «Создать» — «Стандартная рассылка».
- Задайте рассылке название, выберите созданный ранее шаблон сообщения Телеграм.
- Назначьте группу контактов для рассылки. В списке групп контактов вы увидите автоматически созданную группу в формате Telegram channel_UsernameBot / Telegram group_UsernameBot. Выберите группу контактов и нажмите «Добавить выбранные».

Рассылка будет доставлена в Телеграм канал / Телеграм группу от имени бота в указанное вами время.

Рассылка в личный Телеграм-чат с пользователем
Чтобы Телеграм бот мог отправлять сообщения в личный чат с пользователем, пользователь должен быть подписан на бота. Пользователь считается подписавшимся на Телеграм бота, если он инициировал общение с ботом, запустив его и сообщив ему свой номер телефона.
-
Чтобы отправить личное сообщение от имени Телеграм бота, в личном кабинете Messaggio перейдите в раздел «Рассылки» и нажмите «Создать» — «Стандартная рассылка».




Рассылка будет доставлена от имени бота в Телеграм чаты всех пользователей, подписавшихся на бота, в указанное вами время.
- Была ли эта статья полезной?
- ДаНет
Добавление бота в чат Телеграм

Чат-боты используют многие бизнесы: это помогает автоматизировать рутинную работу. При этом они довольно хорошо справляются со своей работой. SaluteBot, например, может не только выдавать пользователю готовые пункты для выбора, чтобы продолжить диалог, но и анализировать написанный текст, чтобы подобрать нужный ответ из базы.
В статье расскажем, как добавить робота в чат Телеграм и как настроить его работу по определённому сценарию.
Видеозвонки в SberJazz
Общайтесь с друзьями и близкими везде, где есть Интернет
Попробовать сейчас
Как добавить в Телеграм
Для создания бота в Телеграме необходимо выполнить следующие шаги:

- Через поиск найдите профиль BotFather или перейдите по ссылке https://telegram.me/BotFather.
- Нажмите кнопку «Start» в чате.
- Введите команду /newbot.
- Укажите название — это то, как пользователи будут видеть его в списке контактов.
- Укажите системное имя: это логин после знака @.
Системное имя должно быть уникальным, а название может повторяться с уже существующими.
Когда бот будет создан, вы увидите токен. Он нужен для интеграции со сценариями. Если вы забыли сохранить токен, просто напишите команду /token в диалог с BotFather.
Основа для чат-бота создана, и ему даже можно написать сообщение. Но чтобы он заработал, нужно создать для него сценарий. Сделать это можно через сервис SaluteBot.
Создайте своего чат-бота в Telegram
Простая настройка чат-бота в личном кабинете Цифровой витрины
Попробовать
Как настроить бота в личном кабинете Цифровой витрины
Чтобы создать свой собственный сценарий и привязать его к чат-боту, зарегистрируйтесь в личном кабинете Цифровой витрины и войдите в аккаунт. Мы будем использовать инструмент SaluteBot, который помогает создать сценарий в режиме карты. Навыки программирования не нужны, если нет интеграции со сторонними системами.
После этого зарегистрируйтесь в сервисе Jivo, который свяжет робота со сценарием. Для работы потребуется профессиональный аккаунт, первые 14 дней им можно пользоваться бесплатно. Подробнее как создать читайте в статье.
Далее порядок действий будет следующий:

- Зайдите в личный кабинет Цифровой витрины и нажмите «Создать проект».
- Выберите «Приложения» — SaluteBot.
- Нажмите «Добавить аккаунт» и авторизуйтесь в Jivo.
- Придумайте название проекта.
- Выберите «Свой сценарий», это бесплатное создание сценария в режиме конструктора.
- Далее вы попадёте в конструктор, где сможете собрать нужный сценарий.
Вот какие возможности есть в конструкторе:
- Отправка пользователю текста (приветствие, ответ на сообщение или на действие).
- Запрос данных — если нужно уточнить у клиента какую-то информацию, например, имя, телефон, номер заказа.
- Условие — сценарий должен гибко реагировать на действия клиента, поэтому при выборе того или иного пункта меню бот, в зависимости от настроенного условия, будет реагировать по-разному.
- Перевод диалога на оператора. Если бот не справляется с вопросом, он автоматически пригласит оператора в чат.
- Вызов скрипта — для продвинутых сценариев, где подразумевается обмен данными со сторонними системами.
Как добавить в группу
Самый частый сценарий для чат-ботов в группе — это онбординг для новых участников и модерация сообщений на предмет запрещённых тем с вынесением предупреждений.
Чтобы использовать телеграм-бот в группе, просто выберите его как нового участника: созданный нами робот — это обычный отдельный аккаунт в списке участников группы.

Вот что нужно сделать:
- Перейдите в настройки группы в Телеграме.
- Нажмите на кнопку «Добавить участников».
- Найдите бот по системному имени через @имя.
- Нажмите на него, а затем — «ОК», чтобы добавить его к телеграм-чату.
После того как робот добавлен в группу, он начнёт отрабатывать сценарий, который был в него заложен в конструкторе.
Таким образом можно использовать не только созданный самостоятельно бот, но и любой уже существующий.
Как добавить в канал
В канале чат-боты используются для отложенных публикаций или как путеводитель по каналу. Чтобы робот мог создавать посты или иначе действовать от имени канала, нужно сделать его администратором. Вот как это сделать:
- Зайдите в телеграм-канал, нажмите на три точки и выберите «Управление каналом».
- Перейдите в раздел «Администраторы».
- В поиске найдите бот по системному имени через @имя.
- Добавьте его в качестве администратора и укажите, какие разрешения у него должны быть. Если не выдать нужное разрешение, то некоторые функции могут не работать.
В канал можно добавить собственный бот или выбрать уже существующий.
Для личных чатов
Если у вас нет группы или канала, и они для ваших задач не требуются, можно использовать бот в режиме личных сообщений. Это возможно сразу после того, как он создан, нужно просто написать ему сообщение напрямую.
Такой тип использования, пожалуй, самый востребованный у бизнеса, потому что в режиме личных сообщений клиент может передавать свои данные, а если диалог зашёл в тупик, в любой момент подключится оператор.
А ещё работа с ботом напрямую позволяет протестировать его перед использованием в группе или канале — так можно проверить, что все функции работают, как ожидалось.
Всё, о чём должен знать разработчик Телеграм-ботов

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй «как я создал такого-то бота» и туториалов вроде «как создать бота, который будет говорить hello world». При этом многие неочевидные моменты просто нигде не описаны.
Как вообще устроены боты? Как они взаимодействуют с пользователями? Что с их помощью можно реализовать, а что нельзя?
Подробный гайд о том, как работать с ботами — под катом.
Привет из 2023!
Эта статья устарела. С момента её выхода в Телеграме появилось ещё больше фич, а я собрал ещё больше советов.
Читайте новый хендбук о разработке ботов: https://handbook.tmat.me/
Начало работы
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:
import asyncio from aiogram import Bot, Dispatcher, types async def start_handler(event: types.Message): await event.answer( f"Hello, ?!", parse_mode=types.ParseMode.HTML, ) async def main(): bot = Bot(token=BOT-TOKEN) try: disp = Dispatcher(bot=bot) disp.register_message_handler(start_handler, commands=) await disp.start_polling() finally: await bot.close() asyncio.run(main())
Этот бот будет отвечать на команды /start и и /restart.
Создание бота
Единственная информация о Телеграм-ботах, которой в интернете полным-полно: как создать бота. Это делается через специального бота BotFather. Когда вы создадите бота, BotFather даст вам его токен. Токен выглядит примерно так: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw . Именно с помощью токена вы сможете управлять ботом.

Один пользователь может создать до 20 ботов.
В BotFather удобно управлять ботами своими командой /mybots .
Юзернеймы
При создании бота нужно выбрать юзернейм. После этого поменять его будет очень сложно.
Как поменять юзернейм бота
Если у вас есть бот, и вы хотите дать ему более короткий юзернейм (который может быть занят неработающим ботом), то вы, теоретически, можете это сделать через @BotSupport.
Для этого бот должен (внезапно) быть рабочим, а также поддерживать английский язык.
Принято использовать такой формат обращения в поддержку:
- @old_username,
- @new_username,
- Что бот делает.
Если вы везунчик 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 за помощь с фактами. Если мы что-то забыли — пишите, исправлю.
Я специально не разделял большую статью на несколько постов, чтобы можно было быстро найти нужную информацию. К тому же, в начале статьи есть её содержание. Так что можете сохранить её к себе и использовать как справочник 🙂
Вообще интерфейс бота (то есть интерфейс чата) имеет много ограничений. Но плохо ли это? Действительно удобнее использовать инструмент, когда это часть привычной среды. Я часто прямо в переписке нахожу нужную картинку или информацию с помощью инлайн-ботов. Как заядлый пользователь Телеграма, я люблю использовать ботов. И создаю ботов. И вы создавайте.