Telegram-боты — хорошая возможность вписать какую-то важную функциональность в понятную и простую платформу мессенджера. Не нужно думать об отдельном сайте и интерфейсе. Также боты — хорошая возможность для новичков в разработке реализовать свой мини-проект. Идея может быть как совершенно фановая — например, создавать стикеры из мемных сообщений друзей, так и быть частью функциональности сервиса — например, платежной системы.
В подборке под катом — семь инструкций по созданию Telegram-ботов с разной функциональностью. Сохраняйте статью в закладки: пригодится как начинающим, так и опытным разработчикам.
Выберите интересующего вас бота:
→ Паттерны взаимодействия с ботами
→ Веб-приложение на Node.js и React
→ Платежная система с Payments
→ Карманный ChatGPT, которому можно отправлять голосовые сообщения
→ Бот для генерации сложных паролей
→ Бот для создания стикеров из сообщений
→ Бот для мониторинга погоды на Python
Паттерны взаимодействия с ботами
Вы можете усовершенствовать своего Telegram-бота, добавив паттерны взаимодействия с пользователями. Например, заменить командную строку на ключевое слово «Поехали!» или расположить под сообщением кнопку START. О том, как интегрировать эти паттерны в бот, подробно рассказываем в статье.
В процессе разработки мы использовали Python 3.9 и python-telegram-bot — фреймворк на основе обработчика. Ядро получает обновления (Update) от Telegram Bot API и вызывает соответствующий обработчик из списка зарегистрированных. Или игнорирует, если подходящего обработчика нет. В тексте вы найдете наглядную демонстрацию описанной работы.
Перейти к инструкции →
Кнопки InlineKeyboard.
Что вы узнаете из текста?
- Какие существуют способы взаимодействия с Telegram-ботом.
- Какие нюансы стоит учитывать в работе с ботами.
- Как создать обработчик аргументов команды /start или кодовых слов — например, «Поехали!».
- Как создать кнопки ReplyKeyboard, заменяющие клавиатуру, и InlineKeyboard, располагающиеся под сообщением.
Веб-приложение на Node.js и React
Год назад в Telegram Bot API добавили Web Apps — кастомные страницы, которые открываются внутри переписки с ботом. Сейчас эта функция востребована у большого количества пользователей — от создателей маленьких tg-ботов до коммерческих компаний.
Мы подготовили инструкцию по созданию такого веб-приложения. В ней — пошаговая разработка с JavaScript-кодом, который вы можете использовать в своем tg-боте. В качестве фронтенда использовали React, а для бэкенда — node.js. Готовое веб-приложение будет поддерживать авторизацию пользователя, встроенную оплату через платежные системы, кастомизацию под выбранную пользователем тему и многое другое.
Перейти к инструкции →
Форма обратной связи.
Что вы узнаете из текста?
- Как сделать форму обратной связи.
- Как добавить кнопку «купить» и корзину с товарами.
- Как обработать полученные данные методом sendData.
Платежная система с Payments
Для оплаты вашего продукта не обязательно создавать сайт или делать отдельную страничку с встроенным блоком для платежей. Все это можно реализовать сразу в Telegram. Достаточно подключить возможность ежемесячной подписки.
В статье используем популярную библиотеку на Python — aiogram, предназначенную для создания ботов. И связываем ее с приложением через Telegram Bot API. Дополнительно вы можете выбрать платежную систему. Мессенджер поддерживает оплату более чем в 200 странах через такие шлюзы, как Stripe, YooMoney, Sberbank, LiqPay, PayMaster и другие.
Перейти к инструкции →
Что вы узнаете из текта?
- Как сгенерировать invoice с деталями платежа.
- Как подключить возможность оплаты в рублях и долларах.
- Как настроить платежи с помощью аргумента Pre Checkout Query и Successful Payment.
Карманный ChatGPT, которому можно отправлять голосовые сообщения
Часто сервисы Open AI неудобно использовать на территории России. Приходится каждый раз подключать VPN и писать запросы вручную. Потратить несколько минут на формулировку и еще несколько — на набор текста. Теперь представьте: вы открываете tg-бот, записываете голосовое сообщение и получаете текстовый ответ из ChatGPT. В нашей инструкции рассказываем, как это сделать.
Для настройки рабочего окружения мы использовали Node.js и фреймворк Telegraf. После научили бота обрабатывать голосовые сообщения, получать на них ссылки в формате ogg и преобразовывать в текст. А чтобы бот всегда был на связи, задеплоили его на облачный сервер.
Перейти к инструкции →
Что вы узнаете из текста?
- Как научить бота фильтровать голосовые сообщения и получать на них ссылки в формате ogg.
- Как обрабатывать и конвертировать полученные данные из getFileLink в mp3.
- Как сохранять сообщения и их контексты для каждого пользователя.
Бот для генерации сложных паролей
Чтобы придумать надежный, но запоминающийся пароль, можно взять несколько слов и объединить их в последовательность, а после — добавить специальные символы. А можно пойти другим путем. Написать Telegram-бота, который будет генерировать пароли прямо в мессенджере.
Для создания такого бота мы использовали сразу несколько инструментов. Среди них — PyCharm, aiogram и Redis. Далее настроили параметры конфигурации из готового репозитория на GitHub. По умолчанию вы можете выбрать любой из трех пресетов для генерации пароля. Если в какой-то момент их станет недостаточно, вы всегда можете добавить новые или изменить существующие в XKCD-password-generator.
Перейти к инструкции →
Что вы узнаете из текста?
- Как создать новую конфигурацию бота.
- Как изменить готовые пресеты в XKCD.
- Как сделать бота, если у вас не PyCharm.
Бот для создания стикеров из сообщений
Было ли у вас такое, что какое-то сообщение друга в Telegram хотелось отправлять впоследствии в виде стикера? С этой инструкции вы можете создать с друзьями или коллегами свой личный «фонд золотых цитат». Концепт идеи прост: пользователь пересылает сообщение в диалог с ботом и получает готовый стикер. Без лишних действий и стороннего софта.
Для разработки мы выбрали Python версии 3.8. Нарисовали шаблон стикера с помощью библиотеки Pillow и продумали уникальные имена для набора. С последним оказалось не все так просто. Если использовать имя бота в уникальном имени набора, то любой может получить к нему доступ. Поэтому в качестве уникального имени выбрали скрытый UUID в Telegram.
Перейти к инструкции →
Что вы узнаете из текста?
- Как исправить «особенность» с уникальным именем набора.
- Какие ограничение мессенджер накладывает на стикеры.
- Как разработать бота без БД и промежуточных файлов.
Бот для мониторинга погоды на Python
Классика бот-разработки! Задача отлично подойдет для знакомства с Telegram-ботами и первого пет-проекта. В результате получите карманного синоптика, который будет отправлять вам данные о погоде в любом городе.
В статье детально рассмотрим работу с API с помощью токенов для OpenWeather и Telegram-бота. Приступим к парсингу ответов в формате JSON: заберем данные о городе и температуре, влажности, давлении и скорости ветра. А после — задеплоим на облачный сервер. И все это на асинхронной библиотеке aiogram.
Перейти к инструкции →
Что вы узнаете из текста?
- Как добавить разные эмодзи в зависимости от погоды.
- Какие форматы данных поддерживает «карманный синоптик».
- Как научить бота обрабатывать города через API и возвращать данные о погоде.
Какой бот вам показался наиболее полезным? Или, может, вы хотите новый текст про бота с определенной функциональностью? Пишите в комментариях!
Комментарии (11)
mikegordan
02.08.2023 11:16+1Меня огорчает что почти 95% статей про ботов, а не про "ботов" от своего аккаунта, например нету статей как: "пересылать все сообщения где я упомянут мне в личный чат из всех групп и каналах где я состою", или "разбор личных сообщений по каким либо критериям (пересылка например в личный чатик "важное")"
Singrana
02.08.2023 11:16+1Имхо, "бот" от своего аккаунта это уже клиент все же, а везде описывают боты использующие telegram bot api. А клиенты все же немного сложнее
venanen
02.08.2023 11:16Потому что Telegram bot api простое, как две копейки - сделать любого бота можно за 15 минут на любом языке. Telegram client api - это бинарный протокол, тихий ужас, чтобы в нем просто разобраться - надо продать душу дьяволу. Поэтому ботов много, а клиентских приложений - мало.
xtrime
02.08.2023 11:16А что можно написать в такой статье?
Ставим madelineProto
Авторизуем свой аккаунт через qr или пароль
Создаем простой EventHandler для входящих сообщений
Пересылаем сообщения в специальный чат
Готово
SUNsung
02.08.2023 11:16+1Телеграм боты очень гибкий и многофункциональный инструмент - как жаль что им мало кто умеет пользоваться.
И вдвойне обиднее за простую и понятную АПИ-интреграцию, с документацией которая описывает все, но в 90% примеров и обзоров на новые фичи продолжают лепить с использованием библиотек.
GospodinKolhoznik
Сгенерировать сложный пароль с помощью телеграмм бота. Казалось бы, что может пойти не так?
kefiiir
надеюсь при генерации пароля надо указывать для какого сервиса и логина его генерируем. И еще ФИО майора, которому переслать копию
Groosha
Привет! Поскольку я приложил руку к написанию той заметки про генерацию паролей, то хочу написать несколько слов в своё и не только оправдание:
Во-первых, конечно же, пользоваться сторонними ботами для таких чувствительных вещей, как пароли, не стоит. Ровно поэтому рассматривался вариант написания своей небольшой генерилки.
Во-вторых, и это скорее комментарий для @kefiiir, хорошо, давайте предположим, что мы запустили такого бота, к нам пришёл кто-то и сгенерировал пароль d8d8asu480fd. Как мы это можем использовать? Мы не знаем, кто это. Не знаем, для чего это. Мы не знаем даже, что именно этот пароль был использован. Страшилка про товарища майора здесь не к месту, имхо. Даже такая реализация лучше, чем какой-нибудь дырявый 1password, из которого были утечки несколько раз, да ещё и с логинами и прочей метаинформацией.
В-третьих, я давным-давно написал первую версию рассматриваемого бота, и с тех пор он мне пригождался кучу раз. Независимо от конкретного устройства, быстро сгенерировать нормальный пароль себе в Saved Messages, а чуть позже перенести его в KeePass -- вполне реальная история, происходившая со мной множество раз. А для всяких не очень важных сервисов, я пароли прям в Saved Messages и храню. И готов утверждать, что для ограниченного набора случаев это вполне безопасное решение.
kefiiir
при 100% доверии телеграму -ок. Я для генерации паролей предпочитаю использовать оффлайн решения без использования лишних сторонних сервисов, например apg. Хранить пароли в Saved Messages - ну такое, вам за это флаг и барабан выдать? А про товарища майора и "непонятно где будет использовать"... при желании сопоставить конкретного человека с емаилом, с айпишником и с сервисом на который тот залогинился в это время - вполне себе решаемая задача. Но речь вообще не об этом, зачем создавать сервис безопасности который безопасность только понижает?
Groosha
С удовольствием бы использовал постоянно то же самое, если бы имел бы только одно устройство с одной ОС для выхода в Интернет.
Всё ещё не вижу причин, почему понижает, кроме как то, что некий текст начинает храниться не оффлайн, а онлайн. Но тут см. п.3. про перенос из одного места в другое и про хранение не особо важных.
P.S. Барабан, пожалуйста, оставьте себе. Не люблю ударные.