PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ] ); $userId = (int) $_SESSION['user_id']; $loggedIn = true; $publicBasePath = '../'; $pageTitle = 'Telegram verbinden - AstroTools'; $headerIntroPre = 'Konto'; $headerIntroTitle = 'Telegram verbinden'; $headerIntroSub = 'Bot-Verknüpfung für spätere Benachrichtigungen.'; function h(?string $value): string { return htmlspecialchars((string) $value, ENT_QUOTES, 'UTF-8'); } function generateTelegramLinkToken(int $length = 32): string { return bin2hex(random_bytes(max(16, (int) ceil($length / 2)))); } $stmtUser = $pdo->prepare(" SELECT `id`, `username`, `telegram_username`, `telegram_chat_id`, `telegram_link_token`, `telegram_link_token_expires_at`, `telegram_connected_at` FROM `app_users` WHERE `id` = :id LIMIT 1 "); $stmtUser->execute([':id' => $userId]); $user = $stmtUser->fetch(); if (!$user) { $_SESSION = []; session_destroy(); header('Location: ../login.php'); exit; } $now = new DateTimeImmutable('now'); $token = trim((string) ($user['telegram_link_token'] ?? '')); $expiresAt = !empty($user['telegram_link_token_expires_at']) ? new DateTimeImmutable((string) $user['telegram_link_token_expires_at']) : null; if ($token === '' || !$expiresAt instanceof DateTimeImmutable || $expiresAt <= $now) { $token = generateTelegramLinkToken(32); $expiresAt = $now->modify('+30 minutes'); $stmtRefresh = $pdo->prepare(" UPDATE `app_users` SET `telegram_link_token` = :token, `telegram_link_token_expires_at` = :expires_at, `updated_at` = NOW() WHERE `id` = :id "); $stmtRefresh->execute([ ':token' => $token, ':expires_at' => $expiresAt->format('Y-m-d H:i:s'), ':id' => $userId, ]); $stmtUser->execute([':id' => $userId]); $user = $stmtUser->fetch(); } $botUsername = trim((string) ($telegramConfig['bot_username'] ?? '')); $deepLink = $botUsername !== '' ? 'https://t.me/' . $botUsername . '?start=connect_' . $token : null; ?>
Diese Verbindung merkt sich die Chat-ID deines Telegram-Kontos, damit spaeter ein Bot dir Inhalte direkt schicken kann.
| Status | = !empty($user['telegram_chat_id']) ? 'Verbunden' : 'Noch nicht verbunden' ?> |
| Aktiver Code | = h($token) ?> |
| Gueltig bis | = h($expiresAt?->format('d.m.Y H:i')) ?> |
| Aktueller Telegram-Username | = h(!empty($user['telegram_username']) ? '@' . ltrim((string) $user['telegram_username'], '@') : '—') ?> |
| Aktuelle Chat-ID | = h($user['telegram_chat_id'] ?? '—') ?> |
QR-Code mit dem Handy scannen. Telegram öffnet dann direkt den richtigen Bot mit deinem Verknüpfungslink.
In `config/telegram.php` ist noch kein Bot-Username hinterlegt. Du kannst den Code trotzdem schon verwenden und spaeter an den Bot senden.
So funktioniert es:
/start connect_= h($token) ?>.Nach erfolgreicher Verknüpfung kannst du zurück zu Einstellungen.