0d8f68634ca96721074c96c4a0d80903b1aaa98f
Some checks failed
Auto Build and Push Docker Image / build (push) Failing after 4s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ulfbot
Ein Telegram-Bot, der mithilfe von Markov Chains neue Sätze aus vorherigen Nachrichten generiert.
Features
- Lernt von allen Text-Nachrichten in einer Gruppe
- Generiert grammatikalisch sinnvolle Sätze mit Trigrammen
- Antwortet bei Reply, Erwähnung (@username) oder zufällig
- Pro-Chat-Wahrscheinlichkeit einstellbar (Admins)
- Persistente SQLite-Datenbank
- Docker-Support
Schnellstart
Mit Docker (empfohlen)
# Repository klonen
git clone <repo-url>
cd ulfbot
# .env erstellen
cp .env.example .env
# BOT_TOKEN in .env eintragen
# Bauen und starten
npm run build
docker compose up -d --build
Ohne Docker
# Abhängigkeiten installieren
npm install
# .env erstellen
cp .env.example .env
# BOT_TOKEN in .env eintragen
# Kompilieren
npm run build
# Starten
npm start
Entwicklung
npm install
npm run dev # Hot-Reload aktiv
Bot erstellen
- @BotFather auf Telegram öffnen
/newbotsenden- Namen und Username wählen
- Den erhaltenen Token in
.envalsBOT_TOKENeintragen
Befehle
| Befehl | Beschreibung |
|---|---|
/start |
Begrüßung anzeigen |
/hilfe |
Hilfe anzeigen |
/prob |
Aktuelle Antwortwahrscheinlichkeit |
/setprob <0-100> |
Wahrscheinlichkeit setzen (Admins) |
/cleanup |
Datenbank bereinigen (Admins) |
Trigger für Antworten
Der Bot antwortet wenn:
- Auf eine seiner Nachrichten geantwortet wird (Reply)
- Sein @Username erwähnt wird
- Zufällig (basierend auf eingestellter Wahrscheinlichkeit)
In privaten Chats antwortet er immer.
Technisches
Architektur
- Markov Chain mit Trigrammen für bessere Grammatik
- SQLite für persistente Speicherung
- Pro Chat separate Daten/Lernkurve
Datenbank-Cleanup
- Automatisch alle 24 Stunden
- Entfernt seltene Übergänge (nur einmal gesehen)
- Limitiert auf 10.000 Übergänge pro Chat
- Schützt neue Chats (min. 100 Übergänge nötig)
Projektstruktur
src/
├── index.ts # Bot-Logik, Commands
├── markov.ts # Markov Chain Implementation
└── database.ts # SQLite Persistenz
Lizenz
ISC
Description
Languages
TypeScript
99.4%
Dockerfile
0.6%