QuasselBot Großes Logo

Fahrdienst-Assistenz via Telegram

Sicher verschlüsselte Minutenverwaltung, Fahrdienst-Dokumentation und Schicht-Parsing direkt auf deinem Smartphone.

LF

LF – Lehrfahrer-Modul Setup & Betrieb

Stand: 28.05.2026 ---

Übersicht

Das LF-Modul dient der Protokollierung von Ausbildungsfahrten durch Lehrfahrer. Abgedeckte Kategorien:
  • Betriebseinweisung
  • Nachbildung
  • Fahrerbegleitung
  • Besonderheit: Alle LF-Dialoge sind Privat-Chat-only. Bei Aufruf aus Gruppe wird der Ablauf automatisch dorthin übergeben. Sicherheit:
  • Alle Kollegendaten (Namen, Dienstnummern) werden AES-256 verschlüsselt
  • Schulungstage sind einzeln verschlüsselt (Random Salt, lfv2-Format)
  • Alte Daten (lfv1) werden automatisch erkannt und weiterhin entschlüsselt
  • ---

    Aktivierung in Gruppen

    1. Bot-Owner: Feature in Gruppe freigeben - /group → Gruppe wählen → Lehrfahrer sichtbar setzen 2. Gruppen-Admin: Feature aktivieren - /settings → Lehrfahrer aktivieren Hinweis: /lf kann in Gruppen getippt werden. Der Ablauf wird automatisch in den Privat-Chat übergeben. ---

    Erstes Setup (je Lehrfahrer)

    Schritt 1: /lf settings öffnen Schritt 2: Kollegen erfassen Kollegenformat:
  • Nachname, Vorname;Dienstausweisnummer
  • Lehrfahrertage: Separat pro Kollege pflegen Massenimport:
  • Eine Zeile pro Kollege: Nachname, Vorname;Dienstausweisnummer
  • Direkter Start: /lf settings import (Alias: bulk, massenimport)
  • ---

    Befehlsreferenz

    Menüs

    Befehl | Zweck --------|-------- /lf | Hauptmenü /lf settings | Kollegen anlegen/verwalten /lf add | Eintrag erfassen /lf list | Alle Einträge exportieren (TXT)

    Direktzugriff per Dienstausweisnummer (DA)

    Befehl | Zweck --------|-------- /lf edit <DA> | Einträge zeigen & bearbeiten /lf del <DA> | Einträge zeigen & löschen /lf list <DA> | Einträge für DA anzeigen /lf time <DA> | Schulungstage erfassen /lf zeit <DA> | Schulungstage erfassen (Alias) /lf time del <DA> | Schulungstage löschen /lf zeit del <DA> | Schulungstage löschen (Alias) ---

    Eintragsformat

    Syntax beim /lf add:
    Dienstausweisnummer [Datum] [Zeit] Linie/Kurs Wagennummer Freitext
    Beispiele:
    12345 09.05.2026 07:30 M5/07 3124 Fahrt gegen F0 (LAPE Ri. Zingster Str.)
    12345 M6/12 5678 Gefahrbremsung, Radfahrer bei Rot
    Regeln:
  • Datum optional → Ohne Datum = heute
  • Zeit optional (Format: HH:MM)
  • Freitext ist Pflicht
  • ---

    Schulungstage (Lehrfahrertage)

    Kategorie-Auswahl: 1 = Betriebseinweisung 2 = Nachbildung 3 = Fahrerbegleitung Eingabeformat je Zeile:
    TT.MM.YYYY [Kommentar]
    TT.MM.YYYY-TT.MM.YYYY [Kommentar]
    Beispiele:
    01.02.2026 Übernahme für erkrankten LF
    01.02.2026-03.02.2026 Urlaubsvertretung
    10.02.2026
    Hinweis: Neue Zeiten werden hinzugefügt (bestehende bleiben erhalten). ---

    Caching-Verhalten

    Pro Kategorie wird zwischengespeichert:
  • Dienstausweisnummer
  • Datum
  • Linie/Kurs
  • Wagennummer
  • Nutzung: Folgeeinträge genügt reduzierte Eingabe (z.B. nur Zeit + Freitext). ---

    Sicherheit

  • Verschlüsselung: LF-Nutzdaten sind AES-256 verschlüsselt
  • Passwort-Ableitung: Absichtlich unabhängig von Telegram-UserID
  • Vorteil: UserID-Umzüge möglich, ohne LF-Datenzugriff zu verlieren
  • ---

    UserID-Umzug (Bot-Admin)

    Trockenlauf:
    /useridmovecheck <alte_user_id> <neue_user_id>
    Alias: /uidmovecheck <alte_user_id> <neue_user_id>
    Liefert: Existenz, Referenzzahlen, potenzielle Konflikte Ausführung:
    /useridmove <alte_user_id> <neue_user_id>
    Alias: /uidmove <alte_user_id> <neue_user_id>
    Hinweise:
  • Nur Bot-Admin
  • Nur Privat-Chat
  • Immer erst Trockenlauf ausführen!
  • ---

    Datenbank-Tabellen

  • lf_trainer_settings
  • lf_colleagues
  • lf_entries
  • ---

    Betrieb & Troubleshooting

    Nach Deploy

    Service neu starten

    sudo systemctl restart quasselbot

    Live-Logs prüfen

    journalctl -u quasselbot -f

    Tests

    Alle Tests

    ./run_tests.sh

    Mit pytest

    ./venv/bin/python -m pytest -q

    LF-spezifische Tests

    ./run_tests.sh test_lf_*.py
    Empfohlene Regression-Tests:
  • Parser-Validierung (Kollege/Eintrag)
  • Cache-Fortschreibung pro Kategorie
  • Edit/Delete-Auswahl per Nummern
  • PM-Handover und Rechteprüfung
  • ---

    Praxis-Beispiele

    A) Erstes Setup im Privat-Chat

    User: /lf settings Bot: Zeigt Einstellungen mit Buttons User: Klick auf "Neuer Kollege" → sendet: Mustermann, Max;12345 Bot: Bestätigt: Kollege gespeichert

    B) Neuer Eintrag mit Vollformat

    User: /lf add → Wählt: Betriebseinweisung User: 12345 09.05.2026 07:30 M5/07 3124 Gefahrbremsung (Radfahrer bei Rot von links) Hohenschönhauser Str. Ri. Konrad-Wolf-Str.; kodierte Meldung BLS, Keine Verletzten, kein Schaden. Bot: Bestätigt: Eintrag gespeichert

    C) Folgeeintrag mit Cache-Nutzung

    User: /lf add → Wählt: Betriebseinweisung User: 08:05 Fahrt gegen F0 (Berliner Allee Ri. Buschallee) (Cache nutzt DA/Datum/Linie/Wagen) Bot: Bestätigt: Eintrag gespeichert

    D) Eintrag bearbeiten

    User: /lf edit 12345 Bot: Zeigt nummerierte Liste User: 2zeit=10:15; eintrag=Nachbildung mit Fokus Signale Bot: Bestätigt: Eintrag aktualisiert

    E) Eintrag löschen

    User: /lf del 12345 Bot: Zeigt nummerierte Liste User: 1,3 (2 Einträge auswählen) Bot: Bestätigt: 2 Eintrag(e) gelöscht

    F) Schulungstage erfassen

    User: /lf time 12345 Bot: Fragt nach Kategorie (1, 2 oder 3) User: 1 → mehrere Zeilen:
    01.02.2026-03.02.2026
    01.02.2026-03.02.2026 Übernahme für erkrankten LF
    10.02.2026
    10.02.2026 Übernahme für erkrankten LF
    Bot: Bestätigt: Lehrfahrertage gespeichert

    G) Schulungstage löschen

    User: /lf time del 12345 Bot: Zeigt nummerierte Schulungstage User: 2 (ein Schulungstag auswählen) Bot: Bestätigt: 1 Schulungstag gelöscht ---

    Verwandte Dokumentation

  • Admin-Betrieb: [OPERATIONS.md](OPERATIONS.md)
  • Lehrfahrer-Code: [handlers_lf.py](handlers_lf.py)
  • 🔒 Speicher-Verschlüsselung: AES-256 + bcrypt aktiv
    Modul-Umfang: ~39.668 Zeilen Python-Core