mirror of
https://github.com/migatu/conjurer.git
synced 2026-07-15 14:22:13 +00:00
74 lines
3.1 KiB
Markdown
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`).
|
|
```
|
|
```
|