"""
Servidor web que recibe los mensajes de Telegram vía webhook.
Telegram nos manda un POST cada vez que alguien le escribe al bot.
"""
from flask import Flask, request, jsonify

import database as db
from config import TELEGRAM_WEBHOOK_SECRET, validar_config
from bot_handlers import manejar_mensaje

validar_config()
db.init_db()

app = Flask(__name__)


@app.route("/webhook", methods=["POST"])
def webhook():
    # Verificación de seguridad: si configuraste un secret, Telegram lo manda
    # en este header. Rechazamos cualquier request que no lo tenga.
    if TELEGRAM_WEBHOOK_SECRET:
        header_token = request.headers.get("X-Telegram-Bot-Api-Secret-Token")
        if header_token != TELEGRAM_WEBHOOK_SECRET:
            return jsonify({"error": "no autorizado"}), 403

    update = request.get_json(silent=True) or {}
    try:
        manejar_mensaje(update)
    except Exception as e:
        # Nunca dejamos que un error rompa la respuesta a Telegram,
        # solo lo logueamos.
        app.logger.error(f"Error procesando update: {e}")
    return jsonify({"ok": True})


@app.route("/", methods=["GET"])
def home():
    return jsonify({"status": "bot corriendo", "usuarios": db.contar_usuarios()})


if __name__ == "__main__":
    # Solo para probar en tu PC local (VS Code). En cPanel, Passenger
    # arranca la app distinto (ver passenger_wsgi.py).
    app.run(host="0.0.0.0", port=5000, debug=True)
