#!/usr/bin/env python3
import argparse, os, sys, json, urllib.request, ssl

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from config.settings import BOT_TOKEN, WEBHOOK_URL, WEBHOOK_PATH, WEBHOOK_SECRET


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--delete", action="store_true")
    args = parser.parse_args()

    if not BOT_TOKEN:
        print("ERROR: BOT_TOKEN not set")
        sys.exit(1)

    base = f"https://api.telegram.org/bot{BOT_TOKEN}"
    ctx = ssl.create_default_context()

    if args.delete:
        url = f"{base}/deleteWebhook"
        data = json.dumps({"drop_pending_updates": True}).encode()
        print("Deleting webhook...")
    else:
        if not WEBHOOK_URL:
            print("ERROR: WEBHOOK_URL not set")
            sys.exit(1)
        path = WEBHOOK_PATH.rstrip("/") or "/webhook"
        full_url = f"{WEBHOOK_URL.rstrip('/')}{path}"
        payload = {
            "url": full_url,
            "allowed_updates": ["message", "callback_query"],
            "drop_pending_updates": True,
        }
        if WEBHOOK_SECRET:
            payload["secret_token"] = WEBHOOK_SECRET
        url = f"{base}/setWebhook"
        data = json.dumps(payload).encode()
        print(f"Setting webhook to: {full_url}")

    req = urllib.request.Request(url, data=data, headers={"Content-Type": "application/json"}, method="POST")
    with urllib.request.urlopen(req, context=ctx, timeout=15) as resp:
        print(json.dumps(json.loads(resp.read().decode()), indent=2, ensure_ascii=False))

    with urllib.request.urlopen(f"{base}/getWebhookInfo", context=ctx, timeout=10) as resp:
        print("\nCurrent webhook info:")
        print(json.dumps(json.loads(resp.read().decode()), indent=2, ensure_ascii=False))


if __name__ == "__main__":
    main()
