Node.js Telegram bot hosting, deployed from GitHub
grammY, Telegraf or node-telegram-bot-api: push the repository, set BOT_TOKEN, deploy. Node.js is detected from package.json, npm, pnpm, yarn and bun are all supported, and TypeScript builds run before the start.
What the repository needs
- package.json with your library in
dependenciesand astartscript, for examplenode bot.js. - A lockfile if you have one: the package manager is picked from it.
- The token read from
process.env.BOT_TOKEN.
TypeScript is fine: when the file your start script runs is not committed and there is a build script, the build runs first with devDependencies installed.
Long polling, the simple default
bot.start() in grammY and bot.launch() in Telegraf poll Telegram for updates and need no port. That runs on the free tier without any change. A webhook is the alternative when the bot is also a web app; it needs the app's https address to stay up, which is a paid app.
The parts of the panel you will use
The live console shows the install, the build and the bot's own output. Environment variables are a table you edit and save once. Redeploy pulls the latest commit; with auto-deploy on you never press it. A crash prints an explanation in plain words, not just a stack trace.
Frequently asked questions
Which Node.js Telegram libraries work?
grammY, Telegraf, node-telegram-bot-api, telegram (GramJS) in bot mode, and anything else on npm. Bun and Deno projects run too when the repository says so.
Polling or webhook?
Polling works everywhere and needs nothing but the token: the bot asks Telegram for updates. A webhook needs a public https address; every hosted app has one at name.fadehost.app with its plan, but on the free tier that address sleeps when idle, so polling is the simpler choice for a free bot and a webhook is for a paid app that stays up.
Where does the token go?
In the environment variables of the app, as BOT_TOKEN or whatever name your code reads, never in the repository. The panel masks the values and injects them when the bot starts.
What happens when I push a commit?
With auto-deploy on, every push to the branch you chose redeploys the bot: install, build if there is one, start. The live console shows each step and the crash doctor explains a failed start in plain words.
What does the free tier include?
One bot with 256 MB of RAM, always on, placed where there is room for it (a paid plan picks the region), with the live console, environment variables and redeploys on push. A second bot or more memory is the Starter plan at $2 a month.