feat: add /anleitung command with tenant list, replace /start and /help with shared guide

This commit is contained in:
Martin Porwoll 2026-03-01 10:07:24 +00:00
parent 132acf0ae7
commit f93fe9a6a0

View file

@ -202,28 +202,46 @@ async function processAlbum(
} }
} }
export function registerHandlers(bot: Bot<BotContext>): void { async function buildAnleitung(): Promise<string> {
// /start command let tenantList = 'Tenants konnten nicht geladen werden\\.';
bot.command('start', async (ctx) => { try {
let tenantLine: string; const tenants = await payloadClient.listTenants();
if (ctx.session.selectedTenantId !== null) { tenantList = tenants
const tenantName = await getTenantName(ctx.session.selectedTenantId); .map((t) => ` \`${t.id}\` \\${escapeMarkdown(t.name)}`)
ctx.session.selectedTenantName = tenantName; .join('\n');
tenantLine = `Aktueller Tenant: *${escapeMarkdown(tenantName)}*`; } catch {
} else { log.warn('Could not load tenants for Anleitung');
tenantLine = `⚠️ *Kein Tenant gewählt* \\- nutze /tenant`;
} }
const text = return (
`\ud83d\udcf7 *Payload Media Bot*\n\n` + `📷 *Payload Media Upload Bot \\— Anleitung*\n\n` +
`Willkommen\\! ${tenantLine}\n\n` + `*So funktioniert der Upload:*\n` +
`1⃣ Tenant wählen: /tenant antippen und Website auswählen\n` +
`2⃣ Bild senden: Einfach ein Foto in den Chat schicken\n` +
`3⃣ Fertig\\! Das Bild erscheint in der CMS Media\\-Bibliothek\n\n` +
`💡 *Tipps:*\n` +
`• Für *Originalqualität* das Bild als *Dokument* senden \\(📎 Büroklammer\\-Symbol\\)\n` +
`• Mehrere Bilder als Album senden \\= Bulk\\-Upload\n` +
`• Bildunterschrift wird als Alt\\-Text übernommen\n\n` +
`🏢 *Verfügbare Tenants:*\n${tenantList}\n\n` +
`*Befehle:*\n` + `*Befehle:*\n` +
`/tenant \\- Tenant wechseln\n` + `/tenant \\— Tenant wechseln\n` +
`/list \\- Letzte 5 Medien anzeigen\n` + `/list \\— Letzte 5 Uploads anzeigen\n` +
`/status \\- Bot\\-Status\n` + `/status \\— Bot\\- und API\\-Status\n` +
`/help \\- Hilfe\n\n` + `/anleitung \\— Diese Anleitung erneut anzeigen`
`Sende einfach ein Bild oder Dokument zum Hochladen\\.`; );
}
export function registerHandlers(bot: Bot<BotContext>): void {
// /start command — Begrüßung mit Anleitung
bot.command('start', async (ctx) => {
const text = await buildAnleitung();
await ctx.reply(text, { parse_mode: 'MarkdownV2' });
});
// /anleitung command — Anleitung erneut anzeigen
bot.command('anleitung', async (ctx) => {
const text = await buildAnleitung();
await ctx.reply(text, { parse_mode: 'MarkdownV2' }); await ctx.reply(text, { parse_mode: 'MarkdownV2' });
}); });
@ -289,20 +307,9 @@ export function registerHandlers(bot: Bot<BotContext>): void {
await ctx.reply(text, { parse_mode: 'MarkdownV2' }); await ctx.reply(text, { parse_mode: 'MarkdownV2' });
}); });
// /help command // /help command — alias für /anleitung
bot.command('help', async (ctx) => { bot.command('help', async (ctx) => {
const text = const text = await buildAnleitung();
`\u2753 *Hilfe*\n\n` +
`Dieser Bot lädt Bilder in die Payload CMS Media\\-Kollektion hoch\\.\n\n` +
`*So geht's:*\n` +
`1\\. Wähle einen Tenant mit /tenant\n` +
`2\\. Sende ein Bild oder mehrere als Album\n` +
`3\\. Der Bot lädt sie automatisch hoch\n\n` +
`*Unterstützte Formate:*\n` +
`jpg, jpeg, png, webp, avif, gif, svg\n\n` +
`\ud83d\udca1 *Tipp:* Sende Bilder als *Dokument* \\(Büroklammer\\-Symbol\\), ` +
`um die Originalqualität beizubehalten\\. Telegram komprimiert Fotos sonst automatisch\\.`;
await ctx.reply(text, { parse_mode: 'MarkdownV2' }); await ctx.reply(text, { parse_mode: 'MarkdownV2' });
}); });