feat: telegram bot (grammy webhook) — full parity channel

- pairing (admin code -> chat link), bundling of forwarded images via drafts+quiet-window sweeper
- recipe pick via inline keyboard, job (origin=telegram) creation, one summary reply with result files + links
- compressed-photo detection/flag; /start /help /rezepte /status
- webhook route (secret token), admin pairing-code + links endpoints, AdminApp telegram section
- worker notifies chat on completion; migration 002 adds jobs.telegram_chat_id; setupTelegram on init
This commit is contained in:
2026-07-23 17:39:49 +00:00
parent 26c3e0ef07
commit d680b3f67a
8 changed files with 342 additions and 4 deletions
+2
View File
@@ -13,6 +13,8 @@ export function ensureInit(): Promise<void> {
try { await ensureBucket(); } catch (e) { console.error('[init] S3 nicht bereit:', e); }
await seed();
try { await startImageWorker(); } catch (e) { console.error('[init] Worker-Start fehlgeschlagen:', e); }
try { const { setupTelegram } = await import('./telegram'); await setupTelegram(); }
catch (e) { console.error('[init] Telegram-Setup fehlgeschlagen:', e); }
console.log('[init] Klarbild bereit.');
})().catch((e) => { started = null; throw e; });
}