- Python 69%
- HTML 20%
- CSS 6%
- PHP 2.9%
- JavaScript 1.3%
- Other 0.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| assets/logo | ||
| carreau | ||
| deploy | ||
| docs | ||
| termine | ||
| tests | ||
| tools | ||
| wordpress/carreau-termine | ||
| .gitignore | ||
| README.md | ||
| requirements.txt | ||
Carreau
Signal-Bot des Pétanque-Club Messidor Saarbrücken e.V.: Er liest die Spieltage aus einem Kalender und erinnert die Signal-Gruppe automatisch daran – als Text, als Poster-Bild und auf Wunsch mit Umfrage.
Stand: 05.10.2026 · Carreau 0.8.5 · Phase 1–2 abgeschlossen, Phase 3 läuft: Bot installiert, erste automatische Ankündigung erfolgreich · erste echte Erinnerung geplant für Sonntag, 15.11.2026
Was der Bot kann (Ziel)
- Erinnerungen aus dem Kalender: Für jeden Spieltag eine Sammelnachricht am Sonntag davor und eine am Spieltag selbst, mit allen Paarungen des Tages.
- Einmalige Nachrichten: Text oder Umfrage für einen festen Zeitpunkt vorplanen, bis zum Versand änderbar (Seite „Einmalig“).
- Vorlagen mit Platzhaltern: Texte wie beim Serienbrief, z. B.
{datum},{spiele},{uhrzeit},{ort}. - Poster als Bild (0.6.0): Vorankündigung und „Heute“ im Stil „Anzeigetafel“, Pokal-Variante in Rot; wird auf dem Server mit Chromium aus den Kalenderdaten erzeugt, lange Namen werden automatisch verkleinert. Einrichtung: docs/anleitung-poster.md.
- Flohmarkt: Schicht-Aufruf 14 Tage vorher und Kuchen-Umfrage am Sonntag davor (eigener Kalender).
- Umfragen: echte Signal-Umfragen aus Vorlagen, z. B. „Wer kann für diesen Samstag Kuchen backen?“.
- Übersicht (0.7.0): was als Nächstes rausgeht, eine Karte pro Termin mit Poster, Hinweise zu Tippfehlern im Kalender; einzelne Nachrichten auslassen oder nur diesmal anders formulieren.
- Vorschau am Morgen: am Sendetag Text und Poster vorab an den Admin.
- Änderungen nach der Ankündigung: Carreau merkt verlegte oder abgesagte Termine und schlägt eine Nachricht an die Gruppe vor.
- Befehle in der Gruppe (0.7.0):
!naechster,!termine,!hilfe;!ergebnisfolgt. - Web-Oberfläche: fürs Handy, nur für den Admin, hinter der YunoHost-Anmeldung.
- Termine auf der Website (0.8.0): Spieltage mit Paarungen und Vereinstermine auf pc-messidor.de über das WordPress-Plugin „Carreau Termine“, mit Filter nach Mannschaft → docs/anleitung-website-termine.md.
- Mehrere Gruppen: zunächst eine, ausgelegt für bis zu 5.
Architektur
flowchart LR
handy["Handy-Kalender<br/>(DAVx⁵ / iOS)"] -- CalDAV --> baikal["Baïkal<br/>Kalender-Server"]
baikal -- CalDAV --> bot["Carreau<br/>Bot + Web-Oberfläche"]
bot -- "Terminliste (pcmtermine.dompasero.de)" --> wp["WordPress<br/>pc-messidor.de"]
bot -- JSON-RPC --> scli["signal-cli<br/>gekoppeltes Gerät"]
scli <--> signal(("Signal-Gruppe"))
iphone["Bot-iPhone<br/>Hauptgerät des Kontos"] -. koppelt .-> scli
Alles außer dem Handy und dem Bot-iPhone läuft auf dem YunoHost-Server (netcup).
| Baustein | Aufgabe | Status |
|---|---|---|
| Baïkal (YunoHost-App) | Kalender, gepflegt vom Handy | ✅ läuft, 29 Spieltage importiert |
| signal-cli | Signal-Anbindung als gekoppeltes Gerät | ✅ läuft |
| Carreau (dieses Repo) | Zeitplan, Vorlagen, Umfragen, Oberfläche, einmalige Nachrichten (0.5.0), Poster (0.6.0), neue Übersicht, Vorschau, Änderungen und Befehle (0.7.0), Website-Termine (0.8.0), Update-Hinweise für signal-cli und Python-Pakete | ✅ läuft (Testmodus) |
WordPress + Plugin „Carreau Termine“ (wordpress/) |
Termine auf der Website, holt sie von pcmtermine.dompasero.de | 0.8.0, Einrichtung offen |
Ablauf
| Phase | Zeitraum | Inhalt |
|---|---|---|
| 0 | 29.9.–4.10. | Vorbereitung: Backup, Serverdaten, Bot-iPhone absichern |
| 1 | 5.–11.10. | signal-cli installieren und mit dem Bot-iPhone koppeln |
| 2 | 12.–18.10. | Baïkal einrichten, Handy verbinden, Termine übernehmen |
| 3 | 19.10.–1.11. | Bot-Grundversion, Tests nur in der Testgruppe |
| 4 | 2.–8.11. | Poster, Umfrage, Befehle |
| 5 | 9.–15.11. | Go-live in der echten Gruppe |
Details mit Aufgaben und Prüfpunkten: docs/ablaufplan.md · Entscheidungen: docs/entscheidungen.md
Termine eintragen: docs/kalender-eintragen.md · Updates: signal-cli · Carreau und Python-Pakete · auf 0.7.0 – Carreau meldet beides montags selbst per Signal.
Sicherheit
Die Daten von signal-cli enthalten die Schlüssel des Bot-Kontos. Wer sie hat, kann als Bot schreiben. Sie gehören nie in dieses Repo (siehe .gitignore), sondern nur verschlüsselt ins Server-Backup. Dasselbe gilt für Passwörter und App-Passwörter (Baïkal, YunoHost).
Inhalt
carreau/ der Bot: Planer, Kalender, Signal, Web-Oberfläche
tests/ automatische Tests
deploy/ Dienst-Dateien und Konfigurationsbeispiel für den Server
docs/ Ablaufplan, Entscheidungen, Anleitungen je Phase
termine/ SBV-Termine 2026/27 als CSV und ICS
tools/ Hilfsskripte (z. B. Kalender-Import)
wordpress/ Plugin „Carreau Termine“ für pc-messidor.de
assets/logo/ Vereinslogo (dunkler und heller Hintergrund), Kachelbild carreau-kachel.png (rot, 512 × 512; blaue Variante daneben)
Entwicklung
python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt pytest httpx radicale
python -m pytest -q
python -m carreau.updates # Pakete auf neue Versionen und Sicherheitslücken prüfen
Die Integrationstests starten einen echten CalDAV-Server (Radicale) und eine nachgebaute signal-cli-Schnittstelle; es wird nichts an Signal geschickt.