discord bot to sync events to the website
  • Python 98.5%
  • Dockerfile 1.2%
  • Shell 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-05-05 09:52:30 +02:00
d.py@e556ba38bc refactor -> reduce slop 2026-03-17 22:13:12 +01:00
discord_helpers fix(bot): fix cdn git and state loop 2026-05-04 11:29:54 +02:00
mastodon_helpers refactor -> reduce slop 2026-03-17 22:13:12 +01:00
website_helpers fix(bot): fix cdn git and state loop 2026-05-04 11:29:54 +02:00
.example.env refactor -> reduce slop 2026-03-17 22:13:12 +01:00
.gitignore refactor -> reduce slop 2026-03-17 22:13:12 +01:00
.gitmodules include d.py submodule by DA-344 2025-04-29 12:16:43 +02:00
Announcement.py refactor -> reduce slop 2026-03-17 22:13:12 +01:00
bot.py fix(bot): fix cdn git and state loop 2026-05-04 11:29:54 +02:00
docker-compose.yml feat(github): auto create branch an PR 2025-08-18 20:39:09 +00:00
Dockerfile fix(bot): fix cdn git and state loop 2026-05-04 11:29:54 +02:00
Dockerfile.base fix(bot): fix cdn git and state loop 2026-05-04 11:29:54 +02:00
environment.py refactor -> reduce slop 2026-03-17 22:13:12 +01:00
EventInfo.py refactor -> reduce slop 2026-03-17 22:13:12 +01:00
EventPost.py refactor -> reduce slop 2026-03-17 22:13:12 +01:00
File.py refactor -> reduce slop 2026-03-17 22:13:12 +01:00
getVersion.py refactor -> reduce slop 2026-03-17 22:13:12 +01:00
initSubmodules.sh refactor -> reduce slop 2026-03-17 22:13:12 +01:00
README.md create a quick sloppy readme 2026-03-01 16:06:48 +01:00
renovate.json add renovate.json 2025-10-12 13:47:36 +02:00
requirements.txt refactor -> reduce slop 2026-03-17 22:13:12 +01:00
Service.py refactor -> reduce slop 2026-03-17 22:13:12 +01:00
VERSION fix(bot): fix cdn git and state loop 2026-05-04 11:29:54 +02:00

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
  • Discord‑Bot‑Token & Bot‑Rechte
  • GitHub‑Repos (Events‑Repo & CDN‑Repo)
  • Mastodon‑API‑Token & URL

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 Dockerfile verwendet das requirements.txt und 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

  1. Bot‑Berechtigungen prüfen – Der Bot braucht mindestens Manage Events, Manage Channels, Read Message History, Send Messages, Attach Files.
  2. GitHub‑Workflow – Stelle sicher, dass das Bot‑Konto Schreibrechte für die beiden Repos (EVENTS und CDN) besitzt.
  3. Mastodon‑Zugriff – Der Token muss das Recht zum Posten (write:statuses) haben.