Files
ulfbot/README.md
2026-03-23 20:11:18 +01:00

108 lines
2.1 KiB
Markdown

# 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)
```bash
# 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
```bash
# Abhängigkeiten installieren
npm install
# .env erstellen
cp .env.example .env
# BOT_TOKEN in .env eintragen
# Kompilieren
npm run build
# Starten
npm start
```
### Entwicklung
```bash
npm install
npm run dev # Hot-Reload aktiv
```
## Bot erstellen
1. [@BotFather](https://t.me/BotFather) auf Telegram öffnen
2. `/newbot` senden
3. Namen und Username wählen
4. Den erhaltenen Token in `.env` als `BOT_TOKEN` eintragen
## 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