managarten/services/telegram-chat-bot/CLAUDE.md
Claude faadc413cc
feat(telegram-chat-bot): implement AI chat bot with multi-model support
- Add NestJS service with Telegraf for Telegram bot
- Implement commands: /models, /model, /new, /convos, /history, /clear
- Create Chat API client for completions and conversations
- Support multiple AI models (local Gemma + cloud via OpenRouter)
- Sync conversations with Chat web/mobile app
- Add message splitting for long responses
- Include Dockerfile, CLAUDE.md, and setup script

Commands:
- Send text → AI responds
- /models - List available models
- /model [name] - Switch model (gemma, claude, gpt, etc.)
- /new [title] - New conversation
- /convos - List conversations
- /history - Show recent messages
- /clear - Clear context

https://claude.ai/code/session_01LwmhvhKpEsvVtY1ZKhYu6f
2026-01-28 01:14:35 +00:00

3.5 KiB

Telegram Chat Bot

Telegram Bot für AI-Chat mit verschiedenen Modellen und Konversations-History. Kommuniziert mit der Chat-App API.

Tech Stack

  • Framework: NestJS 10
  • Telegram: nestjs-telegraf + Telegraf
  • Database: PostgreSQL + Drizzle ORM
  • Date Handling: date-fns

Commands

# Development
pnpm start:dev        # Start with hot reload

# Build
pnpm build            # Production build

# Type check
pnpm type-check       # Check TypeScript types

# Database
pnpm db:generate      # Generate migrations
pnpm db:push          # Push schema to database
pnpm db:studio        # Open Drizzle Studio

Telegram Commands

Command Beschreibung
/start Hilfe & Account verknüpfen
/help Verfügbare Befehle
/models AI-Modelle anzeigen
/model [name] Modell wechseln
/new [titel] Neue Konversation
/convos Konversationen auflisten
/history Letzte Nachrichten
/clear Kontext löschen
/status Verbindungsstatus
/link Account verknüpfen
/unlink Verknüpfung trennen

Chatten: Einfach Text senden - der Bot antwortet mit AI!

Unterschied zu telegram-ollama-bot

Feature telegram-chat-bot telegram-ollama-bot
API Chat-App Backend Direkt Ollama
Modelle Lokal + Cloud Nur Ollama
History In DB gespeichert Nur Session
Sync Mit Web/Mobile App Standalone
Konversationen Mehrere, benannt Eine pro User

Environment Variables

PORT=3305
NODE_ENV=development
TZ=Europe/Berlin

# Telegram
TELEGRAM_BOT_TOKEN=xxx
TELEGRAM_ALLOWED_USERS=

# Chat Backend
CHAT_API_URL=http://localhost:3002
MANA_CORE_AUTH_URL=http://localhost:3001

# Database
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/chat_bot

# Default Model
DEFAULT_MODEL=gemma3:4b

Projekt-Struktur

services/telegram-chat-bot/
├── src/
│   ├── main.ts
│   ├── app.module.ts
│   ├── health.controller.ts
│   ├── config/
│   │   └── configuration.ts
│   ├── database/
│   │   ├── database.module.ts
│   │   └── schema.ts
│   ├── bot/
│   │   ├── bot.module.ts
│   │   ├── bot.update.ts
│   │   └── formatters.ts
│   ├── chat/
│   │   ├── chat.module.ts
│   │   └── chat.client.ts
│   └── user/
│       ├── user.module.ts
│       └── user.service.ts
├── drizzle/
├── drizzle.config.ts
├── package.json
└── Dockerfile

AI-Modelle

Lokal (kostenlos)

  • 🏠 Gemma 3 4B - Läuft auf Mac Mini

Cloud (via OpenRouter)

  • ☁️ Llama 3.1 8B/70B
  • ☁️ DeepSeek V3
  • ☁️ Mistral Small
  • ☁️ Claude 3.5 Sonnet
  • ☁️ GPT-4o Mini

Health Check

curl http://localhost:3305/health

Lokale Entwicklung

# Docker starten
pnpm docker:up

# Datenbank erstellen
psql -h localhost -U manacore -c "CREATE DATABASE chat_bot;"

# In Bot-Verzeichnis
cd services/telegram-chat-bot
cp .env.example .env
# Token eintragen

pnpm install
pnpm db:push
pnpm start:dev

Deployment

macOS (launchd)

launchctl load ~/Library/LaunchAgents/com.manacore.telegram-chat-bot.plist

Docker

telegram-chat-bot:
  build:
    dockerfile: services/telegram-chat-bot/Dockerfile
  environment:
    TELEGRAM_BOT_TOKEN: ${TELEGRAM_CHAT_BOT_TOKEN}
    CHAT_API_URL: http://chat-backend:3002
    DATABASE_URL: ${CHAT_BOT_DATABASE_URL}
  ports:
    - "3305:3305"