Прошел уже год, как я стал мейнтейнером библиотеки Telegramium, идиоматичной имплементации Telegram Bot API на языке Scala. В этом посте хочу рассказать, почему стоит использовать эту библиотеку для ваших Telegram-ботов.

class MyLongPollBot[F[_]: Sync: Timer: Parallel]()(implicit api: Api[F]) extends LongPollBot[F](api) {
  override def onMessage(msg: Message): F[Unit] =
    sendMessage(chatId = ChatIntId(msg.chat.id), text = "Hello, world!").exec.void
}

Современное ФП

Telegramium поддерживает современный стиль чистого функционального программирования на Scala. Публичное API библиотеки организовано по концепции Tagless Final с использованием тайпклассов Cats Effect, а значит, вы можете использовать любую IO-монаду – Cats IO, Monix или ZIO.

Полная поддержка Bot API

Ядро библиотеки генерируется из официальной документации Telegram Bot API. Telegramium поддерживает все методы и объекты Bot API, получение обновлений через long polling и вебхуки, а также отправку запросов при получении обновлений.

Актуальность

Благодаря кодогенерации Telegramium быстро поддерживает новые версии Bot API (иногда даже в день обновления) и всегда остается актуальной.

Простота и минимализм

Telegramium является простой и unopinionated библиотекой, содержит только базовые инструменты для взаимодействия с HTTP API Telegram и получения обновлений. Это не фреймворк, пользователям не предлагаются готовые абстракции для разработки ботов, что может являться преимуществом для тех, кто предпочитает реализовывать собственные инструменты и механизмы (как я).

Почему я выбрал Telegramium

Я использую Telegramium для разработки двух Telegram-ботов, то есть сам являюсь пользователем библиотеки. Перечисленные качества были для меня самыми важными при выборе библиотеки, и я много работал над тем, чтобы она отвечала всем этим требованиям – в числе прочего добавил полную поддержку вебхуков с возможностью отправки запросов при получении обновлений. Изначально же меня больше всего привлек минимализм, в первую очередь я искал максимально простой инструмент, который можно расширять, не сражаясь с готовыми абстракциями.

Инструкции, документацию и примеры можно найти в репозитории Telegramium на Github, пользователи и контрибуторы приветствуются!

Поиск