Telegram-Bot zur automatischen Überwachung von Prüfungsterminen am Goethe-Institut mit Echtzeit-Benachrichtigungen.
- Automatische Überwachung von Goethe-Institut Prüfungsterminen
- Sofortige Telegram-Benachrichtigung bei neuen verfügbaren Terminen
- Unterstützung für mehrere Länder und Städte
- Kanal-Mitgliedschaftsprüfung (Force Join)
- Duplikat-Erkennung (keine doppelten Benachrichtigungen)
| Land | Städte |
|---|---|
| Ägypten | Alexandria, Dokki, Hurghada |
| Marokko | Casablanca, Rabat |
| Algerien | Algier |
| Saudi-Arabien | Riad, Dschidda |
| Libanon | Beirut |
A1, A2, B1, B2, C1, C2
| Befehl | Beschreibung |
|---|---|
/start |
Bot starten / Neues Abo erstellen |
/meineabos |
Aktive Abos anzeigen |
/stop |
Alle Benachrichtigungen stoppen |
/hilfe |
Hilfe anzeigen |
- Python 3.11+
- Telegram Bot Token (von @BotFather)
- Repository klonen:
git clone https://github.com/JYRRY/Goethe-Bot.git
cd Goethe-Bot- Virtuelle Umgebung erstellen:
python -m venv venv
source venv/bin/activate # Linux/Mac- Abhängigkeiten installieren:
pip install -r requirements.txt
playwright install chromium- Umgebungsvariablen konfigurieren:
cp .env.example .env
# .env-Datei bearbeiten und BOT_TOKEN eintragen- Bot starten:
python -m bot.main# .env-Datei erstellen
cp .env.example .env
# BOT_TOKEN in .env eintragen
# Starten
docker compose up -d
# Logs anzeigen
docker compose logs -f
# Stoppen
docker compose down| Variable | Beschreibung | Standard |
|---|---|---|
BOT_TOKEN |
Telegram Bot Token | (erforderlich) |
REQUIRED_CHANNEL_ID |
Telegram-Kanal für Force Join | @JYRYGROUP |
SCRAPE_INTERVAL_MINUTES |
Scraping-Intervall in Minuten | 3 |
DATABASE_PATH |
Pfad zur SQLite-Datenbank | data/goethe_bot.db |
LOG_LEVEL |
Log-Level | INFO |
bot/ - Telegram Bot (Handler, Keyboards, Nachrichten)
scraper/ - Playwright Scraper (Browser-Automatisierung)
database/ - SQLite Datenbankschicht
notifications/ - Benachrichtigungssystem
data/ - Standort- und Prüfungsdaten
- Python 3.11+
- python-telegram-bot - Telegram Bot Framework
- Playwright - Browser-Automatisierung (Chromium)
- SQLite + aiosqlite - Datenbank
- Docker - Deployment
- Mehr Länder:
data/locations.pyerweitern - Höhere Last: PostgreSQL statt SQLite, Redis für Caching
- Mehrere Instanzen: Scraper als separaten Service auslagern
- Monetarisierung: Premium-Abos mit kürzerem Intervall, mehr Standorte
MIT