-
Notifications
You must be signed in to change notification settings - Fork 0
Web DashboardStats DE
🌐 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.

[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.
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.
- 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.
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.
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.
- WebDashboard — das Gateway und Frontend, das dieser Cog speist
- Dashboard Integration — für Entwickler, die eigene Beiträge bauen
- Start
PDC_Redbot_Cogs · GitHub · Issues · Web Dashboard · Built for Red-DiscordBot · 🌐 English / Deutsch
🇬🇧 English
General
Cogs
Engagement & Utility
- Birthday
- StatChannels
- ScheduledMsg
- EventLog
- SocialFeed
- Giveaway
- Leveling
- TempVoice
- Starboard
- Suggestions
- LiveAlerts
Moderation
Fun
Web Dashboard
🇩🇪 Deutsch
Allgemein
Cogs
Engagement & Utility
- Birthday
- StatChannels
- ScheduledMsg
- EventLog
- SocialFeed
- Giveaway
- Leveling
- TempVoice
- Starboard
- Suggestions
- LiveAlerts
Moderation
Fun
Web-Dashboard