send / send-file / edit / delete / react / mark-read
Send messages, edit messages, delete messages, add reactions, and mark as read.
send
Send a text message via LOCO WRITE command.
openkakao-rs send <chat_id> "message" [OPTIONS]| Flag | Description |
|---|---|
-y, --yes | Skip confirmation prompt |
--force | Allow sending to open chats |
--json | Output result as JSON (global flag) |
When --json is set, a successful send returns:
{"chat_id": 382416827148557, "log_id": 123456789, "status": "sent"}If you use -y, you must also allow unattended send behavior:
- CLI:
--unattended --allow-non-interactive-send - or config:
mode.unattended = trueandsend.allow_non_interactive = true
Unattended sends are rate-limited by safety.min_unattended_send_interval_secs so a bad wrapper cannot burst messages immediately.
Messages are prefixed with 🤖 [Sent via openkakao] by default. Use the global --no-prefix flag to disable:
openkakao-rs --unattended --allow-non-interactive-send --no-prefix send <chat_id> "raw message" -ysend-file
Send a file (photo, video, or document) via LOCO SHIP+POST.
openkakao-rs send-file <chat_id> <file> [OPTIONS]| Flag | Description |
|---|---|
-y, --yes | Skip confirmation prompt |
--force | Allow sending to open chats |
As with text sends, -y requires unattended send permission.
The media type is auto-detected from file magic bytes:
| Magic Bytes | Type | LOCO Code |
|---|---|---|
FF D8 | JPEG photo | 2 |
89 50 4E 47 | PNG photo | 2 |
GIF8 | GIF animation | 14 |
ftyp (offset 4) | MP4/MOV video | 3 |
1A 45 DF A3 | WebM video | 3 |
| Other | Generic file | 26 |
send-photo
Alias for send-file. Identical behavior.
openkakao-rs --unattended --allow-non-interactive-send send-photo <chat_id> photo.jpg -yedit
Edit a message via LOCO REWRITE command.
openkakao-rs edit <chat_id> <log_id> "new message" [OPTIONS]| Flag | Description |
|---|---|
-y, --yes | Skip confirmation prompt |
--force | Allow editing in open chats |
--json | Output result as JSON (global flag) |
When --json is set:
{"chat_id": 382416827148557, "log_id": 123456789, "status": "edited"}As with send, -y requires unattended send permission.
macOS dtype=2 restriction
REWRITE returns error -203 on macOS. This is a server-enforced platform restriction — message editing only works on Android (dtype=1). The command is implemented for future cross-platform support.
delete
Delete a message via LOCO DELETEMSG. The message is replaced by a system feed (feedType:14) in DM chats.
openkakao-rs delete <chat_id> <log_id> [OPTIONS]| Flag | Description |
|---|---|
-y, --yes | Skip confirmation prompt |
--force | Allow deleting in open chats |
--json | Output result as JSON (global flag) |
When --json is set:
{"chat_id": 382416827148557, "log_id": 123456789, "status": "deleted"}As with send, -y requires unattended send permission (--unattended --allow-non-interactive-send or the equivalent config).
MemoChat limitation
DELETEMSG returns status=0 in MemoChat but the message is not actually deleted on mobile — the message type changes to 16385 instead of being removed.
react
Add a reaction to a message via LOCO ACTION command.
openkakao-rs react <chat_id> <log_id> [OPTIONS]| Flag | Description |
|---|---|
-t, --type <N> | Reaction type (default: 1 = like) |
--json | Output result as JSON (global flag) |
When --json is set:
{"chat_id": 382416827148557, "log_id": 123456789, "reaction_type": 1, "status": "reacted"}macOS dtype=2 restriction
Only reaction type 1 (like) is supported on macOS. Other types (0, 2–16, 100) return error -203.
mark-read
Mark messages as read up to a specific logId via LOCO NOTIREAD. This is a fire-and-forget command — no response is expected from the server.
openkakao-rs mark-read <chat_id> <log_id> [OPTIONS]| Flag | Description |
|---|---|
--json | Output result as JSON (global flag) |
When --json is set:
{"chat_id": 382416827148557, "watermark": 123456789, "status": "marked_read"}