Когда я впервые начал писать Telegram-ботов на Node.js, я думал, что это будет весело.

Но довольно быстро я упёрся в знакомую стену: бойлерплейт, ручная настройка, слабый DX (developer experience). Ты знаешь, как это бывает.

Ты просто хочешь отправить сообщение или установить webhook — а вместо этого копируешь код с Stack Overflow, вручную пишешь fetch-запросы, собираешь URL-ы по кускам и разбираешься с расплывчатыми ошибками вроде "Bad Request" без малейшей подсказки, что именно пошло не так.

Да, библиотеки существуют. Но большинство из них — либо устаревшие, либо раздутые, либо просто неудобные, особенно если ты используешь TypeScript и хочешь строить что-то серьёзное.

И вот тогда я понял:

лучше я один раз сделаю чистый SDK, чем каждый раз буду воевать с лапшой из кода.

Так появился gramflow — современный, минималистичный и ориентированный на разработчиков SDK для Telegram Bot HTTP API.

🚀 Чем gramflow отличается?

  • Использует нативный fetch — никаких странных обёрток, никакой магии

  • Полная типизация — благодаря TypeScript, твой IDE работает на максимум

  • Чёткая структура — BotService, httpClient, кастомные ошибки

  • Создан с прицелом на читаемость и масштабируемость

  • Работает из коробки с NestJS, Express, Fastify

  • Легко тестировать, легко читать, легко расширять

Никаких “умных” классов. Никаких хакающих рантайм. Просто чистый современный код.

🛠 Что внутри?

  • 💡 Лёгкий и тестируемый httpClient

  • 🔒 Кастомные ошибки вроде ChatNotFoundError, UnauthorizedError и др.

  • 🎯 Единые DTO и типизированные контракты ответов

  • ✅ Покрытие юнит-тестами с nock и jest, чтобы не тестировать Telegram вручную

📦 Быстрая установка

npm i @oravone/gramflow

📚 Пример использования

import { BotService } from '@oravone/gramflow';

const bot = new BotService('123:ABC');

const info = await bot.getMe();
console.log(info.username); // имя твоего бота

await bot.setWebhook({ url: 'https://yourapp.com/webhook' });

🤝 Что дальше?

gramflow только начинает путь, но планы уже 🔥:

  • Поддержка входящих обновлений (long polling / webhook парсинг)

  • Расширение методов Telegram API: sendMessage, sendPhoto, editMessageText и другие

  • Middleware и interceptors для обработки логики

  • NestJS-модуль: GramflowModule

  • Автогенерация типизированных методов по схеме Telegram API (вроде OpenAPI)

❤️ Зачем я это делаю

Потому что боты — это круто. Но экосистема могла бы быть лучше.

Потому что мы заслуживаем адекватный DX и меньше бойлерплейта.

Потому что я хотел инструмент, с которым реально приятно работать.

Если ты когда-либо писал ботов на Node или TypeScript и думал: “снова всё с нуля?” — значит, gramflow для тебя.


🧠 Финальные мысли

gramflow ещё молодой, но развивается стремительно.

Я активно добавляю новые возможности, тестирую в бою, и планирую глубокую интеграцию с фреймворками и инструментами автоматизации.


Если тебе это интересно — загляни в репозиторий на GitHub, поставь ⭐, создай issue или просто напиши “привет” в дискуссиях.

Я с радостью выслушаю идеи, предложения или пожелания.

Давайте снова сделаем разработку ботов кайфовой.

Давайте создавать крутые штуки — вместе 👨‍💻

С ❤️ от меня и команды Oravone