Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Notable changes to `@leemour/tg-cli`. One section per version, newest first; versions follow
[semantic versioning](https://semver.org), so before `1.0.0` the command interface may still change.

## Unreleased
## 0.23.0 — 03.10.2026

### What's new

Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ tg bot list --check # every bot on this computer
- **Recipients and a journal.** Each bot has its own list of chats it may write to, and a journal
of what it did, without the text.
- **Messages and chats.** Send, edit, delete and pin, to a chat by id or by title, or to a person
as `user:<id>`; `--md`, `--html`, a file or a photo. A Telegram bot cannot read a chat's history:
`messages list` shows what this bot sent and received on this computer.
as `user:<id>`; `--md`, `--html`, a file or a photo. `messages list` shows what this bot sent,
received or imported on this computer. `bot store fetch` imports older channel and supergroup
messages through a separate MTProto session; private chats and basic groups are unsupported.
- **Admins, members, buttons, the menu, webhooks.** `bot chats admins`, `bot chats members remove`,
`bot callbacks answer`, `bot commands`, `bot webhooks` — the same commands `max bot` has.
- **`bot watch`** prints what happens in the bot's chats as it arrives, and keeps it: that is the
Expand Down
4 changes: 2 additions & 2 deletions docs/mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,13 +194,13 @@ no fields, only the one button. The client's own window shows the arguments as t
| `tg_messages_photo` | `tg messages download` | a message's photo as an image to look at, up to 512 KB; anything else is refused with the `tg messages download` command that saves it |
| `tg_messages_transcribe` | `tg messages transcribe` | a voice message as text — by Telegram (Premium or the weekly trial), else by a speech model on this machine; `local: true` skips Telegram; `pending: true` means Telegram was not finished within a minute; a missing model is refused with `tg models audio download`, never downloaded |
| `tg_messages_search` | `tg messages search` | search what this machine has kept; never asks Telegram |
| `tg_messages_send` | `tg messages send`, `--reply-to` | send, by `messages.send`; `reply_to` answers a message; `send_id` repeats a send whose outcome was unknown; `silent`, `no_preview` and `md` as `--silent`, `--no-preview` and `--md`; `at_time` sends it later — never retried, the confirmation form shows the clock time; `file` or `photo` attaches a path from this machine, the text as the caption (`as_file` keeps a video a file), `voice` sends an Ogg Opus file as a voice message — hidden files, `~/.ssh`, tg's own folders and the message store are refused, with no way around it over MCP |
| `tg_messages_send` | `tg messages send`, `--reply-to`, `--topic` | send, by `messages.send`; `topic` chooses an open forum topic, and `reply_to` must belong to it; `send_id` repeats a send whose outcome was unknown with the same chat and topic; `silent`, `no_preview` and `md` as `--silent`, `--no-preview` and `--md`; `at_time` sends it later — never retried, the confirmation form shows the clock time; `file` or `photo` attaches a path from this machine, the text as the caption (`as_file` keeps a video a file), `voice` sends an Ogg Opus file as a voice message — hidden files, `~/.ssh`, tg's own folders and the message store are refused, with no way around it over MCP |
| `tg_messages_edit` | `tg messages edit` | the new text of the owner's own message, by `messages.edit`; `md` as `--md`; repeating it changes nothing |
| `tg_chats_mark_read` | `tg chats mark-read` | mark a chat read, to its newest message or `until` one, by `chats.mark-read` — the other side sees it |
| `tg_messages_delete` | `tg messages delete` | up to 10 messages from the owner's view, by `messages.delete` — a form first by default; never for everyone; each counts toward the hourly limit |
| `tg_reactions_add`, `tg_reactions_remove` | `tg reactions add`, `remove` | the owner's reaction on one message, by `reactions`; the confirmation form shows the emoji |
| `tg_polls_show` | `tg polls show` | a poll and its answer ids; a read tool |
| `tg_polls_vote`, `tg_polls_close`, `tg_polls_create` | `tg polls vote`, `close`, `create` | vote by answer id (`polls.vote`), close the owner's own poll (`polls.close`), create one (`polls.create`, with `send_id` for a retry and `revote` to let people change their vote) |
| `tg_polls_vote`, `tg_polls_close`, `tg_polls_create` | `tg polls vote`, `close`, `create`, `--topic` | vote by answer id (`polls.vote`), close the owner's own poll (`polls.close`), create one (`polls.create`, with `topic` for an open forum topic, `send_id` for a retry in the same chat and topic, and `revote` to let people change their vote) |
| `tg_messages_forward` | `tg messages forward` | one message into another chat (`to`), by `messages.forward`; `send_id` repeats a forward whose outcome was unknown |
| `tg_messages_pin`, `tg_messages_unpin` | `tg messages pin`, `unpin` | pin one message, quietly unless `notify`, by `messages.pin` and `messages.unpin` |
| `tg_chats_create`, `tg_chats_join`, `tg_chats_leave` | `tg chats create`, `join`, `leave` | make a group or channel with these people, join one by its link, leave one — the others see each |
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@leemour/tg-cli",
"version": "0.22.0",
"version": "0.23.0",
"description": "A local command line interface for a personal Telegram account, built for agents and scripts",
"license": "MIT",
"author": "Viacheslav Ptsarev",
Expand Down
2 changes: 1 addition & 1 deletion src/version.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export const VERSION = "0.22.0"
export const VERSION = "0.23.0"
Loading