Simple and tiny code-generated Telegram Bot API wrapper for TypeScript/JavaScript with file upload support
npm install wrappergram





Simple and tiny code-generated Telegram Bot API wrapper for TypeScript/JavaScript with file upload support.
đ Multi-runtime - Works on Node.js, Bun and Deno
âď¸ Code-generated - For example, code-generated and auto-published Telegram Bot API types)
đĄď¸ Type-safe - Written in TypeScript with love â¤ď¸
đ¤ Tiny - Simple sendMessage call cost some  in bundle size. So it is a good choice for browser/serverless environments
But if you need a more complete framework, then please look to GramIO.
``ts
import { Telegram, getUpdates } from "wrappergram";
const telegram = new Telegram(process.env.BOT_TOKEN as string);
telegram.api.sendMessage({
chat_id: 617580375,
text: "Hello!",
});
for await (const update of getUpdates(telegram)) {
console.log(update);
if (update.message?.from) {
telegram.api.sendMessage({
chat_id: update.message.from.id,
text: "Hi! Thanks for the message",
});
}
}
`
This example on bundlejs cost 
> [!IMPORTANT]
> Use getUpdates only once in your code otherwise it will cause double calls to getUpdates
You can send requests to Telegram Bot API Methods via telegram.api with full type-safety!
`ts
const response = await telegram.api.sendMessage({
chat_id: "@gramio_forum",
text: "Hello, world!",
});
if (!response.ok) console.error("Something went wrong");
else console.log(New message id is ${response.result.message_id});`
For keyboards you need to install @gramio/keyboard library and just use it!
`ts
import { Keyboard } from "@gramio/keyboards";
// telegram init
telegram.api.sendMessage({
chat_id: "@gramio_forum",
text: "Hello, world!",
reply_markup: new InlineKeyboard().url(
"GitHub",
"https://github.com/gramiojs/wrappergram"
),
});
`
This example cost - 
@gramio/files already used under the hood so you don't need to install it
`ts
import { MediaUpload } from "wrappergram";
telegram.api.sendPhoto({
chat_id: "@gramio_forum",
text: "Hello, world!",
photo: MediaUpload.path("./cute-cat.png"),
});
telegram.api.sendDocument({
chat_id: "@gramio_forum",
text: "Hello, world!",
photo: Bun.file("README.md"), // you can use File instance to upload files
});
``
This example cost - 