otherscantbeat/pb

By otherscantbeat

Updated 9 months ago

OCB Steam ProfilBild Bot - Automated profile picture generation

Image
Message queues
0

658

otherscantbeat/pb repository overview

OCB Profilbild Creator

Automatisierter Profilbild-Erstellungs-Bot für OCB Steam-Community mit vollständiger Steam-Integration.

✨ Features

  • 🤖 Steam Bot Integration - Vollständige Steam Chat-Integration
  • 🎨 Profilbild-Generierung - Dynamische Canvas-basierte Bild-Erstellung
  • 📤 Auto-Upload - Automatischer Upload zu Zipline/OCB CDN
  • ⚙️ YAML-Konfiguration - Einfach anpassbare Konfiguration
  • 🔐 Umgebungsvariablen - Sichere Credential-Verwaltung
  • Vollständig getestet - 33+ Unit & Integration Tests
  • 📊 Session Management - State-basierte Chat-Flows

📁 Projekt-Struktur

steam-bot/
├── config/
│   └── pb-creator.yml          # YAML-Konfiguration (editierbar)
├── public/
│   ├── *.png                   # Hintergrundbilder für Ränge
│   └── play.ttf                # Schriftart
├── src/
│   ├── __tests__/              # Test-Suites
│   │   ├── handlers/           # Handler Tests
│   │   ├── managers/           # Manager Tests
│   │   └── services/           # Service Tests
│   ├── config/
│   │   ├── config-loader.ts    # YAML Config Loader
│   │   └── env.config.ts       # Environment Config
│   ├── handlers/
│   │   └── command.handler.ts  # Command Routing
│   ├── managers/
│   │   └── user-state.manager.ts # Session Management
│   ├── services/
│   │   ├── chat-flow.service.ts  # Multi-Step Chat Flow
│   │   ├── image.service.ts      # Bild-Generierung
│   │   ├── upload.service.ts     # Zipline Upload
│   │   └── steam-bot.service.ts  # Steam Bot Integration
│   ├── types/
│   │   └── index.ts             # TypeScript Interfaces
│   ├── index.ts                 # Demo Entry Point
│   └── bot.ts                   # Steam Bot Entry Point
├── .env.example                 # Beispiel Umgebungsvariablen
├── .gitignore
├── package.json
├── tsconfig.json
├── vitest.config.ts
└── README.md

🚀 Installation

npm install

🔐 Konfiguration

1. Umgebungsvariablen

Kopiere .env.example zu .env und fülle die Werte:

cp .env.example .env

Bearbeite .env:

# Steam Account Credentials
STEAM_ACCOUNT_NAME=your_steam_username
STEAM_ACCOUNT_PASSWORD=your_steam_password

# Upload Configuration
UPLOAD_URL=https://images.ocb.gg
UPLOAD_JWT=your_upload_jwt_token

# Bot Configuration
BOT_NAME=OCB ProfilBild Bot
BOT_PERSONA_STATE=1

# Environment
NODE_ENV=development

⚙️ Konfiguration

Bearbeite config/pb-creator.yml:

# Nachrichten anpassen
messages:
  PB_CREATE:
    - "Willkommen im Profilbild-Editor von OCB."
    - "..."

# Modi hinzufügen/ändern
PB_edit_mode:
  - id: "1"
    name: "normal"
    label: "Standard Profil Bilder"

# Ränge konfigurieren
PB_ranks:
  - # Array für Modus 1
    - id: "1"
      name: "trial"
      label: "Trial Member"

# Canvas-Einstellungen
canvas:
  width: 1500
  height: 1500
  maxTextWidth: 855
  defaultFontSize: 180
  textPositionY: 1177
  fontPath: "public/play.ttf"
  fontFamily: "Play"

# Upload-Einstellungen
upload:
  enabled: true
  url: "https://images.ocb.gg"
  endpoint: "/api/upload"

🎮 Verwendung

Demo-Modus (ohne Steam)

Für lokale Tests ohne Steam-Verbindung:

npm start
Steam Bot Modus

Startet den vollständigen Steam Bot:

npm run bot
Development (mit Auto-Reload)
# Demo-Modus
npm run dev

# Steam Bot
npm run dev:bot
Build
npm run build

🧪 Tests

Alle Tests ausführen
npm test
Tests im Watch-Modus
npm run test:watch
Test Coverage
npm run test:coverage

Test-Ergebnisse:

  • ✅ 33 Tests
  • ✅ UserStateManager (14 Tests)
  • ✅ CommandHandler (8 Tests)
  • ✅ ChatFlowService (11 Tests)

📝 Chat-Flow

  1. User: pb erstellen
  2. Bot: Zeigt verfügbare Modi (1-3)
  3. User: 1 (wählt Modus)
  4. Bot: Zeigt verfügbare Ränge
  5. User: 2 (wählt Rang)
  6. Bot: Bittet um Namen
  7. User: TestPlayer123
  8. Bot: Zeigt Zusammenfassung
  9. User: 1 (bestätigt)
  10. Bot: Erstellt Bild und lädt hoch

🔧 Verfügbare Befehle

  • pb erstellen - Startet Profilbild-Erstellung
  • hilfe - Zeigt Hilfe-Text
  • abbrechen - Bricht aktuellen Vorgang ab

📦 Module

ConfigLoader (src/config/config-loader.ts)

Lädt YAML-Konfiguration mit Singleton-Pattern.

EnvConfig (src/config/env.config.ts)

Verwaltet Umgebungsvariablen aus .env mit Validierung.

SteamBotService (src/services/steam-bot.service.ts)

Vollständige Steam-Integration:

  • Login/Logout Management
  • Freundschaftsanfragen automatisch annehmen
  • Chat-Message Routing
  • Automatischer Reconnect bei Verbindungsverlust
  • Steam Guard Support
ImageService (src/services/image.service.ts)

Generiert Profilbilder mit Canvas:

  • Automatische Text-Skalierung
  • Font-Registrierung
  • Text-Metriken-Debugging
UploadService (src/services/upload.service.ts)

Lädt Bilder zu Zipline/OCB CDN:

  • FormData Upload
  • Automatische Datei-Löschung nach Upload
  • JWT-Authentifizierung
UserStateManager (src/managers/user-state.manager.ts)

Verwaltet User-Sessions:

  • State-basierte Chat-Flows
  • Selector-Management
  • Session-Reset
ChatFlowService (src/services/chat-flow.service.ts)

Implementiert mehrstufigen Chat-Flow:

  • Welcome → Mode → Rank → Name → Confirm → Generate
  • Fehlerbehandlung
  • Validierung
CommandHandler (src/handlers/command.handler.ts)

Routet Befehle:

  • Globale Commands (hilfe, abbrechen)
  • Session-basiertes Routing
  • Statistiken

🎨 Anpassungen

Neue Ränge hinzufügen
  1. Füge PNG-Datei in public/ hinzu
  2. Bearbeite config/pb-creator.yml:
PB_ranks:
  - # Dein Modus
    - id: "8"
      name: "new-rank"
      label: "Neuer Rang"
Neue Modi hinzufügen
PB_edit_mode:
  - id: "4"
    name: "special"
    label: "Special Edition"

PB_ranks:
  - [...] # Modus 1
  - [...] # Modus 2
  - [...] # Modus 3
  - # Modus 4 (neu)
    - id: "1"
      name: "special-member"
      label: "Special Member"

🐛 Debugging

Aktiviere Metriken-Output in image.service.ts (bereits aktiviert):

console.log('=== Text Metriken ===');
console.log('Name:', name);
console.log('Finale Schriftgröße:', fontSize);
// ...

📄 Lizenz

MIT

Tag summary

Content type

Image

Digest

sha256:f92292d25

Size

133.1 MB

Last updated

9 months ago

docker pull otherscantbeat/pb:v1.0.0