"""
bot/handlers/tutorials.py
-------------------------
Handlerهای بخش آموزش ربات Vasl Bot.
"""

from __future__ import annotations

from aiogram import F, Router
from aiogram.types import (
    CallbackQuery,
    InlineKeyboardButton,
    InlineKeyboardMarkup,
)

from bot.keyboards.main_menu import CB_TUTORIALS


router = Router(name="tutorials")


# ============================================================
# آموزش‌ها
# ============================================================

TUTORIALS = {

    # ========================================================
    # آیفون و مک
    # ========================================================

    "ios_singbox": {
        "title": "📱 SingBox آیفون",
        "content": (
            "📱 <b>آموزش اتصال با SingBox آیفون</b>\n\n"

            "1️⃣ برنامه <b>SingBox</b> را از App Store نصب کنید.\n\n"

            "2️⃣ وارد برنامه شوید و به قسمت <b>Profiles</b> بروید.\n\n"

            "3️⃣ برای پروفایل یک نام دلخواه انتخاب کنید.\n\n"

            "4️⃣ گزینه <b>Type</b> را روی <b>Remote</b> قرار دهید.\n\n"

            "5️⃣ در قسمت <b>URL</b>، لینک اشتراکی که برای شما ارسال "
            "شده است را وارد کنید.\n\n"

            "6️⃣ روی <b>Create</b> بزنید.\n\n"

            "7️⃣ سپس به صفحه اصلی یا <b>Dashboard</b> برگردید "
            "و متصل شوید. ✅\n\n"

            "⚠️ اگر به هر دلیلی نتوانستید به کانفیگ‌ها متصل شوید، "
            "لطفاً به پشتیبانی مراجعه کنید."
        ),
    },

    "ios_v2box": {
        "title": "📱 V2Box آیفون",
        "content": (
            "📱 <b>آموزش اتصال با V2Box آیفون</b>\n\n"

            "1️⃣ برنامه <b>V2Box</b> را نصب کنید.\n\n"

            "2️⃣ کانفیگ دریافت‌شده را کپی کنید.\n\n"

            "3️⃣ وارد قسمت <b>Configs</b> شوید.\n\n"

            "4️⃣ روی علامت <b>+</b> بزنید.\n\n"

            "5️⃣ گزینه اول را انتخاب کنید تا کانفیگ اضافه شود.\n\n"

            "6️⃣ پس از اضافه شدن کانفیگ، به قسمت <b>Home</b> برگردید.\n\n"

            "7️⃣ اتصال را فعال کنید. ✅\n\n"

            "⚠️ اگر به هر دلیلی نتوانستید به کانفیگ‌ها متصل شوید، "
            "لطفاً به پشتیبانی مراجعه کنید."
        ),
    },

    "ios_npv": {
        "title": "📱 NPV Tunnel",
        "content": (
            "📱 <b>آموزش اتصال با NPV Tunnel آیفون</b>\n\n"

            "🔗 <b>اتصال با لینک اشتراک:</b>\n\n"

            "1️⃣ لینک اشتراک خود را کپی کنید.\n\n"

            "2️⃣ وارد برنامه شوید.\n\n"

            "3️⃣ به قسمت <b>Subs</b> بروید.\n\n"

            "4️⃣ روی علامت <b>+</b> بزنید.\n\n"

            "5️⃣ گزینه <b>From URL</b> را انتخاب کنید.\n\n"

            "6️⃣ لینک اشتراک را وارد کنید.\n\n"

            "7️⃣ بعد از اضافه شدن کانفیگ، وارد قسمت <b>Configs</b> شوید.\n\n"

            "8️⃣ یکی از کشورها را انتخاب کنید.\n\n"

            "9️⃣ سپس به قسمت <b>Home</b> بروید و متصل شوید. ✅\n\n"

            "📥 <b>دانلود NPV Tunnel از App Store:</b>\n"
            "https://apps.apple.com/us/app/npv-tunnel/id1629465476\n\n"

            "⚠️ اگر به هر دلیلی نتوانستید به کانفیگ‌ها متصل شوید، "
            "لطفاً به پشتیبانی مراجعه کنید."
        ),
    },

    "ios_v2raytun": {
        "title": "📱 V2RayTun آیفون",
        "content": (
            "📱 <b>آموزش اتصال با V2RayTun آیفون</b>\n\n"

            "1️⃣ لینک اشتراک خود را کپی کنید.\n\n"

            "2️⃣ وارد برنامه شوید.\n\n"

            "3️⃣ روی علامت <b>+</b> بزنید.\n\n"

            "4️⃣ گزینه اول را انتخاب کنید.\n\n"

            "5️⃣ لینک اشتراک را وارد کنید.\n\n"

            "6️⃣ پس از اضافه شدن کانفیگ، به صفحه اصلی برگردید "
            "و متصل شوید. ✅\n\n"

            "📱 <b>دانلود V2RayTun برای آیفون:</b>\n"
            "https://apps.apple.com/us/app/v2ray-vpn-client/id6752994543\n\n"

            "⚠️ اگر مشکلی در اتصال داشتید، لطفاً به پشتیبانی مراجعه کنید."
        ),
    },


    # ========================================================
    # اندروید
    # ========================================================

    "android_v2rayng": {
        "title": "🤖 V2rayNG اندروید",
        "content": (
            "🤖 <b>راهنمای اتصال به کانفیگ‌های V2rayNG</b>\n\n"

            "📥 <b>لینک دانلود مستقیم:</b>\n"
            "https://github.com/2dust/v2rayNG/releases/download/"
            "2.2.6/v2rayNG_2.2.6-fdroid_arm64-v8a.apk\n\n"

            "📱 <b>لینک دانلود برای گوشی‌های قدیمی:</b>\n"
            "https://github.com/2dust/v2rayNG/releases/download/"
            "2.2.6/v2rayNG_2.2.6-fdroid_armeabi-v7a.apk\n\n"

            "🏪 <b>دانلود از Google Play:</b>\n"
            "https://play.google.com/store/apps/details?id=com.v2ray.ang\n\n"

            "━━━━━━━━━━━━━━━━━━\n\n"

            "1️⃣ لینک اشتراک ارسال‌شده را کپی کنید.\n\n"

            "2️⃣ برنامه <b>V2rayNG</b> را باز کنید.\n\n"

            "3️⃣ روی علامت <b>+</b> بزنید.\n\n"

            "4️⃣ گزینه <b>افزودن از کلیپبورد</b> را انتخاب کنید.\n\n"

            "5️⃣ یکی از سرورها را انتخاب کنید.\n\n"

            "6️⃣ روی سرور کلیک کنید و سپس متصل شوید. ✅\n\n"

            "━━━━━━━━━━━━━━━━━━\n\n"

            "⭕️ <b>رفع مشکلات احتمالی</b>\n\n"

            "🔸 اگر هنگام افزودن کانفیگ با خطا مواجه شدید، "
            "برنامه را حذف و مجدداً نصب کنید.\n\n"

            "🔸 اگر سرورها نمایش داده نمی‌شوند، از منوی سه‌نقطه "
            "بالای برنامه گزینه <b>بروزرسانی اشتراک "
            "(Update Subscription)</b> را انتخاب کنید.\n\n"

            "━━━━━━━━━━━━━━━━━━\n\n"

            "🎮 <b>حل مشکل پابجی، تیک‌تاک و برنامه‌های مشابه:</b>\n\n"

            "1️⃣ روی منوی سه‌خط بزنید.\n\n"

            "2️⃣ وارد بخش <b>تنظیمات مسیریابی</b> شوید.\n\n"

            "3️⃣ تیک همه گزینه‌ها را بردارید.\n\n"

            "4️⃣ حالا می‌توانید وارد بازی یا برنامه موردنظر شوید.\n\n"

            "⚠️ اگر مشکلی داشتید یا نیاز به راهنمایی بیشتری داشتید، "
            "لطفاً با پشتیبانی در ارتباط باشید."
        ),
    },

    "android_npv": {
        "title": "🤖 NPV Tunnel اندروید",
        "content": (
            "🤖 <b>آموزش اتصال با NPV Tunnel اندروید</b>\n\n"

            "1️⃣ لینک اشتراک خود را کپی کنید.\n\n"

            "2️⃣ وارد برنامه شوید.\n\n"

            "3️⃣ به قسمت <b>Subs</b> بروید.\n\n"

            "4️⃣ روی علامت <b>+</b> بزنید.\n\n"

            "5️⃣ گزینه <b>From URL</b> را انتخاب کنید.\n\n"

            "6️⃣ لینک اشتراک را وارد کنید.\n\n"

            "7️⃣ پس از اضافه شدن کانفیگ، وارد قسمت <b>Configs</b> شوید.\n\n"

            "8️⃣ یکی از کشورها را انتخاب کنید.\n\n"

            "9️⃣ به قسمت <b>Home</b> برگردید و متصل شوید. ✅\n\n"

            "📱 <b>دانلود از Google Play:</b>\n"
            "https://play.google.com/store/apps/details?id="
            "com.napsternetlabs.napsternetv\n\n"

            "⚠️ اگر مشکلی در اتصال داشتید، لطفاً به پشتیبانی مراجعه کنید."
        ),
    },

    "android_v2raytun": {
        "title": "🤖 V2RayTun اندروید پیشنهادی",
        "content": (
            "🤖 <b>آموزش اتصال با V2RayTun اندروید</b>\n\n"

            "1️⃣ لینک اشتراک خود را کپی کنید.\n\n"

            "2️⃣ وارد برنامه شوید.\n\n"

            "3️⃣ روی علامت <b>+</b> بزنید.\n\n"

            "4️⃣ گزینه اول را انتخاب کنید.\n\n"

            "5️⃣ لینک اشتراک را وارد کنید.\n\n"

            "6️⃣ پس از اضافه شدن کانفیگ، به صفحه اصلی برگردید.\n\n"

            "7️⃣ اتصال را فعال کنید. ✅\n\n"

            "📥 <b>دانلود مستقیم برای اندروید:</b>\n"
            "https://github.com/DigneZzZ/v2raytun/releases/download/"
            "5.24.76/v2RayTun_universal.apk\n\n"

            "🤖 <b>دانلود از Google Play:</b>\n"
            "https://play.google.com/store/apps/details?id="
            "com.v2raytun.android\n\n"

            "⚠️ اگر مشکلی در اتصال داشتید، لطفاً به پشتیبانی مراجعه کنید."
        ),
    },


    # ========================================================
    # ویندوز
    # ========================================================

    "windows_nekoray": {
        "title": "💻 آموزش ویندوز Nekoray",
        "content": (
            "💻 <b>آموزش اتصال به کانفیگ در نرم‌افزار NekoRay</b>\n\n"

            "📥 ابتدا نرم‌افزار را از لینک زیر دانلود کنید:\n"
            "https://github.com/MatsuriDayo/nekoray/releases/download/"
            "3.26/nekoray-3.26-2023-12-09-windows64.zip\n\n"

            "1️⃣ کانفیگ را کپی کنید.\n\n"

            "2️⃣ نرم‌افزار <b>NekoRay</b> را باز کنید و گزینه "
            "<b>SingBox</b> را انتخاب کنید.\n\n"

            "3️⃣ از تب <b>Server</b> گزینه "
            "<b>Add Profile From Clipboard</b> را بزنید.\n\n"

            "4️⃣ روی <b>OK</b> بزنید.\n\n"

            "5️⃣ کانفیگ اضافه می‌شود.\n\n"

            "6️⃣ روی سرور اضافه‌شده کلیک راست کنید و گزینه "
            "<b>Start</b> را بزنید.\n\n"

            "7️⃣ در بالای صفحه <b>VPN Mode</b> را روشن کنید.\n\n"

            "8️⃣ اتصال برقرار می‌شود. ✅\n\n"

            "━━━━━━━━━━━━━━━━━━\n\n"

            "🧩 <b>پیش‌نیاز اول:</b>\n"
            "https://dotnet.microsoft.com/en-us/download/dotnet/"
            "thank-you/sdk-6.0.421-windows-x86-installer\n\n"

            "🧩 <b>پیش‌نیاز دوم:</b>\n"
            "https://aka.ms/vs/17/release/vc_redist.x64.exe\n\n"

            "⚠️ اگر مشکلی در اتصال داشتید، لطفاً به پشتیبانی مراجعه کنید."
        ),
    },

    "windows_v2raytun": {
        "title": "💻 آموزش V2RayTun ویندوز",
        "content": (
            "💻 <b>آموزش اتصال با V2RayTun ویندوز</b>\n\n"

            "1️⃣ لینک اشتراک خود را کپی کنید.\n\n"

            "2️⃣ برنامه را باز کنید.\n\n"

            "3️⃣ روی علامت <b>+</b> کلیک کنید.\n\n"

            "4️⃣ گزینه <b>Import From Clipboard</b> را انتخاب کنید.\n\n"

            "5️⃣ کانفیگ اضافه می‌شود.\n\n"

            "6️⃣ به صفحه اصلی برگردید و اتصال را فعال کنید. ✅\n\n"

            "💻 <b>دانلود V2RayTun برای ویندوز:</b>\n"
            "https://github.com/DigneZzZ/v2raytun/releases/download/"
            "5.24.76/v2RayTun_Setup.exe\n\n"

            "⚠️ اگر مشکلی در اتصال داشتید، لطفاً به پشتیبانی مراجعه کنید."
        ),
    },

    "windows_hiddify": {
        "title": "💻 آموزش Hiddify ویندوز پیشنهادی",
        "content": (
            "💻 <b>آموزش اتصال با Hiddify در ویندوز</b>\n\n"

            "📥 <b>مرحله اول: دانلود Hiddify</b>\n\n"

            "برای دانلود Hiddify وارد صفحه رسمی انتشار نسخه‌های "
            "برنامه در GitHub شوید:\n\n"

            "https://github.com/hiddify/hiddify-app/releases/tag/v4.1.1\n\n"

            "🔹 در صفحه بازشده، بخش فایل‌های دانلود را پیدا کنید.\n\n"

            "🔹 فایل مناسب <b>Windows</b> را دانلود و نصب کنید.\n\n"

            "━━━━━━━━━━━━━━━━━━\n\n"

            "🔗 <b>مرحله دوم: اضافه کردن لینک اشتراک</b>\n\n"

            "1️⃣ لینک اشتراکی که برای شما ارسال شده است را کپی کنید.\n\n"

            "2️⃣ برنامه <b>Hiddify</b> را باز کنید.\n\n"

            "3️⃣ لینک اشتراک را در قسمت مربوط به افزودن پروفایل "
            "یا لینک اشتراک وارد کنید.\n\n"

            "4️⃣ صبر کنید تا پروفایل و سرورها دریافت شوند.\n\n"

            "5️⃣ یکی از سرورها را انتخاب کنید.\n\n"

            "6️⃣ اتصال را فعال کنید. ✅\n\n"

            "💡 در صورت وجود چند سرور، می‌توانید سرورهای مختلف را "
            "امتحان کنید.\n\n"

            "⚠️ اگر مشکلی در اتصال داشتید، لطفاً به پشتیبانی مراجعه کنید."
        ),
    },


    # ========================================================
    # آموزش‌های قدیمی - حفظ شده
    # ========================================================

    "android": {
        "title": "📱 آموزش اتصال در اندروید",
        "content": (
            "📱 <b>آموزش اتصال در اندروید</b>\n\n"
            "برای اتصال در اندروید ابتدا برنامه‌ای که با نوع کانفیگ "
            "دریافتی شما سازگار است را نصب کنید.\n\n"
            "🔹 <b>مراحل کلی:</b>\n\n"
            "1️⃣ برنامه اتصال را باز کنید.\n"
            "2️⃣ گزینه افزودن کانفیگ یا Import را انتخاب کنید.\n"
            "3️⃣ اگر لینک اشتراک دریافت کرده‌اید، لینک را وارد کنید.\n"
            "4️⃣ اگر کانفیگ متنی دریافت کرده‌اید، آن را کپی و وارد برنامه کنید.\n"
            "5️⃣ کانفیگ را فعال کنید.\n"
            "6️⃣ اتصال VPN را روشن کنید.\n\n"
            "💡 اگر اتصال برقرار نشد، ابتدا اینترنت خود را بررسی کنید "
            "و سپس کانفیگ را دوباره Update کنید."
        ),
    },

    "iphone": {
        "title": "🍎 آموزش اتصال در آیفون",
        "content": (
            "🍎 <b>آموزش اتصال در آیفون</b>\n\n"
            "در آیفون باید از برنامه‌ای استفاده کنید که با نوع سرویس "
            "و کانفیگ دریافتی شما سازگار باشد.\n\n"
            "🔹 <b>مراحل کلی:</b>\n\n"
            "1️⃣ برنامه مربوط به کانفیگ خود را باز کنید.\n"
            "2️⃣ گزینه افزودن کانفیگ یا Import را انتخاب کنید.\n"
            "3️⃣ لینک اشتراک خود را وارد کنید یا کانفیگ را Import کنید.\n"
            "4️⃣ کانفیگ را ذخیره کنید.\n"
            "5️⃣ اتصال را فعال کنید.\n\n"
            "💡 اگر لینک اشتراک دارید، بهتر است از همان لینک استفاده کنید "
            "تا در صورت بروزرسانی کانفیگ، اطلاعات سرویس راحت‌تر به‌روز شود."
        ),
    },

    "windows": {
        "title": "💻 آموزش اتصال در ویندوز",
        "content": (
            "💻 <b>آموزش اتصال در ویندوز</b>\n\n"
            "برای اتصال در ویندوز ابتدا کلاینت سازگار با نوع کانفیگ "
            "خود را نصب و اجرا کنید.\n\n"
            "🔹 <b>مراحل کلی:</b>\n\n"
            "1️⃣ برنامه را اجرا کنید.\n"
            "2️⃣ گزینه Import یا Add Profile را انتخاب کنید.\n"
            "3️⃣ لینک اشتراک یا فایل/متن کانفیگ را وارد کنید.\n"
            "4️⃣ کانفیگ را ذخیره کنید.\n"
            "5️⃣ سرور موردنظر را انتخاب کنید.\n"
            "6️⃣ گزینه Connect را بزنید.\n\n"
            "⚠️ اگر اینترنت بدون VPN کار می‌کند ولی بعد از اتصال "
            "اینترنت قطع می‌شود، ابتدا یک سرور دیگر را امتحان کنید."
        ),
    },

    "computer": {
        "title": "🖥 آموزش اتصال در کامپیوتر",
        "content": (
            "🖥 <b>آموزش اتصال در کامپیوتر</b>\n\n"
            "اگر از کامپیوتر یا لپ‌تاپ استفاده می‌کنید، باید کلاینت "
            "مناسب سرویس خود را روی سیستم نصب کنید.\n\n"
            "🔹 <b>مراحل کلی:</b>\n\n"
            "1️⃣ کلاینت مناسب را اجرا کنید.\n"
            "2️⃣ کانفیگ یا لینک اشتراک را وارد کنید.\n"
            "3️⃣ پروفایل را ذخیره کنید.\n"
            "4️⃣ یک سرور انتخاب کنید.\n"
            "5️⃣ اتصال را فعال کنید.\n\n"
            "💡 برای عملکرد بهتر، در صورت وجود چند سرور، چند سرور مختلف "
            "را امتحان کنید و سروری که پایداری بهتری دارد انتخاب کنید."
        ),
    },

    "subscription": {
        "title": "🔗 آموزش استفاده از لینک اشتراک",
        "content": (
            "🔗 <b>لینک اشتراک چیست؟</b>\n\n"
            "لینک اشتراک یک آدرس اختصاصی برای سرویس شماست که می‌تواند "
            "اطلاعات کانفیگ‌ها را در یکجا نگهداری کند.\n\n"
            "🔹 <b>مزیت لینک اشتراک:</b>\n\n"
            "• مدیریت راحت‌تر چند کانفیگ\n"
            "• امکان بروزرسانی اطلاعات سرویس\n"
            "• عدم نیاز به وارد کردن دستی تک‌تک کانفیگ‌ها\n\n"
            "📌 اگر لینک اشتراک دریافت کرده‌اید، آن را فقط در برنامه "
            "معتبر و سازگار با سرویس خود وارد کنید.\n\n"
            "⚠️ لینک اشتراک اختصاصی است؛ آن را برای افراد دیگر ارسال نکنید."
        ),
    },

    "update": {
        "title": "🔄 آموزش آپدیت کانفیگ",
        "content": (
            "🔄 <b>آموزش آپدیت کانفیگ</b>\n\n"
            "اگر سرویس شما دارای لینک اشتراک است، معمولاً می‌توانید "
            "از داخل برنامه گزینه Update یا بروزرسانی را بزنید.\n\n"
            "🔹 <b>مراحل کلی:</b>\n\n"
            "1️⃣ برنامه VPN را باز کنید.\n"
            "2️⃣ پروفایل یا Subscription خود را پیدا کنید.\n"
            "3️⃣ گزینه Update / Refresh را بزنید.\n"
            "4️⃣ صبر کنید تا اطلاعات جدید دریافت شود.\n"
            "5️⃣ یکی از کانفیگ‌های جدید را انتخاب کنید.\n\n"
            "💡 اگر Update انجام نشد، اتصال اینترنت را بررسی کنید و "
            "دوباره امتحان کنید."
        ),
    },

    "connection_problem": {
        "title": "⚡ رفع مشکل وصل نشدن",
        "content": (
            "⚡ <b>اگر VPN وصل نمی‌شود</b>\n\n"
            "قبل از ارسال تیکت پشتیبانی، این موارد را بررسی کنید:\n\n"
            "1️⃣ اینترنت اصلی خود را بررسی کنید.\n"
            "2️⃣ یک سرور یا کانفیگ دیگر را امتحان کنید.\n"
            "3️⃣ اگر لینک اشتراک دارید، آن را Update کنید.\n"
            "4️⃣ برنامه VPN را کامل ببندید و دوباره باز کنید.\n"
            "5️⃣ در صورت امکان، شبکه اینترنت را تغییر دهید.\n\n"
            "📌 اگر مشکل همچنان وجود داشت، از بخش "
            "«🎧 پشتیبانی» برای ارسال پیام به پشتیبانی استفاده کنید."
        ),
    },

    "choose_service": {
        "title": "📊 آموزش انتخاب سرویس مناسب",
        "content": (
            "📊 <b>کدام سرویس برای من مناسب است؟</b>\n\n"
            "انتخاب سرویس به نوع استفاده شما بستگی دارد.\n\n"
            "🖥 <b>سرویس دیتاسنتر:</b>\n"
            "برای استفاده‌های عمومی و اتصال پایدار مناسب است.\n\n"
            "🎮 <b>سرویس گیمینگ:</b>\n"
            "برای کاربرانی طراحی شده که هدف اصلی آن‌ها استفاده در بازی "
            "و کاهش مشکلات مربوط به مسیر اتصال است.\n\n"
            "🏠 <b>سرویس مسکونی:</b>\n"
            "از IPهای با ماهیت مسکونی استفاده می‌کند و کاربردهای خاص "
            "خود را دارد.\n\n"
            "💡 اگر مطمئن نیستید کدام سرویس مناسب شماست، قبل از خرید "
            "می‌توانید از بخش «🎧 پشتیبانی» راهنمایی بگیرید."
        ),
    },
}


# ============================================================
# Keyboard - دسته‌بندی اصلی
# ============================================================

def tutorials_keyboard() -> InlineKeyboardMarkup:

    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(
                    text="🍎 آیفون و مک",
                    callback_data="tutorial_category_ios",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🤖 اندروید",
                    callback_data="tutorial_category_android",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="💻 ویندوز",
                    callback_data="tutorial_category_windows",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="📌 آموزش‌های عمومی",
                    callback_data="tutorial_category_general",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🔙 بازگشت به منوی اصلی",
                    callback_data="main_menu",
                ),
            ],
        ]
    )


# ============================================================
# Keyboard - آیفون و مک
# ============================================================

def ios_tutorial_keyboard() -> InlineKeyboardMarkup:

    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(
                    text="📱 SingBox آیفون",
                    callback_data="tutorial_ios_singbox",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="📱 V2Box آیفون",
                    callback_data="tutorial_ios_v2box",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="📱 NPV Tunnel",
                    callback_data="tutorial_ios_npv",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="📱 V2RayTun",
                    callback_data="tutorial_ios_v2raytun",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🏠 بازگشت به منوی قبل",
                    callback_data="tutorials",
                ),
            ],
        ]
    )


# ============================================================
# Keyboard - اندروید
# ============================================================

def android_tutorial_keyboard() -> InlineKeyboardMarkup:

    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(
                    text="🤖 V2rayNG اندروید",
                    callback_data="tutorial_android_v2rayng",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🎮 حل مشکل پابجی، تیک‌تاک و...",
                    callback_data="tutorial_android_v2rayng",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🤖 NPV Tunnel اندروید",
                    callback_data="tutorial_android_npv",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🤖 V2RayTun اندروید پیشنهادی",
                    callback_data="tutorial_android_v2raytun",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🏠 بازگشت به منوی قبل",
                    callback_data="tutorials",
                ),
            ],
        ]
    )


# ============================================================
# Keyboard - ویندوز
# ============================================================

def windows_tutorial_keyboard() -> InlineKeyboardMarkup:

    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(
                    text="💻 آموزش ویندوز Nekoray",
                    callback_data="tutorial_windows_nekoray",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="💻 آموزش V2RayTun ویندوز",
                    callback_data="tutorial_windows_v2raytun",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="💻 آموزش Hiddify پیشنهادی",
                    callback_data="tutorial_windows_hiddify",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🏠 بازگشت به منوی قبل",
                    callback_data="tutorials",
                ),
            ],
        ]
    )


# ============================================================
# Keyboard - آموزش‌های عمومی
# ============================================================

def general_tutorial_keyboard() -> InlineKeyboardMarkup:

    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(
                    text="🔗 لینک اشتراک",
                    callback_data="tutorial_subscription",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🔄 آپدیت کانفیگ",
                    callback_data="tutorial_update",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="⚡ مشکل اتصال",
                    callback_data="tutorial_connection_problem",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="📊 انتخاب سرویس",
                    callback_data="tutorial_choose_service",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🖥 آموزش عمومی کامپیوتر",
                    callback_data="tutorial_computer",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="📱 آموزش عمومی اندروید",
                    callback_data="tutorial_android",
                ),
                InlineKeyboardButton(
                    text="🍎 آموزش عمومی آیفون",
                    callback_data="tutorial_iphone",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="💻 آموزش عمومی ویندوز",
                    callback_data="tutorial_windows",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🏠 بازگشت به منوی قبل",
                    callback_data="tutorials",
                ),
            ],
        ]
    )


# ============================================================
# Keyboard - داخل آموزش
# ============================================================

def tutorial_back_keyboard(
    category: str,
) -> InlineKeyboardMarkup:

    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(
                    text="🏠 بازگشت به منوی قبل",
                    callback_data=f"tutorial_category_{category}",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="📚 لیست دسته‌بندی‌ها",
                    callback_data="tutorials",
                ),
            ],
            [
                InlineKeyboardButton(
                    text="🔙 منوی اصلی",
                    callback_data="main_menu",
                ),
            ],
        ]
    )


# ============================================================
# نمایش لیست آموزش‌ها
# ============================================================

@router.callback_query(
    F.data == CB_TUTORIALS
)
async def show_tutorials(
    callback: CallbackQuery,
):

    await callback.message.edit_text(
        "📚 <b>بخش آموزش</b>\n\n"
        "یک دسته را انتخاب کنید:",
        reply_markup=tutorials_keyboard(),
    )

    await callback.answer()


# ============================================================
# آیفون و مک
# ============================================================

@router.callback_query(
    F.data == "tutorial_category_ios"
)
async def show_ios_category(
    callback: CallbackQuery,
):

    await callback.message.edit_text(
        "🍎 <b>آیفون و مک</b>\n\n"
        "یک گزینه از لیست زیر را انتخاب کنید ✅",
        reply_markup=ios_tutorial_keyboard(),
    )

    await callback.answer()


# ============================================================
# اندروید
# ============================================================

@router.callback_query(
    F.data == "tutorial_category_android"
)
async def show_android_category(
    callback: CallbackQuery,
):

    await callback.message.edit_text(
        "🤖 <b>اندروید</b>\n\n"
        "یک گزینه از لیست زیر را انتخاب کنید ✅",
        reply_markup=android_tutorial_keyboard(),
    )

    await callback.answer()


# ============================================================
# ویندوز
# ============================================================

@router.callback_query(
    F.data == "tutorial_category_windows"
)
async def show_windows_category(
    callback: CallbackQuery,
):

    await callback.message.edit_text(
        "💻 <b>ویندوز</b>\n\n"
        "یک گزینه از لیست زیر را انتخاب کنید ✅",
        reply_markup=windows_tutorial_keyboard(),
    )

    await callback.answer()


# ============================================================
# آموزش‌های عمومی
# ============================================================

@router.callback_query(
    F.data == "tutorial_category_general"
)
async def show_general_category(
    callback: CallbackQuery,
):

    await callback.message.edit_text(
        "📌 <b>آموزش‌های عمومی</b>\n\n"
        "یک گزینه از لیست زیر را انتخاب کنید ✅",
        reply_markup=general_tutorial_keyboard(),
    )

    await callback.answer()


# ============================================================
# نمایش آموزش
# ============================================================

@router.callback_query(
    F.data.startswith("tutorial_")
)
async def show_tutorial(
    callback: CallbackQuery,
):

    tutorial_key = callback.data.replace(
        "tutorial_",
        "",
        1,
    )

    tutorial = TUTORIALS.get(
        tutorial_key
    )

    if not tutorial:
        await callback.answer(
            "❌ آموزش موردنظر پیدا نشد.",
            show_alert=True,
        )
        return

    if tutorial_key.startswith("ios_"):
        category = "ios"

    elif tutorial_key.startswith("android_"):
        category = "android"

    elif tutorial_key.startswith("windows_"):
        category = "windows"

    else:
        category = "general"

    await callback.message.edit_text(
        tutorial["content"],
        reply_markup=tutorial_back_keyboard(category),
    )

    await callback.answer()