from telethon import TelegramClient, events, functions
from telethon.tl.functions.account import UpdateProfileRequest
import os, random, sqlite3, asyncio, traceback, time, json
from datetime import datetime
import jdatetime
from pytz import timezone

# ------------------ تنظیمات اولیه ------------------
api_id = 31210039
api_hash = '47c1f67f91db3c3b430fdf821bec7faf'
main_admin = 7967449667
DESTINATION = -3974710939

client = TelegramClient(
    session='avir',
    api_id=api_id,
    api_hash=api_hash,
    device_model='SADRA BOT IS STARTED',
    system_version='Android 15.1.1',
    app_version='Telegram Android 12.1.1',
    system_lang_code='en',
    lang_code='en'
)

download_path = 'downloads'
if not os.path.exists(download_path):
    os.makedirs(download_path)

log_file = "logs.txt"

# ========== متغیرهای سراسری ==========
answer = []      # لیست سوالات برای Auto Answer
javab = []       # لیست پاسخ‌ها برای Auto Answer
enemy = []       # لیست دشمنان
love = []        # لیست عشق‌ها
mutey = []       # لیست افراد mute

# ------------------ لاگ‌نویسی ------------------
def log(message):
    t = datetime.now().strftime("[%Y-%m-%d %H:%M:%S]")
    with open(log_file, "a", encoding="utf-8") as f:
        f.write(f"{t} {message}\n")

# ========== تبدیل اعداد به فونت ثابت ==========
def to_fixed_font(text):
    font_map = {
        '0': '𝟎', '1': '𝟏', '2': '𝟐', '3': '𝟑', '4': '𝟒',
        '5': '𝟓', '6': '𝟔', '7': '𝟕', '8': '𝟖', '9': '𝟗',
        ':': ':', '/': '/', ' ': ' '
    }
    result = ""
    for char in text:
        result += font_map.get(char, char)
    return result

def get_tehran_time():
    return datetime.now(timezone("Asia/Tehran"))

def get_time_string():
    time_str = get_tehran_time().strftime("%H:%M")
    return to_fixed_font(time_str)

# ========== توابع خواندن/نوشتن فایل ==========
def write(filename, content):
    with open(filename, "w", encoding="utf-8") as f:
        f.write(str(content))

def read(filename):
    if not os.path.exists(filename):
        return ""
    with open(filename, "r", encoding="utf-8") as f:
        return f.read().strip()

def json_read(filename):
    if not os.path.exists(filename):
        return {}
    with open(filename, "r", encoding="utf-8") as f:
        return json.load(f)

# ------------------ دیتابیس ------------------
def init_db():
    db = sqlite3.connect('admins.db', check_same_thread=False)
    cursor = db.cursor()
    cursor.execute('''CREATE TABLE IF NOT EXISTS admins (id INTEGER PRIMARY KEY)''')
    cursor.execute('''CREATE TABLE IF NOT EXISTS source (id INTEGER)''')
    db.commit()
    return db, cursor

db, cursor = init_db()

# ========== فایل تنظیمات ==========
if not os.path.exists("data.json"):
    with open("data.json", "w", encoding="utf-8") as f:
        json.dump({
            "time_status": "off",
            "limitDel": 4,
            "autoan": "off"
        }, f)

# فایل زمان
if not os.path.exists("time.txt"):
    write("time.txt", "")

def is_admin(user_id):
    if user_id == main_admin:
        return True
    cursor.execute('SELECT id FROM admins WHERE id=?', (user_id,))
    return cursor.fetchone() is not None

def add_admin(user_id):
    cursor.execute('INSERT OR IGNORE INTO admins (id) VALUES (?)', (user_id,))
    db.commit()
    log(f"✅ Admin added: {user_id}")

# ========== تابع به‌روزرسانی last name با ساعت ==========
async def update_lastname_with_time():
    try:
        a = json_read("data.json")
        if a.get("time_status") != "on":
            return
        
        current_time = get_tehran_time().strftime("%H:%M")
        if read("time.txt") != current_time:
            time_font = get_time_string()
            await client(UpdateProfileRequest(last_name=time_font))
            write("time.txt", current_time)
            log(f"✅ Last name updated to: {time_font}")
    except Exception as e:
        log(f"❌ Error updating last name: {e}")

# ==========================================
# ========== دستورات ==========
# ==========================================

# ========== زمان ==========
@client.on(events.NewMessage(pattern=r'^\.time (on|off)$'))
async def time_cmd(event):
    if not is_admin(event.sender_id):
        return
    status = event.pattern_match.group(1)
    a = json_read("data.json")
    a["time_status"] = status
    with open("data.json", "w", encoding="utf-8") as f:
        json.dump(a, f)
    if status == "on":
        await update_lastname_with_time()
        await event.reply(f"✅ ساعت روی last name فعال شد\n⏰ `{get_time_string()}`")
    else:
        try:
            await client(UpdateProfileRequest(last_name=""))
            await event.reply("❌ ساعت روی last name غیرفعال شد")
        except Exception as e:
            await event.reply(f"❌ Error: {e}")

@client.on(events.NewMessage(pattern=r'^\.now$'))
async def now_cmd(event):
    if not is_admin(event.sender_id):
        return
    tehran_time = get_tehran_time()
    await event.reply(f"🕐 ساعت تهران: `{tehran_time.strftime('%H:%M:%S')}`")

# ========== لیمیت حذف ==========
@client.on(events.NewMessage(pattern=r'^\.limit_del (\d+)$'))
async def limit_del_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        b = int(event.pattern_match.group(1))
        if b > 0:
            a = json_read("data.json")
            a["limitDel"] = b
            with open("data.json", "w", encoding="utf-8") as f:
                json.dump(a, f)
            await event.reply(f"❖ Anti Del Member Limit Updated to {b}")
        else:
            await event.reply("❖ Please Enter A Number Greater Than 0")
    except:
        await event.reply("❖ Please Enter A Number")

# ========== حالت خوش‌آمدگویی ==========




# ======================================================
# ========== بخش SEND (تبچی) - کامل و درست ==========
# ======================================================

tabchi_list = []  # لیست تبچی‌ها

# ========== شروع تبچی جدید ==========
@client.on(events.NewMessage(pattern=r'^\.send (\d+) (.+)$'))
async def tabchi_start_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        interval = int(event.pattern_match.group(1))
        message = event.pattern_match.group(2).strip()
        chat_id = event.chat_id
        
        # اضافه کردن به لیست
        tabchi_list.append({
            "chat_id": chat_id,
            "active": True,
            "interval": interval * 60,
            "message": message,
            "last_send": 0
        })
        
        num = len(tabchi_list)
        await event.reply(f"✅ **تبچی {num} فعال شد!**\n⏱️ هر {interval} دقیقه\n💬 `{message}`")
        
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== فعال کردن تبچی در گپ فعلی ==========
@client.on(events.NewMessage(pattern=r'^\.send on$'))
async def tabchi_on_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    chat_id = event.chat_id
    found = False
    
    for data in tabchi_list:
        if data["chat_id"] == chat_id:
            data["active"] = True
            found = True
            await event.reply(f"✅ تبچی در این گپ فعال شد!")
            break
    
    if not found:
        await event.reply("❌ در این گپ تبچی وجود ندارد! اول با `.send 5 پیام` بسازش!")

# ========== غیرفعال کردن تبچی در گپ فعلی ==========
@client.on(events.NewMessage(pattern=r'^\.send off$'))
async def tabchi_off_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    chat_id = event.chat_id
    found = False
    
    for data in tabchi_list:
        if data["chat_id"] == chat_id:
            data["active"] = False
            found = True
            await event.reply(f"❌ تبچی در این گپ متوقف شد!")
            break
    
    if not found:
        await event.reply("❌ در این گپ تبچی وجود ندارد!")

# ========== غیرفعال کردن تبچی با شماره ==========
@client.on(events.NewMessage(pattern=r'^\.send off (\d+)$'))
async def tabchi_off_num_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        num = int(event.pattern_match.group(1)) - 1
        if 0 <= num < len(tabchi_list):
            tabchi_list[num]["active"] = False
            await event.reply(f"❌ تبچی {num+1} متوقف شد!")
        else:
            await event.reply("❌ تبچی با این شماره وجود ندارد!")
    except:
        await event.reply("❌ لطفا عدد وارد کن!")

# ========== حذف تبچی در گپ فعلی ==========
@client.on(events.NewMessage(pattern=r'^\.send stop$'))
async def tabchi_stop_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    chat_id = event.chat_id
    found = False
    
    for i, data in enumerate(tabchi_list):
        if data["chat_id"] == chat_id:
            del tabchi_list[i]
            found = True
            await event.reply(f"❌ تبچی در این گپ حذف شد!")
            break
    
    if not found:
        await event.reply("❌ در این گپ تبچی وجود ندارد!")

# ========== حذف تبچی با شماره ==========
@client.on(events.NewMessage(pattern=r'^\.send stop (\d+)$'))
async def tabchi_stop_num_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        num = int(event.pattern_match.group(1)) - 1
        if 0 <= num < len(tabchi_list):
            del tabchi_list[num]
            await event.reply(f"❌ تبچی {num+1} حذف شد!")
        else:
            await event.reply("❌ تبچی با این شماره وجود ندارد!")
    except:
        await event.reply("❌ لطفا عدد وارد کن!")

# ========== لیست تبچی‌ها ==========
@client.on(events.NewMessage(pattern=r'^\.listsend$'))
async def tabchi_list_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    if not tabchi_list:
        await event.reply("❌ هیچ تبچی فعالی نیست!")
        return
    
    msg = "📊 **لیست تبچی‌ها:**\n━━━━━━━━━━━━━━━━━━━\n"
    
    for i, data in enumerate(tabchi_list, 1):
        status = "✅" if data["active"] else "❌"
        try:
            chat = await client.get_entity(data["chat_id"])
            name = chat.title if hasattr(chat, 'title') else str(data["chat_id"])
        except:
            name = str(data["chat_id"])
        
        msg += f"{status} **#{i}** {name}\n"
        msg += f"   ⏱️ {data['interval']//60} دقیقه\n"
        msg += f"   💬 `{data['message']}`\n"
        msg += "━━━━━━━━━━━━━━━━━━━\n"
    
    await event.reply(msg)

# ========== خاموش کردن همه ==========
@client.on(events.NewMessage(pattern=r'^\.send off all$'))
async def tabchi_off_all_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    for data in tabchi_list:
        data["active"] = False
    
    await event.reply(f"❌ همه {len(tabchi_list)} تبچی متوقف شدند!")

# ========== حذف همه ==========
@client.on(events.NewMessage(pattern=r'^\.send stop all$'))
async def tabchi_stop_all_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    count = len(tabchi_list)
    tabchi_list.clear()
    await event.reply(f"❌ همه {count} تبچی حذف شدند!")

# ========== حلقه اصلی تبچی ==========
async def tabchi_loop():
    while True:
        try:
            now = int(time.time())
            
            for data in tabchi_list:
                if not data["active"]:
                    continue
                
                if data["last_send"] == 0:
                    data["last_send"] = now
                    try:
                        await client.send_message(data["chat_id"], data["message"])
                        print(f"✅ ارسال اول: {data['message']}")
                    except Exception as e:
                        print(f"❌ خطا: {e}")
                
                elif (now - data["last_send"]) >= data["interval"]:
                    try:
                        await client.send_message(data["chat_id"], data["message"])
                        data["last_send"] = now
                        print(f"✅ ارسال: {data['message']}")
                    except Exception as e:
                        print(f"❌ خطا: {e}")
                        if "PEER_ID_INVALID" in str(e):
                            data["active"] = False
            
            await asyncio.sleep(5)
            
        except Exception as e:
            print(f"❌ خطا در تبچی: {e}")
            await asyncio.sleep(10)
  
# ========== وضعیت ==========
@client.on(events.NewMessage(pattern=r'^\.on_off_status$'))
async def status_cmd(event):
    if not is_admin(event.sender_id):
        return
    a = json_read("data.json")
    msg = ""
    for key, value in a.items():
        msg += f"❖ {key} -> {value}\n"
    await event.reply(msg)

# ========== Auto Answer ==========
@client.on(events.NewMessage(pattern=r'^\.answer (on|off)$'))
async def answer_cmd(event):
    if not is_admin(event.sender_id):
        return
    status = event.pattern_match.group(1)
    a = json_read("data.json")
    a["autoan"] = status
    with open("data.json", "w", encoding="utf-8") as f:
        json.dump(a, f)
    await event.reply(f"❖ Auto Answer is **{status.upper()}**")

@client.on(events.NewMessage(pattern=r'^\.addan (.+)$'))
async def addan_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        parts = event.pattern_match.group(1).split(":")
        if len(parts) >= 2:
            an = parts[0].strip()
            en = ":".join(parts[1:]).strip()
            answer.append(an)
            javab.append(en)
            await event.reply(f"❖ Answer Added\n[{an} -> {en}]")
        else:
            await event.reply("❖ فرمت: `.addan سوال:جواب`")
    except:
        await event.reply("❖ فرمت: `.addan سوال:جواب`")

@client.on(events.NewMessage(pattern=r'^\.anclear$'))
async def anclear_cmd(event):
    if not is_admin(event.sender_id):
        return
    if len(answer) > 0:
        answer.clear()
        javab.clear()
        await event.reply("❖ Answer List Cleared")
    else:
        await event.reply("❖ Answer List is Empty")

@client.on(events.NewMessage(pattern=r'^\.anlist$'))
async def anlist_cmd(event):
    if not is_admin(event.sender_id):
        return
    if len(answer) > 0:
        msg = "❖ **Answer List:**\n"
        for i in range(len(answer)):
            msg += f"❖ {i+1}: {answer[i]} -> {javab[i]}\n"
        await event.reply(msg)
    else:
        await event.reply("❖ Answer List is Empty")

# ========== Auto Answer Handler ==========
@client.on(events.NewMessage(func=lambda e: e.text and e.is_private))
async def auto_answer_handler(event):
    a = json_read("data.json")
    if a.get("autoan") != "on":
        return
    if not is_admin(event.sender_id):
        return
    if event.text in answer:
        idx = answer.index(event.text)
        await event.reply(javab[idx])

# ========== Enemy List ==========
@client.on(events.NewMessage(pattern=r'^\.setenemy$'))
async def setenemy_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if reply and reply.from_id:
        user_id = reply.from_id.user_id
        if user_id not in enemy:
            enemy.append(user_id)
            await event.reply(f"❖ Added To Enemy List")
        else:
            await event.reply("❖ Already in Enemy List")

@client.on(events.NewMessage(pattern=r'^\.delenemy$'))
async def delenemy_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if reply and reply.from_id:
        user_id = reply.from_id.user_id
        if user_id in enemy:
            enemy.remove(user_id)
            await event.reply(f"❖ Removed From Enemy List")
        else:
            await event.reply("❖ Not in Enemy List")

@client.on(events.NewMessage(pattern=r'^\.enemylist$'))
async def enemylist_cmd(event):
    if not is_admin(event.sender_id):
        return
    if enemy:
        msg = "❖ **Enemy List:**\n"
        for i, uid in enumerate(enemy):
            try:
                user = await client.get_entity(uid)
                name = user.first_name or str(uid)
                msg += f"❖ {i+1}: {name} ({uid})\n"
            except:
                msg += f"❖ {i+1}: {uid}\n"
        await event.reply(msg)
    else:
        await event.reply("❖ Enemy List is Empty")

# ========== Love List ==========
@client.on(events.NewMessage(pattern=r'^\.setlove$'))
async def setlove_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if reply and reply.from_id:
        user_id = reply.from_id.user_id
        if user_id not in love:
            love.append(user_id)
            await event.reply(f"❖ Added To Love List")
        else:
            await event.reply("❖ Already in Love List")

@client.on(events.NewMessage(pattern=r'^\.dellove$'))
async def dellove_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if reply and reply.from_id:
        user_id = reply.from_id.user_id
        if user_id in love:
            love.remove(user_id)
            await event.reply(f"❖ Removed From Love List")
        else:
            await event.reply("❖ Not in Love List")

@client.on(events.NewMessage(pattern=r'^\.lovelist$'))
async def lovelist_cmd(event):
    if not is_admin(event.sender_id):
        return
    if love:
        msg = "❖ **Love List:**\n"
        for i, uid in enumerate(love):
            try:
                user = await client.get_entity(uid)
                name = user.first_name or str(uid)
                msg += f"❖ {i+1}: {name} ({uid})\n"
            except:
                msg += f"❖ {i+1}: {uid}\n"
        await event.reply(msg)
    else:
        await event.reply("❖ Love List is Empty")

# ========== Mute List ==========
@client.on(events.NewMessage(pattern=r'^\.mute$'))
async def mute_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if reply and reply.from_id:
        user_id = reply.from_id.user_id
        if user_id not in mutey:
            mutey.append(user_id)
            await event.reply(f"❖ Added To Mute List")
        else:
            await event.reply("❖ Already in Mute List")

@client.on(events.NewMessage(pattern=r'^\.unmute$'))
async def unmute_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if reply and reply.from_id:
        user_id = reply.from_id.user_id
        if user_id in mutey:
            mutey.remove(user_id)
            await event.reply(f"❖ Removed From Mute List")
        else:
            await event.reply("❖ Not in Mute List")

@client.on(events.NewMessage(pattern=r'^\.mutelist$'))
async def mutelist_cmd(event):
    if not is_admin(event.sender_id):
        return
    if mutey:
        msg = "❖ **Mute List:**\n"
        for i, uid in enumerate(mutey):
            try:
                user = await client.get_entity(uid)
                name = user.first_name or str(uid)
                msg += f"❖ {i+1}: {name} ({uid})\n"
            except:
                msg += f"❖ {i+1}: {uid}\n"
        await event.reply(msg)
    else:
        await event.reply("❖ Mute List is Empty")

@client.on(events.NewMessage(pattern=r'^\.allunmute$'))
async def allunmute_cmd(event):
    if not is_admin(event.sender_id):
        return
    if mutey:
        mutey.clear()
        await event.reply("❖ All Mute List Cleared")
    else:
        await event.reply("❖ Mute List is Empty")

# ========== Enemy Handler ==========
@client.on(events.NewMessage())
async def enemy_handler(event):
    if event.from_id and event.from_id.user_id in enemy:
        try:
            await event.delete()
        except:
            pass

# ========== Love Handler ==========
@client.on(events.NewMessage())
async def love_handler(event):
    if event.from_id and event.from_id.user_id in love:
        try:
            hearts = ["❤ عاشقتم️","💖عاح","💝 جون تو فقط حرف بزن","💞بخورمت ","💕کوصیتا بلایسم","💘 چقدر تو شیرینی","💗 اوففف","💓 جون"]
            await event.reply(random.choice(hearts))
        except:
            pass

@client.on(events.NewMessage(from_users='@PawNovaBot'))
async def auto_collect_from_bot(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        # صبر کن تا پیام کامل بیاد
        await asyncio.sleep(2)
        
        # پیام رو دوباره بگیر
        msg = await client.get_messages(event.chat_id, ids=event.id)
        
        if not msg.reply_markup:
            return
        
        found = False
        for row in msg.reply_markup.rows:
            for button in row.buttons:
                if "جمع" in button.text or "Collect" in button.text:
                    if hasattr(button, 'data'):
                        await client(GetBotCallbackAnswerRequest(
                            peer=event.chat_id,
                            msg_id=msg.id,
                            data=button.data
                        ))
                        found = True
                        print(f"✅ کلیک روی {button.text} در {event.chat_id}")
                        break
            if found:
                break
                
    except Exception as e:
        print(f"❌ خطا: {e}") 
# ========== Mute Handler ==========
@client.on(events.NewMessage())
async def mute_handler(event):
    if event.from_id and event.from_id.user_id in mutey:
        try:
            await event.delete()
        except:
            pass


        
# ========== Delete History ==========
@client.on(events.NewMessage(pattern=r'^\.delethistory$'))
async def delete_history_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        await client(functions.channels.DeleteHistoryRequest(
            channel=await client.get_input_entity(event.chat_id),
            max_id=0
        ))
        await event.reply("❖ Chat Cleared ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Ban ==========
@client.on(events.NewMessage(pattern=r'^\.ban$'))
async def ban_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        await client.ban_participant(event.chat_id, user_id)
        user = await client.get_entity(user_id)
        await event.reply(f"❖ User {user.first_name} Successfully Banned!")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Unban ==========
@client.on(events.NewMessage(pattern=r'^\.unban$'))
async def unban_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        await client.ban_participant(event.chat_id, user_id, 0)  # 0 = Unban
        user = await client.get_entity(user_id)
        await event.reply(f"❖ User {user.first_name} Successfully Unbanned!")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Clear Members ==========
@client.on(events.NewMessage(pattern=r'^\.clear_member (.+)$'))
async def clear_member_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        target = event.pattern_match.group(1).strip()
        await event.reply(f"❖ Target Chat: `{target}`\n__Start Ban members__ . . .")
        
        count = 0
        async for member in client.iter_participants(target):
            try:
                await client.ban_participant(target, member.id)
                count += 1
                if count % 10 == 0:
                    await event.reply(f"✅ {count} members banned...")
                await asyncio.sleep(0.1)
            except Exception as e:
                print(f"Error banning {member.id}: {e}")
        
        await event.reply(f"✅ {count} members banned successfully!")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Mute (Set Mute) ==========
@client.on(events.NewMessage(pattern=r'^\.setmute$'))
async def setmute_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        # Mute with no permissions
        await client.restrict_participant(
            event.chat_id,
            user_id,
            rights=types.ChatBannedRights(
                until_date=None,
                send_messages=True,
                send_media=True,
                send_stickers=True,
                send_gifs=True,
                send_games=True,
                send_inline=True,
                embed_links=True
            )
        )
        user = await client.get_entity(user_id)
        await event.reply(f"❖ User {user.first_name} Muted ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Unmute (Delete Mute) ==========
@client.on(events.NewMessage(pattern=r'^\.delmute$'))
async def delmute_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        # Unmute - no restrictions
        await client.restrict_participant(
            event.chat_id,
            user_id,
            rights=types.ChatBannedRights(
                until_date=None,
                send_messages=False,
                send_media=False,
                send_stickers=False,
                send_gifs=False,
                send_games=False,
                send_inline=False,
                embed_links=False
            )
        )
        user = await client.get_entity(user_id)
        await event.reply(f"❖ User {user.first_name} Unmuted ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Set Chat Photo ==========
@client.on(events.NewMessage(pattern=r'^\.setchatphoto$'))
async def setchatphoto_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply or not reply.photo:
        return await event.reply("❌ به یک عکس ریپلای کن!")
    
    try:
        file = await client.download_media(reply.photo)
        await client.set_profile_photo(event.chat_id, file)
        os.remove(file)
        await event.reply("❖ Chat Photo Changed ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Set Profile ==========
@client.on(events.NewMessage(pattern=r'^\.setprofile$'))
async def setprofile_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک عکس یا ویدیو ریپلای کن!")
    
    try:
        file = await client.download_media(reply.media)
        await client.set_profile_photo(file)
        os.remove(file)
        await event.reply("❖ Profile Photo Changed ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Delete Profile ==========
@client.on(events.NewMessage(pattern=r'^\.delprofile$'))
async def delprofile_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        photos = await client.get_profile_photos('me')
        if photos:
            await client.delete_profile_photos(photos[0].id)
            await event.reply("❖ Profile Photo Deleted ✅")
        else:
            await event.reply("❌ No profile photo found!")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Delete Chat Photo ==========
@client.on(events.NewMessage(pattern=r'^\.delchatphoto$'))
async def delchatphoto_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        await client.delete_profile_photo(event.chat_id)
        await event.reply("❖ Chat Photo Cleared ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Set Chat Title ==========


# ========== Set Chat Bio (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.setchatbio (.+)$'))
async def setchatbio_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        bio = event.pattern_match.group(1).strip()
        await client(functions.channels.EditAboutRequest(
            channel=await client.get_input_entity(event.chat_id),
            about=bio
        ))
        await event.reply(f"❖ Chat Bio Changed To: `{bio}`")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Pin (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.pin$'))
async def pin_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام ریپلای کن!")
    
    try:
        await client(functions.messages.UpdatePinnedMessageRequest(
            peer=await client.get_input_entity(event.chat_id),
            id=reply.id,
            pinned=True
        ))
        await event.reply("❖ Pinned ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Unpin (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.unpin$'))
async def unpin_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام ریپلای کن!")
    
    try:
        await client(functions.messages.UpdatePinnedMessageRequest(
            peer=await client.get_input_entity(event.chat_id),
            id=reply.id,
            pinned=False
        ))
        await event.reply("❖ Unpinned ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Unpin All (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.unpinall$'))
async def unpinall_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        await client(functions.messages.UnpinAllMessagesRequest(
            peer=await client.get_input_entity(event.chat_id)
        ))
        await event.reply("❖ All Messages Unpinned ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Set Chat Username (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.setchatusername (.+)$'))
async def setchatusername_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        username = event.pattern_match.group(1).strip()
        await client(functions.channels.UpdateUsernameRequest(
            channel=await client.get_input_entity(event.chat_id),
            username=username
        ))
        await event.reply(f"❖ Chat Username Changed To: `{username}`")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Create Group (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.creatgroup (.+)$'))
async def creatgroup_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        title = event.pattern_match.group(1).strip()
        result = await client(functions.messages.CreateChatRequest(
            users=[await client.get_input_entity(main_admin)],
            title=title
        ))
        await event.reply(f"❖ Group Created: `{title}`\nID: `{result.chats[0].id}`")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== اضافات جدید ==========

# ========== Delete Message ==========
@client.on(events.NewMessage(pattern=r'^\.del$'))
async def del_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام ریپلای کن!")
    
    try:
        await client.delete_messages(event.chat_id, reply.id)
        await event.reply("🗑️ Deleted ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Delete Multiple Messages ==========
@client.on(events.NewMessage(pattern=r'^\.del (\d+)$'))
async def del_multiple_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        count = int(event.pattern_match.group(1))
        if count > 100:
            return await event.reply("❌ حداکثر 100 پیام!")
        
        msgs = []
        async for msg in client.iter_messages(event.chat_id, limit=count):
            msgs.append(msg.id)
        
        if msgs:
            await client.delete_messages(event.chat_id, msgs)
            await event.reply(f"🗑️ {len(msgs)} پیام حذف شد!")
        else:
            await event.reply("❌ هیچ پیامی پیدا نشد!")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Forward Message ==========
@client.on(events.NewMessage(pattern=r'^\.fwd (.+)$'))
async def fwd_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام ریپلای کن!")
    
    try:
        target = event.pattern_match.group(1).strip()
        entity = await client.get_entity(target)
        await client.forward_messages(entity, reply)
        await event.reply(f"✅ فوروارد شد به `{target}`")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Reply to Message ==========
@client.on(events.NewMessage(pattern=r'^\.reply (.+)$'))
async def reply_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام ریپلای کن!")
    
    try:
        text = event.pattern_match.group(1).strip()
        await client.send_message(event.chat_id, text, reply_to=reply.id)
        await event.delete()
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Edit Message ==========
@client.on(events.NewMessage(pattern=r'^\.edit (.+)$'))
async def edit_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام ریپلای کن!")
    
    try:
        text = event.pattern_match.group(1).strip()
        await client.edit_message(event.chat_id, reply.id, text)
        await event.delete()
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Silent Message (بی صدا) ==========
@client.on(events.NewMessage(pattern=r'^\.silent (.+)$'))
async def silent_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        text = event.pattern_match.group(1).strip()
        await client.send_message(event.chat_id, text, silent=True)
        await event.delete()
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Random Choice ==========
@client.on(events.NewMessage(pattern=r'^\.choose (.+)$'))
async def choose_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        items = event.pattern_match.group(1).split("|")
        items = [i.strip() for i in items]
        choice = random.choice(items)
        await event.reply(f"🎯 انتخاب شد: `{choice}`")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Random Number ==========
@client.on(events.NewMessage(pattern=r'^\.rand (\d+)-(\d+)$'))
async def rand_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        min_num = int(event.pattern_match.group(1))
        max_num = int(event.pattern_match.group(2))
        
        if min_num >= max_num:
            return await event.reply("❌ عدد اول باید کوچکتر از عدد دوم باشه!")
        
        result = random.randint(min_num, max_num)
        await event.reply(f"🎲 عدد رندوم: `{result}`")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Uptime ==========
start_time = time.time()

@client.on(events.NewMessage(pattern=r'^\.uptime$'))
async def uptime_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    uptime_seconds = int(time.time() - start_time)
    days = uptime_seconds // 86400
    hours = (uptime_seconds % 86400) // 3600
    minutes = (uptime_seconds % 3600) // 60
    seconds = uptime_seconds % 60
    
    await event.reply(f"⏱️ **آپ‌تایم:**\n`{days}d {hours}h {minutes}m {seconds}s`")

# ========== Stats ==========
@client.on(events.NewMessage(pattern=r'^\.stats$'))
async def stats_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        total_chats = 0
        total_users = 0
        total_groups = 0
        total_channels = 0
        
        async for dialog in client.iter_dialogs():
            total_chats += 1
            if dialog.is_group:
                total_groups += 1
            elif dialog.is_channel:
                total_channels += 1
            elif dialog.is_user:
                total_users += 1
        
        await event.reply(f"""📊 **آمار بات:**
━━━━━━━━━━━━━━━━━━━
💬 **کل چت‌ها:** `{total_chats}`
👥 **کاربران:** `{total_users}`
👥 **گروه‌ها:** `{total_groups}`
📢 **کانال‌ها:** `{total_channels}`
📋 **تبچی‌ها:** `{len(tabchi_list)}`
━━━━━━━━━━━━━━━━━━━
⚡ @S_A_D_R_A_2""")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Purge (پاک کردن پیام‌های یک کاربر) ==========
@client.on(events.NewMessage(pattern=r'^\.purge$'))
async def purge_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        count = 0
        
        async for msg in client.iter_messages(event.chat_id, from_user=user_id):
            await client.delete_messages(event.chat_id, msg.id)
            count += 1
            if count % 10 == 0:
                await asyncio.sleep(0.5)
        
        await event.reply(f"🗑️ {count} پیام از کاربر حذف شد!")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Delete All Messages From User ==========
@client.on(events.NewMessage(pattern=r'^\.delallmsguser$'))
async def delallmsguser_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        await client.delete_participant_history(event.chat_id, user_id)
        await event.reply("❖ All Messages From User Deleted ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== بلاک کردن (با functions) ==========
@client.on(events.NewMessage(pattern=r'^\.block$'))
async def block_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        from telethon.tl.functions.contacts import BlockRequest
        
        user_id = reply.sender_id
        await client(BlockRequest(id=await client.get_input_entity(user_id)))
        
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Blocked ✅")
        
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== آنبلاک کردن (با functions) ==========
@client.on(events.NewMessage(pattern=r'^\.unblock$'))
async def unblock_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        from telethon.tl.functions.contacts import UnblockRequest
        
        user_id = reply.sender_id
        await client(UnblockRequest(id=await client.get_input_entity(user_id)))
        
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Unblocked ✅")
        
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

from telethon.tl.types import KeyboardButtonCallback
from telethon.tl.custom import Button  # <-- این رو اضافه کن

# ======================================================
# ========== پنل با صفحه‌بندی (درست) ==========
# ======================================================

panel_page = 1
TOTAL_PAGES = 3

def get_panel_buttons(page):
    if page == 1:
        return [
            [Button.inline("🕐 ساعت", b"p_time")],
            [Button.inline("📊 وضعیت", b"p_status")],
            [Button.inline("👥 ادمین‌ها", b"p_admins")],
            [Button.inline("📋 تبچی‌ها", b"p_tabchi")],
            [Button.inline("▶️ بعدی", b"p_next")]
        ]
    elif page == 2:
        return [
            [Button.inline("✅ تبچی روشن", b"p_on")],
            [Button.inline("❌ تبچی خاموش", b"p_off")],
            [Button.inline("🗑️ حذف تبچی", b"p_stop")],
            [Button.inline("🎲 تاس", b"p_dice")],
            [Button.inline("◀️ قبلی", b"p_prev"), Button.inline("▶️ بعدی", b"p_next")]
        ]
    else:
        return [
            [Button.inline("🎯 دارت", b"p_dart")],
            [Button.inline("🔗 لینک", b"p_link")],
            [Button.inline("🆔 آیدی من", b"p_id")],
            [Button.inline("📊 وضعیت ربات", b"p_bot")],
            [Button.inline("◀️ قبلی", b"p_prev"), Button.inline("❌ بستن", b"p_close")]
        ]

# ========== دستور پنل ==========
@client.on(events.NewMessage(pattern=r'^(پنل|panel)$'))
async def panel_cmd(event):
    if not is_admin(event.sender_id):
        return
    global panel_page
    panel_page = 1
    await event.reply(
        f"📊 **پنل** ({panel_page}/{TOTAL_PAGES})\n━━━━━━━━━",
        buttons=get_panel_buttons(panel_page)
    )

# ========== صفحه بعد ==========
@client.on(events.CallbackQuery(data=b"p_next"))
async def next_page(event):
    global panel_page
    if not is_admin(event.sender_id):
        return await event.answer("❌", alert=True)
    panel_page = 2 if panel_page == 1 else 3 if panel_page == 2 else 1
    await event.edit(
        f"📊 **پنل** ({panel_page}/{TOTAL_PAGES})\n━━━━━━━━━",
        buttons=get_panel_buttons(panel_page)
    )
    await event.answer("✅")

# ========== صفحه قبل ==========
@client.on(events.CallbackQuery(data=b"p_prev"))
async def prev_page(event):
    global panel_page
    if not is_admin(event.sender_id):
        return await event.answer("❌", alert=True)
    panel_page = 2 if panel_page == 3 else 1 if panel_page == 2 else 3
    await event.edit(
        f"📊 **پنل** ({panel_page}/{TOTAL_PAGES})\n━━━━━━━━━",
        buttons=get_panel_buttons(panel_page)
    )
    await event.answer("✅")

# ========== هندلر کلیک ==========
@client.on(events.CallbackQuery)
async def panel_click(event):
    if not is_admin(event.sender_id):
        return await event.answer("❌", alert=True)
    
    data = event.data.decode()
    
    if data == "p_time":
        await event.edit(f"🕐 `{get_tehran_time().strftime('%H:%M:%S')}`")
    elif data == "p_status":
        a = json_read("data.json")
        msg = "📊 وضعیت:\n"
        for k, v in a.items():
            msg += f"❖ {k} -> {v}\n"
        await event.edit(msg)
    elif data == "p_admins":
        await event.edit(f"👥 ادمین اصلی: `{main_admin}`")
    elif data == "p_tabchi":
        if tabchi_list:
            msg = "📋 تبچی‌ها:\n"
            for i, d in enumerate(tabchi_list, 1):
                msg += f"{i}. {d['message']} ({d['interval']//60}m)\n"
            await event.edit(msg)
        else:
            await event.edit("❌ خالی!")
    elif data == "p_on":
        chat_id = event.chat_id
        found = False
        for d in tabchi_list:
            if d["chat_id"] == chat_id:
                d["active"] = True
                found = True
                break
        await event.edit("✅ روشن شد!" if found else "❌ تبچی وجود ندارد!")
    elif data == "p_off":
        chat_id = event.chat_id
        found = False
        for d in tabchi_list:
            if d["chat_id"] == chat_id:
                d["active"] = False
                found = True
                break
        await event.edit("❌ خاموش شد!" if found else "❌ تبچی وجود ندارد!")
    elif data == "p_stop":
        chat_id = event.chat_id
        found = False
        for i, d in enumerate(tabchi_list):
            if d["chat_id"] == chat_id:
                del tabchi_list[i]
                found = True
                break
        await event.edit("🗑️ حذف شد!" if found else "❌ تبچی وجود ندارد!")
    elif data == "p_dice":
        import random
        await event.edit(f"🎲 {random.randint(1,6)}")
    elif data == "p_dart":
        import random
        await event.edit(f"🎯 {random.randint(1,6)}")
    elif data == "p_link":
        try:
            link = await client.export_invite_link(event.chat_id)
            await event.edit(f"🔗 {link}")
        except:
            await event.edit("❌ خطا!")
    elif data == "p_id":
        await event.edit(f"🆔 `{event.sender_id}`")
    elif data == "p_bot":
        await event.edit("✅ آنلاین!")
    elif data == "p_close":
        await event.delete()
    
    await event.answer("✅")
# ========== لیست بلاک‌ها (با fun ctions) ==========
@client.on(events.NewMessage(pattern=r'^\.blocklist$'))
async def blocklist_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        from telethon.tl.functions.contacts import GetBlockedRequest
        
        result = await client(GetBlockedRequest(offset=0, limit=100))
        
        if not result.blocked:
            return await event.reply("❌ لیست بلاک خالی است!")
        
        msg = "🚫 **لیست بلاک:**\n━━━━━━━━━━━━━━━━━━━\n"
        for i, blocked in enumerate(result.blocked, 1):
            try:
                user = await client.get_entity(blocked.peer_id.user_id)
                name = user.first_name or str(blocked.peer_id.user_id)
                msg += f"{i}. {name}\n"
            except:
                msg += f"{i}. {blocked.peer_id.user_id}\n"
        
        await event.reply(msg)
        
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== روش جایگزین با functions ==========
@client.on(events.NewMessage(pattern=r'^\.block2$'))
async def block2_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        
        # روش دوم با functions
        from telethon.tl.functions.contacts import BlockRequest
        await client(BlockRequest(id=await client.get_input_entity(user_id)))
        
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Blocked ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== لیست بلاک‌ها ==========
@client.on(events.NewMessage(pattern=r'^\.blocklist$'))
async def blocklist_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        from telethon.tl.functions.contacts import GetBlockedRequest
        
        result = await client(GetBlockedRequest(offset=0, limit=100))
        
        if not result.blocked:
            return await event.reply("❌ لیست بلاک خالی است!")
        
        msg = "🚫 **لیست بلاک:**\n━━━━━━━━━━━━━━━━━━━\n"
        for i, blocked in enumerate(result.blocked, 1):
            try:
                user = await client.get_entity(blocked.peer_id.user_id)
                name = user.first_name or str(blocked.peer_id.user_id)
                msg += f"{i}. {name}\n"
            except:
                msg += f"{i}. {blocked.peer_id.user_id}\n"
        
        await event.reply(msg)
        
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Leave Chat ==========




# ========== PV Lock ==========
@client.on(events.NewMessage(pattern=r'^\.pvlock (on|off)$'))
async def pvlock_cmd(event):
    if not is_admin(event.sender_id):
        return
    status = event.pattern_match.group(1)
    a = json_read("data.json")
    a["pvlock"] = status
    with open("data.json", "w", encoding="utf-8") as f:
        json.dump(a, f)
    await event.reply(f"❖ PV Lock is **{status.upper()}**")



# ========== Auto Answer Handler ==========
# ========== Auto Answer Handler (بدون نیاز به ادمین) ==========
# ========== Auto Answer Handler (نسخه نهایی) ==========
@client.on(events.NewMessage)
async def auto_anwer_handler(event):
    try:
        # چک کن که پیام متن داره
        if not event.raw_text:
            return
        
        # چک کن که Auto Answer روشن باشه
        a = json_read("data.json")
        if a.get("autoan") != "on":
            return
        
        # دریافت متن پیام
        text = event.raw_text.strip()
        
        # چک کن که پیام توی لیست باشه
        if text in answer:
            idx = answer.index(text)
            await event.reply(javab[idx])
            print(f"✅ Auto Answer: {text} -> {javab[idx]}")
            
    except Exception as e:
        print(f"❌ Auto Answer Error: {e}")



# ========== Wiki ==========
@client.on(events.NewMessage(pattern=r'^\.wiki (.+)$'))
async def wiki_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        from wikipedia import set_lang, summary
        set_lang('en')
        query = event.pattern_match.group(1).strip()
        result = summary(query)
        await event.reply(result)
        
        # تبدیل به صدا
        from gtts import gTTS
        audio = gTTS(text=result, lang='en')
        audio.save("voice.ogg")
        await client.send_file(event.chat_id, "voice.ogg", caption="◤✧Function: #wikipedaia text to Voice◥\n◣✧Language:English Lang◢")
        os.remove("voice.ogg")
    except Exception as er:
        await event.reply(f"❌ خطا: {er}")

# ========== Country ==========
@client.on(events.NewMessage(pattern=r'^\.country (.+)$'))
async def country_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        from countryinfo import CountryInfo
        country_name = event.pattern_match.group(1).strip()
        country = CountryInfo(country_name)
        info = country.info()
        
        msg = f"""**Country Info**
━━━━━━━━━━━━━━━━━━━
📛 **Name:** {info.get('name', 'N/A')}
🏷️ **Native Name:** {info.get('nativeName', 'N/A')}
🌍 **Region:** {info.get('region', 'N/A')}
📍 **Subregion:** {info.get('subregion', 'N/A')}
🏙️ **Capital:** {info.get('capital', 'N/A')}
👥 **Population:** {info.get('population', 'N/A'):,}
🌐 **Languages:** {', '.join(info.get('languages', ['N/A']))}
💰 **Currencies:** {', '.join(info.get('currencies', ['N/A']))}
📞 **Calling Code:** {info.get('callingCodes', ['N/A'])[0]}
🔗 **Wikipedia:** {info.get('wiki', 'N/A')}
━━━━━━━━━━━━━━━━━━━
⚡ powered by SADRA&SELF"""
        await event.reply(msg)
    except Exception as er:
        await event.reply(f"❌ خطا: {er}")
# ========== Sticker Pack Info ==========
@client.on(events.NewMessage(pattern=r'^\.packinfo$'))
async def packinfo_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک استیکر ریپلای کن!")
    
    if not reply.sticker:
        return await event.reply("❌ لطفا به یک استیکر ریپلای کن!")
    
    if not reply.sticker.set_name:
        return await event.reply("❌ این استیکر بدون پک است!")
    
    try:
        # دریافت اطلاعات پک استیکر
        result = await client(functions.messages.GetStickerSetRequest(
            stickerset=types.InputStickerSetShortName(
                short_name=reply.sticker.set_name
            ),
            hash=0
        ))
        
        # گرفتن ایموجی‌ها
        emojis = []
        for pack in result.packs:
            if pack.emoticon not in emojis:
                emojis.append(pack.emoticon)
        
        output = f"""**Sticker Pack Info**
━━━━━━━━━━━━━━━━━━━
📛 **Title:** `{result.set.title}`
🔗 **Short Name:** `{result.set.short_name}`
📊 **Count:** `{result.set.count}`
📦 **Archived:** `{result.set.archived}`
✅ **Official:** `{result.set.official}`
🎭 **Masks:** `{result.set.masks}`
🎬 **Animated:** `{result.set.animated}`
😊 **Emojis:** `{' '.join(emojis)}`
━━━━━━━━━━━━━━━━━━━
🔗 **Link:** https://t.me/addstickers/{result.set.short_name}"""
        
        await event.reply(output)
        
    except Exception as er:
        await event.reply(f"❌ خطا: {er}")

# ========== Ping ==========
@client.on(events.NewMessage(pattern=r'^(\.ping|پینگ)$'))
async def ping_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    start = time.perf_counter()
    msg = await event.reply("🏓 **در حال محاسبه...**")
    end = time.perf_counter()
    ping_ms = int((end - start) * 1000)
    
    await msg.edit(f"🏓 **Pong!**\n⏱️ `{ping_ms}ms`")
from telethon.tl.functions.messages import GetStickerSetRequest
from telethon.tl.types import InputStickerSetShortName
import time
# ========== Sticker Info (اسم دیگه) ==========
@client.on(events.NewMessage(pattern=r'^\.stickerinfo$'))
async def stickerinfo_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک استیکر ریپلای کن!")
    
    if not reply.sticker:
        return await event.reply("❌ لطفا به یک استیکر ریپلای کن!")
    
    try:
        sticker = reply.sticker
        
        output = f"""**Sticker Info**
━━━━━━━━━━━━━━━━━━━
📏 **Size:** `{sticker.width}x{sticker.height}`
📦 **Size:** `{sticker.size/1024:.1f}KB`
😊 **Emoji:** `{sticker.emoji if sticker.emoji else 'N/A'}`
🎬 **Animated:** `{sticker.animated if hasattr(sticker, 'animated') else 'N/A'}`
📦 **Video:** `{sticker.video if hasattr(sticker, 'video') else 'N/A'}`
🔗 **Pack:** `{sticker.set_name if sticker.set_name else 'N/A'}`
━━━━━━━━━━━━━━━━━━━
⚡ powered by SADRA&SELF"""
        
        await event.reply(output)
        
    except Exception as er:
        await event.reply(f"❌ خطا: {er}")
# ========== Tag Alert ==========
tag_log_channels = []  # لیست گپ‌هایی که تگ‌آلرت روشنه
TAG_LOG_GROUP = "me"   # پیشفرض: سیو مسیج

@client.on(events.NewMessage(pattern=r'^\.tagalert (on|off)$'))
async def tagalert_cmd(event):
    if not is_admin(event.sender_id):
        return
    status = event.pattern_match.group(1)
    if status == "on":
        if event.chat_id not in tag_log_channels:
            tag_log_channels.append(event.chat_id)
        await event.reply("✅ **Tag Alert Activated** در این گپ")
    else:
        if event.chat_id in tag_log_channels:
            tag_log_channels.remove(event.chat_id)
        await event.reply("❌ **Tag Alert Deactivated** در این گپ")

@client.on(events.NewMessage(pattern=r'^\.tagalert setgroup (.+)$'))
async def tagalert_setgroup_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        target = event.pattern_match.group(1).strip()
        global TAG_LOG_GROUP
        
        if target.lower() == "me" or target.lower() == "saved":
            TAG_LOG_GROUP = "me"
            await event.reply(f"✅ گپ مقصد تنظیم شد: `Saved Messages`")
            return
        
        # اگه عدد بود
        if target.isdigit():
            group_id = int(target)
        else:
            # اگه یوزرنیم یا لینک بود
            try:
                entity = await client.get_entity(target)
                group_id = entity.id
            except:
                return await event.reply("❌ گپ پیدا نشد!")
        
        TAG_LOG_GROUP = group_id
        await event.reply(f"✅ گپ مقصد تنظیم شد: `{group_id}`")
    except Exception as er:
        await event.reply(f"❌ خطا: {er}")

@client.on(events.NewMessage())
async def tag_alert_handler(event):
    # فقط اگه منشن شده باشه
    if not event.mentioned:
        return
    
    # چک کن که تگ‌آلرت در این گپ روشن باشه
    if event.chat_id not in tag_log_channels:
        return
    
    try:
        # دریافت اطلاعات فرستنده
        sender = await event.get_sender()
        sender_name = sender.first_name if hasattr(sender, 'first_name') else "Unknown"
        sender_id = sender.id if hasattr(sender, 'id') else event.sender_id
        
        # دریافت اطلاعات چت
        chat = await event.get_chat()
        chat_title = chat.title if hasattr(chat, 'title') else "Private Chat"
        chat_id = event.chat_id
        
        # دریافت لینک پیام
        try:
            if hasattr(chat, 'username') and chat.username:
                msg_link = f"https://t.me/{chat.username}/{event.id}"
            else:
                chat_id_str = str(chat_id)
                if chat_id_str.startswith('-100'):
                    chat_id_str = chat_id_str[4:]
                msg_link = f"https://t.me/c/{chat_id_str}/{event.id}"
        except:
            msg_link = "N/A"
        
        # ساخت پیام لاگ
        msg = f"""📨 **#TAGS #MESSAGE**
━━━━━━━━━━━━━━━━━━━
👤 **User:** {sender_name}
🆔 **User ID:** `{sender_id}`
📌 **Group:** {chat_title}
🆔 **Group ID:** `{chat_id}`
🔗 **Link:** {msg_link}
━━━━━━━━━━━━━━━━━━━
💬 **Message:**
{event.text}
━━━━━━━━━━━━━━━━━━━
⏰ **Time:** {get_tehran_time().strftime('%Y/%m/%d %H:%M:%S')}
⚡ powered by SADRA&SELF"""
        
        # ارسال به گپ مقصد (پیشفرض: سیو مسیج)
        await client.send_message(TAG_LOG_GROUP, msg)
        print(f"✅ Tag Alert ارسال شد به {TAG_LOG_GROUP}")
        
    except Exception as er:
        log(f"Tag alert error: {er}")
        await client.send_message("me", f"❌ Tag Alert Error: {er}")

@client.on(events.NewMessage(pattern=r'^\.football (\d+)$'))
async def football_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        num = int(event.pattern_match.group(1))
        if num in [1, 4]:
            await event.delete()
            while True:
                msg = await client.send_dice(event.chat_id, emoji="⚽")
                if msg.dice.value == num:
                    await event.reply(f"⚽ فوتبال {num} شد! 🎉")
                    break
                await asyncio.sleep(0.5)
        else:
            await event.reply("❌ لطفا عدد 1 یا 4 وارد کن!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")
        
# ========== Get Message Info ==========


# ========== Chat Info ==========
@client.on(events.NewMessage(pattern=r'^\.inf (.+)$'))
async def inf_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        target = event.pattern_match.group(1).strip()
        if target == "@this":
            chat = await event.get_chat()
        else:
            try:
                chat = await client.get_entity(target)
            except:
                chat = await event.get_chat()
        
        msg = f"""__Chat info__

❖ **Title** : `{chat.title if hasattr(chat, 'title') else '--'}`
❖ **ID** : `{chat.id}`
❖ **Username** : `@{chat.username if hasattr(chat, 'username') and chat.username else '--'}`
"""
        
        # اطلاعات اضافی برای گروه/کانال
        if hasattr(chat, 'participants_count'):
            msg += f"❖ **Members** : `{chat.participants_count}`\n"
        
        if hasattr(chat, 'description'):
            msg += f"❖ **Description** : `{chat.description if chat.description else '--'}`\n"
        
        await event.reply(msg)
        
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== User Info ==========
@client.on(events.NewMessage(pattern=r'^\.id$'))
async def id_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        if event.reply_to_msg_id:
            reply = await event.get_reply_message()
            user_id = reply.sender_id
        else:
            user_id = event.sender_id
        
        user = await client.get_entity(user_id)
        
        msg = f"""__User info__

❖ **Name** : `{user.first_name if user.first_name else '--'}`
❖ **LastName** : `{user.last_name if user.last_name else '--'}`
❖ **Id** : `{user.id}`
❖ **Username** : `@{user.username if user.username else '--'}`
❖ **Bot** : `{user.bot if hasattr(user, 'bot') else '--'}`
❖ **Verified** : `{user.verified if hasattr(user, 'verified') else '--'}`
❖ **Premium** : `{user.premium if hasattr(user, 'premium') else '--'}`
"""
        
        # دریافت بیو
        try:
            full_user = await client(functions.users.GetFullUserRequest(id=user_id))
            if full_user.about:
                msg += f"❖ **BIO** : `{full_user.about}`\n"
        except:
            pass
        
        await event.reply(msg)
        
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Profile Picture Info ==========
@client.on(events.NewMessage(pattern=r'^\.pp$'))
async def pp_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        if event.reply_to_msg_id:
            reply = await event.get_reply_message()
            user_id = reply.sender_id
        else:
            user_id = event.sender_id
        
        user = await client.get_entity(user_id)
        
        msg = f"""__User info__

❖ **Name** : `{user.first_name if user.first_name else '--'}`
❖ **LastName** : `{user.last_name if user.last_name else '--'}`
❖ **Id** : `{user.id}`
❖ **Username** : `@{user.username if user.username else '--'}`
"""
        
        # دریافت بیو
        try:
            full_user = await client(functions.users.GetFullUserRequest(id=user_id))
            if full_user.about:
                msg += f"❖ **BIO** : `{full_user.about}`\n"
        except:
            pass
        
        # دریافت عکس پروفایل
        try:
            photos = await client.get_profile_photos(user_id)
            msg += f"❖ **Profile Picture Count** : `{len(photos)}`\n"
        except:
            pass
        
        await event.reply(msg)
        
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Status ==========
@client.on(events.NewMessage(pattern=r'^\.status$'))
async def status_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        start = time.time()
        pv = 0
        groups = 0
        channels = 0
        bots = 0
        
        async for dialog in client.iter_dialogs():
            if dialog.is_group:
                groups += 1
            elif dialog.is_channel:
                channels += 1
            elif dialog.is_user:
                if dialog.entity.bot:
                    bots += 1
                else:
                    pv += 1
        
        end = time.time()
        elapsed = end - start
        
        msg = f"""**Status Report**

**Private Chats:** `{pv}`
  •• `Bots: {bots}`
**Groups:** `{groups}`
**Channels:** `{channels}`
**Time Taken:** `{elapsed:.2f}s`"""
        
        await event.reply(msg)
        
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== OCR ==========
@client.on(events.NewMessage(pattern=r'^\.ocr$'))
async def ocr_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply or not reply.photo:
        return await event.reply("❌ لطفا به یک عکس ریپلای کن!")
    
    try:
        await event.reply("⏳ در حال پردازش عکس...")
        
        # ارسال عکس به ربات OCR
        await client.send_file("@oneGooglebot", reply.photo, caption="")
        await asyncio.sleep(8)
        
        # دریافت نتیجه
        async for msg in client.iter_messages("@oneGooglebot", limit=1):
            if msg.text:
                text = msg.text.replace("💭 OCR detected:", "").strip()
                await event.reply(f"**❖ OCR Result:**\n`{text}`")
                break
        
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== Spam ==========
@client.on(events.NewMessage(pattern=r'^\.spam (\d+) (.+)$'))
async def spam_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        count = int(event.pattern_match.group(1))
        text = event.pattern_match.group(2)
        
        await event.delete()
        for _ in range(count):
            await client.send_message(event.chat_id, text)
            await asyncio.sleep(0.1)
    except Exception as er:
        await event.reply(f"❌ خطا: {er}")

@client.on(events.NewMessage(pattern=r'^\.spm (\d+) (.+)$'))
async def spm_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        count = int(event.pattern_match.group(1))
        text = event.pattern_match.group(2)
        reply = await event.get_reply_message()
        
        await event.delete()
        for _ in range(count):
            if reply:
                await client.send_message(event.chat_id, text, reply_to=reply.id)
            else:
                await client.send_message(event.chat_id, text)
            await asyncio.sleep(0.1)
    except Exception as er:
        await event.reply(f"❌ خطا: {er}")

# ======================================================
# ========== بخش اسپم (انواع مختلف) ==========
# ======================================================

# ========== 1. اسپم عادی (با ریپلای) ==========
@client.on(events.NewMessage(pattern=r'^\.rspam (\d+)$'))
async def rspam_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام ریپلای کن!")
    
    try:
        count = int(event.pattern_match.group(1))
        if count > 100:
            return await event.reply("❌ حداکثر 100 بار!")
        
        await event.delete()
        for _ in range(count):
            await reply.forward_to(event.chat_id)
            await asyncio.sleep(0.1)
        
        await client.send_message(event.chat_id, f"✅ {count} بار ارسال شد!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== 2. اسپم زمان‌دار (با تاخیر) ==========
@client.on(events.NewMessage(pattern=r'^\.tspam (\d+) (\d+) (.+)$'))
async def tspam_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        delay = int(event.pattern_match.group(1))  # زمان بین هر ارسال (ثانیه)
        count = int(event.pattern_match.group(2))  # تعداد
        text = event.pattern_match.group(3).strip()  # متن
        
        if count > 100:
            return await event.reply("❌ حداکثر 100 بار!")
        if delay < 1:
            return await event.reply("❌ زمان باید حداقل 1 ثانیه باشه!")
        
        await event.delete()
        for i in range(count):
            await client.send_message(event.chat_id, text)
            if i < count - 1:
                await asyncio.sleep(delay)
        
        await client.send_message(event.chat_id, f"✅ {count} بار با تاخیر {delay} ثانیه ارسال شد!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== 3. اسپم به گپ یا کاربر خاص ==========
@client.on(events.NewMessage(pattern=r'^\.gspam (\d+) (\d+) (.+)$'))
async def gspam_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        target_id = int(event.pattern_match.group(1))  # آیدی گپ یا کاربر
        count = int(event.pattern_match.group(2))  # تعداد
        text = event.pattern_match.group(3).strip()  # متن
        
        if count > 100:
            return await event.reply("❌ حداکثر 100 بار!")
        
        # بررسی اینکه آیدی معتبره
        try:
            entity = await client.get_entity(target_id)
        except:
            return await event.reply(f"❌ آیدی `{target_id}` معتبر نیست!")
        
        await event.delete()
        for _ in range(count):
            await client.send_message(entity, text)
            await asyncio.sleep(0.1)
        
        await client.send_message(event.chat_id, f"✅ {count} بار به `{target_id}` ارسال شد!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== 4. اسپم با ریپلای (سریع) ==========
@client.on(events.NewMessage(pattern=r'^\.vspam (\d+)$'))
async def vspam_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام ریپلای کن!")
    
    try:
        count = int(event.pattern_match.group(1))
        if count > 200:
            return await event.reply("❌ حداکثر 200 بار!")
        
        await event.delete()
        
        # ارسال همزمان با asyncio.gather
        tasks = []
        for _ in range(count):
            tasks.append(reply.forward_to(event.chat_id))
            if len(tasks) >= 10:  # هر 10 تا یکبار بفرست
                await asyncio.gather(*tasks)
                tasks = []
        
        if tasks:
            await asyncio.gather(*tasks)
        
        await client.send_message(event.chat_id, f"✅ {count} بار (سریع) ارسال شد!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== 5. اسپم با ریپلای به کاربر خاص ==========
@client.on(events.NewMessage(pattern=r'^\.uspm (\d+) (\d+) (.+)$'))
async def uspm_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        user_id = int(event.pattern_match.group(1))  # آیدی کاربر
        count = int(event.pattern_match.group(2))  # تعداد
        text = event.pattern_match.group(3).strip()  # متن
        
        if count > 100:
            return await event.reply("❌ حداکثر 100 بار!")
        
        try:
            user = await client.get_entity(user_id)
        except:
            return await event.reply(f"❌ کاربر `{user_id}` پیدا نشد!")
        
        await event.delete()
        for _ in range(count):
            await client.send_message(user, text)
            await asyncio.sleep(0.1)
        
        await client.send_message(event.chat_id, f"✅ {count} بار به {user.first_name} ارسال شد!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== 6. اسپم با ریپلای به کاربر خاص (سریع) ==========
@client.on(events.NewMessage(pattern=r'^\.vuspm (\d+) (\d+) (.+)$'))
async def vuspm_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        user_id = int(event.pattern_match.group(1))
        count = int(event.pattern_match.group(2))
        text = event.pattern_match.group(3).strip()
        
        if count > 200:
            return await event.reply("❌ حداکثر 200 بار!")
        
        try:
            user = await client.get_entity(user_id)
        except:
            return await event.reply(f"❌ کاربر `{user_id}` پیدا نشد!")
        
        await event.delete()
        
        tasks = []
        for _ in range(count):
            tasks.append(client.send_message(user, text))
            if len(tasks) >= 10:
                await asyncio.gather(*tasks)
                tasks = []
        
        if tasks:
            await asyncio.gather(*tasks)
        
        await client.send_message(event.chat_id, f"✅ {count} بار (سریع) به {user.first_name} ارسال شد!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== 7. اسپم با فایل (ریپلای) ==========
@client.on(events.NewMessage(pattern=r'^\.fspam (\d+)$'))
async def fspam_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply or not reply.media:
        return await event.reply("❌ به یک فایل/عکس/ویدیو ریپلای کن!")
    
    try:
        count = int(event.pattern_match.group(1))
        if count > 50:
            return await event.reply("❌ حداکثر 50 بار (برای فایل)!")
        
        await event.delete()
        
        # دانلود فایل
        file_path = await client.download_media(reply.media)
        caption = reply.text or ""
        
        for _ in range(count):
            await client.send_file(event.chat_id, file_path, caption=caption)
            await asyncio.sleep(0.2)
        
        os.remove(file_path)
        await client.send_message(event.chat_id, f"✅ {count} بار فایل ارسال شد!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== 8. اسپم با لیست پیام‌ها (چند تا پیام مختلف) ==========
@client.on(events.NewMessage(pattern=r'^\.lspam (\d+) (.+)$'))
async def lspam_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        count = int(event.pattern_match.group(1))
        messages = event.pattern_match.group(2).split("|")
        messages = [m.strip() for m in messages]
        
        if count > 50:
            return await event.reply("❌ حداکثر 50 بار!")
        if len(messages) < 2:
            return await event.reply("❌ حداقل 2 پیام با | جدا کن! مثال: `.lspam 5 سلام|خوبی|چطوری`")
        
        await event.delete()
        for i in range(count):
            msg = messages[i % len(messages)]
            await client.send_message(event.chat_id, msg)
            await asyncio.sleep(0.1)
        
        await client.send_message(event.chat_id, f"✅ {count} بار با {len(messages)} پیام مختلف ارسال شد!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== 9. اسپم با شمارش معکوس ==========
@client.on(events.NewMessage(pattern=r'^\.cspam (\d+) (.+)$'))
async def cspam_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        count = int(event.pattern_match.group(1))
        text = event.pattern_match.group(2).strip()
        
        if count > 50:
            return await event.reply("❌ حداکثر 50 بار!")
        
        await event.delete()
        for i in range(count, 0, -1):
            await client.send_message(event.chat_id, f"{text} {i}")
            await asyncio.sleep(0.1)
        
        await client.send_message(event.chat_id, f"✅ {count} بار با شمارش معکوس ارسال شد!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")
        
# ========== Date ==========
@client.on(events.NewMessage(pattern=r'^(\.date|امروز)$'))
async def date_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        import requests
        import json
        
        url = "https://api.codebazan.ir/owghat/?city=تهران"
        response = requests.get(url)
        data = response.json()
        
        if "Result" in data and len(data["Result"]) > 0:
            tarikh = data["Result"][0]["tarikh"]
            await event.reply(f"📅 تاریخ امروز: `{tarikh}`")
        else:
            await event.reply("❌ خطا در دریافت تاریخ!")
            
    except Exception as er:
        await event.reply(f"❌ خطا: {er}")

# ========== Ping ==========
@client.on(events.NewMessage(pattern=r'^(paraself|paradox|self|سلف|پینگ)$'))
async def ping_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    start = time.time()
    await client.send_message(event.chat_id, "🏓")
    end = time.time()
    ping = int((end - start) * 1000)
    
    await event.reply(f"🏓 **Ping:** `{ping}ms`")

# ========== ID ==========
@client.on(events.NewMessage(pattern=r'^\.id$'))
async def simple_id_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    if event.reply_to_msg_id:
        reply = await event.get_reply_message()
        user_id = reply.sender_id
        msg = f"🆔 **User ID:** `{user_id}`\n📌 **Chat ID:** `{event.chat_id}`"
    else:
        msg = f"🆔 **Your ID:** `{event.sender_id}`\n📌 **Chat ID:** `{event.chat_id}`"
    
    await event.reply(msg)

# ========== Link ==========



# ========== ترجمه (درست شده) ==========
@client.on(events.NewMessage(pattern=r'^\.tr (.+)$'))
async def translate_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        import requests
        import json
        
        txt = event.pattern_match.group(1).strip()
        if not txt:
            return await event.reply("❌ لطفاً متن رو وارد کن!")
        
        await event.reply("⏳ در حال ترجمه...")
        
        # روش 1: استفاده از Google Translate API (رایگان)
        url = f"https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=fa&dt=t&q={txt}"
        
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
        }
        
        response = requests.get(url, headers=headers, timeout=10)
        
        if response.status_code == 200:
            try:
                result = response.json()
                translated_text = result[0][0][0]
                
                msg = (
                    f"🌍 **ترجمه خودکار**\n"
                    f"━━━━━━━━━━━━━━━━━━━\n"
                    f"📝 **متن اصلی:**\n{txt}\n"
                    f"━━━━━━━━━━━━━━━━━━━\n"
                    f"🇮🇷 **ترجمه به فارسی:**\n{translated_text}\n"
                    f"━━━━━━━━━━━━━━━━━━━\n"
                    f"⚡ **powered by SADRA&SELF**"
                )
                await event.edit(msg)
            except:
                await event.edit("❌ خطا در پردازش ترجمه!")
        else:
            # روش 2: استفاده از API دیگه
            await event.edit("⏳ تلاش با روش دیگر...")
            
            url2 = f"https://api.mymemory.translated.net/get?q={txt}&langpair=auto|fa"
            response2 = requests.get(url2, timeout=10)
            
            if response2.status_code == 200:
                data = response2.json()
                if data.get('responseData'):
                    translated_text = data['responseData']['translatedText']
                    msg = (
                        f"🌍 **ترجمه خودکار**\n"
                        f"━━━━━━━━━━━━━━━━━━━\n"
                        f"📝 **متن اصلی:**\n{txt}\n"
                        f"━━━━━━━━━━━━━━━━━━━\n"
                        f"🇮🇷 **ترجمه به فارسی:**\n{translated_text}\n"
                        f"━━━━━━━━━━━━━━━━━━━\n"
                        f"⚡ **powered by SADRA&SELF**"
                    )
                    await event.edit(msg)
                else:
                    await event.edit("❌ خطا در ترجمه! دوباره تلاش کن.")
            else:
                await event.edit("❌ خطا در اتصال به سرور ترجمه!")
        
    except Exception as er:
        await event.edit(f"❌ خطا: {er}")

# ========== ترجمه به انگلیسی ==========
@client.on(events.NewMessage(pattern=r'^\.en (.+)$'))
async def translate_en_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        import requests
        
        txt = event.pattern_match.group(1).strip()
        if not txt:
            return await event.reply("❌ لطفاً متن رو وارد کن!")
        
        await event.reply("⏳ در حال ترجمه...")
        
        url = f"https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q={txt}"
        
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
        }
        
        response = requests.get(url, headers=headers, timeout=10)
        
        if response.status_code == 200:
            result = response.json()
            translated_text = result[0][0][0]
            
            msg = (
                f"🌍 **ترجمه خودکار**\n"
                f"━━━━━━━━━━━━━━━━━━━\n"
                f"📝 **متن اصلی:**\n{txt}\n"
                f"━━━━━━━━━━━━━━━━━━━\n"
                f"🇬🇧 **ترجمه به انگلیسی:**\n{translated_text}\n"
                f"━━━━━━━━━━━━━━━━━━━\n"
                f"⚡ **powered by SADRA&SELF**"
            )
            await event.edit(msg)
        else:
            await event.edit("❌ خطا در ترجمه! دوباره تلاش کن.")
        
    except Exception as er:
        await event.edit(f"❌ خطا: {er}")

# ========== Admin Commands ==========
@client.on(events.NewMessage(pattern=r'^(bot)$'))
async def bot_status(event):
    if is_admin(event.sender_id):
        await event.reply('shut up.')

@client.on(events.NewMessage(pattern=r'^add (\d+)$'))
async def add_new_admin(event):
    if event.sender_id != main_admin:
        return
    new_admin_id = int(event.pattern_match.group(1))
    add_admin(new_admin_id)
    await event.reply(f"✅ ادمین جدید با آیدی `{new_admin_id}` اضافه شد.")
    try:
        await client.send_message(new_admin_id, "📢 شما به عنوان ادمین جدید اضافه شدید.")
    except:
        pass
    log(f"👤 Admin {new_admin_id} added by {event.sender_id}")

@client.on(events.NewMessage(pattern=r'^remove (\d+)$'))
async def remove_admin(event):
    if event.sender_id != main_admin:
        return
    admin_id = int(event.pattern_match.group(1))
    if admin_id == main_admin:
        await event.reply("❌ ادمین اصلی قابل حذف نیست.")
        return
    cursor.execute('DELETE FROM admins WHERE id=?', (admin_id,))
    db.commit()
    await event.reply(f"🗑️ ادمین با آیدی `{admin_id}` حذف شد.")
    log(f"🗑️ Admin {admin_id} removed by {event.sender_id}")

# ========== Save with Link ==========
@client.on(events.NewMessage(pattern=r'^save (.+)$'))
async def save_link(event):
    if not is_admin(event.sender_id):
        return

    link = event.pattern_match.group(1).strip()
    if "https://t.me/" not in link:
        return

    try:
        clean_link = link.replace('https://t.me/', '').replace('c/', '').replace('?single', '')
        parts = clean_link.split('/')
        if len(parts) < 2:
            return

        chat_part, msg_id = parts[-2], parts[-1]
        chat_id = int('-100' + chat_part) if chat_part.isdigit() else chat_part
        msg_id = int(msg_id)

        target_msg = await client.get_messages(chat_id, ids=msg_id)
        chat_entity = await client.get_entity(chat_id)
        chat_name = getattr(chat_entity, "title", "Private or Unknown")

        if not target_msg.media:
            text_msg = target_msg.text or "(No text)"
            caption = f"📝 Text Message From:\n📛 {chat_name}\n🔗 {link}\n\n{text_msg}"
            await client.send_message(event.sender_id, caption)
            return

        status_msg = await client.send_message(event.sender_id, "⬇️ Downloading...")

        last_update = 0
        async def progress_callback(current, total):
            nonlocal last_update
            percent = int(current * 100 / total) if total else 100
            now = time.time()
            if now - last_update >= 2:
                try:
                    await status_msg.edit(f"⬇️ Downloading {percent}%")
                except:
                    pass
                last_update = now

        file_path = await client.download_media(target_msg, progress_callback=progress_callback)
        await status_msg.edit("📤 Uploading...")

        sender = await target_msg.get_sender()
        username = getattr(sender, 'username', None)
        username = f"@{username}" if username else "None"

        caption = (
            f"📦 File From: {chat_name}\n"
            f"🔗 Link: {link}\n"
            f"👤 Sender: {getattr(sender,'first_name','Unknown')}\n"
            f"🆔 Username: {username}\n"
            f"🔢 ID: {getattr(sender,'id','Unknown')}\n"
            f"⏰ Time: {get_tehran_time().strftime('%H:%M:%S')}"
        )

        await client.send_file(event.sender_id, file_path, caption=caption)
        await status_msg.edit("✅ Upload Complete")

    except Exception as e:
        await client.send_message(event.sender_id, f"❌ Error: {e}")
        print(traceback.format_exc())

    finally:
        if 'file_path' in locals() and file_path and os.path.exists(file_path):
            try:
                await asyncio.sleep(1)
                os.remove(file_path)
            except:
                pass

# ========== Save with Reply ==========
@client.on(events.NewMessage(pattern=r'^‌.*$'))
async def save_reply(event):
    if not is_admin(event.sender_id):
        return

    reply = await event.get_reply_message()
    if not reply:
        return

    try:
        chat_entity = await event.get_chat()
        chat_name = getattr(chat_entity, "title", "خصوصی یا ناشناس")
        clean_link = (
            f"{chat_entity.username}/{reply.id}"
            if getattr(chat_entity, "username", None)
            else "خصوصی"
        )

        if not reply.media:
            text_msg = reply.text or "(بدون متن)"
            caption = f"📝 پیام متنی ذخیره‌شده از:\n📛 {chat_name}\n🔗 https://t.me/{clean_link}\n\n{text_msg}"
            await client.send_message(event.sender_id, caption)
            log(f"💬 Text saved via half-space by {event.sender_id}")
            return

        sender = await reply.get_sender()
        caption = (
            f"📦 فایل ذخیره‌شده از: {chat_name}\n"
            f"🔗 لینک: https://t.me/{clean_link}\n"
            f"👤 فرستنده: {getattr(sender, 'first_name', 'ناشناس')}\n"
            f"🆔 یوزرنیم: @{getattr(sender, 'username', 'ندارد')}\n"
            f"🔢 آیدی: {getattr(sender, 'id', 'نامشخص')}\n"
            f"⏰ ساعت: {get_tehran_time().strftime('%H:%M:%S')}"
        )

        await client.send_message(event.sender_id, "⬇️ در حال ارسال فایل...")
        await client.send_file(event.sender_id, reply.media, caption=caption)
        await client.send_message(event.sender_id, "✅ ارسال کامل شد.")
        log(f"✅ File sent via half-space by {event.sender_id}")

    except Exception:
        log(f"❌ Save via half-space error:\n{traceback.format_exc()}")

# ========== Timed Media ==========
@client.on(events.NewMessage(func=lambda e: e.media and (e.photo or e.video or e.voice)))
async def handle_timed_media(event):
    if not hasattr(event.media, 'ttl_seconds') or not event.media.ttl_seconds:
        return

    rand = random.randint(1000, 9999999)
    file_type = 'photo' if event.photo else 'video' if event.video else 'voice'
    file_ext = 'jpg' if event.photo else 'mp4' if event.video else 'ogg'
    file_path = os.path.join(download_path, f'{file_type}-{rand}.{file_ext}')

    try:
        await client.download_media(event.message, file_path)
        sender = await event.get_sender()

        caption = (
            f"🔥 Timed Media Detected ({file_type})\n"
            f"👤 Sender: {sender.first_name or ''}\n"
            f"🆔 Username: @{sender.username or 'None'}\n"
            f"🔢 ID: {sender.id}\n"
            f"⏰ Time: {get_tehran_time().strftime('%H:%M:%S')}"
        )

        await client.send_file(main_admin, file_path, caption=caption)
        log(f"📸 Timed media from {sender.id}")

    except Exception as e:
        log(f"❌ Timed media error: {e}")

    finally:
        if os.path.exists(file_path):
            os.remove(file_path)

# ========== Set Source ==========
@client.on(events.NewMessage(pattern=r'^/setsource (.+)$'))
async def set_source(event):
    if not is_admin(event.sender_id):
        return

    link = event.pattern_match.group(1).strip()
    import re
    match = re.search(r"t\.me\/c\/(\d+)", link)
    if not match:
        return await event.reply("❌ Invalid link.")

    chat_part = match.group(1)
    chat_id = int("-100" + chat_part)

    cursor.execute("DELETE FROM source")
    cursor.execute("INSERT INTO source (id) VALUES (?)", (chat_id,))
    db.commit()

    await event.reply(f"✅ Source channel set:\n`{chat_id}`")

# ========== Auto Forward ==========
@client.on(events.NewMessage())
async def auto_forward(event):
    try:
        cursor.execute("SELECT id FROM source")
        row = cursor.fetchone()
        if not row:
            return

        source_id = row[0]
        if event.chat_id != source_id:
            return

        if event.raw_text and not event.media:
            await client.send_message(DESTINATION, event.raw_text)
            return

        file_path = await client.download_media(event.message)
        caption = event.message.message or ""

        await client.send_file(DESTINATION, file_path, caption=caption)

        if file_path and os.path.exists(file_path):
            os.remove(file_path)

    except Exception as e:
        print("Forward Error:", e)


       
# ========== لینک دعوت (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.link$'))
async def link_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        # روش درست برای Telethon
        result = await client(functions.messages.ExportChatInviteRequest(
            peer=await client.get_input_entity(event.chat_id)
        ))
        await event.reply(f"🔗 **لینک:**\n{result.link}")
    except Exception as er:
        await event.reply(f"❌ خطا: {er}")

# ========== تغییر نام گروه (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.setchattitle (.+)$'))
async def setchattitle_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        title = event.pattern_match.group(1).strip()
        await client(functions.channels.EditTitleRequest(
            channel=await client.get_input_entity(event.chat_id),
            title=title
        ))
        await event.reply(f"❖ Chat Name Changed To: `{title}`")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== اطلاعات پیام (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.get_message$'))
async def get_message_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        if event.reply_to_msg_id:
            msg = await event.get_reply_message()
        else:
            msg = event
        
        # دریافت اطلاعات فرستنده
        sender = msg.sender_id
        if sender:
            try:
                sender_entity = await client.get_entity(sender)
                sender_name = sender_entity.first_name or "ناشناس"
                sender_username = f"@{sender_entity.username}" if sender_entity.username else "ندارد"
                sender_id = sender_entity.id
            except:
                sender_name = "ناشناس"
                sender_username = "ندارد"
                sender_id = sender
        else:
            sender_name = "ناشناس"
            sender_username = "ندارد"
            sender_id = "نامشخص"
        
        # دریافت اطلاعات چت
        chat = await event.get_chat()
        chat_name = chat.title if hasattr(chat, 'title') else "چت خصوصی"
        chat_id = event.chat_id
        
        # ساخت اطلاعات پیام
        info_text = (
            f"📊 **اطلاعات پیام**\n"
            f"━━━━━━━━━━━━━━━━━━━\n"
            f"👤 **فرستنده:** {sender_name}\n"
            f"🆔 **یوزرنیم:** {sender_username}\n"
            f"🔢 **آیدی فرستنده:** `{sender_id}`\n"
            f"━━━━━━━━━━━━━━━━━━━\n"
            f"📌 **چت:** {chat_name}\n"
            f"🆔 **آیدی چت:** `{chat_id}`\n"
            f"━━━━━━━━━━━━━━━━━━━\n"
            f"🆔 **آیدی پیام:** `{msg.id}`\n"
            f"📅 **تاریخ:** {msg.date.strftime('%Y/%m/%d %H:%M:%S')}\n"
        )
        
        # نوع پیام
        if msg.text:
            info_text += f"📝 **نوع:** متن\n"
            info_text += f"━━━━━━━━━━━━━━━━━━━\n"
            info_text += f"💬 **متن:**\n{msg.text}\n"
        elif msg.photo:
            info_text += f"📸 **نوع:** عکس\n"
            info_text += f"📏 **سایز:** {msg.photo.width}x{msg.photo.height}\n"
            info_text += f"📦 **حجم:** {msg.photo.size/1024:.1f}KB\n"
        elif msg.video:
            info_text += f"🎥 **نوع:** ویدیو\n"
            info_text += f"⏱️ **مدت:** {msg.video.duration} ثانیه\n"
            info_text += f"📦 **حجم:** {msg.video.size/1024/1024:.1f}MB\n"
        elif msg.voice:
            info_text += f"🎙️ **نوع:** ویس\n"
            info_text += f"⏱️ **مدت:** {msg.voice.duration} ثانیه\n"
            info_text += f"📦 **حجم:** {msg.voice.size/1024:.1f}KB\n"
        elif msg.document:
            info_text += f"📄 **نوع:** فایل\n"
            info_text += f"📦 **حجم:** {msg.document.size/1024/1024:.1f}MB\n"
        elif msg.sticker:
            info_text += f"🏷️ **نوع:** استیکر\n"
        elif msg.animation:
            info_text += f"🎬 **نوع:** گیف\n"
            info_text += f"⏱️ **مدت:** {msg.animation.duration} ثانیه\n"
        else:
            info_text += f"📎 **نوع:** ناشناخته\n"
        
        # اگه کپشن داشت
        if msg.caption:
            info_text += f"━━━━━━━━━━━━━━━━━━━\n"
            info_text += f"📝 **کپشن:**\n{msg.caption}\n"
        
        info_text += f"━━━━━━━━━━━━━━━━━━━\n"
        info_text += f"⚡ **powered by SADRA&SELF**"
        
        await event.reply(info_text)
        
    except Exception as er:
        await event.reply(f"❌ خطا: {er}")

# ========== اطلاعات استیکر (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.stickerinfo$'))
async def stickerinfo_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply or not reply.sticker:
        return await event.reply("❌ به یک استیکر ریپلای کن!")
    
    try:
        sticker = reply.sticker
        
        output = f"""**Sticker Info**
━━━━━━━━━━━━━━━━━━━
📦 **Size:** `{sticker.size/1024:.1f}KB`
😊 **Emoji:** `{sticker.emoji if sticker.emoji else 'N/A'}`
🔗 **Pack:** `{sticker.set_name if sticker.set_name else 'N/A'}`
━━━━━━━━━━━━━━━━━━━
⚡ powered by SADRA&SELF"""
        
        await event.reply(output)
        
    except Exception as er:
        await event.reply(f"❌ خطا: {er}")

# ========== ساخت کانال (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.creatchannel (.+)$'))
async def creatchannel_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        title = event.pattern_match.group(1).strip()
        result = await client(functions.channels.CreateChannelRequest(
            title=title,
            about="Created by SADRA BOT"
        ))
        await event.reply(f"❖ Channel Created: `{title}`\nID: `{result.chats[0].id}`")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== خروج از گروه (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.left$'))
async def left_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        parts = event.text.split()
        if len(parts) > 1:
            target = parts[1]
            try:
                entity = await client.get_entity(target)
                await client(functions.channels.LeaveChannelRequest(
                    channel=await client.get_input_entity(entity.id)
                ))
                await event.reply(f"❖ Left From: `{target}`")
            except:
                await event.reply(f"❌ چت `{target}` پیدا نشد!")
        else:
            await client(functions.channels.LeaveChannelRequest(
                channel=await client.get_input_entity(event.chat_id)
            ))
            await event.reply("❖ Left Chat ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== تاس (درست) ==========
@client.on(events.NewMessage(pattern=r'^\.tas (\d+)$'))
async def tas_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        num = int(event.pattern_match.group(1))
        if 1 <= num <= 6:
            await event.delete()
            while True:
                msg = await client.send_dice(event.chat_id)
                if msg.dice.value == num:
                    await event.reply(f"🎲 عدد {num} آمد! 🎉")
                    break
                await asyncio.sleep(0.5)
        else:
            await event.reply("❌ لطفا عدد بین 1 تا 6 وارد کن!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

@client.on(events.NewMessage(pattern=r'^\.dart$'))
async def dart_cmd(event):
    if not is_admin(event.sender_id):
        return
    await event.delete()
    msg = await client.send_dice(event.chat_id, emoji="🎯")
    await event.reply(f"🎯 دارت: {msg.dice.value}")

@client.on(events.NewMessage(pattern=r'^\.bowling$'))
async def bowling_cmd(event):
    if not is_admin(event.sender_id):
        return
    await event.delete()
    msg = await client.send_dice(event.chat_id, emoji="🎳")
    await event.reply(f"🎳 بولینگ: {msg.dice.value}")

@client.on(events.NewMessage(pattern=r'^\.basketball$'))
async def basketball_cmd(event):
    if not is_admin(event.sender_id):
        return
    await event.delete()
    msg = await client.send_dice(event.chat_id, emoji="🏀")
    await event.reply(f"🏀 بسکتبال: {msg.dice.value}")

@client.on(events.NewMessage(pattern=r'^\.football (\d+)$'))
async def football_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        num = int(event.pattern_match.group(1))
        if num in [1, 4]:
            await event.delete()
            msg = await client.send_dice(event.chat_id, emoji="⚽")
            if msg.dice.value == num:
                await event.reply(f"⚽ فوتبال {num} شد! 🎉")
            else:
                for _ in range(20):
                    msg = await client.send_dice(event.chat_id, emoji="⚽")
                    if msg.dice.value == num:
                        await event.reply(f"⚽ فوتبال {num} شد! 🎉")
                        break
                    await asyncio.sleep(0.5)
        else:
            await event.reply("❌ لطفا عدد 1 یا 4 وارد کن!")
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== Text Modes (ادیت کردن پیام) ==========
@client.on(events.NewMessage(pattern=r'^\.(bold|italic|code|underline|strike|spoiler|quote|mention) (on|off)$'))
async def text_mode_cmd(event):
    if not is_admin(event.sender_id):
        return
    mode = event.pattern_match.group(1)
    status = event.pattern_match.group(2)
    
    mode_map = {
        'bold': 'boldmode',
        'italic': 'italicmode',
        'code': 'codemode',
        'underline': 'underline',
        'strike': 'strike',
        'spoiler': 'spoilermode',
        'quote': 'quotemode',
        'mention': 'mention'
    }
    
    a = json_read("data.json")
    a[mode_map.get(mode, mode)] = status
    with open("data.json", "w", encoding="utf-8") as f:
        json.dump(a, f)
    await event.reply(f"❖ {mode.capitalize()} Mode is **{status.upper()}**")

# ========== Emoji Mode ==========
@client.on(events.NewMessage(pattern=r'^\.emoji (on|off)$'))
async def emoji_cmd(event):
    if not is_admin(event.sender_id):
        return
    status = event.pattern_match.group(1)
    a = json_read("data.json")
    a["emojimode"] = status
    with open("data.json", "w", encoding="utf-8") as f:
        json.dump(a, f)
    await event.reply(f"❖ Emoji Mode is **{status.upper()}**")

# ========== Text Mode Handler (ادیت کردن پیام) ==========
@client.on(events.NewMessage(func=lambda e: e.out))
async def text_mode_handler(event):
    if not event.text:
        return
    
    a = json_read("data.json")
    text = event.text
    
    # ایموجی رندوم
    ez_emoji = ["😀", "😄", "😁", "😆", "😅", "🤣", "😭", "😘", "🥰", "😍", "🤩", "🥳", "🤗", "🙃", "🙂", "☺️", "😊", "😏", "😌", "😉", "🤭", "🤔", "🤪", "😜", "😝", "😛", "😋", "🤨", "🧐", "🙄", "😒", "😤", "😠", "😡", "🤬", "😰", "🤫", "🤐", "😬", "😳", "🥺", "😟", "😕", "🙁", "😨", "😧", "😦", "😮", "😯", "😲", "😱", "🤯", "😢", "😥", "😓", "😞", "😣", "😖", "😩", "😫", "🤤", "🥱", "🤮", "😇", "😵", "🤥", "🤓", "😎", "🤑", "🤠"]
    
    # اگه حالت ایموجی روشن باشه
    if a.get("emojimode") == "on":
        new_text = f"{text} {random.choice(ez_emoji)}"
        try:
            await event.edit(new_text)
        except:
            pass
    
    # حالت‌های دیگه
    elif a.get("boldmode") == "on":
        try:
            await event.edit(f"**{text}**")
        except:
            pass
    elif a.get("italicmode") == "on":
        try:
            await event.edit(f"__{text}__")
        except:
            pass
    elif a.get("codemode") == "on":
        try:
            await event.edit(f"`{text}`")
        except:
            pass
    elif a.get("underline") == "on":
        try:
            await event.edit(f"<u>{text}</u>")
        except:
            pass
    elif a.get("strike") == "on":
        try:
            await event.edit(f"~~{text}~~")
        except:
            pass
    elif a.get("spoilermode") == "on":
        try:
            await event.edit(f"|| {text} ||")
        except:
            pass
    elif a.get("quotemode") == "on":
        try:
            await event.edit(f"```{text}```")
        except:
            pass
    elif a.get("mention") == "on":
        try:
            await event.edit(f"<a href=tg://user?id={event.sender_id}>{text}</a>")
        except:
            pass

# ======================================================
# ========== مدیریت گروه (کامل) ==========
# ======================================================

# ========== 1. بن با حذف پیام ==========
@client.on(events.NewMessage(pattern=r'^\.dban$'))
async def dban_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        # بن کردن
        await client.ban_participant(event.chat_id, user_id)
        # حذف پیام ریپلای شده
        await client.delete_messages(event.chat_id, reply.id)
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Banned + Message Deleted ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 2. بن + حذف همه پیام‌های کاربر ==========
@client.on(events.NewMessage(pattern=r'^\.dbanall$'))
async def dbanall_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        # حذف همه پیام‌های کاربر
        async for msg in client.iter_messages(event.chat_id, from_user=user_id):
            await client.delete_messages(event.chat_id, msg.id)
        # بن کردن
        await client.ban_participant(event.chat_id, user_id)
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Banned + All Messages Deleted ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 3. بن موقت (تا زمان مشخص) ==========
@client.on(events.NewMessage(pattern=r'^\.tban (\d+)$'))
async def tban_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        minutes = int(event.pattern_match.group(1))
        user_id = reply.sender_id
        until_date = time.time() + (minutes * 60)
        
        await client.ban_participant(
            event.chat_id, 
            user_id, 
            until_date=until_date
        )
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Banned for {minutes} minutes ⏱️")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 4. کیک (اخراج) ==========
@client.on(events.NewMessage(pattern=r'^\.kick$'))
async def kick_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        await client.ban_participant(event.chat_id, user_id)
        # آنبن کردن (برای کیک)
        await client.ban_participant(event.chat_id, user_id, 0)
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Kicked ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 5. کیک + حذف پیام ==========
@client.on(events.NewMessage(pattern=r'^\.dkick$'))
async def dkick_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        await client.delete_messages(event.chat_id, reply.id)
        await client.ban_participant(event.chat_id, user_id)
        await client.ban_participant(event.chat_id, user_id, 0)
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Kicked + Message Deleted ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 6. میوت موقت ==========
@client.on(events.NewMessage(pattern=r'^\.tmute (\d+)$'))
async def tmute_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        minutes = int(event.pattern_match.group(1))
        user_id = reply.sender_id
        until_date = time.time() + (minutes * 60)
        
        await client.restrict_participant(
            event.chat_id,
            user_id,
            rights=types.ChatBannedRights(
                until_date=until_date,
                send_messages=True,
                send_media=True,
                send_stickers=True,
                send_gifs=True,
                send_games=True,
                send_inline=True,
                embed_links=True
            )
        )
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Muted for {minutes} minutes ⏱️")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 7. پراموت به ادمین ==========
@client.on(events.NewMessage(pattern=r'^\.promote$'))
async def promote_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        await client.edit_admin(
            event.chat_id,
            user_id,
            is_admin=True,
            change_info=True,
            delete_messages=True,
            ban_users=True,
            invite_users=True,
            pin_messages=True,
            add_admins=False
        )
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Promoted to Admin ✅")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 8. دی‌پروموت (حذف ادمین) ==========
@client.on(events.NewMessage(pattern=r'^\.demote$'))
async def demote_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        await client.edit_admin(
            event.chat_id,
            user_id,
            is_admin=False
        )
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Demoted from Admin ❌")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 9. محدودیت ارسال لینک ==========
@client.on(events.NewMessage(pattern=r'^\.linkmute$'))
async def linkmute_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        await client.restrict_participant(
            event.chat_id,
            user_id,
            rights=types.ChatBannedRights(
                until_date=None,
                send_messages=True,
                send_media=True,
                send_stickers=True,
                send_gifs=True,
                send_games=True,
                send_inline=True,
                embed_links=True  # جلوگیری از ارسال لینک
            )
        )
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Link Restricted 🔗")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 10. محدودیت ارسال مدیا ==========
@client.on(events.NewMessage(pattern=r'^\.mediamute$'))
async def mediamute_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک کاربر ریپلای کن!")
    
    try:
        user_id = reply.sender_id
        await client.restrict_participant(
            event.chat_id,
            user_id,
            rights=types.ChatBannedRights(
                until_date=None,
                send_messages=False,
                send_media=True,  # فقط مدیا ممنوع
                send_stickers=True,
                send_gifs=True,
                send_games=True,
                send_inline=True,
                embed_links=False
            )
        )
        user = await client.get_entity(user_id)
        await event.reply(f"❖ {user.first_name} Media Restricted 📵")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 11. ری‌اکشن (واکنش) ==========
@client.on(events.NewMessage(pattern=r'^\.react (.+)$'))
async def react_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام ریپلای کن!")
    
    try:
        emoji = event.pattern_match.group(1).strip()
        await client.send_reaction(event.chat_id, reply.id, emoji)
        await event.delete()
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 12. حذف همه ری‌اکشن‌های پیام ==========
@client.on(events.NewMessage(pattern=r'^\.delreact$'))
async def delreact_cmd(event):
    if not is_admin(event.sender_id):
        return
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام ریپلای کن!")
    
    try:
        await client.send_reaction(event.chat_id, reply.id, [])
        await event.reply("🗑️ All reactions removed!")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 13. تگ کردن همه ادمین‌ها ==========
@client.on(events.NewMessage(pattern=r'^\.admins$'))
async def admins_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        msg = "👑 **Admins:**\n"
        async for member in client.iter_participants(event.chat_id, filter=types.ChannelParticipantAdmin):
            user = member.user_id
            entity = await client.get_entity(user)
            msg += f"• {entity.first_name}\n"
        await event.reply(msg)
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 14. تگ کردن همه ممبرها ==========

# ========== تگ کردن همه (با منشن نام) ==========
@client.on(events.NewMessage(pattern=r'^\.all$'))
async def all_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        # دریافت پیام ریپلای شده یا متن پیشفرض
        reply = await event.get_reply_message()
        text = reply.text if reply else "📢 @all"
        
        await event.delete()
        
        msg = f"{text}\n━━━━━━━━━━━━━━━━━━━\n"
        count = 0
        me = await client.get_me()
        
        async for member in client.iter_participants(event.chat_id):
            # رد کردن خود ربات
            if member.id == me.id:
                continue
            
            # رد کردن ادمین اصلی (اختیاری)
            if member.id == main_admin:
                continue
            
            # منشن با نام (حتی اگه یوزرنیم نداشته باشه)
            msg += f"[{member.first_name}](tg://user?id={member.id}) "
            
            count += 1
            
            # هر 10 نفر یکبار بفرست (جلوگیری از فلود)
            if count % 10 == 0:
                await client.send_message(event.chat_id, msg)
                msg = f"{text}\n━━━━━━━━━━━━━━━━━━━\n"
                await asyncio.sleep(0.5)
        
        # ارسال باقی‌مونده
        if msg and msg != f"{text}\n━━━━━━━━━━━━━━━━━━━\n":
            await client.send_message(event.chat_id, msg)
            
        await client.send_message(event.chat_id, f"✅ {count} نفر منشن شدند!")
            
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 15. کلیر (پاک کردن پیام‌های اخیر) ==========
@client.on(events.NewMessage(pattern=r'^\.clear (\d+)$'))
async def clear_cmd(event):
    if not is_admin(event.sender_id):
        return
    try:
        count = int(event.pattern_match.group(1))
        if count > 100:
            return await event.reply("❌ حداکثر 100 پیام!")
        
        msgs = []
        async for msg in client.iter_messages(event.chat_id, limit=count):
            msgs.append(msg.id)
        
        if msgs:
            await client.delete_messages(event.chat_id, msgs)
            await event.reply(f"🗑️ {len(msgs)} پیام حذف شد!")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 16. قفل گروه ==========
@client.on(events.NewMessage(pattern=r'^\.lockgroup$'))
async def lockgroup_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        await client.set_chat_permissions(
            event.chat_id,
            types.ChatPermissions(
                send_messages=False,
                send_media=False,
                send_stickers=False,
                send_gifs=False,
                send_games=False,
                send_inline=False,
                embed_links=False
            )
        )
        await event.reply("🔒 Group Locked!")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

# ========== 17. آنلاک گروه ==========
@client.on(events.NewMessage(pattern=r'^\.unlockgroup$'))
async def unlockgroup_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        await client.set_chat_permissions(
            event.chat_id,
            types.ChatPermissions(
                send_messages=True,
                send_media=True,
                send_stickers=True,
                send_gifs=True,
                send_games=True,
                send_inline=True,
                embed_links=True
            )
        )
        await event.reply("🔓 Group Unlocked!")
    except Exception as er:
        await event.reply(f"❖ **ERROR** :\n`{er}`")

from telethon.tl import types

# ========== تست ایموجی پریمیوم (با HTML) ==========
@client.on(events.NewMessage(pattern=r'^\.premiumtest$'))
async def premium_test_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        # فقط با HTML (ساده‌ترین)
        await client.send_message(
            event.chat_id,
            message='<tg-emoji emoji-id="5830144944399981619">🔥</tg-emoji> متن با ایموجی پریمیوم',
            parse_mode='html'
        )
        
        await event.reply("✅ ایموجی پریمیوم تست شد!")
        
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== گرفتن آیدی ایموجی پریمیوم ==========
@client.on(events.NewMessage(pattern=r'^\.getemojioid$'))
async def get_emojioid_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام با ایموجی پریمیوم ریپلای کن!")
    
    try:
        if reply.entities:
            for entity in reply.entities:
                if isinstance(entity, types.MessageEntityCustomEmoji):
                    await event.reply(f"🆔 **آیدی ایموجی:** `{entity.document_id}`")
                    return
        
        await event.reply("❌ ایموجی پریمیومی در این پیام پیدا نشد!")
        
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== ارسال پیام با ایموجی پریمیوم ==========
@client.on(events.NewMessage(pattern=r'^\.pe (.*)$'))
async def premium_emoji_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    text = event.pattern_match.group(1).strip()
    if not text:
        return await event.reply("❌ متن رو وارد کن! مثال: `.pe سلام`")
    
    try:
        await client.send_message(
            event.chat_id,
            message=f'<tg-emoji emoji-id="5830144944399981619">🔥</tg-emoji> {text}',
            parse_mode='html'
        )
        await event.delete()
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== ارسال با ایموجی دلخواه ==========
@client.on(events.NewMessage(pattern=r'^\.pe (.+?) (.+)$'))
async def premium_emoji_custom_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    try:
        emoji_id = event.pattern_match.group(1).strip()
        text = event.pattern_match.group(2).strip()
        
        # اگه عدد نبود، یعنی ایموجی معمولیه
        if not emoji_id.isdigit():
            await client.send_message(
                event.chat_id,
                message=f'{emoji_id} {text}'
            )
            await event.delete()
            return
        
        await client.send_message(
            event.chat_id,
            message=f'<tg-emoji emoji-id="{emoji_id}">🔥</tg-emoji> {text}',
            parse_mode='html'
        )
        await event.delete()
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== ایموجی پریمیوم در پاسخ ==========
@client.on(events.NewMessage(pattern=r'^\.preply (.*)$'))
async def premium_reply_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    reply = await event.get_reply_message()
    if not reply:
        return await event.reply("❌ به یک پیام ریپلای کن!")
    
    text = event.pattern_match.group(1).strip()
    if not text:
        return await event.reply("❌ متن رو وارد کن!")
    
    try:
        await client.send_message(
            event.chat_id,
            message=f'<tg-emoji emoji-id="5830144944399981619">🔥</tg-emoji> {text}',
            parse_mode='html',
            reply_to=reply.id
        )
        await event.delete()
    except Exception as e:
        await event.reply(f"❌ خطا: {e}")

# ========== لیست ایموجی‌های پریمیوم معروف ==========
@client.on(events.NewMessage(pattern=r'^\.pe_list$'))
async def premium_list_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    text = """🔥 **لیست ایموجی‌های پریمیوم:**
━━━━━━━━━━━━━━━━━━━
🔹 `5830144944399981619` - 🔥
🔹 `5080414723065775391` - ✨
🔹 `5789751978...` - ❤️‍🔥
🔹 `5841229473401734494` - 🍌
🔹 `5843750192938422770` - 👅
🔹 `5863604049027795254` - 🌚
🔹 `6120048417355815099` - 🗿

📌 برای استفاده:
`.pe 5830144944399981619 سلام`

━━━━━━━━━━━━━━━━━━━
🪄 @S_A_D_R_A_2"""
    
    await event.reply(text)
        
# ========== Help با صفحه‌بندی (کامل) ==========
# ========== Help 4 (مدیریت گروه) ==========
# ========== Help 5 با ایموجی پریمیوم ==========
@client.on(events.NewMessage(pattern=r'^(help5|راهنما5)$'))
async def help5_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    text = f"""<tg-emoji emoji-id="5909179412162551840">📘</tg-emoji> <b>Help - صفحه 5/5 (متفرقه و جدید)</b>
<tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji>

<tg-emoji emoji-id="4958506272551863292">📊</tg-emoji> <b>آمار و اطلاعات:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.stats</code> - آمار کامل بات
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.uptime</code> - زمان آپ‌تایم بات
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.status</code> - وضعیت بات

<tg-emoji emoji-id="5875483791702630534">🎲</tg-emoji> <b>ابزارها:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.choose a|b|c</code> - انتخاب تصادفی
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.rand 1-100</code> - عدد رندوم
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.react ❤️</code> - ری‌اکشن به پیام (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.delreact</code> - حذف همه ری‌اکشن‌ها (ریپلای)

<tg-emoji emoji-id="5257965810634202885">📝</tg-emoji> <b>مدیریت پیام:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.del</code> - حذف پیام (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.del 10</code> - حذف ۱۰ پیام آخر
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.clear 10</code> - پاک کردن ۱۰ پیام آخر
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.edit text</code> - ادیت پیام (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.reply text</code> - ریپلای به پیام (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.fwd @username</code> - فوروارد به یوزر (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.silent text</code> - ارسال بی‌صدا
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.purge</code> - حذف همه پیام‌های کاربر (ریپلای)

<tg-emoji emoji-id="5812289498335156138">🔔</tg-emoji> <b>تگ و نوتیف:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.tagalert on/off</code> - هشدار تگ
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.tagalert setgroup @id</code> - تنظیم گپ لاگ
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.all</code> - تگ کردن همه (با ریپلای)

<tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji>
<tg-emoji emoji-id="5258073068852485953">📌</tg-emoji> @S_A_D_R_A_14"""

    await client.send_message(event.chat_id, text, parse_mode='html')

# ========== Help 4 با ایموجی پریمیوم ==========
@client.on(events.NewMessage(pattern=r'^(help4|راهنما4)$'))
async def help4_cmd(event):
    if not is_admin(event.sender_id):
        return
     
    text = f"""<tg-emoji emoji-id="5909179412162551840">📘</tg-emoji> <b>Help - صفحه 4/5 (مدیریت گروه)</b>
<tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji>

<tg-emoji emoji-id="5873075766748520540">🔨</tg-emoji> <b>بن و اخراج:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.dban</code> - بن + حذف پیام (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.dbanall</code> - بن + حذف همه پیام‌ها (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.tban 5</code> - بن موقت ۵ دقیقه (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.kick</code> - اخراج (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.dkick</code> - اخراج + حذف پیام (ریپلای)

<tg-emoji emoji-id="5872883940624179027">🔇</tg-emoji> <b>میوت و محدودیت:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.tmute 5</code> - میوت موقت ۵ دقیقه (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.linkmute</code> - جلوگیری از ارسال لینک (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.mediamute</code> - جلوگیری از ارسال مدیا (ریپلای)

<tg-emoji emoji-id="5857321629138297224">👑</tg-emoji> <b>ادمین:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.promote</code> - ادمین کردن (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.demote</code> - حذف ادمین (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.admins</code> - لیست ادمین‌ها

<tg-emoji emoji-id="5909179412162551840">🔒</tg-emoji> <b>قفل گروه:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.lockgroup</code> - قفل کردن گروه
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.unlockgroup</code> - باز کردن قفل گروه

<tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji>
<tg-emoji emoji-id="5258073068852485953">📌</tg-emoji> برای ادامه <code>help5</code> رو بزن
<tg-emoji emoji-id="5258073068852485953">🪄</tg-emoji> @S_A_D_R_A_2"""

    await client.send_message(event.chat_id, text, parse_mode='html')
    
# ========== Help 1 با ایموجی پریمیوم و کپی‌پذیر ==========
@client.on(events.NewMessage(pattern=r'^(help|راهنما)$'))
async def help_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    text = f"""<tg-emoji emoji-id="5909179412162551840">📘</tg-emoji> <b>Help - صفحه 1/3</b>
<tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji>

<tg-emoji emoji-id="5857321629138297224">👑</tg-emoji> <b>دستورات ادمین:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>bot</code> - وضعیت بات
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>add &lt;id&gt;</code> - اضافه کردن ادمین
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>remove &lt;id&gt;</code> - حذف ادمین
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>save &lt;link&gt;</code> - ذخیره با لینک
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>reply + ‌</code> - ذخیره با ریپلای

<tg-emoji emoji-id="5837050654811496370">🕐</tg-emoji> <b>تنظیمات زمان:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.time on/off</code> - ساعت روی last name
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.now</code> - ساعت فعلی تهران

<tg-emoji emoji-id="5909179412162551840">🔗</tg-emoji> <b>لینک و آیدی:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.link</code> - لینک دعوت گروه
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.id</code> - آیدی عددی
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.inf @username</code> - اطلاعات چت
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.pp</code> - اطلاعات پروفایل (ریپلای)

<tg-emoji emoji-id="5857321629138297224">🚫</tg-emoji> <b>مدیریت کاربران:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.block</code> - بلاک کردن (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.unblock</code> - آنبلاک کردن (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.blocklist</code> - لیست بلاک شده‌ها
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.ban</code> - بن کردن (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.unban</code> - آنبن کردن (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.setmute</code> - میوت کردن (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.delmute</code> - آنمیوت کردن (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.clear_member &lt;id&gt;</code> - پاکسازی ممبرها

<tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji>
<tg-emoji emoji-id="5258073068852485953">📌</tg-emoji> برای ادامه <code>help2</code> رو بزن
<tg-emoji emoji-id="5837050654811496370">🕐</tg-emoji> @S_A_D_R_A_14"""

    await client.send_message(event.chat_id, text, parse_mode='html')

# ========== Help 2 با ایموجی پریمیوم ==========
@client.on(events.NewMessage(pattern=r'^(help2|راهنما2)$'))
async def help2_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    text = f"""<tg-emoji emoji-id="5909179412162551840">📘</tg-emoji> <b>Help - صفحه 2/3</b>
<tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji>

<tg-emoji emoji-id="5111690657735378449">📋</tg-emoji> <b>لیست‌ها:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.setenemy</code> - اضافه به دشمنان (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.delenemy</code> - حذف از دشمنان (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.enemylist</code> - لیست دشمنان
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.setlove</code> - اضافه به عشق‌ها (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.dellove</code> - حذف از عشق‌ها (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.lovelist</code> - لیست عشق‌ها
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.mute</code> - بیصدا کردن (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.unmute</code> - برگرداندن صدا (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.mutelist</code> - لیست بیصداها
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.allunmute</code> - پاک کردن همه بیصداها

<tg-emoji emoji-id="5875483791702630534">🎲</tg-emoji> <b>بازی‌ها:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.tas 1-6</code> - تاس با عدد دلخواه
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.dart</code> - دارت (هدف 6)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.bowling</code> - بولینگ (هدف 6)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.basketball</code> - بسکتبال (هدف 4)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.football 1/4</code> - فوتبال (عدد 1 یا 4)

<tg-emoji emoji-id="5258093637450866522">🤖</tg-emoji> <b>Auto Answer:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.answer on/off</code> - فعال/غیرفعال
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.addan سوال:جواب</code> - اضافه کردن پاسخ
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.anclear</code> - پاک کردن همه پاسخ‌ها
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.anlist</code> - لیست پاسخ‌ها

<tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji>
<tg-emoji emoji-id="5258073068852485953">📌</tg-emoji> برای ادامه <code>help3</code> رو بزن
<tg-emoji emoji-id="5837050654811496370">🕐</tg-emoji> @S_A_D_R_A_14"""

    await client.send_message(event.chat_id, text, parse_mode='html')

# ========== Help 3 با ایموجی پریمیوم ==========
@client.on(events.NewMessage(pattern=r'^(help3|راهنما3)$'))
async def help3_cmd(event):
    if not is_admin(event.sender_id):
        return
    
    text = f"""<tg-emoji emoji-id="5909179412162551840">📘</tg-emoji> <b>Help - صفحه 3/3</b>
<tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji>

<tg-emoji emoji-id="5257969839313526622">📤</tg-emoji> <b>ارسال و اسپم:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.spam &lt;count&gt; &lt;text&gt;</code> - اسپم کردن
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.spm &lt;count&gt; &lt;text&gt;</code> - اسپم با ریپلای
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.send &lt;time&gt; &lt;msg&gt;</code> - تبچی زمان‌دار
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.send on</code> - فعال کردن تبچی
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.send off</code> - غیرفعال کردن تبچی
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.send stop</code> - حذف تبچی
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.listsend</code> - لیست تبچی‌ها

<tg-emoji emoji-id="5901989641204018165">⚙️</tg-emoji> <b>تنظیمات گروه:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.setchattitle &lt;title&gt;</code> - تغییر نام گروه
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.setchatbio &lt;bio&gt;</code> - تغییر بیو گروه
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.setchatphoto</code> - تغییر عکس گروه (ریپلای عکس)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.delchatphoto</code> - حذف عکس گروه
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.setchatusername &lt;username&gt;</code> - تغییر یوزرنیم
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.pin</code> - پین کردن (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.unpin</code> - آنپین کردن (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.unpinall</code> - آنپین همه
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.delethistory</code> - پاک کردن تاریخچه

<tg-emoji emoji-id="5257965810634202885">📄</tg-emoji> <b>اطلاعات:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.get_message</code> - اطلاعات کامل پیام (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.status</code> - وضعیت بات
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.packinfo</code> - اطلاعات پک استیکر (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.stickerinfo</code> - اطلاعات استیکر (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.country &lt;name&gt;</code> - اطلاعات کشور
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.wiki &lt;query&gt;</code> - ویکی‌پدیا
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.tr &lt;text&gt;</code> - ترجمه خودکار
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.ocr</code> - تشخیص متن عکس (ریپلای عکس)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.date</code> - تاریخ امروز

<tg-emoji emoji-id="5257969839313526622">🔄</tg-emoji> <b>تبدیل‌ها:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.mp3tovoice</code> - تبدیل اهنگ به ویس (ریپلای)
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.videotomsg</code> - تبدیل ویدیو به ویدیو مسیج (ریپلای)

<tg-emoji emoji-id="4958506272551863292">📊</tg-emoji> <b>وضعیت و تنظیمات:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.on_off_status</code> - وضعیت همه حالت‌ها
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.limit_del &lt;number&gt;</code> - لیمیت حذف
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.welcome on/off</code> - خوش‌آمدگویی
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.pvlock on/off</code> - قفل پیوی
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.bold on/off</code> - حالت بولت
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.italic on/off</code> - حالت ایتالیک
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.code on/off</code> - حالت کد
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.underline on/off</code> - حالت زیرخط
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.strike on/off</code> - حالت خط خورده
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.spoiler on/off</code> - حالت اسپویلر
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.quote on/off</code> - حالت نقل قول
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.mention on/off</code> - حالت منشن
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.emoji on/off</code> - حالت ایموجی

<tg-emoji emoji-id="5909179412162551840">🏷️</tg-emoji> <b>ساخت:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.creatchannel &lt;name&gt;</code> - ساخت کانال
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.creatgroup &lt;name&gt;</code> - ساخت گروه

<tg-emoji emoji-id="5857321629138297224">🚪</tg-emoji> <b>خروج:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.left</code> - خروج از گروه فعلی
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.left &lt;id&gt;</code> - خروج از گروه با آیدی

<tg-emoji emoji-id="5258073068852485953">📌</tg-emoji> <b>متفرقه:</b>
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.tagalert on/off</code> - هشدار تگ
<tg-emoji emoji-id="5314618508032614691">▶️</tg-emoji> <code>.tagalert setgroup &lt;id&gt;</code> - تنظیم گپ لاگ تگ

<tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji><tg-emoji emoji-id="5301240299085906131">─</tg-emoji>
<tg-emoji emoji-id="5258073068852485953">📌</tg-emoji> @S_A_D_R_A_14"""

    await client.send_message(event.chat_id, text, parse_mode='html')


# ========== اجرا ==========
async def main():
    await client.start()
    print("✅ Bot is Running...")
    log("🚀 Bot started successfully")
    asyncio.create_task(tabchi_loop())
    while True:
        try:
            await update_lastname_with_time()
        except Exception as e:
            log(f"❌ Error in main loop: {e}")
        await asyncio.sleep(5)

if __name__ == "__main__":
    asyncio.run(main())