TypeScript/JavaScript Telegram Bot API Framework for create your bots with convenience!
✨ Extensible - Our plugin and hook system is awesome
🛡️ Type-safe - Written in TypeScript with love ❤️
🌐 Multi-runtime - Works on Node.js, Bun and Deno
⚙️ Code-generated - Many parts are code-generated (for example, code-generated and auto-published Telegram Bot API types)
To create your new bot, you just need to write it to the console:
npm create gramio@latest ./bot
and GramIO customize your project the way you want it!
import { Bot } from "gramio";
const bot = new Bot(process.env.BOT_TOKEN as string)
.command("start", (context) => context.send("Hello!"))
.onStart(({ info }) => console.log(`✨ Bot ${info.username} was started!`));
bot.start();
For more, please see documentation and get-started guide.
Example which uses some interesting features.
import { Bot, format, bold, code } from "gramio";
import { findOrRegisterUser } from "./utils";
const bot = new Bot(process.env.BOT_TOKEN as string)
.derive("message", async () => {
const user = await findOrRegisterUser();
return {
user,
};
})
.on("message", (context) => {
context.user; // typed
return context.send(format`
Hi, ${bold(context.user.name)}!
You balance: ${code(context.user.balance)}`);
});