@extends('layouts.dashboard')
@section('title', 'Einstellungen · '.$guild->name.' · TacForce Pro')
@php
$moduleMeta = [
'tickets' => ['Tickets', 'ticket', 'Ticket-System mit Kategorien & Panels'],
'applications' => ['Bewerbungen', 'file-text', 'Bewerbungsformulare & Review'],
'welcome' => ['Welcome', 'message', 'Begrüßungsnachrichten & Auto-Rolle'],
'logs' => ['Logs', 'list', 'Server-Ereignisse protokollieren'],
'level' => ['Level', 'star', 'XP & Ranglisten'],
'guard' => ['Guard', 'shield', 'Anti-Raid & Auto-Moderation'],
];
$soonMeta = [
'partner' => ['Partner', 'link', 'Partnerprogramm'],
];
// Für Hinweise/Warnungen: welche Module an sind + ob Felder ohne aktives Modul gesetzt sind.
$mods = (array) $modules;
$welcomeOn = (bool) ($mods['welcome'] ?? false);
$logsOn = (bool) ($mods['logs'] ?? false);
$welcomeConfigured = filled($settings->welcome_channel_id) || filled($settings->welcome_message) || filled($settings->auto_role_id);
$logsConfigured = filled($settings->log_channel_id) || ! empty((array) ($settings->log_channels ?? []));
@endphp
@section('content')
Einstellungen
Konfiguriere TacForce Pro für {{ $guild->name }}.
{{-- Kurzanleitung — nimmt die häufigsten Verständnisfragen vorweg. --}}
So funktioniert's
Der Bot muss online und auf deinem Server sein — sonst passiert nichts.
Channel-/Rollen-IDs holen: in Discord Entwicklermodus an (Einstellungen → Erweitert → Entwicklermodus), dann Rechtsklick auf Channel/Rolle → „ID kopieren" .
Ein Modul muss rechts an sein, damit seine Felder überhaupt wirken.
{{-- GENERAL SETTINGS FORM --}}
{{-- MODULES --}}
@csrf
@method('PUT')
Module
Nur was hier an ist, macht der Bot. Aus = Funktion komplett gestoppt. Nach Ändern „Module speichern" .
@foreach ($moduleMeta as $key => [$label, $ic, $desc])
@php $on = (bool) old("modules.$key", data_get($modules, $key, false)); @endphp
@endforeach
@foreach ($soonMeta as $key => [$label, $ic, $desc])
@endforeach
Module speichern
Speichere…
{{-- LOG-KANÄLE (pro Kategorie frei konfigurierbar) --}}
@php
$logMeta = [
'member' => ['📥 Mitglieder', 'Join, Leave, Nickname, Rollen'],
'mod' => ['🛡️ Moderation', 'Ban, Unban, Timeout'],
'message' => ['💬 Nachrichten', 'Bearbeitet & gelöscht'],
'voice' => ['🔊 Voice', 'Join, Leave, Move'],
'ticket' => ['🎫 Tickets & Bewerbungen', 'Geöffnet, geschlossen, eingegangen'],
'server' => ['📋 Server', 'Channels & Rollen erstellt/gelöscht'],
'bot' => ['🤖 Bot-Aktionen', 'Panels & Builder'],
];
$logChannels = (array) ($settings->log_channels ?? []);
$logEvents = (array) ($settings->log_events ?? []);
@endphp
@csrf
@method('PUT')
Log-Kanäle
Jede Kategorie in einen eigenen Channel routen + an/aus. Leer = fällt auf die allgemeine Log-Channel-ID oben zurück.
@unless ($logsOn)
Modul Logs ist aus — egal was hier steht, es wird nichts geloggt. Rechts bei „Module" einschalten.
@endunless
@foreach ($logMeta as $key => [$label, $desc])
@php
$chanVal = old("channels.$key", $logChannels[$key] ?? '');
$on = (bool) old("events.$key", array_key_exists($key, $logEvents) ? $logEvents[$key] : true);
@endphp
@endforeach
Braucht das Modul „Logs" aktiv. Channel-IDs per Rechtsklick → ID kopieren.
Log-Kanäle speichern
Speichere…
{{-- GUARD / AUTO-MODERATION --}}
@php
$automod = (array) ($settings->automod ?? []);
$guardOn = (bool) ($mods['guard'] ?? false);
$amInvites = (bool) old('invites', $automod['invites'] ?? false);
$amSpam = (bool) old('spam', $automod['spam'] ?? false);
$amMentions = (int) old('mentions', $automod['mentions'] ?? 0);
@endphp
@csrf
@method('PUT')
Guard / Auto-Moderation
Automatische Moderation: Invite-Links, Mention-Spam und Flood. Moderatoren (Recht „Nachrichten verwalten") sind ausgenommen.
@unless ($guardOn)
Modul Guard ist aus — egal was hier steht, es wird nichts moderiert. Rechts bei „Module" einschalten.
@endunless
{{-- Invite-Links --}}
🔗 Invite-Links löschen
Löscht Nachrichten mit discord.gg-/Invite-Links. Braucht MessageContent-Intent.
{{-- Spam / Flood --}}
🚫 Spam-Schutz
Löscht Flood (5+ Nachrichten in 5 Sekunden pro Person).
{{-- Max. Mentions --}}
📢 Max. Erwähnungen
Nachricht löschen ab so vielen @-Mentions (User + Rollen). 0 = aus.
@error('mentions')
{{ $message }}
@enderror
Braucht das Modul „Guard" aktiv. Invite-/Text-Filter benötigen den MessageContent-Intent.
Guard speichern
Speichere…
@endsection