import type { FeedbackStore } from './stores/feedback'; import type { SessionStore } from './stores/session'; import { Telegraf } from 'telegraf'; import { onMessage, onStart } from './telegram/handlers'; export function createBot(token: string, rootDir: string, sessions: SessionStore, feedback: FeedbackStore, signal: AbortSignal): Telegraf { const bot = new Telegraf(token, { handlerTimeout: 10_000 }); bot.start(onStart(rootDir)); bot.on('text', onMessage(rootDir, sessions, feedback)); // Graceful shutdown signal.addEventListener('abort', () => { bot.stop('AbortController: abort'); }); return bot; }