managarten/services/telegram-ollama-bot/CLAUDE.md
Till-JS 384244fe50 ♻️ refactor: migrate bots and chat-backend to mana-llm
Migrate all LLM consumers from direct Ollama calls to centralized
mana-llm service with OpenAI-compatible API.

Migrated services:
- matrix-ollama-bot
- telegram-ollama-bot
- chat-backend
- telegram-project-doc-bot

New env vars: MANA_LLM_URL, LLM_MODEL, LLM_TIMEOUT
Replaces: OLLAMA_URL, OLLAMA_MODEL, OLLAMA_TIMEOUT
2026-01-29 22:56:26 +01:00

3.2 KiB

Telegram Ollama Bot

Telegram Bot für lokale LLM-Inferenz via Ollama auf dem Mac Mini Server.

Tech Stack

  • Framework: NestJS 10
  • Telegram: nestjs-telegraf + Telegraf
  • LLM: mana-llm service (supports Ollama + cloud providers)

Commands

# Development
pnpm start:dev        # Start with hot reload

# Build
pnpm build            # Production build

# Type check
pnpm type-check       # Check TypeScript types

Telegram Commands

Command Beschreibung
/start Hilfe anzeigen
/help Hilfe anzeigen
/models Verfügbare Modelle auflisten
/model [name] Modell wechseln
/mode [modus] System-Prompt ändern
/clear Chat-Verlauf löschen
/status Ollama-Status prüfen

Modi

Modus Beschreibung
default Allgemeiner Assistent
classify Text-Klassifizierung
summarize Zusammenfassungen
translate Übersetzungen
code Programmier-Hilfe

Environment Variables

# Server
PORT=3301

# Telegram
TELEGRAM_BOT_TOKEN=xxx              # Bot Token von @BotFather
TELEGRAM_ALLOWED_USERS=123,456      # Optional: Nur diese User IDs erlauben

# LLM (via mana-llm service)
MANA_LLM_URL=http://localhost:3025  # mana-llm service URL
LLM_MODEL=ollama/gemma3:4b          # Standard-Modell (provider/model format)
LLM_TIMEOUT=120000                  # Timeout in ms

Projekt-Struktur

services/telegram-ollama-bot/
├── src/
│   ├── main.ts               # Entry point
│   ├── app.module.ts         # Root module
│   ├── health.controller.ts  # Health endpoint
│   ├── config/
│   │   └── configuration.ts  # Config & System Prompts
│   ├── bot/
│   │   ├── bot.module.ts
│   │   └── bot.update.ts     # Command handlers
│   └── ollama/
│       ├── ollama.module.ts
│       └── ollama.service.ts # Ollama API client
└── Dockerfile

Deployment auf Mac Mini

Option 1: Docker

# In docker-compose.macmini.yml
telegram-ollama-bot:
  image: ghcr.io/memo-2023/telegram-ollama-bot:latest
  container_name: manacore-telegram-ollama-bot
  restart: always
  environment:
    PORT: 3301
    TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
    MANA_LLM_URL: http://mana-llm:3025
    LLM_MODEL: ollama/gemma3:4b
  ports:
    - "3301:3301"

Option 2: Nativ

# Auf dem Mac Mini
cd ~/projects/manacore-monorepo/services/telegram-ollama-bot
pnpm install
pnpm build
TELEGRAM_BOT_TOKEN=xxx MANA_LLM_URL=http://localhost:3025 pnpm start:prod

Neuen Bot erstellen

  1. Öffne @BotFather in Telegram
  2. Sende /newbot
  3. Wähle einen Namen (z.B. "ManaCore Ollama")
  4. Wähle einen Username (z.B. "manacore_ollama_bot")
  5. Kopiere den Token

Health Check

curl http://localhost:3301/health

Features

  • Chat-Verlauf: Behält die letzten 10 Nachrichten für Kontext
  • Mehrere Modi: Verschiedene System-Prompts für unterschiedliche Aufgaben
  • Modell-Wechsel: Dynamisch zwischen installierten Modellen wechseln
  • User-Beschränkung: Optional nur bestimmte Telegram-User erlauben
  • Lange Antworten: Automatisches Splitting bei >4000 Zeichen