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