Files
utun2/tools/chatcli_commands.txt
T

122 lines
6.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
chatcli — headless chat CLI for uTun
=====================================
TCP JSON-RPC клиент для управления чатом uTun без GUI.
Настройка сервера
-----------------
В конфиге uTun в секции [chatserver] добавить:
headless_control_bind=127.0.0.1:9999
Протокол
--------
JSON line: запрос {"id":N,"cmd":"...","params"} → ответ {"id":N,"ok":true,"data":...}
При подписке (subscribe) сервер шлёт асинхронные события: {"event":"...",...}
Переменные окружения
--------------------
CHATCLI_HOST — хост по умолчанию (127.0.0.1)
CHATCLI_PORT — порт по умолчанию (9999)
Команды
-------
ping
Проверка соединения и uptime сервера.
Пример: chatcli ping
status
Статус узла: NTP синхронизация, активные соединения, NAT.
Пример: chatcli status
channels
Список всех каналов с метаданными: id, имя, owner, число мемберов,
число сообщений, сколько онлайн.
Пример: chatcli channels
members <ch_id>
Список участников канала с полным состоянием:
node_id, имя, online, connected, публичные ключи (x25519/ed25519 hex),
адреса (ip, port, proto, rtt).
Пример: chatcli members 12345
messages <ch_id> [count]
Последние N сообщений канала (по умолчанию 20):
id, timestamp, author_id, author_name, content_type, data.
Пример: chatcli messages 12345 10
send <ch_id> <text>
Отправить текстовое сообщение в канал.
Пример: chatcli send 12345 "hello world"
attach <ch_id> <path> [--video]
Прикрепить файл к сообщению. Файл копируется в медиа-каталог канала.
С флагом --video — файл обрабатывается как видео: если ffmpeg доступен,
перекодируется в H.264/MP4 (720p, ≤2 Мбит); если уже в нужном формате —
отправляется как есть.
Пример: chatcli attach 12345 /tmp/photo.jpg
chatcli attach 12345 /tmp/clip.mov --video
poll <ch_id> <question> <option1> <option2> ... [--multiple] [--custom]
Создать неизменяемый опрос. По умолчанию разрешён один пункт.
--multiple разрешает несколько пунктов; --custom разрешает собственный текст.
Пример: chatcli poll 12345 "Куда пойдём?" "В парк" "В кафе" --multiple --custom
Ответ содержит message_id; он также виден в команде messages.
vote <ch_id> <message_id> [option_id ...] [--custom <text>]
Сохранить полный новый ответ. Номера пунктов начинаются с 0, как id в feedback.
Пустой выбор без собственного текста отменяет голос, сохраняя новый ver.
При выборе одного пункта свой ответ заменяет готовый пункт; при нескольких дополняет выбор.
Пример: chatcli vote 12345 <message_id> 0 1 --custom "Ещё один вариант"
chatcli vote 12345 <message_id>
react <ch_id> <message_id> [emoji_or_id] [--off] [--clear]
Установить единственную реакцию, заменив предыдущую; --off снимает выбранную, --clear отменяет свою реакцию.
Пример: chatcli react 12345 <message_id> "👍"
chatcli react 12345 <message_id> 0 --off
chatcli react 12345 <message_id> --clear
reactions
Общий каталог постоянных номеров и эмодзи.
feedback <ch_id> <message_id>
Текущие реакции, свои состояния, результаты и подписанные ответы участников.
Для нескольких пунктов проценты считаются от числа ответивших и могут суммарно превышать 100%.
Отсутствующее исходное сообщение обозначается pending; ответы сохраняются до его получения.
invite <ch_id> [node_id]
Создать invite-ссылку для канала (формат utun://...).
Без node_id — автоматический выбор лучшего достижимого узла.
С node_id — ссылка ведёт на указанный узел (hex, например 0x1234).
Ссылка включает pubkey, адреса выбранного узла и ID канала.
Пример: chatcli invite 12345
chatcli invite 12345 0x1a2b3c
invite_nodes <ch_id>
Список достижимых узлов канала, пригодных для invite (включая свой узел).
Ответ содержит auto_node_id — узел, выбранный авто-логикой,
и список nodes (node_id, имя).
Пример: chatcli invite_nodes 12345
connect <utun://...>
Подключиться к каналу по invite-ссылке.
Декодирует ссылку, сохраняет pubkey и адреса узла в БД,
запускает процесс подключения.
Пример: chatcli connect utun://AgR0ZXN0...
create <name>
Создать новый канал. Генерирует ключи X25519/Ed25519,
подписывает join-сообщение.
Пример: chatcli create "My Group"
listen
Подписаться на события и слушать в реальном времени.
Получает: новые сообщения, изменения мемберов, приглашения.
Выход: Ctrl+C
Пример: chatcli listen
Настройки хоста/порта
---------------------
chatcli --host 192.168.1.1 --port 8888 channels
CHATCLI_HOST=10.0.0.1 CHATCLI_PORT=7777 chatcli status