first commit
This commit is contained in:
108
README.md
Normal file
108
README.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user