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
.
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",
});
}
}
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!
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!
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"
),
});
@gramio/files
already used under the hood so you don't need to install it
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
});