На чем пишут боты telegram
Перейти к содержимому

На чем пишут боты telegram

  • автор:

Боты: информация для разработчиков

Боты — специальные аккаунты в Telegram, созданные для того, чтобы автоматически обрабатывать и отправлять сообщения. Пользователи могут взаимодействовать с ботами при помощи сообщений, отправляемых через обычные или групповые чаты. Логика бота контролируется при помощи HTTPS запросов к нашему API для ботов.

Общие сведения

Что могут делать боты?

Вот несколько примеров использования ботов:

  • Интеграция с другими сервисами. Например, бот может отправлять комментарии или управлять «умным домом». Или, например, отправлять вам уведомления при совершении каком-то действия или события (Примеры: GitHub Bot, Image Bot).
  • Утилиты и инструменты. Бот может отображать погоду, переводить тексты или предупреждать о предстоящих событиях по вашему запросу (Например: бот опросов).
  • Одно- и многопользовательские игры. Бот может поиграть с вами в шашки или шахматы, проводить викторины и так далее. (Пример: Trivia bot).
  • Социальные сервисы. Бот может находить вам собеседника, основываясь на ваших общих интересах и увлечениях. (Пример: HotOrBot).
  • Все, что вам захочется. Бота можно запрограммировать для чего угодно. Разве что посуду они помыть не смогут.

Как работают боты?

Как уже было сказано ранее, роботы — особые аккаунты, которые не требуют номера телефона при создании. По сути, эти аккаунты играют роль интерфейса к вашему сервису, который работает на удалённом сервере.

Самое интересное в роботах это то, что для их создания вам не нужно изучать низкоуровневые методы работы с MTProto и шифрованием — общение с роботом организовано при помощи обычного HTTPS интерфейса с упрощёнными методами Telegram API. Мы назвали его Bot API.

Рекомендуем также ознакомиться с подробным описанием Bot API.

The Botfather

Как создать бота?

Для этого есть. Бот. Просто напишите пользователю @BotFather и следуйте его инструкциям. Как только вы создали бота и получили свой ключ (токен) авторизации, переходите в раздел документации Bot API, чтобы начать настраивать вашего бота.

Чем бот отличается от обычного аккаунта?

  • У роботов нет статусов «онлайн» и «был в сети», вместо этого отображается надпись «бот».
  • Для ботов выделено ограниченное место на серверах — все сообщения будут удалены по прошествии определённого срока после обработки.
  • Боты не могут сами начать общение с пользователем. Пользователь должен либо добавить робота в группу, либо первым начать с ним диалог. Для этого можно использовать ссылки вида t.me/<bot_username> или поиск по имени пользователя.
  • Имя пользователя у робота должно заканчиваться на «bot» (например, @controllerbot).
  • При добавлении в конференцию, по умолчанию робот не получает всех сообщений (см. режим приватности).
  • Роботы никогда не спят, не едят и не жалуются (если только вы не запрограммируете их на обратное).

Суперспособности

У роботов Telegram есть много уникальных возможностей — например, кастомизированные клавиатуры, дополнительные интерфейсы для команд по умолчанию, внешнее связывание и специальные режимы приватности для групп.

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

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

Введите имя пользователя бота, затем ключевое слово

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

Новый рекорд в чате Внутриигровой счёт

Под капотом у игр — HTML5, поэтому вы можете создавать игры любой сложности. На данный момент командой Telegram созданы несколько демо-игр:

Клавиатуры

Одна из самых необычных возможностей Bot API — кастомизированные клавиатуры. При передаче сервером ответа есть возможность передать команду на отображение специальной клавиатуры с предустановленными вариантами ответа (см. ReplyKeyboardMarkup). Клиент Telegram, получив сообщение, отобразит пользователю вашу клавиатуру. Нажатие на клавишу сразу же отправит на сервер соответствующую команду. Таким образом можно значительно упростить взаимодействие робота с пользователем. На данный момент для отображения на клавише могут использоваться эмодзи и текст. Вот несколько примеров таких клавиатур:

Клавиатура для бота опросовКлавиатура бота викторин Клавиатура бота-калькулятора. Просто потому что.

За более подробной информацией обращайтесь к описанию метода sendMessage.

Команды

Команды представляют собой более гибкий способ общения с ботом. Рекомендуется следующий синтаксис:

Команда должна начинаться с символа косой черты «/» и не может быть длиннее 32 символов. Команды могут состоять из букв латинского алфавита, цифр и подчёркивания. Несколько примеров:

Сообщения, начинающиеся с косой черты, будут всегда доставляться боту (точно также, как и при ответе на его сообщения и на @упоминания бота в чате). Приложения Telegram будут:

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

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

Это происходит автоматически, если вы выбираете команду из списка доступных.

Глобальные команды

Чтобы пользователям было проще работать с ботами, мы просим всех разработчиков реализовывать поддержку нескольких простых команд. В интерфейсе приложений Telegram будут ярлыки (быстрые ссылки) для этих команд.

  • /start — начинает общение с пользователем (например, отправляет приветственное сообщение). В эту команду также можно передавать дополнительные аргументы (см. внешнее связывание).
  • /help — отображает сообщение с помощью по командам. Оно может представлять собой короткое сообщение о вашем боте и список доступных команд.
  • /settings — (по возможности) возвращает список возможных настроек и команды для их изменения.

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

Пустая история переписки с ботом Профильная страница бота

Режим приватности

Ботов часто добавляют в группы, чтобы получать различную информацию — новости, уведомления и т.д. Однако, при добавлении бота вы наверняка спрашивали себя: «А что если этот маленький засранец пересылает всю групповую переписку куда-то “налево”?» Именно поэтому у роботов есть режимы приватности.

Робот с включенным режимом приватности не будет получать всех сообщений, а только сообщения, удовлетворяющие этим условиям:

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

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

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

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

Внешнее связывание

Боты имеют механизм внешнего связывания, которые позволяет передать дополнительные параметры при запуске. Например, для передачи авторизационного токена пользователя, чтобы соединить его аккаунт с каким-либо внешним сервисом.

У каждого робота есть ссылка, при помощи которой можно начать с ним диалог — https://t.me/<имя бота> . К этой ссылке можно добавить параметры *start или startgroup со значением длиной до 64 символов. Пример:

Допустимо использование символов A-Z , a-z , 0-9 , _ и — . Мы рекомендуем использовать base64url для кодирования параметров.

Переход по ссылке с параметром start начнет чат с ботом, при этом в поле ввода текста будет отображаться кнопка СТАРТ. При переходе по ссылке с параметром startgroup пользователю будет предложено добавить бота в одну из доступных групп. Как только пользователь подтвердит своё действие (нажмёт на кнопку СТАРТ или выберет группу), бот получит сообщение следующего формата:

В PAYLOAD будет значение параметра start или startgroup , который был передан в ссылке.

Пример реализации внешнего связывания

Предположим, сайт example.com хочет отправлять пользователю уведомления с помощью Telegram-бота. Ниже приведено описание последовательности действий для реализации отправки уведомлений пользователю с ID 123 .

    бота с любым именем, например, @ExampleComBot
  1. Настройте вебхук для входящих сообщений
  2. Сгенерируйте ключ достаточной длины, напр. $memcache_key = ‘TESTKEY’
  3. Запишите значение 123 с ключом $memcache_key в Memcache на 3600 секунд (один час)
  4. Отправьте пользователю ссылку https://t.me/ExampleComBot?start=TESTKEY
  5. Настройте обработчик веб-хуков так, чтобы он запрашивал в Memcached значение входящего параметра каждый раз, когда приходит сообщение, начинающееся со /start . Если ключ существует, записываем chat_id, переданный в веб-хук, в telegram_chat_id для пользователя 123 . Удаляем ключ из Memcache.
  6. Теперь, если мы хотим отправить сообщение пользователю 123 , сначала проверяем telegram_chat_id . Если оно существует, используем метод sendMessage, чтобы отправить пользователю сообщение.

BotFather

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

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

Напишите команду /newbot , чтобы создать нового робота. BotFather спросит у вас имя нового бота и предложит придумать username.

Имя (name) будет отображаться в контактах и чатах.

Username — короткое имя на латинице, которое используется для упоминаний бота и в ссылках на профиль в telegram.me. Username должен состоять из букв латинского алфавита, подчёркиваний и цифр и быть длиной от 5 до 32 символов. Также имя пользователя обязательно должно заканчиваться на «bot», например: «tetris_bot» или «TetrisBot».

Ключ (токен) это набор символов вида 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw , который нужен, чтобы получать и отправлять сообщения с помощью Bot API.

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

Если вы потеряли или утратили доступ к токену, отправьте команду /token , чтобы сгенерировать новый.

Настройки

  • /setname — Изменить имя робота.
  • /setdescription — Изменить описание робота, представляющее собой короткий текст с описанием бота. Пользователи увидят его в самом начале, под заголовком «Что умеет этот робот?».
  • /setabouttext — Изменить информацию о боте, ещё более короткий текст, отображающийся в профиле бота. Ещё, если кто-то поделится вашим ботом, то вместе со ссылкой на него отправится этот текст.
  • /setuserpic — Изменить аватарку бота. Картинки — всегда хорошо.
  • /setcommands — Изменить список команд бота. Каждая команда состоит из собственно командного слова, начинающегося с символа косой черты («/») и короткого описания. Пользователи увидят список команд при вводе символа «/».
  • /setjoingroups — Определяет, можно ли добавлять вашего бота в группы.
  • /setprivacy — Определяет, все ли сообщения видит ваш бот в группах. В выключенном состоянии роботу будут отправляться все сообщения.
  • /deletebot — Удалить бота и его имя пользователя.

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

Сайт про 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 за помощь с фактами. Если мы что-то забыли — пишите, исправлю.

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

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

25 лучших библиотек для написания Telegram чатботов в 2020 году

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

Любопытные факты

  • Мы нашли целых три библиотеки Telebot на разных языках, которые не связаны друг с другом
  • Во всех популярных языках обязательно есть одна популярная, но слабо документированная библиотека, и одна хорошо документированная, но отстающая в популярности
  • В Bots Club всегда будут рады вашим ботам, поэтому не забудьте опубликовать их после релиза! ��

.Net остаётся крайне популярным для разработки устойчивых финансовых приложений. Но и у его поклонников нашлось время для создания крайне популярной библиотеки .NET Client for Telegram Bot API. Более 1,4 тыс звёзд на GitHub и более 3,5 тыс проектов на её основе.

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

  • Например, tgbot-cpp от российского разработчика Олега Морозенкова, ныне поддерживаемую 27 контрибуторами и имеющую 361 звезду на GitHub;
  • или LibTelegram из Великобритании от программиста slowriot, чуть менее популярную, но лучше документированную

Elixir

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

    от японского разработчика Yu Zhang, уже сплотила вокруг себя 34 контрибуторов и заслужила 293 звезды на GitHub от бразильца João Ferreira хорошо документирована и уже отмечена 113 звёздами

Энтузиасты языка Go также не остались в стороне от разработки чатботов для Telegram.

    имеет более 2,3 тыс звёзд на GitHub благодаря усилиям 70 контрибуторов.
  • Однако ему на пятки наступает Telebot от Ian P Badtrousers, обретший свою армию поклонников, имеющий более 1,4 тыс звёзд и подробную документацию.

Haskell

Мы смогли найти одну достойную библиотеку для этого языка: 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

Kotlin как платформа для серверной разработки только обретает свою популярность, во многом благодаря усилиям команды JetBrains.

Лучшим решением для написания своего бота для Telegram на Kotlin на данный момент является библиотека Kotlin Telegram Bot от испанского разработчика Iván Martín. Более двухсот звёзд на GitHub и 20 контрибуторов.

Отдельного упоминания заслуживает решение Telegraff от российского разработчика Руслана Молчанова с 93 звёздами на GitHub.

Node JS

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

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

    имеет более 11,5 тысяч звёзд на GitHub, используется тысячами разработчиков и активно поддерживается сообществом (141 контрибутор).
  • Также профессиональные разработчики оценят AIOGram с почти тысячей звёзд и более 60 контрибуторами

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

  • Если вы его поклонник, то вам стоит обратить внимание на telegram-bot-ruby, библиотеку от Александра Типугина, имеющую почти тысячу звёзд на GitHub и используемую в более, чем 1300 проектах.
  • Также, возможно, вас заинтересует Telegram::Bot от Макса Меленьтева, с очень подробной документацией.

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

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

    от мультинацональной команды разработчиков, с почти 500 звёздами на GitHub
  • Чуть менее популярная, но лучше документированная teloxide
  • Наконец, молодая, но набирающая популярность Telebot от разработчика Lorenz

Scala

Scala крайне любим разработчиками систем для обработки больших массивов данных. И со свойственной им основательностью они создали Canoe (от Юрия Слинкина), прекрасную библиотеку для быстрой разработки сценариев чатбота.

Также рекомендуем обратить внимание на bot4s от Alfono Peterssen, набравшего 300 звёзд на GitHub.

Swift

Несмотря на свою ориентированность прежде всего на iOS-разработку, Swift-разработчики могут также порадовать нас своими библиотеками для чатботов.

  • К примеру, Telegram Bot SDK от разработчика Rapier, объединившего вокруг себя 10 единомышленников и получившего почти 250 звёзд на GitHub.
  • Или чуть менее популярный Telegrammer от Гиви Патаридзе, которому помогают ещё 4 контрибутора.

Знаете ли вы другие библиотеки, достойные упоминания? Напишите о них в комментариях!

О Bots Club

Мир чатботов Telegram богат, прекрасен, но крайне непрозрачен. Вы не доверяете ботам, а их разработчики не знают, как им завоевать ваше доверие.

В Bots Club мы создаём уютное место для общения и позволяем пользователям открыть для себя этот мир: задать вопросы разработчикам, поучаствовать в акциях, оставить отзыв и многое другое.

Bots Club — место, где люди находят себе ботов.

Подпишитесь на нас в социальных сетях и следите за новостями в нашем канале Telegram.

Telegram-бот на Python за полчаса с aiogram

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

Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.

Настройка

Откройте Telegram, найдите @BotFather и начните беседу. Отправьте команду /newbot и следуйте инструкциям. Вы получите:

  • свой токен;
  • адрес Telegram API (https://api.telegram.org/bot);
  • ссылку на документацию.

Обязательно сохраните токен, так как это ключ для взаимодействия с ботом.

Примечание Хранение токена должно быть локальным: ни в коем случае не выгружайте его в общий доступ, например в GitHub-репозиторий .

Далее начните беседу. Введите в поисковой строке имя бота и нажмите /start . Отправьте любое сообщение: оно станет первым обновлением, которое получит Телеграм бот.

Установка Python

Для написания Telegram-бота на Python, нужно установить сам язык. Если вы пользуетесь Windows, скачать Python можно с официального сайта. Версия важна. Нам подойдет Python не ниже версии 3.7. Если же у вас Linux или macOS, то, скорее всего, у вас стоит Python 3.6. Как обновиться, можете почитать здесь.

Тем, кто только начал изучение этого языка, будет также полезна дорожная карта Python-разработчика.

Установка pip

Это менеджер пакетов. В версиях выше Python 2.7.9 и Python 3.4, а также на macOS/Linux он уже есть. Проверить это можно командой pip —version в терминале. Если же по каким-то причинам он отсутствует, установить его можно при помощи команды:

Установка aiogram

Установить данный фреймворк для Telegram Bot API с помощью pip:

Hello, bot!

Давайте напишем простенькую программу приветствия. Для начала следует импортировать библиотеки и создать экземпляры Телеграм бота и диспетчера:

Теперь напишем обработчик текстовых сообщений, который будет обрабатывать входящие команды /start и /help :

Добавим ещё один обработчик для получения текстовых сообщений. Если бот получит «Привет», он также поздоровается. Все остальные сообщения будут определены, как нераспознанные:

Запускаем Telegram бота, написанного на Python, следующим образом:

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

Видеокурс «Как стать тестировщиком»

Ну вот и всё, простенький бот в Телеграмме на языке Python готов.

Docker

Сейчас мало кто не слышал про Docker, но если вдруг не слышали — вот хорошая статья. Для нашего проекта потребуется самый простой Dockerfile:

Каталог проекта должны при этом содержать следующие файлы:

  • bot.py;
  • Dockerfile.

Для локальных тестов достаточно установить Docker (linux, mac, windows), после чего в папке проекта собрать и запустить контейнер с помощью команд:

my_app — это просто название нашего контейнера, вместо которого можно использовать другое имя.

-d — специальный флаг, который запускает контейнер в фоне и позволяет дальше работать в терминале. Это называется detached mode.

Деплой на AWS

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

  1. Локально или с помощью пайплайнов собрали контейнер.
  2. Загрузили его на докер хаб.
  3. В любом удобном месте скачали его. Это может быть локальная машина, VPS сервер или облачный провайдер по типу AWS.
  4. Запустили.

Пройдёмся по этим шагам. Везде, где указано <docker_hub_username> , надо вставлять свой юзернейм, использованный при регистрации на докерхабе. Если это ваша первая публикация на докерхаб, для начала потребуется залогиниться с помощью docker login.

Загружаем его на докерхаб:

Для проверки успешности загрузки можете запустить контейнер из Docker Hub с помощью команды:

Далее загрузим наш контейнер в AWS Elastic Beanstalk. Для этого потребуется аккаунт на AWS. Если его нет, необходимо зарегистрироваться. Вас попросят ввести данные карты для верификации, но переживать не стоит, ведь мы воспользуемся бесплатным годовым триалом. Чтобы поиграться, этого более чем достаточно, а вот если вы захотите вывести проект в продакшен, следует перейти на VPS — это даст больше контроля и гибкости.

  • Переходим в Elastic Beanstalk, на вкладку Applications, и создаём новое приложение:

Elastic Beanstalk вкладка Applications

  • Называем приложение, теги оставляем пустыми:

Называем приложение в Elastic Beanstalk

  • Создаём для приложения environment:

environment для будущего Telegram-бота

  • Выбираем Worker environment:

Worker environment для будущего Telegram-бота

  • В качестве платформы выбираем Docker:

Docker для Telegram-бота на Python

  • В пункте Application code нужно загрузить JSON-файл с конфигурацией Docker-образа. Сам файл:

Application code

  • Создаём окружение:

Создаём окружение

  • AWS начинает создавать окружение, просто ждём завершения процесса:

AWS начинает создавать окружение

  • Если всё прошло успешно, вы увидите индикатор успешного запуска приложения:

Docker для Телеграм бота

Проверяем работу нашего Telegram bot:

Проверка Телеграм бота

Заключение

Поздравляем! Теперь вы знаете, как писать роботов для Telegram на Python.

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

Кстати, в телеграмме есть аж целых два типа клавиатур:

  1. Классическая RelpyKeyboardMarkup, у которой кнопки располагаются под полем ввода сообщения:
    RelpyKeyboardMarkup
  2. Более современная InlineKeyboardMarkup, которая привязывается к конкретному сообщению:
    InlineKeyboardMarkup

Но и это полностью рабочий Телеграм-бот на Python: дополните словарём, и получите полноценную беседу. Также можете опробовать функциональность нашего Telegram-бота.

В «настоящих проектах» не обойтись без базы данных. Тут на помощь приходит docker-compose, который позволяет объединить несколько контейнеров в один сервис. Таким образом, например, можно создать приложение и положить его в контейнер, а базу данных, как отдельный сервис, поместить в другой контейнер, и с помощью docker-compose наладить между ними связь.

Также для более серьёзной разработки лучше использовать выделенный виртуальный сервер (VPS): он даёт гораздо больше гибкости и свободы, чем тот же AWS. А самое главное, он более приближён к «боевой» разработке. Схема работы тут будет даже проще, чем с AWS: вам просто нужно установить Docker, спуллить образ с Docker Hub и запустить его.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *