19 lines
629 B
TypeScript
19 lines
629 B
TypeScript
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;
|
|
}
|