#!/usr/bin/env node /** * Telegram Bot Standalone Test Script * * Testet die grundlegende Funktionalität des Telegram Bots * ohne Integration in das Backend. * * Phase 1: Bot Setup & Standalone-Test * * Usage: * node telegram-test.js * * Prerequisites: * - .env.telegram mit TELEGRAM_BOT_TOKEN und TELEGRAM_CHAT_ID * - npm install node-telegram-bot-api dotenv */ require('dotenv').config({ path: '.env.telegram' }); const TelegramBot = require('node-telegram-bot-api'); // ============================================================================= // Configuration // ============================================================================= const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN; const CHAT_ID = process.env.TELEGRAM_CHAT_ID; // ============================================================================= // Validation // ============================================================================= console.log('🔧 Lade Telegram-Konfiguration...'); if (!BOT_TOKEN) { console.error('❌ FEHLER: TELEGRAM_BOT_TOKEN ist nicht definiert!'); console.error(''); console.error('Bitte .env.telegram erstellen und Bot-Token eintragen:'); console.error(''); console.error(' TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz'); console.error(' TELEGRAM_CHAT_ID=-1001234567890'); console.error(''); console.error('Siehe: scripts/README.telegram.md'); process.exit(1); } if (!CHAT_ID) { console.error('❌ FEHLER: TELEGRAM_CHAT_ID ist nicht definiert!'); console.error(''); console.error('Bitte .env.telegram erstellen und Chat-ID eintragen:'); console.error(''); console.error(' TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz'); console.error(' TELEGRAM_CHAT_ID=-1001234567890'); console.error(''); console.error('Chat-ID ermitteln: https://api.telegram.org/bot/getUpdates'); console.error('Siehe: scripts/README.telegram.md'); process.exit(1); } console.log('✅ Konfiguration geladen!'); console.log(''); // ============================================================================= // Bot Initialization // ============================================================================= console.log('🤖 Verbinde mit Telegram Bot...'); // Create bot instance (polling disabled for one-off script) const bot = new TelegramBot(BOT_TOKEN, { polling: false }); // ============================================================================= // Main Test Function // ============================================================================= async function runTest() { try { // Step 1: Verify bot connection const botInfo = await bot.getMe(); console.log('✅ Telegram Bot erfolgreich verbunden!'); console.log(''); console.log('Bot-Details:'); console.log(` Name: ${botInfo.first_name}`); console.log(` Username: @${botInfo.username}`); console.log(` ID: ${botInfo.id}`); console.log(''); // Step 2: Prepare test message const timestamp = new Date().toLocaleString('de-DE', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }); const message = ` 🤖 Telegram Bot Test Dies ist eine Test-Nachricht vom Werkstatt Image Uploader Bot. Status: ✅ Erfolgreich verbunden! Zeitstempel: ${timestamp} --- ℹ️ Dieser Bot sendet automatische Benachrichtigungen für den Image Uploader. `.trim(); // Step 3: Send test message console.log(`📤 Sende Test-Nachricht an Chat ${CHAT_ID}...`); const sentMessage = await bot.sendMessage(CHAT_ID, message); console.log('✅ Nachricht erfolgreich gesendet!'); console.log(''); console.log(`Message-ID: ${sentMessage.message_id}`); console.log(''); console.log('🎉 Test erfolgreich abgeschlossen!'); console.log(''); console.log('➡️ Nächste Schritte:'); console.log(' 1. Telegram-Gruppe öffnen und Nachricht prüfen'); console.log(' 2. Verschiedene Nachrichtenformate testen (siehe README.telegram.md)'); console.log(' 3. Phase 2 starten: Backend-Integration'); } catch (error) { console.error('❌ FEHLER beim Senden der Nachricht:'); console.error(''); if (error.response && error.response.body) { const errorData = error.response.body; console.error(`Error Code: ${errorData.error_code}`); console.error(`Description: ${errorData.description}`); console.error(''); // Helpful error messages if (errorData.error_code === 401) { console.error('💡 Lösung: Bot-Token ist ungültig oder falsch.'); console.error(' → BotFather öffnen und Token prüfen'); console.error(' → .env.telegram aktualisieren'); } else if (errorData.error_code === 400 && errorData.description.includes('chat not found')) { console.error('💡 Lösung: Chat-ID ist falsch oder ungültig.'); console.error(' → Chat-ID erneut ermitteln: https://api.telegram.org/bot/getUpdates'); console.error(' → Neue Nachricht in Gruppe senden, dann getUpdates aufrufen'); console.error(' → .env.telegram aktualisieren'); } else if (errorData.error_code === 403) { console.error('💡 Lösung: Bot hat keine Berechtigung, in diese Gruppe zu schreiben.'); console.error(' → Bot zur Gruppe hinzufügen'); console.error(' → Bot als Admin hinzufügen (empfohlen)'); } } else { console.error(error.message); } console.error(''); console.error('📖 Siehe Troubleshooting: scripts/README.telegram.md'); process.exit(1); } } // ============================================================================= // Execute Test // ============================================================================= runTest();