Почему я создал современный SDK на TypeScript для Telegram-ботов (и почему Вам стоит его попробовать)
Когда я впервые начал писать 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