from fastapi import FastAPI, HTTPException from fastapi.middleware.cors import CORSMiddleware import os import json import httpx import subprocess #import asyncio #alternativa a #from waitress import serve #alternativa a #import socket #para funcionalidad ipv6 import aiohttp #import telebot #https://github.com/eternnoir/pyTelegramBotAPI app = FastAPI() # Configurar CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Cargar los códigos y configuración de Telegram desde las variables de entorno @app.on_event("startup") async def startup_event(): global codigos, TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID codigos_json = os.environ.get("codigos") print("codigos recogidos pero no chequeados") if codigos_json: codigos = json.loads(codigos_json) print("Códigos cargados correctamente") else: codigos = {} print("No se encontraron códigos en las variables de entorno") TELEGRAM_BOT_TOKEN = os.environ.get("T_bot") TELEGRAM_CHAT_ID = os.environ.get("nroChat") if not TELEGRAM_BOT_TOKEN or not TELEGRAM_CHAT_ID: print("Faltan configuraciones de Telegram") else: print("Claves de telegram cargados correctamente") async def send_telegram_message(message): #envio mensaje por medio de un script externo subprocess.run(["python", "/code/envia_mensaje.py", message]) #url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" #params = { # "chat_id": TELEGRAM_CHAT_ID, # "text": message #} # async with httpx.AsyncClient() as client: # await client.post(url, params=params) @app.get("/verificar/{codigo}") async def verificar_codigo(codigo: str): if codigo in codigos: if codigos[codigo] > 0: # Enviar mensaje a Telegram mensaje = f"Código utilizado: {codigo}\nConsultas restantes: {codigos[codigo]}" print(f"\nmensaje:") print(mensaje, end="\n\n") #await send_telegram_message(mensaje) #subprocess.run(["python", "envia_mensaje.py", mensaje]) #chequeo a ver si está el scirpt print("averrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr") print(os.getcwd()) print(os.listdir()) print("averrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr") # Ejecuta el script Bash con el mensaje como argumento result = subprocess.run(["ls"], capture_output=True, text=True) result = subprocess.run(["./envia_mensaje.sh", mensaje], capture_output=True, text=True) # Imprime la salida del script Bash print("STDOUT:", result.stdout) print("STDERR:", result.stderr) if result.returncode != 0: print(f"Ocurrió un Error: {result.returncode}") return {"mensaje": "código encontrado", "consultas_restantes": codigos[codigo]} else: return {"mensaje": "código caducado"} else: return {"mensaje": "código no encontrado"} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=7860)