better-tg-cli 0.29.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.es.md ADDED
@@ -0,0 +1,374 @@
1
+ <div align="center">
2
+ <picture>
3
+ <source srcset="https://raw.githubusercontent.com/TheVilfer/better-tg-cli/main/assets/banner-dark.png" media="(prefers-color-scheme: dark)"/>
4
+ <source srcset="https://raw.githubusercontent.com/TheVilfer/better-tg-cli/main/assets/banner-light.png" media="(prefers-color-scheme: light)"/>
5
+ <img src="https://raw.githubusercontent.com/TheVilfer/better-tg-cli/main/assets/banner-light.png" alt="better-tg-cli"/>
6
+ </picture>
7
+
8
+ [![npm version](https://img.shields.io/npm/v/better-tg-cli?style=flat&colorA=000000&colorB=000000)](https://www.npmjs.com/package/better-tg-cli)
9
+ [![CI](https://img.shields.io/github/actions/workflow/status/TheVilfer/better-tg-cli/ci.yml?branch=main&label=ci&style=flat&colorA=000000&colorB=000000)](https://github.com/TheVilfer/better-tg-cli/actions/workflows/ci.yml)
10
+ [![npm provenance](https://img.shields.io/badge/npm-provenance-000000?style=flat&colorA=000000&colorB=000000&logo=npm)](https://www.npmjs.com/package/better-tg-cli#provenance)
11
+ [![install size](https://img.shields.io/npm/unpacked-size/better-tg-cli?label=size&style=flat&colorA=000000&colorB=000000)](https://www.npmjs.com/package/better-tg-cli)
12
+ [![dependencies](https://img.shields.io/badge/dependencies-0-000000?style=flat&colorA=000000&colorB=000000)](package.json)
13
+ [![MCP](https://img.shields.io/badge/MCP-server-000000?style=flat&colorA=000000&colorB=000000)](#servidor-mcp)
14
+ [![platforms](https://img.shields.io/badge/macOS%20%C2%B7%20Linux-000000?style=flat&colorA=000000&colorB=000000&logo=apple)](#instalación)
15
+ [![license](https://img.shields.io/badge/license-MIT-000000?style=flat&colorA=000000&colorB=000000)](LICENSE)
16
+
17
+ <p>
18
+ <a href="#instalación">Instalación</a> · <a href="skills/better-tg-cli/reference.md">Referencia</a> · <a href="SECURITY.md">Seguridad</a> · <a href="https://github.com/TheVilfer/better-tg-cli/issues">Issues</a> · <a href="README.md">English</a> · <a href="README.ru.md">Русский</a>
19
+ </p>
20
+ </div>
21
+
22
+ https://github.com/user-attachments/assets/d143f7c7-7d50-439c-b373-cbcbff5a6675
23
+
24
+ Un cliente de línea de comandos no oficial para Telegram, pensado para agentes, que funciona **con tu
25
+ propia cuenta** (MTProto mediante [`teleproto`](https://www.npmjs.com/package/teleproto), TL layer 229).
26
+ El comando es `telegram`: unos 60 comandos para leer, buscar, escribir, bots, grupos y exportaciones,
27
+ diseñados para que los agentes de IA (Claude Code, Codex, …) puedan manejarlo de forma barata y segura.
28
+
29
+ ```console
30
+ $ telegram inbox -n 3
31
+ 48 unread in 7 chats (showing 3)
32
+ 1234567890 user unread=2 Alice @alice | see you at 7?
33
+ -1001234567 supergroup muted unread=41 Rust Seattle @rust_sea | anyone tried 1.90?
34
+ -1009876543 channel unread=5 Changelog | v2.4 is out
35
+ $ telegram read @alice -n 1 --json
36
+ {"chatTitle":"Alice","messages":[{"id":812,"date":"2026-09-27T10:02:11.000Z","sender":"Alice","senderId":"1234567890","text":"see you at 7?"}]}
37
+ ```
38
+
39
+ > [!WARNING]
40
+ > **Tu cuenta, tu riesgo.** Este es un cliente no oficial que inicia sesión como tú. Telegram puede
41
+ > limitar o congelar las cuentas que se comportan como bots. El riesgo es mayor para las cuentas
42
+ > nuevas, los envíos masivos, las uniones o invitaciones en masa y todo lo que parezca spam. Úsalo
43
+ > como usarías Telegram tú mismo, mantén la escritura desactivada salvo que la necesites y lee
44
+ > [SECURITY.md](SECURITY.md) antes de dejar que un agente escriba. Los autores no se hacen
45
+ > responsables de las cuentas restringidas.
46
+
47
+ **Contenido:** [Por qué este fork](#por-qué-este-fork) · [Instalación](#instalación) · [Inicio de sesión](#inicio-de-sesión) · [Uso](#uso) · [Servidor MCP](#servidor-mcp) · [FAQ](#faq) · [Desarrollo](#desarrollo) · [Privacidad](#privacidad) · [Licencia](#licencia)
48
+
49
+ ## Por qué este fork
50
+
51
+ Un fork de [skillhq/telegram](https://github.com/skillhq/telegram), rehecho para agentes:
52
+
53
+ - **Capa de Telegram actual.** Las respuestas de bots con contenido enriquecido (layer 228+) muestran
54
+ el texto real en lugar de `(no text)`. Puedes pulsar botones de bots (`click`) y recorrer sus menús.
55
+ - **Salida que ahorra tokens.** Fuera de una TTY obtienes una línea compacta por elemento con el ID
56
+ primero, y JSON en una sola línea sin los campos vacíos. `--max-text` recorta las publicaciones
57
+ largas. `telegram help-all -g <palabra>` muestra todos los flags, generados a partir del código.
58
+ - **Lecturas exactas.** Paginación real para `--since/--until`, `--unread`, hilos y comentarios de
59
+ canales, temas de foros, `get` por ID, filtros de búsqueda por tipo, remitente o fecha, y `me` /
60
+ `Избранное` para los Mensajes guardados.
61
+ - **Seguro por defecto.** La cuenta es de solo lectura hasta que una persona ejecuta
62
+ `write-access on [--for 1h]` y lo confirma en un prompt del terminal o en un diálogo de macOS, así
63
+ que un agente no puede activarlo por su cuenta. Cada escritura se registra en
64
+ `~/.config/tg/audit.jsonl`. Los secretos se guardan en el Keychain de macOS, en el Secret Service
65
+ de Linux o en 1Password.
66
+ - **Pequeño y autónomo.** El paquete de npm es un único archivo de 0,3 MB sin dependencias en tiempo
67
+ de ejecución. Homebrew instala un binario independiente que no necesita Node.
68
+
69
+ ## Instalación
70
+
71
+ ```bash
72
+ brew install thevilfer/tap/better-tg-cli # binario independiente, macOS y Linux
73
+ npm install -g better-tg-cli # Node >= 20, cualquier sistema operativo
74
+ ```
75
+
76
+ En Windows (experimental), con [Scoop](https://scoop.sh) o npm:
77
+
78
+ ```powershell
79
+ scoop bucket add thevilfer https://github.com/TheVilfer/scoop-bucket
80
+ scoop install better-tg-cli
81
+ ```
82
+
83
+ El `telegram.exe` de Windows no tiene firma de código, así que SmartScreen puede mostrar una
84
+ advertencia al descargarlo desde la release.
85
+
86
+ `telegram update` actualiza una instalación existente, sea cual sea el método que usaste. En un
87
+ terminal, el CLI busca nuevas versiones una vez al día. Los agentes y los pipes nunca ven ese aviso,
88
+ y `TG_NO_UPDATE_CHECK=1` lo desactiva.
89
+
90
+ ¿Descargas a mano un binario desde Releases en macOS? No está notarizado, así que quítale la marca de
91
+ cuarentena una vez: `xattr -d com.apple.quarantine ./telegram`. Homebrew lo hace por ti.
92
+
93
+ **No** instales `@skillhq/telegram`. Es la build antigua del upstream sobre GramJS (layer 198).
94
+
95
+ Todos los canales distribuyen la misma versión desde una única release:
96
+
97
+ | Dónde | Qué obtienes | Instalación |
98
+ |---|---|---|
99
+ | [Homebrew](https://github.com/TheVilfer/homebrew-tap) | binario independiente | `brew install thevilfer/tap/better-tg-cli` |
100
+ | [npm](https://www.npmjs.com/package/better-tg-cli) | CLI y servidor MCP (Node 20+) | `npm install -g better-tg-cli` |
101
+ | [Scoop](https://github.com/TheVilfer/scoop-bucket) (Windows, experimental) | `telegram.exe` independiente | `scoop bucket add thevilfer https://github.com/TheVilfer/scoop-bucket` y luego `scoop install better-tg-cli` |
102
+ | [GitHub Releases](https://github.com/TheVilfer/better-tg-cli/releases) | binarios y SHA256SUMS | descarga manual |
103
+ | Plugin de Claude Code | skill y servidor MCP | [ver abajo](#plugin-para-claude-code) |
104
+ | Extensión de Claude Desktop | servidor MCP, se ejecuta con el Node integrado de Claude | [descarga el `.mcpb`](https://github.com/TheVilfer/better-tg-cli/releases/latest/download/better-tg-cli.mcpb) y ábrelo |
105
+ | Plugin de Grok Build | skill y servidor MCP | [ver abajo](#plugin-para-grok-build) |
106
+ | Extensión de Gemini CLI | skill y servidor MCP | `gemini extensions install https://github.com/TheVilfer/better-tg-cli` |
107
+ | Cursor, VS Code | servidor MCP | [botones de un clic](#servidor-mcp) |
108
+ | Grok Bot | servidor MCP por HTTP desde tu Mac | [ver abajo](#grok-bot-mcp-remoto-por-http) |
109
+ | El propio CLI | skill de agente para Claude Code, Codex, Cursor, Gemini CLI y 7 más | `telegram skill install` |
110
+ | [skills.sh](https://skills.sh) | skill de agente para cualquier agente con shell | `npx skills add TheVilfer/better-tg-cli` |
111
+ | [MCP Registry](https://registry.modelcontextprotocol.io/v0/servers?search=better-tg-cli) | entrada del servidor MCP `io.github.TheVilfer/better-tg-cli` | desde tu cliente MCP |
112
+
113
+ ### Plugin para Claude Code
114
+
115
+ La skill y el servidor MCP juntos, en una sola instalación:
116
+
117
+ ```
118
+ /plugin marketplace add TheVilfer/better-tg-cli
119
+ /plugin install better-tg-cli@better-tg-cli
120
+ ```
121
+
122
+ Ejecuta el servidor MCP mediante `npx`, así que basta con Node 20+. Inicia sesión una vez con
123
+ `telegram auth --qr` (o `npx better-tg-cli auth --qr`) en un terminal.
124
+
125
+ ### Plugin para Codex
126
+
127
+ La misma skill y el mismo servidor MCP como plugin de Codex (también aparece en la app de escritorio
128
+ de ChatGPT):
129
+
130
+ ```bash
131
+ codex plugin marketplace add TheVilfer/better-tg-cli
132
+ codex plugin add better-tg-cli@better-tg-cli
133
+ ```
134
+
135
+ ### Plugin para Grok Build
136
+
137
+ [Grok Build](https://x.ai/cli) instala el mismo plugin, con la skill y el servidor MCP juntos:
138
+
139
+ ```bash
140
+ grok plugin install TheVilfer/better-tg-cli --trust
141
+ # o añade primero el marketplace y luego instala desde el menú /plugins:
142
+ grok plugin marketplace add TheVilfer/better-tg-cli && grok plugin install better-tg-cli --trust
143
+ ```
144
+
145
+ ### Como skill de agente
146
+
147
+ La skill ([`skills/better-tg-cli`](skills/better-tg-cli/SKILL.md)) enseña a cualquier agente con
148
+ shell (Claude Code, Codex, Cursor, Gemini CLI, OpenCode y otros) a usar el CLI de forma segura.
149
+ Comprueba la configuración, nunca inicia sesión por su cuenta, deja las escrituras sujetas a tu
150
+ aprobación y evita los patrones que llevan a un baneo. El CLI incluye la skill y la instala él mismo,
151
+ así que siempre coincide con tu versión:
152
+
153
+ ```bash
154
+ telegram skill install # en todos los agentes compatibles de esta máquina
155
+ telegram skill install -a claude-code codex
156
+ telegram skill status # instalada, desactualizada, enlazada o ausente, por agente
157
+ ```
158
+
159
+ Conoce Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, Grok Build, OpenCode, Goose, Droid,
160
+ Windsurf y Pi (`telegram skill status` lista las carpetas). Vuelve a ejecutarlo después de
161
+ `telegram update` para actualizar la skill. Una carpeta de skill que sea un enlace simbólico no se
162
+ toca a menos que pases `--force`. Para otros agentes, usa el CLI [skills](https://skills.sh):
163
+
164
+ ```bash
165
+ npx skills add TheVilfer/better-tg-cli # elige los agentes de forma interactiva
166
+ npx skills add TheVilfer/better-tg-cli -g -a claude-code -a codex -y
167
+ ```
168
+
169
+ ## Inicio de sesión
170
+
171
+ **A través de tu agente** (lo más fácil): pídele que configure Telegram o ejecuta tú mismo
172
+ `telegram onboard`. Abre una página en 127.0.0.1 donde obtienes una invitación de
173
+ [better-tg-cli.com](https://better-tg-cli.com) (vuelve sola a la página) o introduces tus propias
174
+ claves, escaneas un código QR y escribes tu contraseña de 2FA. El agente solo lanza el comando y
175
+ espera: nunca ve la invitación, el código QR ni la contraseña. La página solo responde en una ruta
176
+ secreta aleatoria y se cierra cuando terminas.
177
+
178
+ **Con tus propias claves de API** (la opción por defecto):
179
+ 1. Abre https://my.telegram.org/apps, crea una aplicación y copia su `api_id` y su `api_hash`.
180
+ 2. Ejecuta `telegram auth --qr` e introdúcelos. Después, en tu teléfono, ve a Ajustes → Dispositivos →
181
+ Vincular dispositivo de escritorio y escanea el código QR. Introduce tu contraseña de 2FA si
182
+ tienes una. El `telegram auth` sin más te pide en su lugar tu número de teléfono y un código de
183
+ inicio de sesión. Si el QR no se escanea con un tema claro del terminal, ejecútalo con
184
+ `TG_QR_INVERT=1`.
185
+
186
+ **Con una invitación.** Con un token de invitación no necesitas tus propias claves. Consigue uno en
187
+ [better-tg-cli.com](https://better-tg-cli.com) (confirma tu correo con un código; la página está en
188
+ ruso y también tiene una guía de instalación) o pídeselo al mantenedor.
189
+ Ejecuta `telegram auth --invite --qr` y pega el token, o pásalo como `TG_INVITE=…` o `--invite -`. El
190
+ servicio de invitaciones (`broker/`) entrega las claves de la aplicación una sola vez, solo para este
191
+ inicio de sesión. El `api_hash` no se guarda en tu máquina. Las invitaciones son personales, permiten
192
+ un número limitado de inicios de sesión y pueden revocarse.
193
+
194
+ La sesión se guarda en el Keychain de macOS (servicio `tg-cli`) o en 1Password con
195
+ `--op-vault <vault>`. `telegram logout` la elimina. En Linux va al Secret Service (GNOME Keyring,
196
+ KWallet, KeePassXC) a través de `secret-tool`, que necesita el paquete `libsecret-tools`. Una sesión
197
+ ya guardada en el archivo de configuración se traslada allí automáticamente. Sin ningún almacén de
198
+ secretos, la sesión se guarda en `~/.config/tg/config.json5` (modo 0600) y los comandos de escritura
199
+ siguen desactivados. En Linux, `write-access on` se confirma en un prompt del terminal. En Windows los
200
+ secretos se guardan en `%APPDATA%\tg\secrets.dpapi`, cifrados con DPAPI para tu usuario de Windows
201
+ (solo tú puedes descifrarlos en esta máquina), y `write-access on` pregunta en una ventana Sí/No
202
+ cuando no hay terminal.
203
+
204
+ ## Uso
205
+
206
+ ```bash
207
+ telegram chats --type channel # una línea por chat, con el ID primero
208
+ telegram read "Chat" --since 1h # rango exacto, lo más reciente primero (--asc para invertir)
209
+ telegram read @channel --thread 123 # comentarios de una publicación
210
+ telegram search "invoice" --chat "Work" --type document
211
+ telegram get "Chat" 812 813 # mensajes exactos por ID
212
+ telegram download "Chat" 812 # guarda el archivo adjunto
213
+ telegram sync --chat "Chat" --output ./export --resume # exportación incremental a markdown
214
+
215
+ telegram write-access on --for 1h # esto lo confirma una persona
216
+ telegram send @alice "on my way"
217
+ printf '%s' "$text" | telegram send @alice - # texto largo o de varias líneas: desde stdin, sin problemas de comillas
218
+ telegram reply "Chat" 812 "on it" --silent
219
+ telegram click @SomeBot 4410 "Settings" # pulsa un botón inline
220
+ ```
221
+
222
+ Los comandos de lectura aceptan `--json`, y algunos también `--markdown`. Consulta todos los comandos
223
+ con `telegram help-all`. [reference.md](skills/better-tg-cli/reference.md) cubre el comportamiento que
224
+ la lista de flags no puede explicar: formatos de salida, hilos, botones de bots, comandos de
225
+ administración y resolución de problemas.
226
+
227
+ ## Servidor MCP
228
+
229
+ Para clientes sin shell (Claude Desktop, Cursor y otros hosts MCP), `telegram mcp` ofrece tres
230
+ herramientas por stdio:
231
+ - `telegram_help`: una referencia de flags con búsqueda;
232
+ - `telegram_read`: de solo lectura, así que los clientes pueden aprobarla automáticamente;
233
+ - `telegram_write`: marcada como destructiva, y aun así necesita que tú actives `write-access on`.
234
+
235
+ Primero inicia sesión con `telegram auth` en un terminal. Después, instálalo con un clic:
236
+
237
+ [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=telegram&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImJldHRlci10Zy1jbGlAbGF0ZXN0IiwibWNwIl19)
238
+ [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_MCP-000000?style=flat&colorA=000000&colorB=000000)](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522telegram%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522better-tg-cli%2540latest%2522%252C%2522mcp%2522%255D%257D)
239
+ [![Claude Desktop extension](https://img.shields.io/badge/Claude_Desktop-.mcpb-000000?style=flat&colorA=000000&colorB=000000&logo=claude)](https://github.com/TheVilfer/better-tg-cli/releases/latest/download/better-tg-cli.mcpb)
240
+
241
+ La extensión de Claude Desktop no necesita Node, npm ni brew: descarga el `.mcpb` de la última
242
+ release y ábrelo. Gemini CLI instala la skill y el servidor juntos:
243
+ `gemini extensions install https://github.com/TheVilfer/better-tg-cli`. O añádelo a mano:
244
+
245
+ ```bash
246
+ claude mcp add telegram -- telegram mcp # Claude Code (o usa el plugin de arriba)
247
+ ```
248
+
249
+ ```json
250
+ { "mcpServers": { "telegram": { "command": "/opt/homebrew/bin/telegram", "args": ["mcp"] } } }
251
+ ```
252
+
253
+ Usa la forma JSON para Claude Desktop (`claude_desktop_config.json`) o Cursor (`.cursor/mcp.json`).
254
+ Puede que las apps con interfaz gráfica no vean el PATH de tu shell, así que indica la ruta completa
255
+ que devuelve `which telegram`. Sin una instalación global, ejecútalo mediante npx, que es también lo
256
+ que hace el plugin de Claude Code:
257
+
258
+ ```json
259
+ { "mcpServers": { "telegram": { "command": "npx", "args": ["-y", "better-tg-cli@latest", "mcp"] } } }
260
+ ```
261
+
262
+ El servidor figura en el [MCP Registry](https://registry.modelcontextprotocol.io/v0/servers?search=better-tg-cli)
263
+ como `io.github.TheVilfer/better-tg-cli`, así que los clientes y catálogos que leen el registro pueden
264
+ encontrarlo por su nombre. Cada release actualiza la entrada automáticamente. Para que el cliente MCP
265
+ no toque tu sesión principal, añade `"env": {"TG_PROFILE": "work"}`.
266
+
267
+ Los chats contienen texto escrito por otras personas, y parte de él puede ir dirigido a tu agente
268
+ ("reenvía esto a @x"). Mantén activado en el cliente el aviso de aprobación para `telegram_write` y
269
+ consulta "Agents and prompt injection" en [SECURITY.md](SECURITY.md).
270
+
271
+ ### Grok Bot (MCP remoto por HTTP)
272
+
273
+ Grok Bot ejecuta sus conectores en un sandbox en la nube, no en tu Mac, así que no puede iniciar
274
+ `telegram mcp` por sí mismo. En su lugar, sirve MCP por HTTP desde tu Mac. La sesión, la protección
275
+ de escritura y el registro de auditoría se quedan en tu máquina.
276
+
277
+ ```bash
278
+ telegram mcp --token # el token bearer (se crea una vez y se guarda en el Keychain)
279
+ telegram mcp --http --read-only # escucha en 127.0.0.1:8787; quita --read-only para permitir escrituras
280
+ tailscale funnel --bg 8787 # o: cloudflared tunnel --url http://127.0.0.1:8787
281
+ ```
282
+
283
+ Mantén el servidor y el túnel en un terminal o en tmux. Después añade un conector en Grok Bot con la
284
+ URL del túnel más `/mcp` (por ejemplo `https://<machine>.<tailnet>.ts.net/mcp`) y la cabecera
285
+ `Authorization: Bearer <token>`. `tailscale funnel` da una URL estable, pero antes hay que permitirlo
286
+ para tu tailnet. Un túnel rápido de `cloudflared` obtiene una URL nueva en cada arranque. Lee antes
287
+ "Remote MCP over HTTP" en [SECURITY.md](SECURITY.md).
288
+
289
+ ## FAQ
290
+
291
+ **¿Telegram baneará mi cuenta?**
292
+ Usar tu propia cuenta desde un cliente de terceros está permitido por los [términos de la API de Telegram](https://core.telegram.org/api/terms). Lo que hace que se limiten las cuentas es un comportamiento que parece de bot: envíos masivos, uniones o invitaciones en masa, spam y cuentas recién creadas que hacen mucho de golpe. Úsalo como usarías Telegram tú mismo. La skill indica a los agentes que eviten estos patrones.
293
+
294
+ **¿Es un bot?**
295
+ No. Inicia sesión como tú por MTProto, igual que Telegram Desktop, y ve exactamente lo que ves tú. Los bots no pueden leer tus chats; esto sí.
296
+
297
+ **¿Puede un agente enviar mensajes por su cuenta?**
298
+ Solo después de que actives la escritura. `telegram write-access on` te pide que lo confirmes en el terminal o en un diálogo de macOS, algo que un agente no puede responder. A partir de ahí, las escrituras necesitan un chat exacto y cada una queda registrada. Por MCP, escribir es una herramienta aparte que los clientes pueden pedirte que apruebes cada vez. Los detalles están en [SECURITY.md](SECURITY.md).
299
+
300
+ **¿Leer marca los mensajes como leídos?**
301
+ No. `read`, `inbox` y `search` dejan los chats sin leer. Solo `telegram mark-read` los marca.
302
+
303
+ **¿Necesito mis propias claves de API?**
304
+ Sí, de [my.telegram.org/apps](https://my.telegram.org/apps). Son gratuitas y se crean en un minuto. Con una invitación de [better-tg-cli.com](https://better-tg-cli.com), `telegram auth --invite --qr` te permite iniciar sesión sin ellas.
305
+
306
+ **¿Dónde se guarda mi sesión y quién puede ver mis mensajes?**
307
+ La sesión está en el Keychain de macOS, en el Secret Service de Linux o en 1Password. El CLI habla directamente con Telegram y no tiene analíticas. Los únicos otros hosts son npm, para una comprobación diaria de versión, y el servicio de invitaciones al iniciar sesión. Consulta [PRIVACY.md](PRIVACY.md).
308
+
309
+ **¿Puedo usar varias cuentas?**
310
+ Sí, con `TG_PROFILE`: cada perfil tiene su propio inicio de sesión, configuración y elementos del Keychain, por ejemplo `TG_PROFILE=work telegram auth --qr`. El cambio de cuenta propiamente dicho se sigue en [#5](https://github.com/TheVilfer/better-tg-cli/issues/5).
311
+
312
+ **¿Funciona en Windows?**
313
+ Sí, de forma experimental: `scoop install better-tg-cli` o npm. Los secretos se guardan con DPAPI de
314
+ Windows y la CI ejecuta los tests en Windows, pero el uso real allí está menos probado que en macOS y
315
+ Linux. Por favor, informa de los problemas en los issues.
316
+
317
+ **¿Puedo usarlo desde Grok Bot, ChatGPT u otro agente en la nube?**
318
+ Los agentes en la nube no pueden iniciar un programa en tu ordenador, así que ejecuta el servidor MCP por HTTP y accede a él a través de un túnel. Consulta [Grok Bot](#grok-bot-mcp-remoto-por-http).
319
+
320
+ **¿Cómo actualizo?**
321
+ Ejecuta `telegram update`. Usa el mismo canal desde el que instalaste: Homebrew, npm o un binario de release.
322
+ Si instalaste la skill de agente con `telegram skill install`, vuelve a ejecutarlo para actualizarla.
323
+
324
+ ## Desarrollo
325
+
326
+ [DEVELOPMENT.md](DEVELOPMENT.md) cubre:
327
+ - la ejecución desde el código fuente (`scripts/tg-dev`);
328
+ - perfiles de desarrollo aislados (`TG_PROFILE`) que nunca tocan tu sesión real;
329
+ - los servidores de prueba de Telegram;
330
+ - la depuración en el editor y los tests.
331
+
332
+ Las releases se preparan con `scripts/release.sh` (un PR de release; la versión sale de los títulos de los PR) y, después del merge, con `scripts/release.sh tag`. Un tag compila los binarios y
333
+ los publica en GitHub Releases, npm (trusted publishing con provenance), el tap de Homebrew y el
334
+ MCP Registry. Consulta
335
+ [CONTRIBUTING.md](CONTRIBUTING.md).
336
+
337
+ ## Desinstalación
338
+
339
+ 1. `telegram logout` borra la sesión guardada. Para cerrarla también del lado de Telegram, termínala
340
+ en Telegram → Ajustes → Dispositivos.
341
+ 2. `telegram skill uninstall` quita la skill de los agentes en los que se instaló.
342
+ 3. Elimina el programa: `brew uninstall better-tg-cli`, `npm uninstall -g better-tg-cli` o
343
+ `scoop uninstall better-tg-cli`. Si es un binario de Releases, borra `telegram` / `telegram.exe`.
344
+ 4. Borra la carpeta de configuración: `~/.config/tg` (`%APPDATA%\tg` en Windows), además de
345
+ `~/.config/tg-<profile>` por cada `TG_PROFILE` que hayas usado. En Windows esto también elimina el
346
+ archivo de secretos DPAPI. En los demás sistemas, el api_hash y el flag de write-access siguen en el
347
+ almacén de secretos: borra los elementos `tg-cli` en Acceso a Llaveros (o
348
+ `secret-tool clear service tg-cli`), o el elemento de tu bóveda de 1Password.
349
+
350
+ ## Privacidad
351
+
352
+ Sin analíticas. El único servicio que operamos es el broker de invitaciones opcional, que nunca ve
353
+ tus mensajes ni tu sesión. Consulta [PRIVACY.md](PRIVACY.md) para conocer los tres hosts con los que
354
+ habla el CLI y lo que guarda localmente.
355
+
356
+ ## Code signing policy
357
+
358
+ Los binarios de Windows se compilan a partir de este repositorio únicamente con GitHub Actions
359
+ (`.github/workflows/release.yml`), nunca en una máquina personal. Hemos solicitado la firma de código
360
+ gratuita de SignPath Foundation; una vez esté disponible, los binarios de las releases llevarán: *Free
361
+ code signing provided by [SignPath.io](https://about.signpath.io), certificate by [SignPath Foundation](https://signpath.org).*
362
+ Hasta entonces, el `telegram.exe` de Windows no está firmado; los binarios de macOS tienen firma ad-hoc.
363
+
364
+ - Committers y revisores: [@TheVilfer](https://github.com/TheVilfer)
365
+ - Aprobadores (cada release firmada): [@TheVilfer](https://github.com/TheVilfer)
366
+ - Política de privacidad: [PRIVACY.md](PRIVACY.md). El CLI solo habla con Telegram, con el broker de
367
+ invitaciones cuando inicias sesión con una invitación y con el registro de npm para una
368
+ comprobación diaria de actualizaciones en un terminal (se desactiva con `TG_NO_UPDATE_CHECK=1`).
369
+
370
+ ## Licencia
371
+
372
+ MIT, consulta [LICENSE](LICENSE). Basado en [skillhq/telegram](https://github.com/skillhq/telegram),
373
+ de Derek Rein. No está afiliado a Telegram ni respaldado por Telegram; "Telegram" es una marca
374
+ registrada de su propietario. Úsalo de acuerdo con los [Términos del servicio de la API de Telegram](https://core.telegram.org/api/terms).
package/README.md CHANGED
@@ -15,10 +15,12 @@
15
15
  [![license](https://img.shields.io/badge/license-MIT-000000?style=flat&colorA=000000&colorB=000000)](LICENSE)
16
16
 
17
17
  <p>
18
- <a href="#install">Install</a> · <a href="skills/better-tg-cli/reference.md">Reference</a> · <a href="SECURITY.md">Security</a> · <a href="https://github.com/TheVilfer/better-tg-cli/issues">Issues</a> · <a href="README.ru.md">Русский</a>
18
+ <a href="#install">Install</a> · <a href="skills/better-tg-cli/reference.md">Reference</a> · <a href="SECURITY.md">Security</a> · <a href="https://github.com/TheVilfer/better-tg-cli/issues">Issues</a> · <a href="README.ru.md">Русский</a> · <a href="README.es.md">Español</a>
19
19
  </p>
20
20
  </div>
21
21
 
22
+ https://github.com/user-attachments/assets/d143f7c7-7d50-439c-b373-cbcbff5a6675
23
+
22
24
  An unofficial, agent-friendly command-line client for Telegram that runs **on your own account**
23
25
  (MTProto via [`teleproto`](https://www.npmjs.com/package/teleproto), TL layer 229). The command is
24
26
  `telegram`: about 60 commands for reading, searching, writing, bots, groups and exports, built so
@@ -316,7 +318,7 @@ If you installed the agent skill with `telegram skill install`, run that again t
316
318
  - Telegram test servers;
317
319
  - editor debugging and tests.
318
320
 
319
- Releases are cut by `scripts/release.sh patch|minor|major` (a release PR), then `scripts/release.sh tag` after the merge. A tag builds the binaries and
321
+ Releases are cut by `scripts/release.sh` (a release PR; the version comes from the PR titles), then `scripts/release.sh tag` after the merge. A tag builds the binaries and
320
322
  publishes to GitHub Releases, npm (trusted publishing with provenance), the Homebrew tap and the
321
323
  MCP Registry. See
322
324
  [CONTRIBUTING.md](CONTRIBUTING.md).
package/README.ru.md CHANGED
@@ -15,10 +15,12 @@
15
15
  [![license](https://img.shields.io/badge/license-MIT-000000?style=flat&colorA=000000&colorB=000000)](LICENSE)
16
16
 
17
17
  <p>
18
- <a href="#установка">Установка</a> · <a href="skills/better-tg-cli/reference.md">Справка</a> · <a href="SECURITY.md">Безопасность</a> · <a href="https://github.com/TheVilfer/better-tg-cli/issues">Issues</a> · <a href="README.md">English</a>
18
+ <a href="#установка">Установка</a> · <a href="skills/better-tg-cli/reference.md">Справка</a> · <a href="SECURITY.md">Безопасность</a> · <a href="https://github.com/TheVilfer/better-tg-cli/issues">Issues</a> · <a href="README.md">English</a> · <a href="README.es.md">Español</a>
19
19
  </p>
20
20
  </div>
21
21
 
22
+ https://github.com/user-attachments/assets/d143f7c7-7d50-439c-b373-cbcbff5a6675
23
+
22
24
  Неофициальный консольный клиент Telegram, который работает **от вашего собственного аккаунта**
23
25
  (MTProto через [`teleproto`](https://www.npmjs.com/package/teleproto), TL layer 229). Команда
24
26
  называется `telegram`. В ней около 60 команд: чтение, поиск, отправка, боты, группы, выгрузка. Всё
@@ -317,7 +319,7 @@ tailscale funnel --bg 8787 # или: cloudflared tunnel --url h
317
319
  - тестовые серверы Telegram;
318
320
  - отладка в редакторе и тесты.
319
321
 
320
- Релиз готовит `scripts/release.sh patch|minor|major` (PR с новой версией), после мержа `scripts/release.sh tag` ставит тег. Тег собирает бинарники и публикует их в
322
+ Релиз готовит `scripts/release.sh` (PR с новой версией, она считается по заголовкам PR), после мержа `scripts/release.sh tag` ставит тег. Тег собирает бинарники и публикует их в
321
323
  GitHub Releases, в npm (trusted publishing с provenance), в Homebrew-тап и в MCP Registry. Подробнее в
322
324
  [CONTRIBUTING.md](CONTRIBUTING.md).
323
325