На чём писать чатботов?

Фрймворков для написания чатботов очень много. Из популярных – есть aiogram, telethon, python-telegram-bot. Есть и no code решения по созданию чатботов.

Здесь мы разберём какие библиотеки/решения существуют, их плюсы и минусы и границы применимости.

aiogram

Самый популярный вариант, который фигурирует в каждом первом видео на ютубе. Самое распространённое заблуждение насчёт него – что “асинхронность ускорит вашего чатбота”.

На самом деле не совсем. Она сделает это, но для этого недостаточно просто писать async и await в начале объявления/вызова функций. Для асинхронной работы бота все операции внутри него не должны быть блокирующими (или хотя бы какая-то ощутимая их часть). Это значит, что больше нельзя пользоваться бибилотекой requests, ведь она синхронная, а вам нужен её асинхронный аналог, например, httpx или asks. Нельзя пользоватья redis, нужен aioredis. И так далее.

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

python-telegram-bot

Библиотека поддерживает сразу 2 версии: синхронную и асинхронную. Синхронная – это версии 13.X, вот их документация. Асинхронная – в том же репозитории, просто для неё нужно установить версию библиотеки 20.X и старше, документация.

За счёт этого библиотека дружелюбнее для начинающих, пусть это и создаёт некоторую путаницу для новичков, но если вы разобрались один раз “где синхронная, а где нет” – дальше в целом всё понятно. Зато асинхронщину можно совсем не трогать, пока вы к ней не готовы.

Библиотека обладает куда более подробной документацей в сравнении с aiogram, есть статьи о архитектуре, персистентности или обходе спам-лимита Telegram. Функционал, кажется, тоже богаче.

Из минусов – библиотека не обладает таким же активным коммьюнити, как aiogram, в репозитории которого есть ссылки на сообщества по странам.

Мы пользуемся ей в своих пет-проектах и используем как основную в курсе Чат-боты на Python.

telethon

Эта библиотека нужна уже если вы хотите сделать не обычного бота в Telegram, а хотите подключить Python уже к аккаунту в Telegram и “роботизировать” его. Получится, что Python-скрипт как бы управляет вашим аккаунтом, в то время как библиотеки выше управляют ботами, которые в рамках Telegram являются отдельными сущностями, так же, как и каналы или группы.

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

Документация библиотеки тоже весьма подробная и иногда даже раскрывает “дополнительные” темы, вроде философии библиотеки или чёрной магией, не предусмотренной библиотекой.

No code

Программисты обычно не любят обсуждать этот вариант, некоторые даже начинают шипеть и кусаться. Но это тоже вполне себе валидный вариант написать чатбота в Telegram.

No code – это когда вы создаёте чатбота/сайт/etc без написания кода, просто накликивая их в веб-интерфейсах. Например, Tilda позволяет собрать сайт вообще без знаний программирования, по тому же принципу, как делаются слайды в PowerPoint.

Если бот делает какие-то очень типовые действия, вроде “если пользователь сказал X, ответь Y”, то питон может и не пригодиться, куда проще нарисовать небольшую схему прямо в веб-интерфейсе любого nocode решения. Более того, для этого не обязательно быть программистом, с таким чатботом может справиться и менеджер/маркетолог. Выглядит примерно так:

Минусов у такого подхода, конечно, тоже хватает. Иначе зачем бы разработчикам платили такие зарплаты? 😄

Первый минус – это ограниченность функциональности. В no code-решениях можно пользоваться только тем, что предлагает платформа. Если хочется чего-то своего – извините, придётся писать код.

Второй минус – с ростом проекта он очень быстро превращается в нечитаемый треш. Вот до чего разогнался небольшой чатбот-викторина, буквально на 2-3 окна экрана в одном из наших проектов (см. ниже). Очевидно, ни о каком “быстром росте функционала” тут не может быть и речи, в то время как в коде на Python этот же чатбот уместился бы в сотню строк чистого, читаемого кода.


Попробуйте бесплатные уроки по Python

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

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.