inemaccbot es una puerta de enlace de Telegram con una cola durable: envías la solicitud desde el celular y tu computadora (o una VPS) la ejecuta como agente. En esta lección lo instalas, vinculas el bot con tu chat y lo dejas funcionando como servicio.
2Los requisitos previos y qué falla si falta cada uno
3Token, lista de permitidos y modo de vinculación
4Iniciarlo manualmente y después como servicio
Objetivo: instalar inemaccbot, vincularlo con tu chat y ver que /ping responda en Telegram.
01 · Las piezas de inemaccbot
Del celular al resultado.
Haz clic en cada bloque del diagrama para ver qué hace.
Haz clic en cada bloque. Para instalarlo y usarlo, no necesitas tocar el código: solo el .env y Telegram.
02 · La instalación en seis pasos
Probado en Ubuntu con Node 24. El atajo ./scripts/instalar.sh hace la parte mecánica y se detiene cuando hace falta que intervengas.
1. Requisitos previos
Node 22 o más nuevo (node -v; Ubuntu 24.04 incluye la versión 18). claude instalado y con sesión iniciada: verifica con claude auth status; tenerlo instalado no significa que hayas iniciado sesión. ffmpeg y python3 para las tareas de audio y video.
Si no iniciaste sesión en claude, el bot arranca y acepta comandos, pero todo trabajo del agente falla. Es el fallo más confuso, porque todo parece estar bien.
2. Clonar e instalar
Clona el repositorio y ejecuta npm ci (no npm install: ci sigue el lockfile y la instalación queda igual en todas las máquinas).
Clona también los repos de dominio promoavatar y promoavatar3 como carpetas hermanas. Sin ellos, el bot arranca, pero los flujos fallan en la primera fase y decenas de pruebas no pasan.
3. Crear el bot en Telegram
Habla con @BotFather, envía /newbot y guarda el token que te devuelve. Ese valor es BOT_TOKEN.
El token es un secreto: nunca lo pongas en Git, en una captura de pantalla ni en un mensaje.
4. Escribir el .env
Copia .env.example, protégelo con chmod 600 y completa BOT_TOKEN, QUEUE_DB, STATE_DIR y LOG_FILE.
En ALLOWED_CHAT_IDS, deja 0. Es el modo de emparejamiento: el primer /ping registra tu chat como propietario y cierra la puerta. Dejarlo vacío no es emparejamiento: es un error intencional y el bot no se inicia.
CuidadoMientras la allowlist sea 0, quien envíe /ping primero se queda con el bot. Vincúlalo antes de dejarlo funcionando.
5. Iniciar y emparejar
Ejecuta npm test y npm run build; después, inicia el bot manualmente con ./start.sh para ver cualquier error en pantalla.
Envía /ping a tu bot. Responderá con el id del chat y guardará ese id en .env. A partir de ese momento, solo te atenderá a ti.
6. Dejarlo como servicio
Para que el bot siga funcionando después de cerrar sesión y se inicie al arrancar el sistema, instala el servicio de usuario y activa linger. En una VPS, usa el servicio del sistema (deploy/inemaccbot-sistema.service).
Nunca ejecutes ./start.sh y el servicio al mismo tiempo con el mismo token: ambos compiten por los mensajes y cada uno pierde la mitad. start.sh ya se niega a iniciarse cuando el servicio está activo.
03 · Comandos de instalación
En orden. Cambia solo lo que se indique.
Terminal · clonar, instalar y probar
cd ~/projetos
git clone https://github.com/inematds/inemaccbot.git
git clone https://github.com/inematds/promoavatar.git
git clone https://github.com/inematds/promoavatar3.git
cd inemaccbot
./scripts/instalar.sh --checar # solo indica lo que falta, no cambia nada
npm ci
npm test
npm run build
Terminal · .env y primer inicio
cp .env.example .env
chmod 600 .env
# edita el .env: BOT_TOKEN=<del BotFather> ALLOWED_CHAT_IDS=0
./start.sh # registro en pantalla; Ctrl+C termina y espera a que finalice lo que esté en curso
# en Telegram: /ping → el bot responde y guarda tu chat id
En el registro aparece la línea de recuperación, incluso si la cola está vacía:
boot: recuperación de leases — requeued=0 failed=0
Un error de configuración detiene el proceso en este punto, intencionalmente. Lee el mensaje antes de cambiar cualquier otra cosa.
config: falta BOT_TOKEN: falta el token en .env.
El servicio está active, pero /ping no responde: la allowlist tiene un id incorrecto (el registro muestra rejeitada — fora da allowlist).
El bot responde, pero todos los trabajos fallan: claude no tiene una sesión iniciada.
tsc: not found durante la compilación: vuelve a instalar con NODE_ENV=development npm ci --include=dev.
El .env del bot guarda la configuración: token, allowlist y rutas. Las claves de otros servicios se guardan en un cofre separado: un archivo por máquina con chmod 600, que nunca se sube al control de versiones. Regla del proyecto: .env guarda la ruta y el id; el secreto de un tercero va en el archivo de su propietario.
04 · Práctica
Reserva una hora sin interrupciones.
E3 · Instalar inemaccbot
1 h
Sigue los pasos hasta que el bot responda en Telegram. Emparéjalo con ALLOWED_CHAT_IDS=0 y comprueba que .env tenga chmod 600. Después, prueba /ayuda y /fila.
Listo cuando: /ping responde en tu Telegram y /fila muestra las colas vacías.
El servicio está active (running), pero el bot no responde a tu /ping. ¿Cuál es la causa más probable?
Correcto
Si el mensaje viene de fuera de la allowlist, se rechaza en silencio y solo aparece en el registro. Vuelve a poner ALLOWED_CHAT_IDS=0, reinicia y emparéjalo otra vez.
No es esa
Si el mensaje viene de fuera de la allowlist, se rechaza en silencio y solo aparece en el registro. Vuelve a poner ALLOWED_CHAT_IDS=0, reinicia y emparéjalo otra vez.Repasar: Comandos de instalación
Pregunta 2 de 3
¿Para qué sirve dejar ALLOWED_CHAT_IDS=0 en el primer inicio?competencia
Correcto
Es el modo de emparejamiento. Por eso hay que emparejarse enseguida: mientras esté en 0, quien envíe /ping primero se convierte en propietario.
No es esa
Es el modo de emparejamiento. Por eso hay que emparejarse enseguida: mientras esté en 0, quien envíe /ping primero se convierte en propietario.Repasar: La instalación en seis pasos
Pregunta 3 de 3
¿Dónde debe guardarse la clave de un servicio de terceros que usa una tarea?
Correcto
Un secreto nunca va en texto versionado ni en un mensaje. El .env del bot guarda la configuración; los secretos de terceros van en la bóveda.
No es esa
Un secreto nunca va en texto versionado ni en un mensaje. El .env del bot guarda la configuración; los secretos de terceros van en la bóveda.Repasar: Comandos de instalación
Prueba completada
Acertaste {a} de {n}. Si aciertas todas, la clase se marca como completada.
Elige una alternativa. La explicación aparece después de tu intento.