discord bot to sync events to the website
- Python 98.2%
- Dockerfile 1.5%
- Shell 0.3%
|
|
||
|---|---|---|
| d.py@e556ba38bc | ||
| discord_helpers | ||
| mastodon_helpers | ||
| website_helpers | ||
| .example.env | ||
| .gitignore | ||
| .gitmodules | ||
| Announcement.py | ||
| bot.py | ||
| docker-compose.yml | ||
| Dockerfile | ||
| environment.py | ||
| EventInfo.py | ||
| EventPost.py | ||
| File.py | ||
| getVersion.py | ||
| initSubmodules.sh | ||
| README.md | ||
| renovate.json | ||
| requirements.txt | ||
| Service.py | ||
| VERSION | ||
Posthorn
Dieses Repository enthält einen Discord‑Bot, der geplante Events, Bilder und Ankündigungen zwischen Discord, der Netz39-Webseite (GitHub‑Repository für Events & CDN‑Bilder) und einer Mastodon‑Instanz synchronisiert.
1. Voraussetzungen
| Voraussetzung | Version / Hinweis |
|---|---|
| Python | ≥ 3.10 |
| Docker (optional, für Container‑Deployment) | |
| Git | zum Klonen des Repositories |
.env Datei |
Enthält alle Secrets und IDs (siehe unten) |
| Zugriff auf |
|
2. Repository klonen
git clone --recurse-submodules https://git.n39.eu/0Ry5/Posthorn.git
cd Posthorn
3. Abhängigkeiten installieren
Ohne Docker
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
Mit Docker (empfohlen für Produktion)
docker compose build
docker compose up -d
Hinweis: Das
Dockerfileverwendet dasrequirements.txtund startet den Bot automatisch.
4. .env anlegen
Erstelle im Projekt‑Root eine Datei .env mit folgendem Inhalt (Beispiele, bitte anpassen):
DISCORD_TOKEN="DISCORT_BOT_TOKEN"
GITHUB_TOKEN="GITHUB_TOKEN_TO_PUSH_TO_MAIN"
REPO_OWNER="netz39"
WEBSITE_REPO_NAME="www.netz39.de"
CDN_REPO_NAME="cdn.netz39.de"
CDN_BASE_URL="cdn.netz39.de"
TARGET_BRANCH="main"
IMAGES_CHANNEL="1234567890"
ANNOUNCEMENTS_CHANNEL="1234567890"
LOGGING_CHANNEL="1234567890"
COMMAND_ROLE="Admins"
MASTODON_TOKEN="MASTODON_API_TOKEN"
MASTODON_URL="https://mastodon.social"
Alle Werte müssen vorhanden sein, sonst bricht der Bot beim Start ab.
5. Bot starten
Direkt über Python
python bot.py
Über Docker
docker compose up -d # startet den Container im Hintergrund
docker compose logs -f # (optional) Log‑Ausgabe verfolgen
Der Bot verbindet sich automatisch mit Discord, lädt bei Bedarf die Events aus GitHub, synchronisiert Bilder und leitet Ankündigungen an Mastodon weiter.
6. Wichtige Befehle (Slash‑Commands)
| Befehl | Beschreibung |
|---|---|
/version |
Zeigt die aktuelle Bot‑Version (aus der Datei VERSION). |
/sync_events_up |
Exportiert alle Discord‑Events nach GitHub. |
/sync_events_down |
Importiert Events aus GitHub nach Discord. |
/sync_images |
Lädt Bilder aus dem konfigurierten Bild‑Channel in das CDN‑Repo. |
/space_status |
Prüft und aktualisiert den Space‑Status (Icon). |
/syncCommands |
Registriert die Slash‑Commands neu (z. B. nach Code‑Änderungen). |
Alle Befehle sind nur für Mitglieder mit der im .env definierten COMMAND_ROLE verfügbar.
7. Weiterführende Schritte
- Bot‑Berechtigungen prüfen – Der Bot braucht mindestens
Manage Events,Manage Channels,Read Message History,Send Messages,Attach Files. - GitHub‑Workflow – Stelle sicher, dass das Bot‑Konto Schreibrechte für die beiden Repos (
EVENTSundCDN) besitzt. - Mastodon‑Zugriff – Der Token muss das Recht zum Posten (
write:statuses) haben.