Discord und Telegram
Diese Seite ist nur für Administratoren zugänglich.
'; return; }
$message = null;
$error = null;
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
verify_csrf();
if (!$isAdmin) {
$error = 'Einstellungen ändern darf nur ein Administrator.';
} else {
$action = $_POST['action'] ?? '';
if ($action === 'save') {
$key = strtolower(trim((string) ($_POST['discord_key'] ?? '')));
if ($key !== '' && !preg_match('/^[0-9a-f]{64}$/', $key)) {
$error = 'Der öffentliche Schlüssel von Discord besteht aus 64 Zeichen (0–9, a–f).';
} else {
plugin_set_setting(COMMUNITYBOT, 'discord_key', $key);
plugin_set_setting(COMMUNITYBOT, 'discord_app', preg_replace('/[^0-9]/', '', (string) ($_POST['discord_app'] ?? '')));
// Geheimnisse: leeres Feld lässt den bisherigen Wert stehen
foreach (['discord_token', 'telegram_token'] as $k) {
$v = trim((string) ($_POST[$k] ?? ''));
if ($v !== '') communitybot_set_secret($k, $v);
}
if (!empty($_POST['clear_discord'])) communitybot_set_secret('discord_token', '');
if (!empty($_POST['clear_telegram'])) { communitybot_set_secret('telegram_token', ''); communitybot_set_secret('telegram_secret', ''); }
plugin_set_setting(COMMUNITYBOT, 'department_id', (string) (int) ($_POST['department_id'] ?? 0));
plugin_set_setting(COMMUNITYBOT, 'priority_id', (string) (int) ($_POST['priority_id'] ?? 0));
plugin_set_setting(COMMUNITYBOT, 'limit', (string) max(1, min(50, (int) ($_POST['limit'] ?? 3))));
plugin_set_setting(COMMUNITYBOT, 'notify', !empty($_POST['notify']) ? '1' : '0');
$message = 'Einstellungen gespeichert.';
}
} elseif ($action === 'discord_register') {
$r = communitybot_discord_register();
if ($r['ok']) $message = $r['message']; else $error = $r['message'];
} elseif ($action === 'telegram_register') {
$r = communitybot_telegram_register();
if ($r['ok']) $message = $r['message']; else $error = $r['message'];
}
}
}
$cfg = communitybot_config();
$depts = $pdo->query('SELECT id, name FROM departments ORDER BY name')->fetchAll();
$prios = $pdo->query('SELECT id, name FROM priorities ORDER BY sort_order')->fetchAll();
$recent = $pdo->query('SELECT l.*, t.ticket_number, t.subject, t.status FROM plugin_communitybot_links l JOIN tickets t ON t.id = l.ticket_id ORDER BY l.id DESC LIMIT 30')->fetchAll();
$week = (int) $pdo->query("SELECT COUNT(*) FROM plugin_communitybot_links WHERE created_at >= '" . date('Y-m-d H:i:s', time() - 7 * 86400) . "'")->fetchColumn();
?>
Discord und Telegram
= e($message) ?>
= e($error) ?>
Zustand
= $week ?> Tickets in den letzten 7 Tagen über Discord oder Telegram angelegt.
Discord: = ($cfg['discord_key'] !== '' ? 'Schlüssel eingetragen' : 'Schlüssel fehlt') ?>
· Benachrichtigung per Direktnachricht: = $cfg['discord_token'] !== '' ? 'möglich' : 'Bot-Token fehlt' ?>
Telegram: = $cfg['telegram_token'] !== '' ? 'Token eingetragen' : 'Token fehlt' ?>
Auf diesem Server fehlt die PHP-Erweiterung „sodium“, Discord-Anfragen können nicht geprüft werden.
Adressen für die Einrichtung (nur aus dem Internet erreichbar, mit https):
Discord „Interactions Endpoint URL“: = e(communitybot_url('discord')) ?>
Telegram wird mit dem Knopf unten automatisch verbunden.
Verbinden
Erst speichern, dann verbinden.
Zuletzt angelegt
Noch keine Tickets über Discord oder Telegram.
| Ticket | Kanal | Absender | Status | Angelegt |
| #= e((string) $l['ticket_number']) ?> = e(mb_strimwidth((string) $l['subject'], 0, 50, '…')) ?> |
= $l['platform'] === 'discord' ? 'Discord' : 'Telegram' ?> |
= e((string) $l['ext_name']) ?> |
= e(status_label((string) $l['status'])[0]) ?> |
= e(format_dt((string) $l['created_at'])) ?> |