Pull to refresh

Почему я создал современный SDK на TypeScript для Telegram-ботов (и почему Вам стоит его попробовать)

Level of difficultyEasy

Когда я впервые начал писать 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

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.