Создание телеграм бота на языке c
В этой статье мы собрали лучшие фреймворки для написания чатботов на разных языках программирования. Во внимание принимались только те решения, которые имеют открытый исходный код, опубликованный на GitHub.
- Мы нашли целых три библиотеки Telebot на разных языках, которые не связаны друг с другом
- Во всех популярных языках обязательно есть одна популярная, но слабо документированная библиотека, и одна хорошо документированная, но отстающая в популярности
- В Bots Club всегда будут рады вашим ботам, поэтому не забудьте опубликовать их после релиза! 😉
C++ не является мейнстримным языком для написания чатботов, однако и здесь можно найти свои жемчужины.
- Например, tgbot-cpp от российского разработчика Олега Морозенкова, ныне поддерживаемую 27 контрибуторами и имеющую 361 звезду на GitHub;
- или LibTelegram из Великобритании от программиста slowriot, чуть менее популярную, но лучше документированную
Разработчики активно набирающего популярность Elixir создали две прекрасные библиотеки для работы с чатботами:
-
от японского разработчика Yu Zhang, уже сплотила вокруг себя 34 контрибуторов и заслужила 293 звезды на GitHub от бразильца João Ferreira хорошо документирована и уже отмечена 113 звёздами
Энтузиасты языка Go также не остались в стороне от разработки чатботов для Telegram.
-
имеет более 2,3 тыс звёзд на GitHub благодаря усилиям 70 контрибуторов.
- Однако ему на пятки наступает Telebot от Ian P Badtrousers, обретший свою армию поклонников, имеющий более 1,4 тыс звёзд и подробную документацию.
Мы смогли найти одну достойную библиотеку для этого языка: telegram-api от klappvisor, к разработке которой уже подключились 18 других разработчиков.
Java — один из старейших языков, на базе которого работают миллиарды устройств и приложений. Несмотря на появление модных альтернатив, построенных на базе JVM (таких, как Scala и Kotlin), ванильный Java по-прежнему остаётся популярным.
- Самым популярным решением для построения Telegram ботов на Java является Telegram Bot Java Library от испанского разработчика Ruben Bermudez. Более 2 тысяч звёзд и 616 форков на GitHub.
- Стоит также обратить внимание на немного менее популярную, но при этом хорошо документированную библиотеку Java Telegram Bot API от Стаса Паршина, используемую сотнями разработчиков и имеющую 680 звёзд на GitHub.
Kotlin как платформа для серверной разработки только обретает свою популярность, во многом благодаря усилиям команды JetBrains.
Лучшим решением для написания своего бота для Telegram на Kotlin на данный момент является библиотека Kotlin Telegram Bot от испанского разработчика Iván Martín. Более двухсот звёзд на GitHub и 20 контрибуторов.
Отдельного упоминания заслуживает решение Telegraff от российского разработчика Руслана Молчанова с 93 звёздами на GitHub.
Node JS приобрёл большую популярность среди разработчиков из-за своей простоты и обилия библиотек.
- Лучшим фреймворком на Node JS заслуженно считается Telegram Bot API от испанского разработчика Yago. Пройдя долгий путь с 2015 года, эта библиотека получила более 4,5 тысяч звёзд на GitHub, поддерживается 67 контрибуторами и используется более, чем 5,000 разработчиков.
- Также замечательным решением является telegraf от Виталия Домникова и Сергея Совы, с более чем 3,6к звёздами и 6,5к проектами, реализованных на нём.
Наверное, ни один язык не вызывает такого горячего обсуждения, как PHP. Поэтому неудивительно, что PHP разработчики также приложили усилия к созданию качественных библиотек для построения чатботов. Мы рекомендуем обратить внимание на следующие:
-
от Avtandil Kikabidze и Armando Lüscher, с более, чем 2,3 тыс. звёзд на GitHub и используемый в сотнях проектов от Irfaq Syed: 1,7 тыс. звёзд и 27 контрибуторов от Camilo Sperberg с 610 звёздами и крепкой поддержкой сообщества , развиваемый сообществом из 26 разработчиков и получивший уже 614 звёзд
Python стал крайне модным в последнее время, особенно в среде аналитиков. Благодаря этому, появилось множество решений, облегчающих работу разработчиков. Остановимся на лучших из них.
-
имеет более 11,5 тысяч звёзд на GitHub, используется тысячами разработчиков и активно поддерживается сообществом (141 контрибутор).
- Также профессиональные разработчики оценят AIOGram с почти тысячей звёзд и более 60 контрибуторами
Конечно, мы не могли оставить в стороне Ruby, один из наиболее популярных языков последнего десятилетия.
- Если вы его поклонник, то вам стоит обратить внимание на telegram-bot-ruby, библиотеку от Александра Типугина, имеющую почти тысячу звёзд на GitHub и используемую в более, чем 1300 проектах.
- Также, возможно, вас заинтересует Telegram::Bot от Макса Меленьтева, с очень подробной документацией.
Несмотря на то, что язык Rust очень молод, он уже успел заслужить признательность от разработчиков низкоуровневых, высоконагруженных приложений.
Если вы решили создать своего бота на Rust, то лучшим выбором для вас будут следующие библиотеки:
-
от мультинацональной команды разработчиков, с почти 500 звёздами на GitHub
- Чуть менее популярная, но лучше документированная teloxide
- Наконец, молодая, но набирающая популярность Telebot от разработчика Lorenz
Scala крайне любим разработчиками систем для обработки больших массивов данных. И со свойственной им основательностью они создали Canoe (от Юрия Слинкина), прекрасную библиотеку для быстрой разработки сценариев чатбота.
Также рекомендуем обратить внимание на bot4s от Alfono Peterssen, набравшего 300 звёзд на GitHub.
Несмотря на свою ориентированность прежде всего на iOS-разработку, Swift-разработчики могут также порадовать нас своими библиотеками для чатботов.
- К примеру, Telegram Bot SDK от разработчика Rapier, объединившего вокруг себя 10 единомышленников и получившего почти 250 звёзд на GitHub.
- Или чуть менее популярный Telegrammer от Гиви Патаридзе, которому помогают ещё 4 контрибутора.
Знаете ли вы другие библиотеки, достойные упоминания? Напишите о них в комментариях!
Мир чатботов Telegram богат, прекрасен, но крайне непрозрачен. Вы не доверяете ботам, а их разработчики не знают, как им завоевать ваше доверие.
В Bots Club мы создаём уютное место для общения и позволяем пользователям открыть для себя этот мир: задать вопросы разработчикам, поучаствовать в акциях, оставить отзыв и многое другое.
Bots Club — место, где люди находят себе ботов.
Подпишитесь на нас в социальных сетях и следите за новостями в нашем канале Telegram.
Шаг первый. Создаем оформление бота через Botfather
В этот шаг я скопировал часть статьи из бота на php, так как тут все действия у нас будут полностью идентичны.
Там все крайне просто, вбиваем /help и смотрим на список доступных команд:
Ну и чтобы проверить установилась картинка или нет переходим на бота вбивая его имя через собачку в поиск
Теперь самое время заняться backend частью, а именно написанием кода для команд нашего бота, но сначала настроим среду разработки.
Шаг второй. Среда разрабтки
И вот среда для разработки у нас готова:
Собственно время устанавливать нужные нам компоненты.
Шаг третий. Установка компонент
В качестве обертки для работы с API мы будем использовать пакет под названием telegram.bot, его мы и будем устанавливать в наш проект. Идем в Project->Manage Packages
Отлично, если вы проделали все эти действия то можно переходить уже и к кодингу.
Шаг третий. Написание кода
Собственно для начала сделаем простейший интерфейс. Переключаемся на вкладку MainForm -> Design, после чего кидаем на форму одну кнопку и одно текстовое поле.
Далее добавляем инициализацию нашей переменной в конструкторе класса, а так-же запилим запуск воркера по клику кнопочки.
вот примерно так и должно быть у вас в начале. Теперь нам надо передать токен из текстового поля формы в обработчик воркера и там использовать. Звучит конечно писец как сложно но делается очень просто:
Теперь настало время получения данных из бота. То есть время работы с API телеграма. Собственно инициализация API выглядит так:
Наш бот работает. Без регистрации домена, указания SSL, подключения cloudflare и прочих муторных вещей.
Отправка картинок
Запускаем, тыкаем кнопочку и тестируем:
С отправкой документов я не буду мучиться потому что тут придется писать OpenFileDialog и прочие вещи описывать на которые тут просто не хватит места, статья и без того длинная.
Задаем список команд
Как это сделать я уже писал и не вижу ни малейшего смысла писать это снова. Просто прочитайте тут.
Ответы на сложные вопросы:
Советую вам сначала скачать исходники внизу статьи и просматривать блоки кода, которые я привожу, прямо на месте!
Inline кнопки и их обработка:
Выводятся кнопки таким кодом:
Reply-кнопки
Выводятся и обрабатываются таким кодом:
Без исходников все мои слова были бы бесполезны. Как говорится можно десять раз прочитать и не понять, а можно один раз посмотреть код и все понять. Да, к стати, проект открывается в visual studio, я проверял.
В этой статье я покажу как сделать простого бота для Telegram, который умеет конвертировать валюту.
У вас должен быть установлен Python 3. Если нет, то вы можете прочитать здесь как это сделать на Windows.
Откройте Телеграм и найдите через Поиск бота BotFather.
Вы найдете много чего с таким названием. Вам нужен тот, что с галочкой синей. Выберите этого бота и запустите нажав на кнопку "Start". BotFather вам покажет все свои команды, используя которые, вы будете потом управлять своими ботами.
Для создания нового бота, вам нужно нажать на команду /newbot или вы можете сразу написать ему так. Вас попросят дать название своему боту.
Здесь вы можете ввести любое имя. Имя можно потом изменить. Я назову своего бота "Валютный бот". После ввода имени нужно придумать уникальный ник для бота(username). Этот ник должен быть на английском и всегда заканчиваться на слово Bot. И еще там не должно быть пробелов. Имейте ввиду, что все популярные названия уже заняты кем-то другим. Поэтому я назову Currency005Bot.В самом начале есть ссылка на вашего бота, начинающаяся на t.me/. Нажав на нее вы перейдете к вашему боту. Также эту ссылку можно отправлять всем.
А красным цветом внизу написан токен вашего бота. Этот токен как пароль от вашего бота. Его не нужно никому сообщать. Мы будем использовать его при написании программы для бота.
У вас официально есть бот! Конечно, он пока ничего не умеет. Только родился.
2. Первое слово бота Чтобы продолжить дальше, вам нужно научиться работать в Командной строке. Вы можете прочитать статью Работа в терминале в Windows, Linux и MacOS (cli, shell, bash, cmd) .
Перед тем как начать учить нашего бота говорить, попробуем что нибудь сделать на языке Python.
Откройте ваш любимый редактор кода (Sublime Text, PyCharm, Notepad++, Idle и т.п.). Создайте новый пустой файл. Сохраните его с названием bot.py в любую папку(желательно не слишком глубоко, а для начала можно сразу в корне диска С: ).
В этом файле будет написана наша программа для бота. Давайте для начала напишем простую программу, которая печатает текст "Hello World!". Для этого напишите в файле:
Теперь попробуем запустить его. Откройте Командную строку(Windows) или Terminal(Linux, Mac). Использую команду cd перейдите в папку, где вы сохранили файл bot.py.
Эта команда выходит из текущий папки в родительскую папку:
Если вы перешли в папку с файлом bot.py, теперь мы можем его запустить. Напишите в командной строке:
И нажмите Enter. Ваша программа запустится и напечатает "Hello, World!". Мы умеем запускать программы на Python.
Команда print() в языке Python печатает текст на экране. А в скобках нужно указать что именно нужно напечатать. Наш текст для печати мы указали в кавычках. В Python в кавычках записывает любые текстовые данные. И текстовые данные называются строкой или string.
Кроме текстовых данных есть еще числовые данные. И команда print() также умеет их тоже печатать:
Как вы заметили для чисел кавычки не нужны.
Переменные
Переменные в программировании это временные хранилища данных, т.е. они могут сохранять в себе какое-либо значение. И записываются они как в математике:
То вы увидите что программа напечатала на экран не "х", а "Hello World". Потому x - это переменная, которая хранит в себе значение "Hello World".
Также в переменной можно сохранить любые другие значения. И они могут называться как угодно, не только x или y.
Скачиваем библиотеку для создания бота
Чтобы написать бота в Python, нам нужно скачать библиотеку(или пакет) python-telegram-bot для Python. Библиотеки - это дополнительные ресурсы для Python, которые улучшают его способности. Если Python что-то не умеет, вы можете скачать ему библиотеку и он научится как это делать.
Чтобы скачать библиотеку мы будем использовать команду pip. А Pip - это штучка, которая умеет скачивать библиотеки и удалять их. Его еще называют Пакетным менеджером.
Откройте командную строку и напишите:
Значит успешно установлено. Теперь мы можем использовать его.
Пишем программу для бота
Откройте ваш код и удалите все что вы там написали. И для начала создайте переменную token и присвойте этой переменной токен вашего бота. Помните? Когда мы создавали бота, BotFather отправил нам красный токен. У вас будет примерно так:
Токен это строка, поэтому она в кавычках. Здесь мой токен, а вы используйте свой.
Теперь мы подключим разные классы(классные штучки) с библиотеки телеграма, чтобы использовать их в своей программе. Уберите токен вниз и в самой первой строчке напишите:
Мы подключили два класса: Updater и MessageHandler. В языке Python имеет значение регистр букв(заглавные, строчные буквы). Обязательно нужно писать именно так.
а про CommandHandler расскажу чуть ниже.
Давайте создадим новый объект Updater и запустим его. Создается он вот так:
Теперь запускаем Updater:
Первая строчка запускает, а вторая строчка ждет пока вы нажмете Ctrl+C, а когда нажмете завершает работу бота.
Сейчас ваш код должен выглядеть примерно таким:
Хотя бот запущен, он все равно ничего не имеет. Какой бесполезный бот! Нажмите Ctrl+C чтобы завершить его работу. Обычно завершение занимает 3-5 секунд.
Добавляем обработчик команды
У ботов есть команды. Они начинаются со знака / (слэш). Например: /newbot, /start. У каждого бота они свои. Но у всех есть команда /start, которая запускается когда кто-то начинает чат с ботом.
Мы сейчас сделаем так, чтобы наш бот представлялся, когда кто-то пишет ему команду /start. Для этого нам нужно создать обработчик для команды start. Такой обработчик создается с помощью класса CommandHandler.
Мы скажем этому диспетчеру, что у нас есть новый обработчик для команды start:
Бот в телеграм — штука полезная, а главное доступная. Их создают для различных целей, но новичкам чаще всего нужны следующие:
- Бот службы-поддержки.
- Отложенный постинг и оформление постов на каналах.
- Фидбек-боты (дабы не забивать ленту чатами с клиентами).
В этой статье я расскажу о том, как можно создать таких ботов быстро и без навыков программирования. На это у тебя уйдет не более 5 минут.
Создаем токен в BotFather
Это общий шаг при создании любого бота как в интерфейсе телеграм, так и при помощи языков программирования. Ключ нам понадобится для расширения возможностей пустого бота через, господи, прости меня за тавтологию, других ботов и сервисы.
Как получить токен:
После чего тебе нужно ввести имя бота (1) и username (2), которые будут отображаться здесь:
Далее BotFather выдаст тебе уникальный токен, который ты можешь использовать для улучшения своего бота (он выделен голубым цветом).
Совет: если хочешь получать халявных клиентов из поисковика телеграм, то укажи в username или имени бота популярное ключевое слово своей ниши.
Как кастомизировать бота
Чтобы изменить бота нажми на [/], далее ткни на /mybots и в появившемся меню выбери своего бота. После чего выпадет ещё одно меню, тут нам нужна кнопка Edit Bot, которая откроет следующие функции:
- Edit Name — изменить имя бота (не путать с username)
- Edit About — добавить описание бота, которое будет отображаться в разделе с аватаркой и в ссылке на бота.
- Edit Commands — сюда можно добавить команды, но здесь уже понадобятся навыки программирования.
- Edit Description — добавить описание, которое будет показываться сразу после открытия бота.
- Edit Botpic — установить аватарку на бота.
С тем как запилить фундамент бота на BotFather и украсить его мы разобрались, теперь перейдем к непосредственному созданию самих ботов.
№1. Создаем бота обратной связи
Такой тип ботов нужен прежде всего тем, кто не хочет забивать свою ленту лишними чатами.
Создаются они достаточно быстро:
- Переходим в Livegram.
- Тыкаем на кнопку /addbot.
- Копируем наш токен бота из BotFather и пересылаем в Livegram.
- Готово.
№2. Делаем бота для выкладки и оформления постов
Все владельцы каналов в телеграм используют Controller Bot чтобы форматировать свои посты, добавлять в них картинки, реакции и настраивать отложенный постинг.
Инструкция по созданию бота:
Теперь твоему боту доступны все функции Controller Bot.
№3. Создаем бота техподдержку с искусственным интеллектом
Тут будет немного посложнее, но результат превзойдет все ожидания. Бот-техподдержка нужен владельцам онлайн-магазинов и другим предпринимателям, которые часто сталкиваются с однотипными вопросами и не хотят тратить на это свое время.
Инструкция:
Переходим на сайт платформы Dialog Flow, регистрируемся и тыкаем на кнопку “+ Create Agent”.
В это поле вводим имя агента, а в разделе Default Language указываем русский дабы бот мог его понимать и общаться на нем.
Жмякаем на кнопку Create и переходим в раздел Integrations, пролистываем вниз и находим Telegram.
Нажимаем на кнопку и добавляем токен бота из BotFather в специальное поле. После чего нажимаем кнопку Start.
Теперь переходим в раздел Intents, нажимаем на синюю кнопку Create Intent и добавляем Training Phrases (фразы, которые будут заставлять бота пересылать те или иные ответы) и Responses (те самые ответы на Training Phrases).
Если объяснять совсем просто, то в раздел с Training Phrases нужно добавить возможные вопросы пользователей, а в раздел с Responses — ответы на них. Под каждую проблему пользователя нужно создавать отдельный Intent.
Советую подробно изучить документацию чтобы использовать все преимущества платформы Dialog Flow и создавать функциональных ботов.
Итоги
Сегодня я рассказал о том, как с нуля создать 3 основных телеграм бота, которые чаще всего используются предпринимателями и контент-мейкерами.
Telegram API vs Telegram Bot API
Рассказываю по порядку.
Телеграм использует собственный протокол шифрования MTProto. MTProto API (он же Telegram API) — это API, через который ваше приложение Телеграм связывается с сервером. Telegram API полностью открыт, так что любой разработчик может написать свой клиент мессенджера.
Для написания ботов был создан Telegram Bot API — надстройка над Telegram API. Перевод с официального сайта:
Почему-то мало кто знает о том, что Телеграм боты могут работать напрямую через Telegram API. Более того, таким образом можно даже обойти некоторые ограничения, которые даёт Bot API.
Вся информация ниже будет по умолчанию относиться и к Bot API, и к Telegram API. О различиях я буду упоминать. От некоторых ограничений Bot API можно избавиться с помощью локального сервера, об этом в конце статьи.
На чём пишут Телеграм-ботоы
Бот должен уметь отправлять запросы Телеграм-серверу и получать от него апдейты (updates, обновления).
Как получать апдейты в Bot API
Получать апдейты можно одним из двух способов:
Поллинг — просто регулярно отправлять запрос к серверу Телеграма для получения обновлений,
Вебхук — сделать так, чтобы Телеграм сам отправлял запросы по нужному URL.
Если вы попробуете загуглить, как написать Телеграм-бота на Python, вам предложат воспользоваться библиотеками python-telegram-bot и telebot. Но не стоит.
Ну, если вы только хотите познакомиться с разработкой ботов и написать своего hello-world-бота, то можете, конечно использовать и их. Но эти библиотеки могут далеко не всё. Среди разработчиков ботов лучшей библиотекой для ботов на Python считается aiogram. Она асинхронная, использует декораторы и содержит удобные инструменты для разработки. Ещё был хороший Rocketgram, но он давно не обновлялся.
Также ботов часто пишут на JavaScript, для этого обычно используется Telegraf. Библиотеки есть и для многих других языков, но используют их реже.
Пример кода бота
Если вы хотите получить какое-то представление о том, как вообще выглядит код бота, вот вам пример использования на aiogram с его странички на GitHub:
Этот бот будет отвечать на команды /start и и /restart.
Создание бота
Единственная информация о Телеграм-ботах, которой в интернете полным-полно: как создать бота. Это делается через специального бота BotFather. Когда вы создадите бота, BotFather даст вам его токен. Токен выглядит примерно так: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw . Именно с помощью токена вы сможете управлять ботом.
Один пользователь может создать до 20 ботов.
В BotFather удобно управлять ботами своими командой /mybots .
Юзернеймы
При создании бота нужно выбрать юзернейм. После этого поменять его будет очень сложно.
Как поменять юзернейм бота
Если у вас есть бот, и вы хотите дать ему более короткий юзернейм (который может быть занят неработающим ботом), то вы, теоретически, можете это сделать через @BotSupport.
Для этого бот должен (внезапно) быть рабочим, а также поддерживать английский язык.
Принято использовать такой формат обращения в поддержку:
Если вы везунчик 9999 lvl — вам ответят.
Оформление бота
Открыв бота, пользователи могут увидеть его профиль.
Оформление бота настраивается в BotFather: меню /mybots → Edit Bot . Там можно изменить:
Информация (About) — это текст, который будет виден в профиле бота.
Аватарка. Аватарки ботов, в отличие от аватарок пользователей и чатов, не могут быть анимированными. Только картинки.
Команды — тут имеются ввиду подсказки команд в боте. Подробнее о командах ниже.
Inline Placeholder — об инлайн-режиме см. ниже.
Стандартный совет: Потратьте свое время и заполните описание и информацию бота, чтобы пользователям было понятнее и проще его использовать. Можете оставить там свои контакты. И поставьте аватарку, чтобы бота было проще отличать от других чатов в списке.
Запуск бота пользователем
В Телеграме можно делиться файлами до 2 ГБ, но в Bot API более жесткие лимиты: боты могут скачивать файлы до 20 МБ и отправлять файлы до 50 МБ.
Работа с файлами в Bot API
Если бот уже загрузил файл на сервер Телеграма, то он может использовать file_id, чтобы отправлять этот файл.
Загружать файл на сервер можно в том числе и по URL файла.
Куда может писать бот
Бот может писать в личку только тем пользователям, которые его запустили. Пользователь может заблокировать бота, и тогда бот снова не сможет ему писать.
Боты не могут писать другим ботам.
В группе боту можно дать права администратора, чтобы он мог выполнять действия админов.
В одной группе может быть до 20 ботов. В публичные группы (группы с юзернеймом) ботов могут добавлять только админы.
Как боты добавляют кнопки
Подробнее о кнопках тоже
Супергруппы
На самом деле многие группы в Телеграме являются супергруппами.
Почему так? Раньше было четкое разделение на группы и супергруппы. По задумке, супергруппы — это группы для сообществ. Супергруппы могут иметь больше участников, публичные ссылки и другие плюшки.
Со временем, видимо, решили, что это неудобная концепция. Теперь обычная группа становится супергруппой, когда у группы меняются какие-нибудь настройки (подробнее тут). Вот такой костыль.
В этой статье под группами я подразумеваю и супергруппы, и обычные группы.
id пользователей и чатов
У каждого пользователя, бота, группы, канала в Телеграме есть собственный id. Различать чаты в коде бота следует именно по id, потому что он никогда не меняется.
В токене бота первая часть — это его id. Например, токен 110201874:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw принадлежит боту с id 110201874 .
В Bot API перед id супергрупп и каналов пишется -100. Так, id 1356415630 превращается в -1001356415630 . Осторожно: вы не сможете сохранить это значение в 32-битный тип числа.
Команды — о них в следующем пункте.
Я включил Privacy mode, а он не работает
Нужно удалить бота из группы и добавить заново.
Это могло нарушить работу антиспам- и других ботов.
Сейчас баг уже исправлен.
Команды
Команды подсвечиваются как ссылки: нажатие отправляет команду в чат.
Разметка в Telegram API (Телеграм боты)
Способы выделения текста:
Жирный текст
Моноширинный текст ("в строке" и "блоком")
Кнопки
Инлайн-кнопки
URL button — кнопка с ссылкой.
Switch to inline button. Кнопка для переключения в инлайн-режим (об инлайн-режиме см. ниже). Кнопка может открывать инлайн в том же чате или открывать меню для выбора чата. Можно указать в кнопке запрос, который появится рядом с никнеймом бота при нажатии на кнопку.
Дополнительные виды кнопок
Login URL button — специальная кнопка для авторизации пользователей на сайте. Использовалась, например, в официальном боте @discussbot (до добавления нативных комментариев в Телеграм).
Клавиатурные кнопки
Есть другой тип кнопок: keyboard buttons. Они отображаются вместо клавиатуры как подсказки. При нажатии на такую кнопку пользователь просто отправит этот текст.
При этом в личных чатах с помощью кнопки можно:
Запросить номер телефона пользователя,
Запросить геолокацию пользователя,
Открыть у пользователя меню создания опроса.
По умолчанию, если показать кнопки в группе, они будут видны всем пользователям. Вместо этого можно отобразить кнопки одновременно для этих пользователей:
Ещё о кнопках
Показать клавиатурные кнопки,
Убрать все клавиатурные кнопки,
Таким образом, нельзя показать оба типа кнопок одновременно.
Взаимодействие с ботом
Ссылки на Телеграм боты.
Юзернеймы ботов работают так же, как и любые другие юзернеймы в Телеграме: бота @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=<ваш текст> пользователь может запустить бота с каким-то стартовым параметром ( <ваш текст> ).
Как это выглядит:
При переходе по ссылке бот открывается как обычно.
Часто диплинки используются для реферальных программ (в качестве параметра можно передавать id пользователя, который поделился ссылкой). Есть и другие применения. Телеграм боты.
Прямая ссылка: tg://resolve?domain=examplebot&start=<ваш текст>
Инлайн-режим. Телеграм боты.
Инлайн-режим (inline mode) — это специальный режим работы бота, с помощью которого пользователь может использовать бота во всех чатах.
В группе можно запретить использовать инлайн всем или некоторым участникам. В официальных приложениях Телеграм это ограничение объединено с ограничением на отправку стикеров и GIF.
Результаты инлайн-режима
Результаты можно отображать двумя способами:
Сеткой. Удобно для выдачи картинок.
- Вертикальным списком. Удобно для выдачи текста.
Можно совмещать два типа, но корректно отображается это только на Telegram Desktop.
Приватность и геопозиция в инлайне
Inline feedback
Inline feedback — это апдейты о выбранных инлайн-результатах. Включаются через BotFather.
Создание наборов стикеров для телеграм ботов
Боты (и только боты!) могут создавать наборы стикеров. При этом каждый набор стикеров должен принадлежать какому-то пользователю. Посмотреть свои наборы стикеров пользователь может с помощью бота @Stickers.
Телеграм боты. Платежи
Телеграм предоставляет ботам возможность принимать платежи от пользователей. Это делается через провайдеров ЮMoney, Сбербанк, Stripe и ещё 7.
Эта возможность используются редко, потому что для использования провайдеров нужно юридическое лицо.
Платежи, к тому же, не работают на iOS из-за ограничений Apple.
HTML-игры в ботах
Telegram Login Widget
Вы можете добавить на свой сайт авторизацию через Телеграм. Процесс авторизации будет проходить так:
Пользователь должен будет ввести свой номер телефона.
Бот Telegram попросит подтвердить вход.
Telegram Login Widget не связан с Login URL button (см. раздел про кнопки выше), а является его альтернативой.
Разработка Телеграм ботов
Какие апдейты можно получать
Получение апдейтов: Bot API vs Telegram API
Если вы получили апдейт в Bot API, то второй раз вы его уже не получите.
В Telegram API это не так: пользователь может пользоваться мессенджером через несколько клиентов, каждый из которых должен получать апдейты.
Если запустить для одного бота несколько программ на Telegram API, то каждая из них будет получать все апдейты.
Ограничения Bot API не позволяют сделать то же самое.
Лимиты
Конечно, на запросы к серверу существуют лимиты. В Bots FAQ на сайте Telegram названы следующие:
Эти лимиты не строгие, а примерные. Лимиты могут быть увеличены для больших ботов через поддержку.
Другие известные ограничения в Telegram собраны на limits.tginfo.me — см. раздел про ботов.
Рассылка по пользователям
30 пользователям в секунду.
Смена владельца бота
Осенью 2020 года появилась возможность передавать ботов другому человеку. Это можно сделать в настройках бота в BotFather. Для этого на вашем аккаунте должна быть включена двухфакторная авторизация — не менее, чем за 7 дней до передачи. Передать бота можно только пользователю, который что-либо ему писал.
Локальный сервер Bot API
Также осенью 2020 года исходники Bot API выложили на GitHub. Теперь вы можете поднять собственный сервер Bot API. На GitHub перечислены следующие преимущества:
Скачивание файлов с сервера без ограничения (ограничение на отправку файлов пользователями в Телеграме — 2 ГБ),
Загрузка файлов на сервер до 2000 МБ,
Загрузка файлов на сервер с помощью локального пути и URI файла,
Использование любого локального IP-адреса для вебхука,
Использование любого порта для вебхука,
Возможность увеличить максимальное число соединений до 100000,
Получение локального пути файла вместо загрузки файла с сервера.
Юзерботы
В начале статьи я рассказывал о том, что такое Telegram API и Telegram Bot API.
Юзерботов следует использовать аккуратно: за большую подозрительную активность аккаунт могут ограничить или забанить.
Заключение. Телеграм боты
Я постарался собрать в одном месте и структурировать информацию о всех возможностях Телеграм-ботов. Большое спасибо vanutp, NToneE и Grinrill за помощь с фактами. Если мы что-то забыли — пишите, исправлю.
Я специально не разделял большую статью на несколько постов, чтобы можно было быстро найти нужную информацию. К тому же, в начале статьи есть её содержание. Так что можете сохранить её к себе и использовать как справочник 🙂
Вообще интерфейс бота (то есть интерфейс чата) имеет много ограничений. Но плохо ли это? Действительно удобнее использовать инструмент, когда это часть привычной среды. Я часто прямо в переписке нахожу нужную картинку или информацию с помощью инлайн-ботов. Как заядлый пользователь Телеграма, я люблю использовать ботов. И создаю ботов. И вы создавайте.
Читайте также: