Ticket-Bot
-
Discord Developer Portal: Bot erstellen & einrichten
Neue Application erstellen
- Gehe zum Discord Developer Portal.
- Klicke auf New Application.
- Gib einen Namen für deine Anwendung ein, z. B. „TicketBot“.
- Klicke auf Create.
Bot anlegen
- Wähle deine neue Anwendung aus.
- Gehe links auf Bot.
- Klicke auf Add Bot → Yes, do it!.
- Nun hast du einen Bot-Account innerhalb der Anwendung.
- Kopiere unter TOKEN deinen Bot-Token (dieser muss in deiner
.envunterBOT_TOKEN=eingetragen werden!). - (Optional) Passe das Bot-Icon und den Benutzernamen an.
Privileged Gateway Intents
- In der Bot-Seite (im Developer Portal) scrolle zu Privileged Gateway Intents.
- Aktiviere ggf. Message Content Intent, wenn du möchtest, dass dein Bot Nachrichteninhalte lesen kann (hier im Code ist
message_content = Truegesetzt). - Aktiviere ggf. weitere Intents (z. B. Presence, Server Members) falls benötigt.
- Klicke auf Save Changes.
Bot einladen (Invite-Link)
- Gehe links auf OAuth2 > URL Generator.
- Wähle unter Scopes:
bot&applications.commands(für Slash-Befehle). - Unter Bot Permissions wähle die nötigen Rechte (z. B.
Send Messages,Manage Channels,Manage Roles– je nachdem, welche Aktionen dein Bot ausführen muss). - Der generierte Link (unten) kann jetzt kopiert und im Browser aufgerufen werden.
- Wähle den Server, auf dem der Bot hinzugefügt werden soll, und bestätige.
Slash Commands
- Standardmäßig registriert Discord Slash-Befehle automatisch, wenn du sie in deinem Code (z. B. in
ticket_cog.py) definiert hast. - Stelle sicher, dass du die erforderlichen Intents aktiviert hast.
- Die Synchronisierung der Slash-Befehle kann teils mehrere Minuten dauern.
-
Projektstruktur
├── main.py # Startpunkt für den Discord-Bot
├── cogs/
│ ├── ticket_cog.py # Hauptlogik (Ticketverwaltung + KI)
│ └── transcript_cog.py # /ticket_transcript-Befehl
├── utils/
│ ├── config.py # Lädt .env-Variablen, enthält IDs und Konstanten
│ └── database.py # SQLite-Datenbankzugriff
├── webapp/
│ ├── app.py # Flask-Anwendung (Web-Panel)
│ ├── templates/
│ │ ├── index.html # Übersicht aller Tickets
│ │ └── transcript_detail.html # Zeigt ein einzelnes Transkript
│ └── static/ # (optionale statische Dateien)
├── tickets.sqlite # SQLite-Datenbank (wird automatisch angelegt)
├── .env # Deine Umgebungsvariablen
└── requirements.txt # Liste benötigter Pakete (Beispiel) -
Installation & Konfiguration
Installation & Konfiguration
1.Projekt klonen/entpacken
Lade das Projekt in einen geeigneten Ordnergit clone https://github.com/hackletloose/hall-ticket-bot.git2. Virtuelle Umgebung (optional, empfohlen)
python -m venv venv source venv/bin/activate # (Linux/Mac) # Windows: venv\Scripts\activate3. Abhängigkeiten installieren
Die wichtigsten Python-Pakete sind inrequirements.txtaufgeführt. Ein Beispiel:py-cord openai flask requests python-dotenv aiohttp gunicorn pytesseract PillowInstalliere sie mit:
pip install -r requirements.txt4. Konfiguration in
.env
Erstelle eine Datei namens.env(im Hauptverzeichnis). Beispiel:BOT_TOKEN=DEIN_DISCORD_BOT_TOKEN GUILD_ID=123456789123456789 SUPPORT_ROLE_ID=111111111111111111 ADMIN_ROLE_ID=222222222222222222 VIEWER_ROLE_ID=333333333333333333 VIEWER2_ROLE_ID=444444444444444444 CREATED_TICKETS_CATEGORY_ID=555555555555555555 CLAIMED_TICKETS_CATEGORY_ID=666666666666666666 CLOSED_TICKETS_CATEGORY_ID=777777777777777777 TICKET_LOG_CHANNEL_ID=888888888888888888 MAX_TICKETS_PER_SUPPORTER=3 TICKET_CLEANUP_DAYS=7 # GPT-4o-mini- oder kompatibler API Key: OPENAI_API_KEY=sk-... OPENAI_MODEL=gpt-4o-mini # Flask WebApp (Discord OAuth2) FLASK_SECRET_KEY=EinLangerGeheimerString DISCORD_CLIENT_ID=1234567890 DISCORD_CLIENT_SECRET=ABCDEFGHIJKLMNOPQRST DISCORD_REDIRECT_URI=https://deine-app.de/callback-
GPT-4o-mini-API-Key beschaffen
Je nachdem, wie oder wo du GPT-4o-mini verwendest (z. B. lokal gehostet, per Proxy oder über einen Drittanbieter), benötigst du einen gültigen API-Key oder ein Zugangstoken.
- Account / Projekt erstellen beim Anbieter, der GPT-4o-mini bereitstellt, oder deine eigene Instanz konfigurieren.
- API-Schlüssel generieren oder abrufen (z. B. „Secret Key“).
- Diesen Schlüssel in der
.envunterOPENAI_API_KEYeintragen (oder einer anderen Variable, falls du den Code entsprechend anpasst). - In
OPENAI_MODELkönntest du „gpt-4o-mini“ eintragen, wenn dein Anbieter diesen Modellnamen unterstützt.
Beachte die jeweiligen Nutzungsbedingungen und möglichen Kosten (z. B. pro Anfrage).
-
Tesseract-OCR und deutsches Sprachpaket (für OCR)
Falls du in der
ticket_cog.pydie OCR-Funktion (z. B.pytesseract.image_to_string(img, lang="deu")) verwendest, musst du folgendes sicherstellen:- Systemweit installiertes Tesseract-OCR (nicht nur das Python-Paket
pytesseract). - Das deutsche Sprachpaket („deu“).
Ubuntu/Debian:
sudo apt-get update sudo apt-get install tesseract-ocr tesseract-ocr-deuWindows:
- Lade das offizielle Tesseract-Windows-Installationsprogramm (z. B. UB Mannheim Build) herunter.
- Während der Installation kannst du zusätzliche Sprachpakete (wie Deutsch) auswählen oder später manuell in den
tessdata/-Ordner legen (z. B.deu.traineddata).
Erst dann ist
pytesseract(inkl. deutschem OCR) vollständig nutzbar. - Systemweit installiertes Tesseract-OCR (nicht nur das Python-Paket
-