sarah 42b2971cd8
All checks were successful
Auto Build and Push Docker Image / build (push) Successful in 42s
Add Node.js setup and build steps to workflows
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 20:20:38 +01:00
2026-03-23 20:11:18 +01:00
2026-03-23 20:11:18 +01:00
2026-03-23 20:11:18 +01:00
2026-03-23 20:11:18 +01:00
2026-03-23 20:11:18 +01:00
2026-03-23 20:11:18 +01:00
2026-03-23 20:11:18 +01:00
2026-03-23 20:11:18 +01:00
2026-03-23 20:11:18 +01:00
2026-03-23 20:11:18 +01:00

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

  1. @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

Description
No description provided
Readme 128 KiB
Languages
TypeScript 99.4%
Dockerfile 0.6%