- Кому подойдёт интенсив
- Что вы узнаете из материала
- Настройка
- Установка Python
- Установка pip
- Установка aiogram
- Hello, bot!
- Docker
- Деплой на AWS
- Заключение
- Подготовка проекта и развертывание окружения
- Подключаем библиотеки
- Третий этап
- Обучаем бота
- Задаем команды для бота
- Создаем формы с вопросами
- Создаем случайные сообщения
- Оформляем пользовательское меню
- Какие навыки нужны, чтобы написать своего бота
- Популярные платформы для телеграм-ботов
- Получить доступ к записи бесплатного интенсива
- Программа
- Как зарегистрировать нового бота
- Вы научитесь
- Как сделать собственного бота без навыков программирования
- Какие бывают телеграм-боты
- Создаем бота
- Проверяем работу бота
- Что в итоге
- Отзывы участников интенсива
Кому подойдёт интенсив
- Новичкам в программированииИспытаете «в бою» самый универсальный язык, сможете решить, интересно ли вам заниматься разработкой, и начнёте путь в профессию с практики.
- Начинающим Python-разработчикамПолучите ответы на давно волнующие вопросы и вместе с опытным наставником создадите готовый проект для портфолио.
Интенсив завершен, но вы можете посмотреть его в записи
Заявка не отправлена!
Похоже произошла ошибка. Попробуйте отправить снова или перезагрузите страницу.
За 3 вечера вы познакомитесь с технологиями машинного обучения и создадите чат-бота, который разговаривает по-человечески. А в конце интенсива всех участников ждут призы.
Не обязательно обладать навыками программирования, чтобы запустить своего бота в Telegram. При этом иметь под рукой собственного «робота» очень полезно. Бот поможет автоматизировать многие процессы и освободит вас от рутины. Он пригодится для организации опросов, регистрации на мероприятия, оформления заказов и раздачи каких-либо приятных бонусов. Также бот может выступить в виде путеводителя по вашему каналу и поможет найти читателю нужные статьи.
Плюс бота в том, что он перенастраивается в любой момент. Также его не нужно никуда устанавливать — он работает прямо в приложении Telegram для ПК и мобильных устройств. Остается лишь разобраться с его созданием и настройкой.
Увы, большая часть существующих инструкций по созданию ботов устарела, а конструкторы ботов упростились либо перестали работать. Ниже мы подробно разобрали актуальный, бесплатный и наиболее простой способ создания и настройки Телеграм-бота в 2023 году.
помогал во всем разобраться
«Телеграм» — самое быстрорастущее приложение 2022 года в России.
За последние шесть месяцев суточная аудитория мессенджера выросла на 66%. Теперь и новые пользователи, и пришедший вслед за ними бизнес знакомятся с одной из главных особенностей «Телеграма» — тысячами местных ботов.
Ботов делают все: команда мессенджера, компании, обычные люди. Они популярны и на рынке разработки: на платформе Kwork более тысячи фрилансеров предлагают создать бота. Цены разные: от 500 до 500 тысяч рублей в зависимости от сложности задачи. Далеко не все готовы тратить такие деньги или изучать программирование ради создания бота. Поэтому появилось множество платформ, освоение которых не требует особых навыков.
Я узнал, как бесплатно создать , и попробовал самостоятельно сделать это в разных ноукод-сервисах. Но для тех, кто разбирается в программировании, есть бонусный раздел: там я при помощи разработчика Ильи Гринзовского пошагово рассказываю о создании небольшого бота на Python.
Что вы узнаете из материала
Теперь нужно оформить описание бота и добавить аватарку (юзерпик) — это будут видеть пользователи, которые захотят пообщаться с ботом. Заполнить описание можно и в других конструкторах, но пока продолжим работать с BotFather.
- Введите команду /mybots или нажмите на нее выше в чате — она есть в сообщении, где перечисляются все существующие команды.
- В выпавшем меню выберите название вашего бота. Если у вас их несколько, то в чате появятся все имена — нажмите на нужное.
Появится описание, в котором пока ничего нет. Что здесь можно сделать:
- изменить имя бота,
- заполнить или поменять описание,
- ввести информацию в профиле,
- загрузить изображение,
- задать список команд.
Если вам нужно исправить имя, выберите Edit Name. А для создания описания бота кликните на Edit Description. Введите в диалоговом окне описание, которое увидят пользователи, когда зайдут в чат с вашим ботом. Этот текст будет в окне «Что может делать этот бот?». Лучше дать наиболее емкую информацию о функциях вашего робота.
Так, если вы планируете использовать чат для опросов, чтобы задать людям ряд вопросов и в благодарность прислать какой-то полезный материал, то так и напишите. В любой момент вы можете изменить это описание.
Теперь вернитесь в меню выше и нажмите на кнопку Edit About. Нужно ввести текст, который будет в описании профиля: например, можно добавить ссылку на ваш аккаунт для связи или основной канал. Также отправьте это сообщение в чат с BotFather.
Наконец, создаем аватар. Для этого нажмите в меню бота выше Edit Botpic и загрузите фото. Нужно отправить в чат файл как изображение, то есть установить галочку при отправке «Сжать изображение».
Готово, ваш чат получил основные атрибуты! Можете перейти по адресу бота и посмотреть, как это выглядит с аккаунта пользователя.
Напишем простой диалоговый Telegram-бот на Python, который в дальнейшем можно дополнить различными функциями, и задеплоим его.
Вы читаете улучшенную версию некогда выпущенной нами статьи.
Настройка
- свой токен;
- адрес Telegram API (https://api.telegram.org/bot);
- ссылку на документацию.
Обязательно сохраните токен, так как это ключ для взаимодействия с ботом.
Хранение токена должно быть локальным: ни в коем случае не выгружайте его в общий доступ, например в GitHub-репозиторий .
Далее начните беседу. Введите в поисковой строке имя бота и нажмите /start. Отправьте любое сообщение: оно станет первым обновлением, которое получит Телеграм бот.
Установка Python
Тем, кто только начал изучение этого языка, будет также полезна дорожная карта Python-разработчика.
Установка pip
Это менеджер пакетов. В версиях выше Python 2.7.9 и Python 3.4, а также на macOS/Linux он уже есть. Проверить это можно командой pip —version в терминале. Если же по каким-то причинам он отсутствует, установить его можно при помощи команды:
$ sudo apt-get install python-pip
Установка aiogram
pip install aiogram
Hello, bot!
Давайте напишем простенькую программу приветствия. Для начала следует импортировать библиотеки и создать экземпляры Телеграм бота и диспетчера:
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
TOKEN = «ваш токен от бота здесь»
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
Теперь напишем обработчик текстовых сообщений, который будет обрабатывать входящие команды /start и /help:
Добавим ещё один обработчик для получения текстовых сообщений. Если бот получит «Привет», он также поздоровается. Все остальные сообщения будут определены, как нераспознанные:
Запускаем Telegram бота, написанного на Python, следующим образом:
if __name__ == ‘__main__’:
executor.start_polling(dp)
Так мы задаём боту непрерывное отслеживание новых сообщений. Если бот упадёт, а сообщения продолжат поступать, они будут накапливаться в течение 24 часов на серверах Telegram, и в случае восстановления бота прилетят ему все сразу.
Ну вот и всё, простенький бот в Телеграмме на языке Python готов.
Docker
Сейчас мало кто не слышал про Docker, но если вдруг не слышали — вот хорошая статья. Для нашего проекта потребуется самый простой Dockerfile:
Каталог проекта должны при этом содержать следующие файлы:
- bot.py;
- Dockerfile.
Для локальных тестов достаточно установить Docker (linux, mac, windows), после чего в папке проекта собрать и запустить контейнер с помощью команд:
docker build -t my_app
docker run -d my_app
my_app — это просто название нашего контейнера, вместо которого можно использовать другое имя.
-d — специальный флаг, который запускает контейнер в фоне и позволяет дальше работать в терминале. Это называется detached mode.
Деплой на AWS
Прежде всего нам понадобится аккаунт на Docker Hub. Это аналог GitHub, только не с исходниками кода, а с уже созданными контейнерами. Работа с Docker Hub выглядит достаточно просто:
- Локально или с помощью пайплайнов собрали контейнер.
- Загрузили его на докер хаб.
- В любом удобном месте скачали его. Это может быть локальная машина, VPS сервер или облачный провайдер по типу AWS.
- Запустили.
Загружаем его на докерхаб:
Для проверки успешности загрузки можете запустить контейнер из Docker Hub с помощью команды:
Проверяем работу нашего Telegram bot:
Заключение
Поздравляем! Теперь вы знаете, как писать роботов для Telegram на Python.
Бота можно дополнять другими функциями, например, добавить отправку файлов, опрос или клавиатуру.
Кстати, в телеграмме есть аж целых два типа клавиатур:
- Классическая RelpyKeyboardMarkup, у которой кнопки располагаются под полем ввода сообщения:
- Более современная InlineKeyboardMarkup, которая привязывается к конкретному сообщению:
Но и это полностью рабочий Телеграм-бот на Python: дополните словарём, и получите полноценную беседу. Также можете опробовать функциональность нашего Telegram-бота.
В «настоящих проектах» не обойтись без базы данных. Тут на помощь приходит docker-compose, который позволяет объединить несколько контейнеров в один сервис. Таким образом, например, можно создать приложение и положить его в контейнер, а базу данных, как отдельный сервис, поместить в другой контейнер, и с помощью docker-compose наладить между ними связь.
Также для более серьёзной разработки лучше использовать выделенный виртуальный сервер (VPS): он даёт гораздо больше гибкости и свободы, чем тот же AWS. А самое главное, он более приближён к «боевой» разработке. Схема работы тут будет даже проще, чем с AWS: вам просто нужно установить Docker, спуллить образ с Docker Hub и запустить его.
В этой иструкции разберем процесс создания простого бота-ремайндера, единственная задача которого — напоминать пользователю о важных делах. Это базовая конструкция, которую можно усложнять и менять под свои потребности.
Инструкция подойдет для новичков, которые знают Python на базовом уровне, пробовали писать код и установили на компьютер редактор кода.
Подготовка проекта и развертывание окружения
Найдем в поиске Telegram BotFather — официального бота мессенджера, который создает другие боты и управляет ими. В интерфейсе выбираем /start, затем — /newbot, и следом задаем имя и адрес. В этой иструкции это будут Elbrus Reminder и elbrus_reminder_bot соответственно.
После этого BotFather пришлет сообщение с токеном и ссылкой на бот:
Токен нужно хранить в безопасном месте — он дает контроль над ботом. и, как следствие, позволяет получить доступ к данным пользователей.
На время закроем Telegram и создадим на компьютере папку с именем проекта: например, reminder_bot. Откроем папку в среде разработки и создадим рабочий файл с понятным названием — bot.py.
Откроем терминал редактора кода и создадим для проекта новое окружение. В среде разработки с помощью команды python -m venv .venv создадим папку с окружением .venv.
Если окружение не активировалось автоматически, можно сделать это вручную, прописав путь к файлу активации в формате source .venv/bin/activate, где source — команда языка программирования Bash. Другой вариант — перезапустить среду разработки. Он работает для Visual Studio Code, но нужно предварительно принять предложение редактора привязать среду к папке проекта сразу после создания окружения.
Практика создания нового окружения под каждый проект позволяет повыстить безопасности и стабильность проекта — в окружении вы можете использовать только те библиотеки и их версии, которые требуются в проекте. Если в проекте появятся дополнительные функции, все изменения будут храниться в этом окружении. При этом оно будет изолировано от других окружений и проектов — это повысит безопасность проекта.
Подключаем библиотеки
Проект создан и окружение готово: пора переходить к написанию кода. По правилам хорошего тона в первую очередь через import добавляем несколько предустановленных библиотек Python. При создании бота нам пригодятся logging и time, которые отвечают за определение времени и логирование сообщений.
import time
import logging
Затем добавим асинхронную библиотеку aiogram, на основе которой будет работать бот. Она, например, определяет, какое сообщение пришло, как его нужно обработать и какие порты нужны. Сначала устанавливаем ее через терминал командой pip install aiogram, а в редакторе кода пишем следующее:
from aiogram import Bot, Dispatcher, executor, types
Когда библиотеки импортированы, создадим переменные с токеном бота и сообщением, которое он будет отправлять пользователю. Вы можете заменить это сообщение на любое другое, которое вам необходимо. Это статические переменные, поэтому их имена написаны капслоком:
Токены, ключи и прочие данные для настройки проекта лучше загружать более безопасным способом (например, создавать переменные окружения или файлы конфигурации). Но в данном случае сделаем все в одном файле для наглядности, а примеры более безопасной работы с такими переменными разберем в следующих постах.
bot = Bot(token=TOKEN)
dp = Dispatcher(bot=bot)
Следующим шагом добавим конструкцию под названием декоратор (massage_handler) — она помогает получить из диспетчера нужный функционал. В качестве аргумента прописываем команды, которые обрабатывает декоратор — в данном случае это команда /start, которая запускает бот.
Под декоратором прописываем функцию, которая будет обрабатывать команду /start и определяет логику, в соответствии с которой будет работать бот. Поскольку мы работаем с асинхронной библиотекой, функция тоже должна быть асинхронной. Для этого перед указанием def добавим ключевое слово async:
async def start_handler(message: types.Message):
Функция приветствует пользователя и обрабатывает сообщение, которое он отправляет в ответ. Из сообщения можно получить информацию о пользователе, который его прислал, время отправки и его ID.
Затем получаем из сообщения короткое и полное имя пользователя:
Для того, чтобы в логах отображалась информация о пользователе, передаем в виде текста ID и полное имя, а также используем возможности библиотеки time, чтобы определить время, когда писал пользователь:
Здесь отойдем в сторону и проверим корректность работы модуля time. Сделать это можно в терминале: для этого напишем import time, а затем — time.asctime
Вернемся к коду. Поскольку функция, которую мы используем, асинхронна, вместо обычного для функций return используем await:
for i in range(7):
await asyncio.sleep(60*60*24)
Затем настроим отправку сообщения с указанием имени пользователя в этом же цикле:
Третий этап
Переходим к финальной части: в конце скрипта напишем несколько строк. Они могут показаться странными для новичка, но это общепринятая практика, к которой многие программисты прибегают при разработке. В этой строке мы проверяем, равна ли переменная __name__ строке «__main__». Это условие всегда будет True, если мы запускаем этот файл как python-скрипт через терминал:
Теперь делаем нашего бота доступным в сети:
Сохраняем файл. Запускаем бота в терминале, открытом в папке проекта, с помощью команды python bot.py.
Вернемся в BotFather и перейдем по ссылке, которую получили вместе с токеном. Нажимаем «Начать» — готово, бот, написанный меньше, чем в 30 строк, работает.
Так выглядит его код целиком:
В следующий раз подробно расскажем, как написать подобный бот на языке программирования JavaScript. Подписывайтесь, чтобы не пропустить инструкцию.
Обучаем бота
Далее необходимо создать самое главное — алгоритм работы бота. То есть настроить его общение с пользователями и запрограммировать, чем он вообще будет заниматься. В BotFather процесс сложнее, потому есть смысл перейти в другой конструктор ботов.
Рассмотрим для дальнейшей настройки русскоговорящий бот Manybot — он более понятный, к тому же бесплатный, в отличие от большинства аналогов.
Перейдите в Manybot, нажмите /start и потом — «Добавить нового бота» в меню или команду /addbot.
Скопируйте из чата с BotFather API-токен своего бота и нажмите кнопку «Я скопировал токен». Так как описание у вас уже создано, предлагаем нажать команду /skip, чтобы пропустить этот момент.
Если вы не создали описание в BotFather, то его можно заполнить буквально в пару кликов.
Задаем команды для бота
Теперь напрямую зайдите в бот (с вашего аккаунта) и запустите его — вы получите сообщение с командами, а внизу будут кнопки меню.
Настроим пользовательские команды — заранее созданные ответы вашего бота на команды пользователя. Например, в ответ на них бот сможет присылать читателю прайс-лист, подборку фото или статей на определенную тему, выдать список контактов компании и др.
Нажмите в меню на кнопку «Пользовательские команды», затем — «Создать команду». Введите название первой команды, используя символ «/» и латинские буквы и цифры, например, /about, /price и пр.
Теперь нужно запрограммировать, как бот будет отвечать пользователю: сообщением (одним или несколькими), отправит файл, музыку, изображение, ссылку и т.д. Следуя инструкции, отправьте в чат с ботом то, что пользователь получит в ответ на команду, а затем нажмите в меню «Сохранить».
Таким образом создается необходимое количество команд по вашим потребностям. Вы можете в любой момент вернуться в этот раздел и добавить либо изменить придуманные функции.
Создаем формы с вопросами
Вопросы помогают опросить аудиторию, выявить потребности, собрать контент и многое другое. Фактически вы можете встроить в бот полноценный опросник.
Формы опросов создаются по тому же алгоритму, что и обычные команды. После запроса /commands создайте новую функцию и выберите в меню внизу «Добавить вопрос». Он может быть:
- обычным — тогда пользователи могут отвечать в произвольной форме, а также присылать вам файлы;
- с вариантами ответа — нужно будет предоставить боту варианты, между которыми будет выбирать пользователь;
- развернутым — подразумевает отправку в ответ нескольких сообщений либо файлов.
Если у вас будет несколько вопросов в одной форме (команде), просто отправьте их в чат с ботом по очереди.
Если вопрос предусматривает варианты ответов, то их тоже нужно отправить в чат, следуя инструкции от бота.
При помощи формы с вопросами вы можете собирать отзывы от пользователей и даже, например, принимать заказы: достаточно задать команду с названием «Сделать заказ», а при помощи последовательных вопросов уточнить, что хотят заказать, куда нужно доставить и номер телефона для связи.
Когда на ваши вопросы ответят, в бот придет уведомление, что форма заполнена, и тут же появится команда, чтобы вы могли просмотреть ответ.
Создаем случайные сообщения
Также конструктор ботов позволяет создать команду, в ответ на которую пользователь будет получать одно случайное сообщение из загруженных ранее. Так, можно отправить рандомную шутку, статью, тренировку, рецепт, музыкальный трек, совет дня и даже предсказание.
Для настройки случайных сообщений перейдите в «Пользовательские команды» — «Создать команду», введите ее название и выберите опцию «Включить режим случайного сообщения».
Далее, следуя инструкции бота, пришлите ваши варианты ответов и нажмите в меню «Сохранить».
Если позднее захотите добавить что-то еще, то нужно будет снова перейти в «Пользовательские команды», ввести существующую команду и выбрать «Добавить к команде сообщения».
В инструкции к конструктору вы найдете также функции для настройки ручной рассылки сообщений подписчикам и автопостинга с любых ресурсов. Однако на момент написания статьи они не работали.
Оформляем пользовательское меню
Теперь нужно сделать команды видимыми и заодно оформить пользовательский интерфейс. В меню «Пользовательские команды» (/commands) нажмите «Настроить гл.меню» — «Добавить пункт меню».
Выберите в открывшемся меню одну из команд, которую вы создали ранее (они есть в списке) и отправьте в чат ее название на русском языке: например, «Сайт», «Контакты», «Получить прайс-лист» и др. То же самое проделайте с остальными командами. Это и будут наименования кнопок в пользовательском интерфейсе.
Чтобы поменять кнопки местами, вернитесь в «Пользовательские команды» – «Настроить гл.меню», нажмите на любой пункт и переместите его нужным образом.
Тут же можно сделать вложенные подменю. Например, у вас будет клавиша «Наши контакты», с которой пользователь попадет в меню с кнопками «Позвонить», «Написать в Telegram» и др. По такому же принципу можно сделать кнопку «Полезные статьи», а в подменю распределить их по темам.
Чтобы создать подменю, в разделе «Пользовательские команды» — «Настройка гл.меню» нажмите на пункт, который хотите вложить, а затем — на другой пункт и укажите на место внутри него.
Какие навыки нужны, чтобы написать своего бота
Есть два способа создать бота в «Телеграме»: с помощью кода и ноукод-платформ. В первом случае вы пишете бота самостоятельно, во втором — пользуетесь конструктором и собираете бота из уже готовых элементов.
Выбор зависит от того, насколько продвинутый бот вам нужен, как много у вас времени и ресурсов, вы навыками программирования. Ноукод-платформы серьезно облегчают процесс, но ограничивают в возможностях. Такой способ не подойдет сложному приложению, особенно если оно должно решать нестандартные задачи.
Создать бота с помощью кода. Бота можно написать на любом языке программирования — от PHP и Node.js до Java и Go. Самым популярным считается Python, потому что в его экосистеме много открытых библиотек и готовых решений. К он относительно легок в изучении. Особенно подойдет новичкам: достаточно понять логику синтаксиса и отступов.
Далее нужно установить пакет — это обертка для API от «Телеграма». В документации этого фреймворка описана вся необходимая информация для разработки бота. Также понадобится любой текстовый редактор для написания кода.
Создать бота с помощью ноукод-платформы. Для создания ботов в конструкторе достаточно базовых знаний . Если вы владеете Figma, Miro, Asana или перетаскивали карточки в Trello, то легко сможете составить бота из наглядной цепочки блоков в конструкторе.
Есть десятки платформ, в которых можно разработать ботов без знания кода. Отличаются они функциями, набором сценариев и стоимостью. Некоторые доступны прямо в «Телеграме» — к таким относится Manybot. Фактически это бот для создания ботов, но он сильно ограничен в возможностях. берут разнообразием: если вы не нашли подходящей функции на одном сайте, то она вполне может оказаться на другом.
Обычно в бесплатной версии ноукод-сервисы позволяют создать одного бота. Но будет ограничение либо по количеству доступных команд, либо по количеству пользователей. Так что полностью бесплатно создать классного бота не выйдет.
Популярные платформы для телеграм-ботов
Конструктор внутри «Телеграма». Позволяет создать многоуровневое меню, форму обратной связи и «подтягивать» новости по RSS
Что в бесплатной версии
Платформа для создания сложных ботов, магазинов, инструментов модерации. В сервисе есть техподдержка, инструкции и личный кабинет
Что в платной версии
Чем дороже тариф, тем больше доступно ботов, шире лимит подписчиков и команд
Можно создать одного бота и настроить до 15 команд. Также стоит ограничение до 150 подписчиков
Сервис ориентирован на ретейл: можно сделать каталог, корзину, форму оплаты, чат поддержки. Также на платформе есть кабинет аналитики продаж
Увеличивается лимит на товары и появляются новые функции, например поиск по каталогу и доступ к API
Можно создать одного бота и опубликовать в нем не более 20 товаров
На платформе есть готовые шаблоны для разного бизнеса: для доставки еды или записи в салон красоты. А также интеграции с amoCRM, «Google-таблицами», «Битрикс24» и не только
Увеличивается лимит подписчиков
Можно создать бота и пользоваться им, пока у вас менее тысячи подписчиков
В конструкторе можно создать магазин, бота для сбора обратной связи, рассылок и онлайн-записи. Есть интеграции с платежными системами Qiwi, «ЮKassa», «ЮMoney» и другими
Получить доступ к
записи бесплатного интенсива
Ваша заявка успешно отправлена
Программа
- Знакомимся с Python и архитектурой умного чат-ботаЧто такое NLU и как компьютер понимает естественную речь.Архитектура «умных» чат-ботов.Начало работы с Python, знакомство с Anaconda.Типы и структуры данных Python. Циклы и функции.
- Что такое NLU и как компьютер понимает естественную речь.
- Архитектура «умных» чат-ботов.
- Начало работы с Python, знакомство с Anaconda.
- Типы и структуры данных Python. Циклы и функции.
- Учим бота на Python понимать текстПодготовка дата-сета.Алгоритмы сравнения текстов. Векторизация.Обучение машинной модели.Измерение качества классификатора и интеграция в чат-бота.
- Подготовка дата-сета.
- Алгоритмы сравнения текстов. Векторизация.
- Обучение машинной модели.
- Измерение качества классификатора и интеграция в чат-бота.
- Запуск и подключение Python-приложения.
- Выбор лучших работ.
- Награждение победителей.
Как зарегистрировать нового бота
Определившись с платформой, необходимо зарегистрировать бота. Для этого, как ни странно, нужен другой бот. BotFather — официальный сервис для настройки и управления созданными телеграм-ботами. Он не занимается конкретными функциями и командами — только косметическими изменениями вроде названия, описания и аватарки.
Но главное — он выдает уникальный токен, который необходим для авторизации бота и работы с Bot API. Любой, кто получит токен, сможет управлять ботом. Так что храните его в надежном месте и никому не передавайте — в противном случае лишитесь доступа к собственному боту.
Как получить токен в BotFather:
- Отправьте в чат с BotFather команду /newbot.
- Введите название бота — в этой категории особых ограничений нет.
- Введите юзернейм бота — его техническое имя, которое будет отображаться в адресной строке. К нему уже больше требований: юзернейм должен быть уникальным, написан на латинице и обязательно заканчиваться на bot. Так «Телеграм» защищается от злоумышленников, которые могут выдавать ботов за реальных людей.
- Готово. BotFather пришлет токен бота — его можно использовать для настройки в сторонних сервисах.
О каких еще функциях стоит знать. Уже после получения токена можно воспользоваться BotFather, чтобы настроить внешний вид бота. Вот несколько полезных команд:
- /setdescription — меняет описание бота, пользователи увидят его в начале диалога в графе «Что умеет этот бот?». Есть ограничение в 512 символов.
- /setcommands — меняет список команд бота. Тут нельзя установить конкретные функции и за что они отвечают — лишь количество команд и как они называются.
- /setjoingroups — устанавливает, добавлять бота в групповые чаты. Настройка зависит от ваших целей.
- /setprivacy — устанавливает уровень доступа бота к перепискам. Если приватность включена, бот видит только сообщения, которые обращены к нему. Если отключена — все сообщения. «Телеграм» рекомендует не отключать параметры приватности.
- /deletebot — удаляет бота и освобождает юзернейм.
Небольшая переписка с BotFather — и теперь у меня есть еще и
Вы научитесь
- Понимать архитектуру чат-ботов и виртуальных ассистентов
- Писать простые программы на Python
- Работать с наборами данных
- Тренировать модели машинного обучения
- Оценивать качество моделей
Как сделать собственного бота без навыков программирования
В качестве примера я взял две популярные ноукод-платформы — Unisender и PuzzleBot. В первом случае бесплатно создадим бота, который будет собирать оценки и отзывы посетителей ресторана. Во втором случае сделаем .
Как создать бота в Unisender. Зарегистрируйтесь и перейдите в меню в личном кабинете. Бота можно создать либо с нуля, либо через шаблоны — второй вариант быстрее и проще. Во вкладке «Шаблоны» сервис предложит создать ботов для записи клиентов, рекламы вебинара или риелторских услуг.
Я выбрал шаблон «Отзывы клиентов о салоне красоты»
После выбора появится интерфейс с наборами готовых блоков — в них можно менять текст и структуру. Редактировать можно всю цепочку: удалять блоки, добавлять новые, встраивать меню с кнопками, теги, фильтры и формы для сбора данных.
Так выглядит итоговая
После нужно нажать «Запустить» и ввести токен от BotFather. Все — бот готов к работе, можно открыть его в «Телеграме»
Как создать бота в PuzzleBot. Создайте нового бота в BotFather, скопируйте токен и добавьте в PuzzleBot — сервис запросит его сразу после регистрации.
Напоминаю, что в этом сервисе я делаю . Для этого в конструкторе нужно найти вкладку «Магазин» и выбрать валюты для оплаты. В меню можно настроить способы доставки, связку с платежными системами и акции.
Далее откройте список товаров, нажмите кнопку «Добавить» и оформите карточки товаров: добавьте фото, описание, цену, количество — и разбейте их по категориям.
Я оформил две карточки: для футболок и шорт
Далее перейдите во вкладку «Конструктор». Интерфейс похож на Unisender, но тут больше функций: можно добавить кнопки, карточки товаров, блоки с текстом, картинкой, геолокацией, видео и не только. В PuzzleBot есть видеообзоры каждого раздела платформы — помогут сориентироваться.
Для магазина я прописал следующий сценарий.
Приветствие и меню. В блоке «Текст» кратко описал магазин. Ниже платформа предложила две клавиатуры: обычную, кнопки которой появятся в «Телеграме» вместо стандартной текстовой клавиатуры, и инлайн — кнопки отобразятся внутри чата, под сообщением.
Я выбрал обычную клавиатуру и создал три кнопки: «Футболки», «Шорты» и «Посмотреть фото».
Тут снова приходится работать с
Кнопки. Перед тем как добавить кнопки «Футболки» и «Шорты», я создал для них отдельные команды: нажал «+» в левом верхнем углу, дал название командам и в настройках в пункте «Блоки для бота» выбрал соответствующий товар.
Затем вернулся к предыдущей команде, сделал кнопки «Футболки» и «Шорты», выбрал действие «Переход к команде или условию» и связал их с командами.
Теперь обе кнопки ведут на карточки товаров — их пользователь может добавить в корзину и купить прямо внутри бота. Все функции, необходимые для корректной работы корзины, оформления доставки и оплаты, уже «вшиты» в карточки, их не нужно прописывать отдельно.
Последняя кнопка «Посмотреть фото», по задумке, ведет на внешний сайт — например, на страницу во «Вконтакте»
Чтобы сохранить все правки, нужно нажать «Применить изменения» в верхнем левом углу. После этого бот будет готов к работе. Вот что у меня получилось
Предупреждаем: дальше мы пошагово рассказываем о процессе создания бота на Python. Этот раздел мало чем поможет людям без навыков программирования. Если это про вас, то можете сразу переходить к итогам.
С помощью кода мы решили написать телеграм-бота, который показывает актуальный курс рубля. В этом примере используем объектно-ориентированный подход программирования.
Пошагово рассказываем, как создавали бота.
Объявляем класс приложения AppBot.
Определяем метод _init_. — он инициализирует объекты, которые будут использоваться внутри класса. В качестве аргумента принимает токен от BotFather.
Внутри функции инициализируем updater — механизм, который принимает входящие сообщения от пользователей через «Телеграм». Сохраняем его как отдельный атрибут класса AppBot.
Следом создаем экземпляр класса RubleExchangeRate, который отвечает за курс обмена рубля. Этот курс подтягивается из публичного API, который парсит официальные данные Центробанка.
Далее инициализируем dispatcher — маршрутизатор для входящих сообщений бота.
Определим метод serve. Он нужен, чтобы запустить «поллинг» — процесс, когда алгоритм забирает у «Телеграма» новые сообщения и обрабатывает.
Вводим методы-обработчики, которые описывают реакцию бота на входящие сообщения. Вернемся на шаг назад. При определении метода _init_ мы указали маршрутизатору dispatcher, что start_handler реагирует на команду запуска бота /start.
В обработчике start_handler формируется список кнопок с названиями курсов валют и текстовое приветствие. То есть после запуска бота пользователь получит сообщение «Привет! Это бот курса рубля» и набор кнопок на клавиатуре.
Когда пользователь нажимает одну из кнопок, он отправляет текстовое сообщение боту. Чтобы на текст реагировал обработчик response_handler, нужно при добавлении в маршрутизатор disptacher «обернуть» его в MessageHandler и использовать фильтр Filters.text.
Реализуем response_handler: метод-обработчик принимает аргумент update — объект, который содержит информацию о входящем сообщении пользователя, и context — объект, хранящий вспомогательный контекст.
В цикле перебираются варианты того, что мог прислать пользователь и что код может обработать.
Отдельно описываем RESPONSE_TO_CURRENCY_CODE_MAP. Это структура (словарь), в которой содержатся условия: если пользователь прислал текст RUB/USD, мы отправим ему данные о долларах, если текст RUB/EUR — о евро.
В цикле перебираются ключи словаря RESPONSE_TO_CURRENCY_CODE_MAP, и если совпадает с тем, что прислал пользователь, то в ответ он получит соответствующий курса рубля. Для этого вызывается функция RubleExchangeRate.get, которая ходит во внешний API.
Полученные данные присылаем в ответе:
Если в сообщении пользователя нет ключа, который можно обработать — например, он не стал нажимать на предложенные ботом кнопки, а ввел случайный текст, — говорим ему об этом.
Реализуем класс, который ходит во внешний API. У него есть сессия (Session), хранящая общие параметры для запросов и позволяющая выполнять запросы чуть быстрее с помощью механизма HTTP .
Главное в этом блоке — метод .get.
.get(‘https://www.cbr-xml-daily.ru/daily_json.js’).json() означает, что выполняется HTTP GET запрос по указанному адресу и затем ответ на этот запрос будет интерпретироваться как JSON — текстовый формат нотации для сериализации объектов.
API из текущего примера можно открыть в браузере и увидеть, как структурированы данные. Тут указана валюта и все коды, которые мы использовали. До значения каждой валюты можно добраться соответствующим запросом, если API не поменяет свой формат. Если поменяет, то код сломается и придется править.
Иначе может сломаться бот или API множества запросов или вовсе могут забанить в сервисе, предоставляющем API, за нарушение его правил.
Финальный код можно запустить и тестировать уже в «Телеграме». Бот будет работать, пока запущен алгоритм и работает компьютер. Но такой формат подойдет только для теста — для полного развертывания понадобится облачный сервер. Есть множество решений на российском рынке: Yandex Compute Cloud, Cloud Servers от VK, 1cloud и другие.
Также мы полностью загрузили финальный код бота на «Гитхаб» для ознакомления.
Какие бывают телеграм-боты
Телеграм-боты — это внутри мессенджера, которые управляются текстовыми командами в чате по принципу «вопрос — ответ». Подобная технология была еще в «Аське» конца нулевых: боты присылали анекдоты, гороскопы, статьи из «Википедии» и переводили тексты.
С 2015 года любой пользователь может сделать собственного бота в «Телеграме». Со временем они становились все сложнее и функциональнее: с помощью ботов можно управлять сообществами, бронировать места в кафе, переводить тексты и войсы, скачивать файлы, обрабатывать платежи. Некоторые даже используют нейросети: например, от «Сбера» генерирует картинку по описанию, которое можно отправить прямо в чат.
В апреле 2022 года команда «Телеграма» представила второе поколение ботов: разработчики получили средства для полноценных интерфейсов на JavaScript внутри мессенджера. Такие боты уходят от стандартной модели «вопрос — ответ в чате» и заменяют целые сайты. Вот как это выглядит в тестовом приложении для заказа еды.
Пока это только демоверсия, но она уже показывает возможности нового поколения ботов
Ботов можно разделить на несколько категорий.
Классические чат-боты. Программы, которые ведут диалог с пользователем. Виртуальный собеседник обычно реагирует на заранее прописанные фразы, темы и команды. Так можно, к примеру, оптимизировать штат людей-операторов. Другие пытаются имитировать человеческую беседу, но пользы от них не так много.
Помощники в администрировании. Пригодятся владельцам каналов и групповых чатов. Умеют собирать статистику, добавлять к постам реакции, , файлы, создавать отложенные публикации, как ControllerBot. Или отслеживать активность в чате, выдавать предупреждения и настраивать антиспам-фильтры — это умеет Combot.
Магазины. Компании переносят свои каталоги в мессенджер — для тех, кому проще выбрать товар и оплатить его прямо в «Телеграме». Например, через Baggins можно купить чашку кофе, а через G_Shop — женскую одежду. Главный минус таких магазинов — запутанный интерфейс: сложно просмотреть все товары и собрать корзину.
Поисковики. В них можно бесплатно найти книги, музыку, фильмы и прочие файлы. Зачастую эти боты пиратские — и «Телеграм» их периодически блокирует.
Развлечения. Все, что поможет скрасить досуг: мемы, частушки, игры и не только.
Создаем бота
В поиске Телеграм найдите BotFather – это конструктор чат-ботов. Общение в нем идет на английском языке.
Нажмите «Запустить». Для создания нового бота потребуется ввести команду /newbot или выбрать ее в меню.
Придумайте боту имя, которое будут видеть пользователи: оно может быть на русском языке.
Готово, вы создали бота! В чат придет токен — уникальная последовательность символов, по сути являющаяся «паспортом» вашего бота. Его стоит где-то сохранить, хотя бы в папке «Избранное», чтобы он всегда был под рукой. Этот токен понадобится для дальнейшей настройки команд и функций.
Проверяем работу бота
Рекомендуем проверить с другого пользовательского аккаунта, как выглядит оформление бота и корректно ли он работает.
Перейдите к вашему чат-боту, если у вас есть другой аккаунт, или попросите друзей запустить его и понажимать на кнопки.
Что в итоге
Не очень сложного бота может создать каждый. Есть инструменты, которые не требуют навыков программирования, достаточно базовых знаний веб-сервисов. Сборка бота в онлайн-конструкторе обычно интуитивно понятна: подбираете нужную платформу на основе доступных функций, складываете из блоков цепочку сообщений и команд, запускаете.
Бота не нужно загружать на сервер, он будет работать автономно на стороне платформы. Чтобы программа заработала, не забудьте зарегистрировать бота в «Телеграме» — для этого есть официальный сервис.
В сервисах-конструкторах обычно разрешают создать одного бота бесплатно. Но не надейтесь, что можно сделать популярного бота без вложений: действуют ограничения по количеству команд и пользователям. Чтобы расширить возможности бота, придется подключить платный тариф — в среднем от 500 рублей в месяц.
Важно понимать: бот всегда будет ограничен возможностями самого конструктора. Чтобы не зависеть от сторонних платформ, потребуется создать бота с нуля с помощью кода. Но в этом случае придется либо самому разобраться в программировании, либо заплатить разработчику.
На рынке цены разные — от 500 рублей до бесконечности, в зависимости от сложности задачи. Также необходимо будет вложиться в аренду сервера, загрузить на него бота и поддерживать работоспособность.
Отзывы участников интенсива
- Роман Черёмухин
Спасибо за великолепный интенсив, который провёл Skillbox по использованию машинного обучения для создания чат-ботов. Три дня пролетели как полтора часа! Доступное изложение материала, увлекательнейшая форма подачи, содержательный контент и абсолютно применимый результат! Благодаря интенсиву я разобрался в ключевых особенностях создания чат-ботов с искусственным интеллектом, а улучшение модели теперь уже будет неразрывно связано с практикой. С нетерпением жду новых вызовов и решений, которые подарит нам Skillbox! Что будет завтра — компьютерное зрение, NLP. С радостью поучаствую. - Дмитрий Голеусов
Хотелось бы поблагодарить Skillbox за возможность поучаствовать в таком проекте, я новичок в программировании и было очень интересно узнать, какие вещи можно делать с помощью программирования. Спикером интенсива был Никита Левашов, на мой взгляд, очень крутой специалист, с ним я уже сталкивался на других интенсивах, по мере возможности он всегда отвечает на все, даже на самые глупые вопросы! На интенсиве мне больше всего понравилось то, что мы работали над проектом всей группой, добавляли свои части кода, общались в чате и помогали друг другу, по итогу все вместе тестировали готовое приложение, это было здорово.По-моему, Skillbox — крутой университет, у них много курсов, отличные спикеры и преподаватели, которые проверяют ДЗ, всегда помогут, если что-то непонятно.