Avisos y chat por Telegram
Un aviso en el móvil con cada pedido, y poder preguntarle a la tienda desde el mismo sitio.
Un aviso en el móvil con cada pedido, y poder preguntarle a la tienda desde el mismo sitio.
Es opcional: sin configurar, no existe.
Montarlo
1 · Crea el bot. Escribe a @BotFather, /newbot,
y guarda el token que te da.
2 · Saca tu chat_id. Escribe cualquier cosa a tu bot y abre
https://api.telegram.org/bot<TOKEN>/getUpdates. Sale en message.chat.id.
3 · Ponlo en el .env:
TELEGRAM_BOT_TOKEN=...
TELEGRAM_CHAT_IDS=111111,222222
TELEGRAM_WEBHOOK_SECRET=<algo largo y aleatorio>
TELEGRAM_WEBHOOK_URL=https://tu-tienda/telegram/webhookCon Docker (docker-compose.full.yml) el backend lee el .env entero, así que
estas variables le llegan como cualquier otra: ponlas ahí y reinicia el
contenedor.
4 · Da de alta el webhook:
npm run pcc -- ejecutar ./src/scripts/telegram-alta.tsTe manda un mensaje de prueba si ha ido bien.
Los avisos
El bot escribe a todos los chats de la lista cuando:
| Cuándo | Qué dice |
|---|---|
| Entra un pedido | Pedido nº124 — 47.9 EUR y, debajo, el correo del cliente |
| Se prepara un pedido | Pedido nº124 preparado (3 uds): listo para enviar |
| Se cancela un pedido | Pedido nº124 CANCELADO, con (estaba cobrado) si lo estaba, o · devueltos 47.9 EUR si se devolvió el dinero |
| Quedan pocos códigos | Quedan 2 códigos de «Juego · Europa». Cuando se acaben, nadie podrá comprarlo. (solo en variantes con umbral de aviso, mira vender claves) |
Cada aviso sale una sola vez por pedido, aunque el evento se reintente.
El idioma de los avisos
Los avisos los disparan eventos, fuera de cualquier petición, así que no hay un
«idioma de quien pregunta». Se elige una vez, en el .env:
TELEGRAM_IDIOMA=es # o enSin ponerlo, o con un idioma del que no hay textos, salen en inglés. El mismo ajuste vale para las respuestas fijas del bot («No he sabido qué contestar», «No he podido consultarlo: …»), para el mensaje de prueba del paso 4 y para lo que contesta el copiloto cuando le preguntas algo por Telegram.
Hablar con la tienda
Escríbele al bot con tus palabras y responde con datos reales: ventas, stock, pedidos, clientes. Es el mismo copiloto del panel.
Por Telegram solo consulta, no toca nada. En el panel una propuesta de cambio se revisa con sus valores delante y se aprueba con el ratón; en el móvil se confirma con el pulgar, andando por la calle y sin leerla.
Quién puede usarlo
Telegram no permite hacer un bot privado. No es una limitación de esto: los
bots son públicos por diseño y no hay ningún ajuste en BotFather para ocultarlos
ni para restringirlos. Cuidado con /setprivacy, que confunde por el nombre —
solo decide si el bot ve todos los mensajes dentro de un grupo.
Por eso el control está aquí: solo se atiende a los chat_id de la lista. A
cualquier otro no se le contesta nada, ni siquiera «no tienes permiso», porque
eso ya le confirma que el bot existe y que hay una tienda detrás. Se queda
mirando un chat mudo.
Sin esa lista, un desconocido que encuentre el bot podría preguntarle por tus pedidos y llevarse nombres, direcciones y teléfonos de tus clientes.
Añadir a alguien después
Con el webhook activo, getUpdates deja de funcionar — los mensajes van a un
sitio o al otro, nunca a los dos. Así que para dar de alta a una segunda persona:
- Que escriba al bot. No le contestará: todavía no está autorizada.
- Su
chat_idqueda en el registro del servidor:telegram: mensaje de un chat NO autorizado — chat_id=… (@usuario) - Añádelo a
TELEGRAM_CHAT_IDSy reinicia.
El secreto del webhook
La ruta es pública: la puede llamar cualquiera que adivine la URL. Telegram
devuelve TELEGRAM_WEBHOOK_SECRET en una cabecera y lo que no la traiga se
descarta.
Sin secreto configurado, la ruta rechaza todo. Es deliberado: una ruta
abierta que ejecuta la IA con los datos de tu tienda no puede quedarse viva por
un olvido en el .env.
Un nombre que no delate
@mitienda_bot lo encuentra cualquiera que busque tu marca. Un nombre sin
relación con la tienda evita que den con él por casualidad — pero eso suma a
la lista blanca, no la sustituye. La lista es lo que de verdad protege.
Si algo falla
Un aviso que no sale no impide que el pedido siga su curso: se apunta en el registro y ya está. Vender es lo importante; avisar, lo cómodo.
Para ver cómo está el webhook:
https://api.telegram.org/bot<TOKEN>/getWebhookInfo — trae el último error, si
lo hubo.