Files
conjurer/conanjurer/README.md
T
2026-06-04 19:13:50 +02:00

74 lines
3.1 KiB
Markdown

# Tovah-Zar — Most Discord ⇄ Conan Exiles
Dwukierunkowy most między serwerem Conan Exiles (Enhanced) a serwerem Discord.
Działa w trybie podstawowym **bez moda** (natywny RCON + log serwera), a z małym modem
mostu (Chat V2 API) zyskuje komendy in-game i wiadomości RP z nadawcą.
## Co potrafi
**Conan → Discord**
- Relacja czatu z gry na żywo na kanał Discorda.
- Powiadomienia: logowania/wylogowania, zgony, eventy GM.
- (z modem) `/discord <tekst>` w grze → wiadomość na Discord.
**Discord → Conan**
- `!say <tekst>``broadcast` w grze (widzą wszyscy) — DZIAŁA NA SAMYM RCON.
- `!players` → lista graczy online (RCON `listplayers`).
- `!kick`, `!ban` (tylko role GM).
- (z modem) `!ogłoś <NPC> <tekst>` → wiadomość RP z nadawcą (np. „Król Khasar: ...").
## Architektura
```
┌──────────────────────────────────────────┐
│ BOT (Python, ten projekt) │
Discord ◄───►│ discord.py ──► RCON client ──► Conan │
│ ▲ (TCP, komendy) │
│ │ │
│ log watcher ◄── SFTP/lokalny log Conana ◄───┤ Conan pisze log
└──────────────────────────────────────────┘
```
- **RCON** = kanał Discord→Conan (komendy z efektem w grze).
- **Log watcher** = kanał Conan→Discord (czat/zdarzenia z gry).
- Bot stoi na VPS lub Twoim NUC-u (na wynajętym Host Havoc nie ma dostępu do OS maszyny — łączy się zdalnie po RCON + SFTP).
## Szybki start
```bash
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # uzupełnij dane
python -m bot.main
```
## Wymagania po stronie Conan/Host Havoc
- Włączony **RCON** (w panelu Host Havoc / `Engine.ini`): `RconEnabled=True`, `RconPassword=...`, `RconPort=...`.
- Dostęp do pliku logu serwera: lokalnie (self-host) lub przez **SFTP** (Host Havoc).
## Struktura plików
```
conan-discord-bridge/
├── README.md
├── requirements.txt
├── .env.example
├── config.example.toml
└── bot/
├── main.py # punkt wejścia, ładuje cogs
├── core/
│ ├── config.py # ładowanie .env / toml
│ ├── rcon.py # klient Source RCON (async)
│ └── logwatch.py # tail logu lokalnie lub po SFTP + parser
└── cogs/
├── from_conan.py # Conan -> Discord (relacja czatu/eventów)
└── to_conan.py # Discord -> Conan (komendy RCON)
```
## Most z własnym modem (opcjonalnie, później)
Mały mod na **Tot ! Chat V2 API** definiuje:
- komendę `/discord <tekst>` → zapisuje znacznik do logu, który bot wykrywa,
- kanał RP, na który bot (przez RCON-owy hook) wysyła wiadomości „z nadawcą".
Bot jest na to gotowy — patrz `cogs/to_conan.py` (funkcja `rp_announce`).
```
```