1 GrumpyAnnouncements
darksoon edited this page 2026-07-11 01:05:01 +02:00

Announcements — Geplante Ankündigungen

GrumpyAnnouncements plant einmalige oder wiederkehrende Nachrichten, die der Bot zu einem festgelegten Zeitpunkt automatisch in einen Kanal postet — optional mit Rollen-Ping.


Aktivierung

In configs/config.yml:

addons:
  announcements: true   # Standard: true

Es gibt keine eigene configs/modules/announcements.yml — das Modul ist rein datenbankbasiert. Announcements werden ausschließlich über den /announce-Command angelegt/verwaltet, nicht über eine Konfigurationsdatei.


Ablauf

Der Bot prüft jede Minute, ob fällige Announcements existieren:

  1. Alle Announcements mit scheduledFor <= jetzt werden atomar „geclaimt" (Datenbank-Update inkl. Statuswechsel in derselben Operation, damit bei überlappenden Ticks nichts doppelt verschickt wird).
  2. Einmalige Announcements werden danach auf inaktiv gesetzt.
  3. Wiederkehrende Announcements bekommen sofort den nächsten Fälligkeitstermin.
  4. Erst danach wird die eigentliche Nachricht in den Zielkanal gesendet — schlägt der Versand fehl (z. B. Kanal gelöscht), bleibt der Zeitplan trotzdem fortgeschritten; es gibt keinen automatischen Retry-Loop für dauerhaft kaputte Kanäle.

Wiederholung (Recurring)

Wert Bedeutung
none (Standard) Einmalig — danach automatisch inaktiv
daily Täglich, gleiche Uhrzeit
weekly Wöchentlich, gleicher Wochentag/Uhrzeit
monthly Monatlich, gleicher Tag im Monat

Monatliche Sonderfälle: Fällt der geplante Tag in einem Zielmonat nicht (z. B. 31. Januar → Februar hat keinen 31.), wird auf den letzten Tag des Zielmonats geklemmt (28./29. Februar), statt ins nächste Monat überzulaufen.

Kein Nachhol-Spam nach Downtime: War der Bot länger offline als das Wiederholungs-Intervall (z. B. mehrere Tage bei einer täglichen Ankündigung), wird beim nächsten Start nicht jede verpasste Wiederholung im Sekundentakt nachgeholt. Stattdessen springt der Termin direkt auf den nächsten zukünftigen Zeitpunkt — die Ankündigung wird höchstens einmal pro Tick verschickt, egal wie viele Intervalle in der Downtime verpasst wurden.


Commands

/announce create

Plant eine neue Ankündigung.

Option Pflicht Beschreibung
channel Ziel-Textkanal (Text oder Announcement-Kanal)
in Zeit bis zum ersten Versand, z. B. 30m, 2h, 1d, 1h30m
message Ankündigungstext (max. 1800 Zeichen)
recurring none (Standard) | daily | weekly | monthly
ping-role Rolle, die beim Versand gepingt wird
/announce create channel:#ankündigungen in:2h message:"Server-Wartung heute Abend um 22 Uhr!"
/announce create channel:#events in:1d message:"Wöchentlicher Community-Abend!" recurring:weekly ping-role:@Event-Ping

Maximal 25 aktive Announcements pro Server gleichzeitig.


/announce list

Listet alle aktiven (noch nicht ausgeführten bzw. laufend wiederkehrenden) Announcements mit ID, Kanal, nächstem Versandzeitpunkt (relativ), Wiederholung und Text-Vorschau.

/announce list

/announce cancel

Storniert eine geplante Ankündigung. Die id-Option bietet Autocomplete basierend auf Text/ID.

Option Pflicht Beschreibung
id ID der Ankündigung (Autocomplete verfügbar)
/announce cancel id:12

Berechtigungen

  • Command-Nutzung: Server verwalten (Manage Guild) — als Discord-Default-Berechtigung gesetzt, zusätzlich zur Laufzeit erneut geprüft (Defense-in-Depth, falls ein Server-Admin die Default-Berechtigung über Integrationen gelockert hat).
  • Bot-Berechtigung: Der Bot benötigt Sende-Rechte im Zielkanal sowie @&Rolle-Erwähnungen, wenn ping-role genutzt wird.