import asyncio
import json
import os
import re
import time
from rubka.asynco import Robot, Message

TOKEN = "CCADFH0RYTGAVYNUAVPXNAOFLMABCOEUEEAIXTCEHNXNGJYWELXPFZNQIJRMCYYU"
DATA_FILE = "group_data.json"
bot = Robot(TOKEN)

active_groups = {}
group_admins = {}
user_last_message = {}

bad_words = [
    "کس", "کوس", "کیر", "کیری", "کونی", "کون", "کسکش", "کسخل", "مادرجنده", "جنده",
    "جاکش", "هرزه", "فحش", "مک", "کونده", "کصباح", "کودن", "خر", "گاو", "گوز",
    "سکس", "سکسی", "پورن", "پورنو", "بیاب", "بی پدر", "بی مادر", "حرومزاده", "حرامزاده",
    "لاشی", "شل", "گه", "گه خور", "گاگ", "کحل", "منی", "لاو", "لواط", "همجنس",
    "لگد", "خایه", "خار", "جق", "سوراخ", "داف", "داش", "کاندوم", "کرم",
    "شلخته", "بی عرضه", "خنگ", "کله خر", "الاغ", "پخم", "جقه", "ک.س", "ک.ن", "ک.ش", "خ.ر",
    "مادرکسه", "کسننت", "کصننت", "کس ننت", "کص ننت", "کص مادرت", "کسمادرت",
    "کسناموست", "ممه", "دول", "کسه", "ممبر", "همبر", "سورس", "سوسیس", "کالباس", "همبرگر"
]

def contains_bad_word_exact(text):
    text_lower = text.lower()
    words = re.split(r'[\s،,.;:!؟]+', text_lower)
    for word in words:
        word = word.strip('.,;:!؟"\'')
        if word in bad_words:
            return True
    return False

def is_admin(chat_id, user_id):
    if chat_id in group_admins and group_admins[chat_id] == user_id:
        return True
    return False

def load_data():
    global active_groups, group_admins
    if os.path.exists(DATA_FILE):
        with open(DATA_FILE, "r", encoding="utf-8") as f:
            data = json.load(f)
            active_groups = data.get("active_groups", {})
            group_admins = data.get("group_admins", {})

def save_data():
    with open(DATA_FILE, "w", encoding="utf-8") as f:
        json.dump({
            "active_groups": active_groups,
            "group_admins": group_admins
        }, f, ensure_ascii=False, indent=2)

load_data()

@bot.on_message_group()
async def group_handler(bot_obj: Robot, message: Message):
    chat_id = str(message.chat_id)
    text = (message.text or "").strip()
    sender_id = str(message.sender_id)
    
    if text == "/luiz":
        if chat_id not in active_groups:
            active_groups[chat_id] = True
            save_data()
            await message.reply("ربات محافظت فعال شد \nکانال سازنده: @BOT_ROBIKA85")
        else:
            await message.reply("⚠️ ربات قبلاً در این گروه فعال شده است!")
        return
    
    if chat_id not in active_groups:
        return
    
    if is_admin(chat_id, sender_id):
        pass
    else:
        if contains_bad_word_exact(text):
            try:
                await message.delete()
                await bot_obj.send_message(chat_id, f"<b>⚠️ کلمه ممنوعه! ﴿<a href='{sender_id}'>کاربر</a>﴾ گرامی</b>", parse_mode="HTML")
                return
            except:
                pass
        
        current_time = time.time()
        
        if chat_id not in user_last_message:
            user_last_message[chat_id] = {}
        
        if sender_id in user_last_message[chat_id]:
            last_time = user_last_message[chat_id][sender_id]
            if current_time - last_time < 10:
                try:
                    await message.delete()
                    # ارسال پیام اخطار به صورت جداگانه
                    await bot_obj.send_message(chat_id, f"<b>⚠️ اسپم ممنوع! ﴿<a href='{sender_id}'>کاربر</a>﴾ گرامی</b>", parse_mode="HTML")
                    return
                except:
                    pass
        
        user_last_message[chat_id][sender_id] = current_time
    
    if text == "/malk":
        if chat_id not in group_admins:
            group_admins[chat_id] = sender_id
            save_data()
            await message.reply(f"شما به عنوان ادمین ربات ثبت شدید ✔️")
        return

if __name__ == "__main__":
    print("✅ ربات روشن شد...")
    asyncio.run(bot.run())