Skip to content

Web DashboardStats DE

Domekologe edited this page Jun 30, 2026 · 1 revision

Web DashboardStats

🌐 English · Deutsch

WebDashboardStats erfasst still und leise pro Server Statistiken — Nachrichten, Voice, Mitglieder, Präsenz, Spiele-Aktivität, Einladungen und Befehlsnutzung — in zeitlich gebucketten Speicher und stellt sie als Lesemethoden für das WebDashboard-Gateway bereit. Der Cog hat keine sichtbaren Befehle: Er läuft komplett über Discord-Listener und eine Hintergrundschleife, und die Daten werden auf der /stats-Seite des Dashboards visualisiert. Bots werden bei Nachrichten, Voice und Aktivität ignoriert. Autor: pd-codes · benötigt Red 3.5.0+ · Status: Release.

Screenshot: Dashboard-/stats-Seite mit Diagrammen

Installation

[p]repo add PDC_Redbot_Cogs https://github.com/pd-codes/PDC_Redbot_Cogs
[p]cog install PDC_Redbot_Cogs pdc_webdashboard_stats
[p]load pdc_webdashboard_stats

[p] ist das Präfix deines Bots. Die vollständige Downloader-Anleitung findest du unter Installation. Die Diagramme erscheinen erst, sobald der WebDashboard-Cog und das Frontend PDC_Redbot_Webapp laufen.

Hinweis: Dieser Cog hieß früher WebServerStats (web_serverstats). Bestehende Statistiken bleiben über die Umbenennung hinweg erhalten — der Cog behält seinen ursprünglichen Config-Namespace bei, sodass beim Upgrade keine Daten verloren gehen.

Intents: Aktiviere die Presence- und Server Members-Intents im Discord Developer Portal für vollständige Status- und Aktivitätsdaten. Ohne sie bleiben Mitglieder-Präsenz und Spiele-Aktivität leer.

Was erfasst wird

Die Daten werden pro Server in Tagesbuckets geschrieben (Schlüssel YYYY-MM-DD, UTC); die Präsenz wird separat abgetastet. Der Cog lauscht auf Discord-Events sowie eine periodische Snapshot-Schleife:

Metrik Quelle Bucket / Granularität
Nachrichten (gesamt) on_message täglich (days.messages)
Nachrichten pro Kanal on_message täglich, pro Kanal-ID (msg_channels)
Nachrichten pro Mitglied on_message täglich, pro Mitglieds-ID (msg_members)
Beitritte / Austritte on_member_join / on_member_remove täglich (days.joins, days.leaves)
Mitgliederzahl Snapshot-Schleife täglich, letzter Wert des Tages (days.members)
Voice-Minuten (gesamt) on_voice_state_update täglich (days.voice_minutes)
Voice-Minuten pro Kanal Voice-Sessions täglich, pro Kanal-ID (voice_channels)
Voice-Minuten pro Mitglied Voice-Sessions täglich, pro Mitglieds-ID (voice_members)
Präsenzstatus (online/idle/dnd/offline) Snapshot-Schleife alle 30 Min. abgetastet (status_samples)
Spiele-Aktivität (Minuten pro Spiel) Snapshot-Schleife täglich, pro Spielname (activity)
Invite-Tracking (welcher Code, von wem) on_invite_create + Join-Diffing Uses pro Code, tägliche Joins, Log der letzten 500, Summen pro Einlader
Befehlsnutzung on_command_completion täglich, pro Befehlsname (commands)
Befehlsfehler on_command_error täglich, pro Befehlsname (command_errors)

Voice wird durch Paaren der Kanalwechsel aus on_voice_state_update gemessen: Eine laufende Session wird geöffnet, wenn ein Nicht-Bot einen Kanal betritt, und geschlossen (mit Verbuchung der Minuten), wenn er ihn verlässt oder wechselt. Offene Sessions werden bei on_ready nach einem Neustart neu erfasst, sodass das Zählen Reloads übersteht, und beim Entladen bestmöglich geleert.

Einladungen werden verfolgt, indem beim Beitritt eines Mitglieds die gespeicherten uses jedes Invites mit der Live-Liste verglichen werden — der Beitritt wird dem Code zugeordnet, dessen Nutzungszähler gestiegen ist, und dem einladenden Mitglied.

Performance & Aufbewahrung

  • In-Memory-Pufferung: Nachrichten und Befehlsnutzung werden im RAM gezählt und alle 60 Sekunden in die Config geschrieben (ein gebündelter Write pro Server statt mehrerer Writes pro Nachricht).
  • Präsenz-Sampling: Die Snapshot-Schleife läuft alle 30 Minuten (Mitgliederzahl, Status-Zähler, Spiele-Aktivität).
  • Aufbewahrung: Tagesbuckets werden nach 400 Tagen gelöscht; Präsenz-Samples sind auf rund 60 Tage begrenzt; das Invite-Log behält die letzten 500 Einträge.

Konfiguration

Der Cog speichert die Config pro Server. Es gibt genau einen Schalter:

Schlüssel Standard Bedeutung
enabled true Bei false findet für diesen Server kein Tracking statt (wird bei jedem Listener und Snapshot geprüft; für den Nachrichten-Hotpath im Speicher gecacht).

Es gibt keine Chat-Befehle; der Schalter wird über das Dashboard (oder Reds Config-Tooling) gesetzt. Alle übrigen Schlüssel (days, msg_channels, msg_members, voice_channels, voice_members, status_samples, activity, invites, invite_daily, invite_logs, invite_members, commands, command_errors) sind interne Datenspeicher, keine Einstellungen.

Dashboard-Integration

Der Cog öffnet keine eigene Gateway-Verbindung. Stattdessen stellt er öffentliche asynchrone Lesemethoden bereit, die das WebDashboard-Gateway aufruft, um die /stats-Seite zu speisen. Jede nimmt den Server und einen days-Zeitraum entgegen und liefert diagrammfertige Daten (Labels + Reihen + KPIs + „Top"-Listen):

Methode Speist
stats_overview(guild, days=30) Mitglieder-/Join-/Leave-Trendlinien plus 7-Tage-KPIs (Mitglieder, Joins, Leaves, Nachrichten, Voice-Stunden).
stats_messages(guild, days=30) Tägliche Nachrichtenreihe, Summen, eindeutige Mitglieder/Kanäle, Top-Mitglieder und Top-Kanäle.
stats_voice(guild, days=30) Tägliche Voice-Stunden-Reihe, Summen, Top-Mitglieder und Top-Kanäle.
stats_status(guild, days=14) Präsenz-Samples (online/idle/dnd/offline) im Zeitraum.
stats_invites(guild, days=14) Tägliche Reihe pro Code, Top-Invites, letztes Beitritts-Log, Top-Einlader.
stats_activity(guild, days=30) Top-Spiele nach gespielten Gesamtminuten.
stats_commands(guild, days=30) Tägliche Befehlsnutzungs-Reihe, Gesamt-/Fehlerzahlen, eindeutige Befehle, Top-Befehle mit Fehlerzahlen.
stats_member_drilldown(guild, member_id, days=30) Nachrichten und Voice-Stunden eines einzelnen Mitglieds, mit Auswahlliste verfügbarer Mitglieder.
stats_channel_drilldown(guild, channel_id, days=30) Nachrichten und Voice-Stunden eines einzelnen Kanals, mit Auswahlliste verfügbarer Kanäle.

Das days-Argument wird zwischen 1 und der 400-Tage-Aufbewahrung begrenzt. Die Diagramme werden vollständig in der Web-App gerendert.

Verwandte Seiten

Clone this wiki locally