#!/usr/bin/env python3
"""
ربات هلپر سلف TH SELF - نسخه کامل و حرفه‌ای
با استایل ● متن ● و زیردسته‌بندی منظم
سازگار با پایتون 3.13
"""

import requests
import json
import time
import sys
import logging

# ========== تنظیمات ==========
TOKEN = "8094996050:AAFF6eW_Ty8POtu4MJTn_a1ff3Fy4ydwpJc"
BOT_USERNAME = "HELPERBORSELFBOT"
BASE_URL = f"https://api.telegram.org/bot{TOKEN}"

logging.basicConfig(
    format='%(asctime)s - %(levelname)s - %(message)s',
    level=logging.INFO,
    datefmt='%H:%M:%S'
)
logger = logging.getLogger(__name__)

# ========== متن خوش آمدگویی ==========
WELCOME_TEXT = """
╔════════════════════════════════════════════════════════════╗
║                                                            ║
║                    ●  پنل مدیریت سلف  ●                    ║
║                                                            ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║              به پنل مدیریت سلف خوش آمدید                   ║
║                                                            ║
║     از دکمه‌های زیر برای مشاهده راهنمای هر بخش استفاده کنید ║
║                                                            ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دسته اول : دستورات پایه و اصلی                         ║
║  ● دسته دوم : مدیریت و امنیت                              ║
║  ● دسته سوم : ابزارهای پیشرفته                            ║
║  ● دسته چهارم : مدیریت گروه و کانال                       ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
"""

# ========== متن راهنماها ==========
HELP_TEXTS = {
    # دسته اول : دستورات پایه و اصلی
    "id": """
╔════════════════════════════════════════════════════════════╗
║                         ●  آیدی  ●                         ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستور :                                                 ║
║     ایدی                                                   ║
║                                                            ║
║  ● نحوه استفاده :                                         ║
║     بدون ریپلای : نمایش اطلاعات خودتان                    ║
║     با ریپلای : نمایش اطلاعات کاربر مورد نظر              ║
║                                                            ║
║  ● اطلاعات نمایش داده شده :                               ║
║     آیدی عددی کاربر                                        ║
║     یوزرنیم و نام کامل                                     ║
║     وضعیت پریمیوم                                          ║
║     تعداد عکس‌های پروفایل                                  ║
║     آیدی و عنوان چت                                        ║
║     لیست گروه‌های مشترک                                    ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "time": """
╔════════════════════════════════════════════════════════════╗
║                         ●  تایم  ●                         ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستورات :                                               ║
║     تایم روشن : فعال کردن ساعت کنار نام                    ║
║     تایم خاموش : غیرفعال کردن ساعت                         ║
║     لیست فونت : نمایش فونت‌های موجود                       ║
║     تنظیم فونت 1 تا 6 : تغییر فونت ساعت                    ║
║                                                            ║
║  ● فونت‌های موجود :                                       ║
║     فونت 1 : 𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗                                 ║
║     فونت 2 : 𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵                                 ║
║     فونت 3 : ０１２３４５６７８９                           ║
║     فونت 4 : 𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫                                 ║
║     فونت 5 : 𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡                                 ║
║     فونت 6 : 0҉1҉2҉3҉4҉5҉6҉7҉8҉9҉                         ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "photo": """
╔════════════════════════════════════════════════════════════╗
║                      ●  عکس تایمدار  ●                     ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستور :                                                 ║
║     عکس سیو                                                ║
║                                                            ║
║  ● نحوه استفاده :                                         ║
║     1. روی عکس تایمدار ریپلای کنید                        ║
║     2. دستور عکس سیو را ارسال کنید                        ║
║                                                            ║
║  ● اطلاعات ذخیره شده :                                    ║
║     نام و آیدی فرستنده                                     ║
║     زمان اصلی عکس                                         ║
║     تاریخ و زمان ذخیره                                     ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "backup": """
╔════════════════════════════════════════════════════════════╗
║                       ●  پشتیبان  ●                        ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستور :                                                 ║
║     سیو @یوزرنیم                                           ║
║                                                            ║
║  ● مثال :                                                  ║
║     سیو @username                                          ║
║                                                            ║
║  ● خروجی فایل پشتیبان :                                    ║
║     تاریخچه کامل پیام‌ها                                   ║
║     اطلاعات فرستنده هر پیام                                ║
║     زمان ارسال پیام‌ها                                     ║
║     نوع مدیا                                               ║
║     متن پیام‌ها                                            ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "price": """
╔════════════════════════════════════════════════════════════╗
║                      ●  قیمت ارز  ●                        ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستور :                                                 ║
║     قیمت [نام ارز]                                         ║
║                                                            ║
║  ● مثال‌ها :                                               ║
║     قیمت BTC : بیت‌کوین                                    ║
║     قیمت ETH : اتریوم                                      ║
║     قیمت TON : تون کوین                                    ║
║     قیمت DOGE : دوج کوین                                   ║
║                                                            ║
║  ● اطلاعات نمایش داده شده :                                ║
║     قیمت تومانی                                            ║
║     قیمت دلاری                                             ║
║     درصد تغییرات 24 ساعته                                  ║
║     زمان آخرین بروزرسانی                                   ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "spam": """
╔════════════════════════════════════════════════════════════╗
║                         ●  اسپم  ●                         ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستور :                                                 ║
║     اسپم [تعداد] [متن]                                     ║
║                                                            ║
║  ● مثال‌ها :                                               ║
║     اسپم 10 سلام                                           ║
║     اسپم 5 تست                                             ║
║                                                            ║
║  ● محدودیت‌ها :                                            ║
║     حداکثر 50 پیام در هر دستور                             ║
║     فاصله 0.2 ثانیه بین هر پیام                            ║
║     قابلیت ریپلای روی پیام                                 ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "format": """
╔════════════════════════════════════════════════════════════╗
║                       ●  فرمت متن  ●                       ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستورات :                                               ║
║     فرمت بولد روشن / خاموش                                 ║
║     فرمت ایتالیک روشن / خاموش                              ║
║     فرمت زیر خط روشن / خاموش                               ║
║     فرمت خط خورده روشن / خاموش                             ║
║     فرمت اسپویلر روشن / خاموش                              ║
║     فرمت کد روشن / خاموش                                   ║
║     فرمت پیش فرمت روشن / خاموش                             ║
║     فرمت نقل قول روشن / خاموش                              ║
║                                                            ║
║  ● دستورات وضعیت :                                         ║
║     فرمت وضعیت : نمایش وضعیت فعلی                          ║
║     فرمت ریست : غیرفعال کردن همه                           ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    # دسته دوم : مدیریت و امنیت
    "enemy": """
╔════════════════════════════════════════════════════════════╗
║                       ●  دشمنان  ●                         ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستورات :                                               ║
║     دشمن : افزودن به لیست (ریپلای روی پیام کاربر)         ║
║     حذف دشمن : حذف از لیست (ریپلای)                       ║
║     لیست دشمن : مشاهده لیست کامل                           ║
║     دشمنان : نمایش سریع لیست                               ║
║     پاک کردن دشمنان : حذف همه                              ║
║                                                            ║
║  ● قابلیت :                                                ║
║     ارسال خودکار فحش رندوم به دشمنان                      ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "insult": """
╔════════════════════════════════════════════════════════════╗
║                         ●  فحش  ●                          ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستورات :                                               ║
║     فحش افزودن [متن] : افزودن فحش جدید                    ║
║     فحش حذف [متن] : حذف فحش                                ║
║     لیست فحش : مشاهده لیست فحش‌ها                          ║
║                                                            ║
║  ● مثال‌ها :                                               ║
║     فحش افزودن تو احمقی                                    ║
║     فحش افزودن برو گمشو                                    ║
║     فحش حذف تو احمقی                                       ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "online": """
╔════════════════════════════════════════════════════════════╗
║                    ●  همیشه آنلاین  ●                      ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستورات :                                               ║
║     انلاین روشن : فعال کردن حالت همیشه آنلاین              ║
║     انلاین خاموش : غیرفعال کردن                            ║
║                                                            ║
║  ● قابلیت :                                                ║
║     اکانت شما همیشه به عنوان آنلاین نمایش داده می‌شود      ║
║                                                            ║
║  ● هشدار :                                                 ║
║     استفاده طولانی مدت ممکن است باعث محدودیت شود           ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "lock": """
╔════════════════════════════════════════════════════════════╗
║                       ●  قفل پیوی  ●                       ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● قفل‌های کلی :                                           ║
║     همه روشن : قفل کامل پیوی                               ║
║     همه خاموش : آزادسازی کامل                              ║
║                                                            ║
║  ● قفل‌های اختصاصی :                                       ║
║     مدیا روشن / خاموش : قفل عکس و ویدیو                    ║
║     استیکر روشن / خاموش : قفل استیکر و گیف                 ║
║     فوروارد روشن / خاموش : قفل پیام فورواردی               ║
║     ویس روشن / خاموش : قفل ویس                             ║
║     پیام روشن / خاموش : قفل پیام متنی                      ║
║     فایل روشن / خاموش : قفل فایل                           ║
║                                                            ║
║  ● دستورات وضعیت :                                         ║
║     وضعیت قفل : نمایش وضعیت فعلی                           ║
║     ریست قفل : بازنشانی همه قفل‌ها                         ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "antilogin": """
╔════════════════════════════════════════════════════════════╗
║                     ●  انتی لاگین  ●                       ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستورات :                                               ║
║     انتی لاگین روشن : فعال کردن                            ║
║     انتی لاگین خاموش : غیرفعال کردن                        ║
║     انتی لاگین : بررسی وضعیت                               ║
║                                                            ║
║  ● قابلیت‌ها :                                             ║
║     شناسایی پیام‌های کد ورود از 777000                     ║
║     استخراج خودکار کدهای ورود                              ║
║     ذخیره کدها در Saved Messages                           ║
║     حذف پیام اصلی برای امنیت                              ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "reaction": """
╔════════════════════════════════════════════════════════════╗
║                    ●  ریکشن خودکار  ●                      ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستورات :                                               ║
║     ریکت [ایموجی] : ثبت ریکشن (ریپلای روی کاربر)          ║
║     حذف ریکت : حذف ریکشن (ریپلای)                         ║
║     لیست ریکت : مشاهده لیست ریکشن‌ها                       ║
║     پاکسازی ریکت : حذف همه ریکشن‌ها                        ║
║                                                            ║
║  ● مثال‌ها :                                               ║
║     ریکت 💙 (ریپلای)                                       ║
║     ریکت 👍 (ریپلای)                                       ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "edit": """
╔════════════════════════════════════════════════════════════╗
║                     ●  ویرایش سریع  ●                      ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستور :                                                 ║
║     ویرایش کلمه_قدیمی به کلمه_جدید                        ║
║                                                            ║
║  ● نحوه استفاده :                                         ║
║     1. روی پیام مورد نظر ریپلای کنید                      ║
║     2. دستور را ارسال کنید                                ║
║                                                            ║
║  ● مثال‌ها :                                               ║
║     ویرایش سلام به سلام                                    ║
║     ویرایش احمق به عزیز                                    ║
║     ویرایش بد به خوب                                       ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    # دسته سوم : ابزارهای پیشرفته
    "banner": """
╔════════════════════════════════════════════════════════════╗
║                         ●  بنر  ●                          ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستورات :                                               ║
║     تنظیم بنر : ثبت بنر جدید (ریپلای روی پیام)             ║
║     لیست بنرها : مشاهده بنرهای ثبت شده                     ║
║     بنر همگانی [کد] : شروع پخش همگانی                     ║
║     بنر همگانی خاموش : توقف پخش                           ║
║     بنر ارسال [کد] : ارسال فوری بنر                        ║
║     زمان بنر [دقیقه] : تنظیم فاصله ارسال                   ║
║                                                            ║
║  ● مثال‌ها :                                               ║
║     تنظیم بنر (ریپلای)                                     ║
║     بنر همگانی 1                                           ║
║     بنر ارسال 1                                            ║
║     زمان بنر 5                                             ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "instagram": """
╔════════════════════════════════════════════════════════════╗
║                     ●  اینستاگرام  ●                       ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستور :                                                 ║
║     اینستا [لینک]                                          ║
║                                                            ║
║  ● مثال‌ها :                                               ║
║     اینستا https://www.instagram.com/reel/xxxxx/           ║
║     اینستا https://www.instagram.com/p/xxxxx/              ║
║                                                            ║
║  ● قابلیت‌ها :                                             ║
║     دانلود ریل‌ها با کیفیت اصلی                            ║
║     دانلود پست‌های عادی                                    ║
║     نمایش توضیحات پست                                      ║
║     نمایش اطلاعات کاربر                                    ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "download": """
╔════════════════════════════════════════════════════════════╗
║                    ●  دانلود تلگرام  ●                     ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستور :                                                 ║
║     دانلود [لینک پست]                                      ║
║                                                            ║
║  ● مثال‌ها :                                               ║
║     دانلود https://t.me/channel/123                        ║
║     دانلود https://t.me/username/456                       ║
║                                                            ║
║  ● قابلیت‌ها :                                             ║
║     کپی پست‌ها به Saved Messages                           ║
║     دانلود انواع مدیا                                      ║
║     پشتیبانی از تمام انواع پیام                            ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    # دسته چهارم : مدیریت گروه و کانال
    "groups": """
╔════════════════════════════════════════════════════════════╗
║                  ●  مدیریت گروه و کانال  ●                 ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستورات :                                               ║
║     پینگ : بررسی سرعت ربات                                 ║
║     تعداد کانال ها : نمایش آمار کانال‌ها                   ║
║     تعداد گروه ها : نمایش آمار گروه‌ها                     ║
║     خروج همه کانال : خروج از تمام کانال‌ها                 ║
║     خروج همه گروه : خروج از تمام گروه‌ها                   ║
║                                                            ║
║  ● نکته :                                                  ║
║     تاخیر 4 ثانیه‌ای بین خروج‌ها برای جلوگیری             ║
║     از محدودیت تلگرام                                      ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "action": """
╔════════════════════════════════════════════════════════════╗
║                      ●  اکشن خودکار  ●                     ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستورات :                                               ║
║     اکشن لیست : نمایش لیست اکشن‌ها                         ║
║     اکشن [نام] روشن : فعال کردن اکشن                       ║
║     اکشن [نام] خاموش : غیرفعال کردن اکشن                   ║
║     اکشن وضعیت : نمایش وضعیت فعلی                          ║
║     اکشن ریست : غیرفعال کردن همه                           ║
║                                                            ║
║  ● مثال‌ها :                                               ║
║     اکشن تایپ روشن                                         ║
║     اکشن اپلود عکس روشن                                    ║
║     اکشن ضبط ویس روشن                                      ║
║                                                            ║
║  ● اکشن‌های موجود :                                        ║
║     تایپ، اپلود عکس، ضبط ویس، اپلود ویدیو، اپلود فایل     ║
║     ضبط ویدیو، اپلود ویس، بازی، انتخاب مخاطب              ║
║     پیدا کردن موقعیت، انتخاب استیکر                        ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",

    "autoreply": """
╔════════════════════════════════════════════════════════════╗
║                     ●  پاسخ خودکار  ●                      ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ● دستورات :                                               ║
║     پاسخ افزودن [متن]|[پاسخ] : افزودن پاسخ جدید           ║
║     پاسخ حذف [متن] : حذف پاسخ                              ║
║     پاسخ لیست : مشاهده لیست پاسخ‌ها                        ║
║                                                            ║
║  ● مثال‌ها :                                               ║
║     پاسخ افزودن سلام|سلام چطوری                            ║
║     پاسخ افزودن خوبم|خوشحالم                               ║
║     پاسخ حذف سلام                                          ║
║                                                            ║
║  ● قابلیت :                                                ║
║     تشخیص در متن پیام (حتی اگر وسط جمله باشد)              ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
""",
}

# ========== کیبوردها با استایل ● متن ● ==========

# صفحه اول - دسته اول و دوم
KEYBOARD_PAGE1 = {
    "inline_keyboard": [
        [{"text": "● آیدی ●", "callback_data": "id"}, {"text": "● تایم ●", "callback_data": "time"}],
        [{"text": "● عکس تایمدار ●", "callback_data": "photo"}, {"text": "● پشتیبان ●", "callback_data": "backup"}],
        [{"text": "● قیمت ارز ●", "callback_data": "price"}, {"text": "● اسپم ●", "callback_data": "spam"}],
        [{"text": "● فرمت متن ●", "callback_data": "format"}, {"text": "● دشمنان ●", "callback_data": "enemy"}],
        [{"text": "● فحش ●", "callback_data": "insult"}, {"text": "● همیشه آنلاین ●", "callback_data": "online"}],
        [{"text": "● قفل پیوی ●", "callback_data": "lock"}, {"text": "● انتی لاگین ●", "callback_data": "antilogin"}],
        [{"text": "● ریکشن خودکار ●", "callback_data": "reaction"}, {"text": "● ویرایش سریع ●", "callback_data": "edit"}],
        [{"text": "● بنر ●", "callback_data": "banner"}, {"text": "● اینستاگرام ●", "callback_data": "instagram"}],
        [{"text": "● دانلود تلگرام ●", "callback_data": "download"}, {"text": "● مدیریت گروه ●", "callback_data": "groups"}],
        [{"text": "● اکشن خودکار ●", "callback_data": "action"}, {"text": "● پاسخ خودکار ●", "callback_data": "autoreply"}],
        [{"text": "═ صفحه دوم ═", "callback_data": "page2"}, {"text": "● بستن ●", "callback_data": "close"}]
    ]
}

# صفحه دوم - دسته سوم و چهارم
KEYBOARD_PAGE2 = {
    "inline_keyboard": [
        [{"text": "● بنر ●", "callback_data": "banner"}, {"text": "● اینستاگرام ●", "callback_data": "instagram"}],
        [{"text": "● دانلود تلگرام ●", "callback_data": "download"}, {"text": "● مدیریت گروه ●", "callback_data": "groups"}],
        [{"text": "● اکشن خودکار ●", "callback_data": "action"}, {"text": "● پاسخ خودکار ●", "callback_data": "autoreply"}],
        [{"text": "● فحش ●", "callback_data": "insult"}, {"text": "● انتی لاگین ●", "callback_data": "antilogin"}],
        [{"text": "● ریکشن خودکار ●", "callback_data": "reaction"}, {"text": "● ویرایش سریع ●", "callback_data": "edit"}],
        [{"text": "═ صفحه اول ═", "callback_data": "page1"}, {"text": "● بستن ●", "callback_data": "close"}]
    ]
}

# دکمه بازگشت
BACK_BUTTON = {
    "inline_keyboard": [[{"text": "● بازگشت به منو ●", "callback_data": "menu"}]]
}

# ========== توابع کمکی ==========

def send_request(method, data=None):
    """ارسال درخواست به تلگرام"""
    try:
        url = f"{BASE_URL}/{method}"
        if data:
            response = requests.post(url, json=data, timeout=30)
        else:
            response = requests.get(url, timeout=30)
        
        if response.status_code == 200:
            return response.json()
        return None
    except Exception as e:
        logger.error(f"Request error: {e}")
        return None

def edit_message(chat_id, message_id, text, reply_markup=None):
    """ویرایش پیام"""
    data = {
        "chat_id": chat_id,
        "message_id": message_id,
        "text": text,
        "parse_mode": "HTML"
    }
    if reply_markup:
        data["reply_markup"] = json.dumps(reply_markup)
    return send_request("editMessageText", data)

def answer_callback(callback_id):
    """پاسخ به کال‌بک"""
    return send_request("answerCallbackQuery", {"callback_query_id": callback_id})

def answer_inline_query(query_id, results):
    """پاسخ به اینلاین کوئری"""
    data = {
        "inline_query_id": query_id,
        "results": json.dumps(results),
        "cache_time": 60,
        "is_personal": True
    }
    return send_request("answerInlineQuery", data)

# ========== هندلر اصلی ==========

def process_update(update):
    """پردازش آپدیت دریافتی"""
    try:
        # اینلاین کوئری
        if "inline_query" in update:
            inline = update["inline_query"]
            query_id = inline["id"]
            query_text = inline.get("query", "").lower()
            
            if query_text == "panel":
                results = [
                    {
                        "type": "article",
                        "id": "1",
                        "title": "● پنل مدیریت سلف ● صفحه اول",
                        "description": "دستورات پایه و اصلی",
                        "input_message_content": {
                            "message_text": WELCOME_TEXT,
                            "parse_mode": "HTML"
                        },
                        "reply_markup": KEYBOARD_PAGE1
                    },
                    {
                        "type": "article",
                        "id": "2",
                        "title": "● پنل مدیریت سلف ● صفحه دوم",
                        "description": "ابزارهای پیشرفته",
                        "input_message_content": {
                            "message_text": WELCOME_TEXT,
                            "parse_mode": "HTML"
                        },
                        "reply_markup": KEYBOARD_PAGE2
                    }
                ]
                answer_inline_query(query_id, results)
                logger.info(f"● Inline query from user {inline['from']['id']} ●")
        
        # کال‌بک
        elif "callback_query" in update:
            cb = update["callback_query"]
            cb_id = cb["id"]
            data = cb["data"]
            msg = cb["message"]
            chat_id = msg["chat"]["id"]
            msg_id = msg["message_id"]
            user_id = cb["from"]["id"]
            
            # پاسخ به کال‌بک
            answer_callback(cb_id)
            
            # بستن پنل
            if data == "close":
                edit_message(chat_id, msg_id, 
                    "╔════════════════════════════════════════════════════════════╗\n"
                    "║                         ●  پنل بسته شد  ●                    ║\n"
                    "╠════════════════════════════════════════════════════════════╣\n"
                    "║                                                            ║\n"
                    "║     برای باز کردن مجدد، دستور panel را در سلف‌بات وارد کنید  ║\n"
                    "║                                                            ║\n"
                    "╚════════════════════════════════════════════════════════════╝")
                logger.info(f"● Panel closed by user {user_id} ●")
            
            # صفحه اول
            elif data == "page1":
                edit_message(chat_id, msg_id, WELCOME_TEXT, KEYBOARD_PAGE1)
            
            # صفحه دوم
            elif data == "page2":
                edit_message(chat_id, msg_id, WELCOME_TEXT, KEYBOARD_PAGE2)
            
            # منوی اصلی (بازگشت)
            elif data == "menu":
                edit_message(chat_id, msg_id, WELCOME_TEXT, KEYBOARD_PAGE1)
            
            # نمایش راهنما
            elif data in HELP_TEXTS:
                edit_message(chat_id, msg_id, HELP_TEXTS[data], BACK_BUTTON)
                logger.info(f"● Help shown: {data} for user {user_id} ●")
    
    except Exception as e:
        logger.error(f"Error processing update: {e}")

# ========== اجرای اصلی ==========

def main():
    print("=" * 60)
    print("●           ربات هلپر سلف TH SELF - نسخه کامل          ●")
    print("=" * 60)
    print(f"● توکن: {TOKEN[:10]}...")
    print(f"● نام کاربری: @{BOT_USERNAME}")
    print(f"● تعداد راهنماها: {len(HELP_TEXTS)}")
    print("=" * 60)
    print("● نکات مهم:")
    print("● 1. اینلاین مود باید در @BotFather فعال شود")
    print("● 2. دستور /setinline و نام ربات را وارد کنید")
    print("● 3. متن placeholder: panel")
    print("=" * 60)
    
    # تست اتصال
    me = send_request("getMe")
    if me and me.get("ok"):
        logger.info(f"● ربات متصل شد: @{me['result']['username']} ●")
    else:
        logger.error("● خطا در اتصال به تلگرام ●")
        sys.exit(1)
    
    # حذف وب‌هوک
    send_request("deleteWebhook")
    logger.info("● Webhook حذف شد ●")
    
    # شروع پولینگ
    logger.info("● شروع پولینگ... ●")
    print("\n● توی سلف‌بات دستور panel رو بزن ●")
    print("=" * 60)
    
    last_update_id = 0
    
    while True:
        try:
            params = {"offset": last_update_id + 1, "timeout": 30}
            updates = send_request("getUpdates", params)
            
            if updates and updates.get("ok") and updates.get("result"):
                for update in updates["result"]:
                    last_update_id = update["update_id"]
                    process_update(update)
            
            time.sleep(0.5)
            
        except KeyboardInterrupt:
            logger.info("● ربات هلپر متوقف شد ●")
            break
        except Exception as e:
            logger.error(f"● خطا: {e} ●")
            time.sleep(5)

if __name__ == "__main__":
    main()