discord bot to sync events to the website
  • Python 98.2%
  • Dockerfile 1.5%
  • Shell 0.3%
Find a file
2026-03-20 15:52:06 +01:00
d.py@e556ba38bc refactor -> reduce slop 2026-03-17 22:13:12 +01:00
discord_helpers refactor -> reduce slop 2026-03-17 22:13:12 +01:00
mastodon_helpers refactor -> reduce slop 2026-03-17 22:13:12 +01:00
website_helpers refactor -> reduce slop 2026-03-17 22:13:12 +01: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 refactor -> reduce slop 2026-03-17 22:13:12 +01:00
docker-compose.yml feat(github): auto create branch an PR 2025-08-18 20:39:09 +00:00
Dockerfile refactor -> reduce slop 2026-03-17 22:13:12 +01: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 refactor -> reduce slop 2026-03-17 22:13:12 +01:00

Posthorn

Dieses Repository enthält einen DiscordBot, der geplante Events, Bilder und Ankündigungen zwischen Discord, der Netz39-Webseite (GitHubRepository für Events & CDNBilder) und einer MastodonInstanz synchronisiert.

1. Voraussetzungen

Voraussetzung Version / Hinweis
Python 3.10
Docker (optional, für ContainerDeployment)
Git zum Klonen des Repositories
.env Datei Enthält alle Secrets und IDs (siehe unten)
Zugriff auf
  • DiscordBotToken & BotRechte
  • GitHubRepos (EventsRepo & CDNRepo)
  • MastodonAPIToken & 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 ProjektRoot 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) LogAusgabe 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 (SlashCommands)

Befehl Beschreibung
/version Zeigt die aktuelle BotVersion (aus der Datei VERSION).
/sync_events_up Exportiert alle DiscordEvents nach GitHub.
/sync_events_down Importiert Events aus GitHub nach Discord.
/sync_images Lädt Bilder aus dem konfigurierten BildChannel in das CDNRepo.
/space_status Prüft und aktualisiert den SpaceStatus (Icon).
/syncCommands Registriert die SlashCommands 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. BotBerechtigungen prüfen Der Bot braucht mindestens Manage Events, Manage Channels, Read Message History, Send Messages, Attach Files.
  2. GitHubWorkflow Stelle sicher, dass das BotKonto Schreibrechte für die beiden Repos (EVENTS und CDN) besitzt.
  3. MastodonZugriff Der Token muss das Recht zum Posten (write:statuses) haben.