15.05.2024
Telegram Боты: Все, что вам нужно знать
Функциональность
Телеграм-боты предоставляют широкий спектр функциональности, которая может быть полезна как обычным пользователям, так и предприятиям, и организациям. Они могут выполнять различные задачи, начиная от автоматической рассылки новостей и уведомлений и заканчивая созданием групп и каналов, а также управлением ими. Кроме того, телеграм-боты могут предоставлять информацию о погоде, курсах валют, расписании транспорта и многом другом.
Одной из главных функций телеграм-ботов является возможность автоматической рассылки сообщений. Это особенно полезно для предприятий и организаций, которые могут использовать ботов для отправки уведомлений о новостях, акциях, скидках и других важных событиях. Такая функциональность позволяет сэкономить время и ресурсы, которые ранее были затрачены на ручную рассылку сообщений.
Еще одной важной функцией телеграм-ботов является возможность создания групп и каналов и управления ими. Боты могут исполнять роль администраторов, контролируя доступ пользователей, модерируя контент и выполняя другие административные задачи. Также боты могут предоставлять дополнительные функции для участников групп и каналов, такие как опросы, голосования, розыгрыши и многое другое.
Телеграм-боты также могут быть использованы для получения различной информации. Например, боты могут предоставлять актуальную информацию о погоде, курсах валют, расписании транспорта и других интересующих пользователей данных. Такая функциональность позволяет пользователям быстро получать нужную информацию без необходимости искать ее в интернете или использовать другие источники.
Еще одной полезной функцией телеграм-ботов является возможность интеграции с другими сервисами и платформами. Боты могут быть настроены для работы с API различных сервисов, таких как социальные сети, онлайн-магазины, банковские системы и другие. Это позволяет пользователям получать информацию о заказах, балансе счета, состоянии доставки и многом другом, не покидая Telegram.
Одной из особенностей телеграм-ботов является их гибкость и настраиваемость. Пользователи могут создавать своих собственных ботов, настраивая их функциональность и внешний вид под свои нужды. Боты могут быть созданы как для личного использования, так и для коммерческих целей. Кроме того, существует множество готовых ботов, которые могут быть установлены и использованы без необходимости разработки собственного.
Телеграм-боты также предлагают различные инструменты для взаимодействия с пользователями. Например, боты могут использовать клавиатуры, кнопки и другие элементы управления для облегчения взаимодействия с пользователем. Также боты могут применять различные алгоритмы и искусственный интеллект для анализа и обработки сообщений от пользователей, что позволяет им предоставлять более точные и полезные ответы.
Ограничения ботов
Одними из особенностей ботов являются их ограничения на получение информации или действий, которые они могут выполнять в процессе своей работы. Это позволяет защитить конфиденциальные данные пользователей и предотвратить основные уязвимости, такие как получение спама, пересылку информации в другие чаты и т. д.
Основными ограничениями являются:
-
Запрет на получение истории переписки, бот может лишь получить конкретное сообщение или пост по его идентификатору, который уникален для каждого чата.
-
Запрет на обработку сообщений в групповых чатах, если он не состоит в администраторах этого чата.
-
Запрет на получение статистики канала, если аудитория канала менее 500 человек.
-
Ограничение на количество одновременно работающих ботов с одинаковым токеном: он может быть только один.
-
Ограничение на количество сообщений: телеграм-боты могут иметь ограничение на количество сообщений, которые они могут отправлять в течение определенного периода времени.
-
Ограничение на размер сообщений: сообщения, отправляемые телеграм-ботом, могут быть ограничены по размеру.
-
Ограничение на количество запросов к API: если бот использует API телеграма или другие внешние сервисы, существует ограничение на количество запросов, которые бот может делать в течение определенного времени.
-
Ограничение на использование ресурсов: телеграм-боты могут иметь ограничения на использование ресурсов, такие как CPU и память.
Регистрация бота
При создании собственного бота его необходимо сначала зарегистрировать, следуя инструкции ниже.
-
Найти главного бота BotFather https://t.me/BotFather и запустить его. Через него можно управлять данными бота, добавить описание, аватар и т. д.
-
Написать команду /newbot или выбрать из меню.
-
Ввести отображаемое имя.
-
Ввести логин бота, который должен быть уникальным, длиной от 5 до 32 символов, содержать только латинские буквы, цифры и нижнее подчеркивание и обязательно содержать «bot» в любом из двух видов «tetris_bot» или «TetrisBot».
-
После чего BotFather создаст бота и пришлет все доступы к нему.
-
Далее бот доступен по ссылке.
-
И его уникальный токен.
Получив уникальный токен, можно приступать к разработке основной логики бота, которую он должен выполнять.
Разработка
Прежде чем приступить к разработке телеграм-бота, необходимо определиться с языком программирования и библиотекой, которая позволит получить доступ к API телеграм-бота. Можно использовать API напрямую и отправлять запросы, но это является плохой практикой и так делать не следует, только в конкретных уникальных случаях. В данной статье мы возьмем такой язык программирования, как Python.
Самые популярные библиотеки для выбранного языка:
-
AIOGram — довольно простая и полностью асинхронная библиотека для Telegram Bot API, написанная с использованием asyncio и aiohttp.
-
python-telegram-bot — обертка, от которой невозможно отказаться.
-
pyTelegramBotAPI — простая, но расширяемая реализация Python для Telegram Bot API.
-
TGramBot — частично автоматически сгенерированная и асинхронная платформа API Minimal Telegram Bot. https://github.com/KeralaBots/TGramBot
В рамках статьи была выбрана pyTelegramBotAPI из-за своей легкости и простоты.
Для начала нужно установить соответствующую библиотеку, делается это командой:
infinity_poling против webhook
Метод infinity_poling необходимо использовать только для разработки и ни в коем случае не использовать при запуске на сервере. Для этой цели существуют webhook.
При использовании infinity_poling происходит постоянный опрос телеграма о том, есть ли какие-то изменения, связанные с этим ботом, что может привести к тому, что телеграм через какое-то время оборвет связь и необходимо будет его перезапустить.
Одним из важных минусов использования infinity_poling является то, что есть ограничения по использованию infinity_poling на российских серверах. Необходимо либо настраивать прокси-сервер, который будет стоять где-то в другой стране, либо постоянно бороться с тем, что бот будет переставать работать.
В то время использование webhook подразумевает, что не мы будем постоянно слать запрос в телеграм, а телеграм будет слать нам запрос, как только произойдет обновление с нашим ботом. Поэтому для реализации поддержки webhook необходимо сначала сделать свой сервер для обработки таких запросов. При этом ограничений на российские серверы уже нет, поэтому настраивать прокси-сервер не нужно. Единственный незначительный минус — это то, что необходимо иметь доменное имя.
Реализовать веб-сервер можно любым удобным способом. В статье взят фреймворк Flask, но можно взять любой другой и адаптировать под него реализацию работы с webhook.
Как и в первом примере, необходимо указать токен созданного бота, после чего идет строка с указанием домена, где находится сервер по обработке запроса, который приходит с телеграма и содержит в себе обновления для бота. Также нам необходим определенный endpoint, который непосредственно и будет обрабатывать обновления с телеграма. Для этого инициализируем следующие константы.
Создание объекта, с помощью которого будем получать доступ к боту, и объект для управления нашим сервером.
Дальше необходимо очистить старый webhook у бота и задать новый. Часто очистка от старого webhook не происходит мгновенно, поэтому необходимо добавить искусственное ожидание в виде time.sleep(1), что заставит наше приложение остановиться на 1 секунду. За это время гарантированно произойдет очистка, а дальше задается webhook, на который телеграм будет слать обновления для созданного бота.
Теперь необходимо реализовать endpoint по обработке обновлений. Сначала нужно получить обновления и декодировать их в UTF-8. После чего десериализовать эти обновления в формат для обновления бота, а затем применить эти обновления к боту.