# Дебаг-команды для headless-ботов

Два способа: кнопки на дашборде **http://127.0.0.1:7780/** (панель «Дебаг-команды») или напрямую в браузере / PowerShell.

Формат: `http://127.0.0.1:7780/api/cmd?do=КОМАНДА&name=НИК_БОТА&arg=АРГУМЕНТ`
`name` пустой — берётся случайный живой бот. В дашборде клик по боту в списке подставляет его ник автоматически.

## Телеметрия и экономика (SPP 3)

| Команда | Что делает |
|---|---|
| `do=stats` | счётчики по всему населению: kills, exp, loot, itemsSold, adenaEarned/Spent, stores, skillsCast, rests, lines, replies, parties, migrations, professions, sieges + сколько сейчас в бою/сидит/торгует/в пати/на осаде |
| `do=stats&name=Ник` | то же для одного бота + последнее действие, шоты, инвентарь, HP |
| `do=list` | 25 ботов: класс, характер, зона, HP, убийства/смерти, последнее действие |
| `do=brain&name=Ник` | роль, скиллы профиля (+/-), цель и её HP, бьёт/кастует/сидит, оружие, шоты, число бафов, атака/защита |
| `do=town` | бот делает «поход в город» прямо на месте: продаёт хлам, докупает шоты/банки, бафается; ответ — сколько продано/куплено и адена |
| `do=trade` | лавка в городе своего уровня (если продавать нечего — выдаётся образец товара) |
| `do=profession` | попытка взять следующую профу (сообщит, если не положена по уровню) |
| `do=talk&name=Бот&arg=ТвойНик` | два бота телепортируются к тебе и начинают диалог (вопрос → ответ через разбор интентов) |
| `do=invite&arg=ТвойНик` | бот прыгает к тебе и **приглашает в пати** (окно приглашения у тебя) |
| `do=siege&arg=Giran` | форс-осада: регистрирует бот-кланы атакующими и запускает осаду движка; `do=siegeend&arg=Giran` — закончить; `do=siegeinfo` — расписание, зарегистрированные кланы, сколько ботов в бою |
| `do=online&arg=charId` | подгрузить конкретного сид-персонажа в мир (так осадный менеджер подтягивает лидеров кланов) |

`/api/stats` — то же, что `do=stats`, в JSON; `/api/sieges` — как `do=siegeinfo`.

## Уровень и переезд

| Команда | Что делает |
|---|---|
| `do=levelup` | **+1 уровень** боту. На следующем тике (до 3 сек) бот сам порадуется в чат, а при переходе тира — попрощается и уедет в новую зону |
| `do=migrate` | немедленный переезд в зону по своему уровню, с прощальной фразой |

Пример: `http://127.0.0.1:7780/api/cmd?do=levelup&name=Eladrael`
Нажать 8 раз подряд — увидишь пересечение границы тира и переезд.

## Торговля

| Команда | Что делает |
|---|---|
| `do=trade` | бот телепортируется в центр Гирана и **открывает настоящую лавку** (можно подойти и купить) |
| `do=tradeall&arg=10` | открыть лавки сразу у 10 ботов (до 50) — рынок за 5 секунд |
| `do=closeshop` | закрыть лавку |

## Взаимодействие с тобой

| Команда | Что делает |
|---|---|
| `do=come&arg=ТвойНик` | телепортировать бота к тебе |
| `do=party&arg=ТвойНик` | бот телепортируется и вступает в **настоящую пати** с тобой |
| `do=gank&arg=ТвойНик` | бот прыгает к тебе и атакует с дерзкой фразой (проверка PvP) |
| `do=clanwar&arg=ТвойНик` | объявить войну между кланом бота и твоим кланом (нужны кланы у обоих) |

## Речь, память, смерть

| Команда | Что делает |
|---|---|
| `do=say` | бот говорит случайную реплику из шва `ambient` (или LLM, если Ollama запущена) |
| `do=say&arg=текст` | бот говорит ровно этот текст |
| `do=rumor&arg=ТвойНик` | вложить боту слух про тебя — потом при встрече он его выдаст («говорят ты…») |
| `do=kill` | убить бота: он ложится, через ~15 сек **встаёт в ближайшем городе** и через минуту возвращается на спот |
| `do=list` | первые 25 ботов: ник, уровень, характер, зона, статус |

## Проверка разговоров без игры

На дашборде секция «Тестер диалога»: пишешь фразу (можно транслитом — `IIoMoruTe`, `privet`), видишь нормализацию → интент → шов → ответ, справа подсвечивается выбранная строка в списке вариантов шва.

В игре: шёпот боту (`"Ник текст`) — теперь работает, «Offline mode» исправлено.

## Быстрый сценарий проверки всего

1. `do=tradeall&arg=15` → идёшь в Гиран, там 15 лавок, заходишь в любую и покупаешь.
2. `do=party&arg=ТвойНик` → окно пати, бот рядом, бьёт твои цели.
3. `do=gank&arg=ТвойНик` → PvP, флаг, бот кричит.
4. `do=kill` → смотришь, что бот встал в городе.
5. `do=levelup` несколько раз → реакция в чат и переезд.
6. Шёпот боту «помоги» → он бежит; «ты бот?» → отнекивается.
