UNPKG

telegraf

Version:

📡 Modern Telegram bot framework

30 lines (26 loc) • 1.11 kB
const Telegraf = require('telegraf') const session = require('telegraf/session') const Stage = require('telegraf/stage') const Scene = require('telegraf/scenes/base') const { enter, leave } = Stage // Greeter scene const greeterScene = new Scene('greeter') greeterScene.enter((ctx) => ctx.reply('Hi')) greeterScene.leave((ctx) => ctx.reply('Bye')) greeterScene.hears('hi', enter('greeter')) greeterScene.on('message', (ctx) => ctx.replyWithMarkdown('Send `hi`')) // Echo scene const echoScene = new Scene('echo') echoScene.enter((ctx) => ctx.reply('echo scene')) echoScene.leave((ctx) => ctx.reply('exiting echo scene')) echoScene.command('back', leave()) echoScene.on('text', (ctx) => ctx.reply(ctx.message.text)) echoScene.on('message', (ctx) => ctx.reply('Only text messages please')) const bot = new Telegraf(process.env.BOT_TOKEN) const stage = new Stage([greeterScene, echoScene], { ttl: 10 }) bot.use(session()) bot.use(stage.middleware()) bot.command('greeter', enter('greeter')) bot.command('echo', enter('echo')) bot.on('message', (ctx) => ctx.reply('Try /echo or /greeter')) bot.startPolling()