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 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): 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") asyncio.run(send_telegram_message(mensaje)) 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)