API de telegram para mis proyectos
| .dockerignore | ||
| .gitignore | ||
| db.py | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| main.py | ||
| README.md | ||
| repository.py | ||
| requirements.txt | ||
| schemas.py | ||
| telegram_client.py | ||
Telegram Sender API (MVP)
API independiente para enviar mensajes de Telegram usando multiples bots y multiples chats/canales.
1) Instalacion
cd API
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
2) Ejecutar
cd API
source .venv/bin/activate
uvicorn main:app --reload --host 0.0.0.0 --port 8000
3) Flujo minimo
- Registrar bot en
POST /bots - Registrar chat en
POST /chats - Vincular bot-chat en
POST /bindings - Enviar mensaje en
POST /send
Si definiste API_KEY en .env, envia el header x-api-key en todas las rutas protegidas.
4) Ejemplos con curl
Registrar bot:
curl -X POST http://localhost:8000/bots \
-H "Content-Type: application/json" \
-H "x-api-key: TU_API_KEY" \
-d '{"name":"bot_motiva","token":"TU_TELEGRAM_BOT_TOKEN","is_active":true}'
Registrar chat/canal:
curl -X POST http://localhost:8000/chats \
-H "Content-Type: application/json" \
-H "x-api-key: TU_API_KEY" \
-d '{"name":"canal_general","chat_id":"-1001234567890","chat_type":"channel","is_active":true}'
Vincular:
curl -X POST http://localhost:8000/bindings \
-H "Content-Type: application/json" \
-H "x-api-key: TU_API_KEY" \
-d '{"bot":"bot_motiva","chat":"canal_general"}'
Enviar:
curl -X POST http://localhost:8000/send \
-H "Content-Type: application/json" \
-H "x-api-key: TU_API_KEY" \
-d '{"bot":"bot_motiva","chat":"canal_general","mensaje":"Hola desde la API","parse_mode":"Markdown"}'
5) Notas
- SQLite se crea automaticamente en
API/data/telegram_api.db. - Este MVP guarda tokens en texto plano en SQLite. Siguiente paso recomendado: cifrado de tokens.
- La API expone Swagger en
http://localhost:8000/docs.
6) Despliegue con Docker Compose (OMV)
Archivos incluidos para despliegue:
Dockerfiledocker-compose.yml
Pasos recomendados en OMV:
- Copia el proyecto a una carpeta local del NAS (no a una ruta SMB montada desde otro equipo).
- Ajusta
.envcon tuAPI_KEY. - En la UI de Compose de OMV, usa el
docker-compose.ymldel proyecto. - Levanta el stack.
El compose ya deja persistencia de SQLite en ./data del proyecto dentro del NAS y fuerza:
TELEGRAM_API_DB_PATH=/app/data/telegram_api.db
Si quieres cambiar el puerto externo, edita en docker-compose.yml la linea:
"8000:8000"
Ejemplo para exponer 8080:
"8080:8000"