#!/usr/bin/env python3
"""
ربات جنگ کشورها برای پیام‌رسان بله
نسخه کامل - با تمام امکانات: شهر، کارخانه، بمب اتم، اتحاد، ارتقا
"""

import requests
import time
import json
import random
import os
from datetime import datetime
from threading import Thread

# =============== تنظیمات ===============
TOKEN = "1397903235:TZHIwis9Bk-uXNcPtvAhvUV5QdTBjru50m0"
BASE_URL = f"https://tapi.bale.ai/bot{TOKEN}"

DATA_FILE = "game_data.json"
LAST_ID_FILE = "last_id.txt"

# =============== دیتابیس ===============
def load_data():
    if os.path.exists(DATA_FILE):
        with open(DATA_FILE, "r", encoding="utf-8") as f:
            return json.load(f)
    return {"users": {}, "alliances": {}}

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

def save_last_id(update_id):
    with open(LAST_ID_FILE, "w") as f:
        f.write(str(update_id))

def load_last_id():
    if os.path.exists(LAST_ID_FILE):
        with open(LAST_ID_FILE, "r") as f:
            return int(f.read().strip())
    return 0

# =============== API functions ===============
def api_request(method, params=None):
    try:
        response = requests.post(f"{BASE_URL}/{method}", json=params or {}, timeout=15)
        return response.json()
    except Exception as e:
        print(f"API Error: {e}")
        return None

def send_message(chat_id, text, reply_markup=None):
    params = {"chat_id": chat_id, "text": text}
    if reply_markup:
        params["reply_markup"] = reply_markup
    return api_request("sendMessage", params)

def edit_message(chat_id, message_id, text, reply_markup=None):
    params = {"chat_id": chat_id, "message_id": message_id, "text": text}
    if reply_markup:
        params["reply_markup"] = reply_markup
    return api_request("editMessageText", params)

# =============== داده‌های کشورها (واقعی) ===============
COUNTRIES = {
    "🇮🇷 ایران": {
        "tanks": 1650, "jets": 312, "missiles": 2300, "defense": 85, "economy": 70,
        "special": "موشک‌های بالستیک پیشرفته (+20% قدرت حمله)", "flag": "🇮🇷"
    },
    "🇺🇸 آمریکا": {
        "tanks": 5500, "jets": 1320, "missiles": 4000, "defense": 95, "economy": 95,
        "special": "ناوگان هوایی پیشرفته (+30% قدرت هوایی)", "flag": "🇺🇸"
    },
    "🇷🇺 روسیه": {
        "tanks": 12500, "jets": 1500, "missiles": 4500, "defense": 90, "economy": 80,
        "special": "تسلیحات هسته‌ای گسترده (ساخت اتم ارزان‌تر)", "flag": "🇷🇺"
    },
    "🇨🇳 چین": {
        "tanks": 5800, "jets": 1200, "missiles": 3500, "defense": 88, "economy": 90,
        "special": "تولید انبوه تجهیزات (-20% هزینه ارتقا)", "flag": "🇨🇳"
    },
    "🇹🇷 ترکیه": {
        "tanks": 2200, "jets": 245, "missiles": 700, "defense": 75, "economy": 65,
        "special": "پهپادهای پیشرفته (+25% قدرت پهپاد)", "flag": "🇹🇷"
    },
    "🇵🇰 پاکستان": {
        "tanks": 2200, "jets": 350, "missiles": 800, "defense": 70, "economy": 55,
        "special": "تسلیحات هسته‌ای (سریع‌ترین ساخت اتم)", "flag": "🇵🇰"
    },
    "🇸🇦 عربستان": {
        "tanks": 1200, "jets": 280, "missiles": 500, "defense": 65, "economy": 85,
        "special": "تجهیزات آمریکایی (+15% قدرت)", "flag": "🇸🇦"
    },
    "🇮🇱 اسرائیل": {
        "tanks": 1700, "jets": 345, "missiles": 900, "defense": 92, "economy": 88,
        "special": "فناوری پیشرفته (+10% همه آمار)", "flag": "🇮🇱"
    },
    "🇩🇪 آلمان": {
        "tanks": 800, "jets": 200, "missiles": 300, "defense": 85, "economy": 92,
        "special": "صنعت پیشرفته (درآمد صنعتی +30%)", "flag": "🇩🇪"
    },
    "🇬🇧 بریتانیا": {
        "tanks": 600, "jets": 250, "missiles": 400, "defense": 85, "economy": 85,
        "special": "نیروی دریایی قوی (+40% قدرت دریایی)", "flag": "🇬🇧"
    },
    "🇫🇷 فرانسه": {
        "tanks": 700, "jets": 230, "missiles": 350, "defense": 82, "economy": 85,
        "special": "فناوری هسته‌ای پیشرفته", "flag": "🇫🇷"
    },
    "🇮🇳 هند": {
        "tanks": 3500, "jets": 550, "missiles": 1000, "defense": 75, "economy": 70,
        "special": "نیروی انسانی عظیم (+50% نیرو)", "flag": "🇮🇳"
    }
}

# =============== ساختمان‌ها ===============
BUILDINGS = {
    "🏭 کارخانه تسلیحات": {
        "cost": 50000000, "income": 5000000, "effect": {"missiles": 200},
        "desc": "تولید موشک و مهمات"
    },
    "🛢️ پالایشگاه نفت": {
        "cost": 30000000, "income": 8000000, "effect": {"oil": 20000},
        "desc": "تولید نفت و درآمد بالا"
    },
    "🔬 مرکز تحقیقات موشکی": {
        "cost": 75000000, "income": 2000000, "effect": {"missiles": 300},
        "desc": "بهبود دقت و برد موشک‌ها"
    },
    "🛡️ سامانه پدافندی": {
        "cost": 60000000, "income": 0, "effect": {"defense": 10},
        "desc": "کاهش خسارت دریافتی"
    },
    "☢️ آزمایشگاه اتمی": {
        "cost": 100000000, "income": 0, "effect": {"nuke": 20},
        "desc": "امکان ساخت بمب اتم"
    },
    "🏗️ کارخانه خودروهای زرهی": {
        "cost": 40000000, "income": 3000000, "effect": {"tanks": 100},
        "desc": "تولید تانک‌های جدید"
    },
    "✈️ پایگاه هوایی": {
        "cost": 55000000, "income": 3000000, "effect": {"jets": 20},
        "desc": "افزایش تعداد جنگنده‌ها"
    },
    "🏦 بانک مرکزی": {
        "cost": 80000000, "income": 12000000, "effect": {},
        "desc": "درآمد روزانه بالا"
    },
    "🌾 مزرعه مکانیزه": {
        "cost": 20000000, "income": 3000000, "effect": {"food": 5000},
        "desc": "تأمین غذای جمعیت"
    },
    "🏭 کارخانه فولاد": {
        "cost": 45000000, "income": 4000000, "effect": {"production": 20},
        "desc": "افزایش تولید صنعتی"
    }
}

# =============== شهرها ===============
CITIES = {
    "تهران": {"cost": 50000000, "income": 5000000, "defense": 10, "population": 1000000},
    "اصفهان": {"cost": 30000000, "income": 3000000, "defense": 5, "population": 500000},
    "شیراز": {"cost": 25000000, "income": 2500000, "defense": 5, "population": 400000},
    "مشهد": {"cost": 35000000, "income": 3500000, "defense": 5, "population": 600000},
    "تبریز": {"cost": 20000000, "income": 2000000, "defense": 3, "population": 350000},
    "کرج": {"cost": 15000000, "income": 1500000, "defense": 2, "population": 300000},
    "قم": {"cost": 12000000, "income": 1200000, "defense": 2, "population": 250000},
    "اهواز": {"cost": 18000000, "income": 1800000, "defense": 3, "population": 300000}
}

# =============== کیبوردها ===============

def get_main_keyboard():
    return {
        "keyboard": [
            [{"text": "📊 وضعیت کشور"}, {"text": "🏭 ساختمان‌ها"}],
            [{"text": "🏙️ شهرها"}, {"text": "⚔️ حمله"}],
            [{"text": "💰 دریافت درآمد"}, {"text": "☢️ پروژه اتم"}],
            [{"text": "🔧 ارتقا تجهیزات"}, {"text": "🤝 اتحادها"}],
            [{"text": "🌍 رتبه بندی"}, {"text": "ℹ️ راهنما"}]
        ],
        "resize_keyboard": True
    }

def get_country_selection_keyboard():
    buttons = []
    for country in COUNTRIES.keys():
        buttons.append([{"text": country, "callback_data": f"select:{country}"}])
    return {"inline_keyboard": buttons}

def get_buildings_keyboard(user_buildings):
    buttons = []
    for name, info in BUILDINGS.items():
        status = "✅" if name in user_buildings else "💰"
        buttons.append([{
            "text": f"{status} {name} - {info['cost']:,} تومان",
            "callback_data": f"build:{name}"
        }])
    buttons.append([{"text": "🔙 بازگشت", "callback_data": "back"}])
    return {"inline_keyboard": buttons}

def get_cities_keyboard(user_cities):
    buttons = []
    for name, info in CITIES.items():
        status = "🏙️" if name in user_cities else "🏗️"
        buttons.append([{
            "text": f"{status} {name} - {info['cost']:,} تومان (درآمد: {info['income']:,})",
            "callback_data": f"city:{name}"
        }])
    buttons.append([{"text": "🔙 بازگشت", "callback_data": "back"}])
    return {"inline_keyboard": buttons}

def get_upgrade_keyboard():
    return {
        "inline_keyboard": [
            [{"text": "🚀 ارتقا موشک‌ها (25M)", "callback_data": "upgrade:missiles"}],
            [{"text": "✈️ ارتقا جنگنده‌ها (35M)", "callback_data": "upgrade:jets"}],
            [{"text": "🛡️ ارتقا پدافند (40M)", "callback_data": "upgrade:defense"}],
            [{"text": "💣 ارتقا تانک‌ها (20M)", "callback_data": "upgrade:tanks"}],
            [{"text": "🔙 بازگشت", "callback_data": "back"}]
        ]
    }

def get_attack_keyboard(players):
    buttons = []
    for player in players:
        buttons.append([{
            "text": f"{player['flag']} {player['country']} - قدرت: {player['power']:,}",
            "callback_data": f"attack:{player['user_id']}"
        }])
    buttons.append([{"text": "🔙 بازگشت", "callback_data": "back"}])
    return {"inline_keyboard": buttons}

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

def calculate_power(player):
    """محاسبه قدرت کامل کشور"""
    army = player["army"]
    base_power = (army["tanks"] * 10) + (army["jets"] * 25) + (army["missiles"] * 15) + (army["defense"] * 100)
    
    # پاداش شهرها
    for city in player.get("cities", []):
        if city in CITIES:
            base_power += CITIES[city]["defense"] * 100
    
    # پاداش ساختمان‌ها
    for building in player.get("buildings", []):
        if building == "🏭 کارخانه تسلیحات":
            base_power *= 1.05
        elif building == "🛡️ سامانه پدافندی":
            base_power *= 1.10
    
    # پاداش ویژه کشور
    country_name = player["country"]
    for c_name, c_data in COUNTRIES.items():
        if c_data["flag"] == player["flag"]:
            if "پهپاد" in c_data.get("special", ""):
                base_power *= 1.25
            elif "موشک" in c_data.get("special", ""):
                base_power *= 1.20
            break
    
    return int(base_power)

def calculate_income(player):
    """محاسبه درآمد روزانه"""
    base_income = 5000000
    
    # درآمد از ساختمان‌ها
    for building in player.get("buildings", []):
        if building in BUILDINGS:
            base_income += BUILDINGS[building]["income"]
    
    # درآمد از شهرها
    for city in player.get("cities", []):
        if city in CITIES:
            base_income += CITIES[city]["income"]
    
    # درآمد از نفت
    base_income += player.get("oil", 0) * 100
    
    # پاداش اقتصادی کشور
    for c_name, c_data in COUNTRIES.items():
        if c_data["flag"] == player["flag"]:
            base_income = int(base_income * (1 + c_data["economy"] / 100))
            break
    
    return base_income

def create_player(user_id, username, country_name):
    country_data = COUNTRIES[country_name]
    return {
        "user_id": user_id,
        "username": username,
        "country": country_name,
        "flag": country_data["flag"],
        "gold": 100000000,
        "oil": 50000,
        "uranium": 0,
        "food": 10000,
        "buildings": [],
        "cities": ["تهران"],
        "nuke_progress": 0,
        "has_nuke": False,
        "alliance": None,
        "army": {
            "tanks": country_data["tanks"],
            "jets": country_data["jets"],
            "missiles": country_data["missiles"],
            "defense": country_data["defense"]
        },
        "last_income": datetime.now().isoformat(),
        "last_attack": None,
        "wins": 0,
        "losses": 0,
        "total_kills": 0
    }

# =============== پردازش پیام‌ها ===============

def process_message(message):
    chat_id = message.get("chat", {}).get("id")
    text = message.get("text", "")
    user_id = str(message.get("from", {}).get("id"))
    username = message.get("from", {}).get("first_name", "کاربر")
    
    if not chat_id:
        return
    
    data = load_data()
    
    # دستور start
    if text == "/start":
        if user_id in data["users"]:
            player = data["users"][user_id]
            power = calculate_power(player)
            send_message(
                chat_id,
                f"👋 خوش برگشتی {username}!\n\n"
                f"{player['flag']} **{player['country']}**\n"
                f"💰 موجودی: {player['gold']:,} تومان\n"
                f"⚔️ قدرت نظامی: {power:,}\n"
                f"🏆 بردها: {player['wins']} | 💀 باخت‌ها: {player['losses']}\n\n"
                f"از منوی زیر استفاده کنید:",
                get_main_keyboard()
            )
        else:
            send_message(
                chat_id,
                "🌟 **به ربات جنگ کشورها خوش آمدید!** 🌟\n\n"
                "⚔️ یک بازی استراتژیک جنگی که در آن شما رهبر یک کشور هستید.\n\n"
                "🏭 با ساخت کارخانه و شهر درآمد کسب کنید\n"
                "☢️ بمب اتم بسازید و قدرتمند شوید\n"
                "🤝 با دیگران اتحاد تشکیل دهید\n"
                "💪 ارتش خود را ارتقا دهید\n\n"
                "🇮🇷 **کشور خود را انتخاب کنید:**",
                get_country_selection_keyboard()
            )
        return
    
    # کاربر ثبت نام نکرده
    if user_id not in data["users"]:
        send_message(chat_id, "❌ لطفاً با /start شروع کنید!", get_main_keyboard())
        return
    
    player = data["users"][user_id]
    
    # وضعیت کشور
    if text == "📊 وضعیت کشور":
        power = calculate_power(player)
        income = calculate_income(player)
        
        status_text = f"""
{player['flag']} **وضعیت کشور {player['country']}**

💰 **دارایی‌ها:**
• طلا: {player['gold']:,} تومان
• نفت: {player['oil']:,} بشکه
• اورانیوم: {player['uranium']} کیلوگرم

⚔️ **نیروهای نظامی:**
• تانک: {player['army']['tanks']:,} دستگاه
• جنگنده: {player['army']['jets']:,} فروند
• موشک: {player['army']['missiles']:,} فروند
• قدرت پدافند: {player['army']['defense']}%

🎯 **قدرت کل:** {power:,}
💰 **درآمد روزانه:** {income:,} تومان
🏆 **آمار:** {player['wins']} برد / {player['losses']} باخت

🏙️ **شهرها:** {', '.join(player.get('cities', ['تهران']))}
🏗️ **ساختمان‌ها:** {', '.join(player.get('buildings', ['هیچ'])) or 'هیچ'}

☢️ **پروژه اتم:** {player['nuke_progress']}% {'(تکمیل شده ✅)' if player.get('has_nuke') else ''}
🤝 **اتحاد:** {player.get('alliance', 'ندارد')}

✨ **ویژگی ویژه:** {COUNTRIES[player['country']]['special']}
"""
        send_message(chat_id, status_text, get_main_keyboard())
    
    # دریافت درآمد
    elif text == "💰 دریافت درآمد":
        last_income = datetime.fromisoformat(player["last_income"])
        now = datetime.now()
        
        if (now - last_income).total_seconds() < 86400:
            remaining = 86400 - (now - last_income).total_seconds()
            hours = int(remaining // 3600)
            minutes = int((remaining % 3600) // 60)
            send_message(chat_id, f"⏰ زمان باقیمانده تا دریافت بعدی: {hours} ساعت {minutes} دقیقه", get_main_keyboard())
            return
        
        income = calculate_income(player)
        player["gold"] += income
        player["oil"] += 5000
        player["last_income"] = now.isoformat()
        
        data["users"][user_id] = player
        save_data(data)
        
        send_message(
            chat_id,
            f"💰 **دریافت درآمد روزانه**\n\n"
            f"+ {income:,} تومان به موجودی شما اضافه شد!\n"
            f"+ ۵,۰۰۰ بشکه نفت استخراج شد!\n\n"
            f"📊 موجودی فعلی: {player['gold']:,} تومان",
            get_main_keyboard()
        )
    
    # ساختمان‌ها
    elif text == "🏭 ساختمان‌ها":
        buildings_text = "🏭 **ساختمان‌های قابل ساخت**\n\n"
        for name, info in BUILDINGS.items():
            status = "✅" if name in player.get("buildings", []) else "💰"
            buildings_text += f"{status} **{name}**\n"
            buildings_text += f"   📝 {info['desc']}\n"
            buildings_text += f"   💰 هزینه: {info['cost']:,} تومان\n"
            buildings_text += f"   📈 درآمد روزانه: +{info['income']:,} تومان\n\n"
        
        send_message(chat_id, buildings_text, get_buildings_keyboard(player.get("buildings", [])))
    
    # شهرها
    elif text == "🏙️ شهرها":
        cities_text = "🏙️ **شهرهای قابل ساخت**\n\n"
        for name, info in CITIES.items():
            status = "✅" if name in player.get("cities", []) else "🏗️"
            cities_text += f"{status} **{name}**\n"
            cities_text += f"   💰 هزینه: {info['cost']:,} تومان\n"
            cities_text += f"   📈 درآمد: +{info['income']:,} تومان\n"
            cities_text += f"   🛡️ دفاع: +{info['defense']}\n"
            cities_text += f"   👥 جمعیت: {info['population']:,}\n\n"
        
        send_message(chat_id, cities_text, get_cities_keyboard(player.get("cities", [])))
    
    # حمله
    elif text == "⚔️ حمله":
        other_players = []
        for uid, p in data["users"].items():
            if uid != user_id:
                power = calculate_power(p)
                other_players.append({
                    "user_id": uid,
                    "country": p["country"],
                    "flag": p["flag"],
                    "power": power,
                    "username": p["username"]
                })
        
        if not other_players:
            send_message(chat_id, "🌍 هنوز بازیکن دیگری در بازی وجود ندارد!\nدعوت‌نامه بفرستید دوستانتان join کنند!", get_main_keyboard())
            return
        
        send_message(chat_id, "⚔️ **انتخاب هدف برای حمله:**\n(هرچه قدرت حریف بیشتر باشد، ریسک بیشتر است)", get_attack_keyboard(other_players))
    
    # پروژه اتم
    elif text == "☢️ پروژه اتم":
        if player.get("has_nuke"):
            send_message(
                chat_id,
                "☢️ **بمب اتم آماده است!** ☢️\n\n"
                "⚠️ هشدار: استفاده از بمب اتم یک کشور را به طور کامل نابود می‌کند!\n"
                "برای استفاده، از منوی حمله گزینه '💣 حمله اتمی' را انتخاب کنید.",
                get_main_keyboard()
            )
            return
        
        if player["nuke_progress"] >= 100:
            player["has_nuke"] = True
            data["users"][user_id] = player
            save_data(data)
            send_message(
                chat_id,
                "💥 **تبریک! شما بمب اتم ساختید!** 💥\n\n"
                "شما به جمع کشورهای هسته‌ای پیوستید.\n"
                "⚠️ از این قدرت عاقلانه استفاده کنید!",
                get_main_keyboard()
            )
            return
        
        cost = 50000000
        if player["gold"] >= cost:
            player["gold"] -= cost
            player["nuke_progress"] += 10
            
            # پاداش ویژه برای بعضی کشورها
            if "هسته" in COUNTRIES[player["country"]]["special"]:
                player["nuke_progress"] += 5
            
            data["users"][user_id] = player
            save_data(data)
            
            send_message(
                chat_id,
                f"☢️ **پروژه اتم در حال پیشرفت** ☢️\n\n"
                f"📊 پیشرفت فعلی: {player['nuke_progress']}%\n"
                f"💰 هزینه شده: {cost:,} تومان\n"
                f"💰 مانده تا تکمیل: {(100 - player['nuke_progress']) * cost} تومان\n\n"
                f"پس از تکمیل، می‌توانید کشورها را نابود کنید!",
                get_main_keyboard()
            )
        else:
            remaining = cost - player["gold"]
            send_message(
                chat_id,
                f"❌ **بودجه کافی نیست!**\n\n"
                f"💰 برای 10% پیشرفت نیاز به {cost:,} تومان دارید.\n"
                f"💰 موجودی شما: {player['gold']:,} تومان\n"
                f"💰 کمبود: {remaining:,} تومان\n\n"
                f"💡 راه‌حل: از بخش 'دریافت درآمد' استفاده کنید یا به دیگران حمله کنید!",
                get_main_keyboard()
            )
    
    # ارتقا تجهیزات
    elif text == "🔧 ارتقا تجهیزات":
        upgrade_text = f"""
🔧 **مرکز ارتقا تجهیزات نظامی**

💰 موجودی شما: {player['gold']:,} تومان

📊 **آمار فعلی:**
• 🚀 موشک‌ها: {player['army']['missiles']:,} فروند
• ✈️ جنگنده‌ها: {player['army']['jets']:,} فروند
• 🛡️ پدافند: {player['army']['defense']}%
• 💣 تانک‌ها: {player['army']['tanks']:,} دستگاه

**قیمت ارتقاها:**
• 🚀 موشک‌ها (+200): 25,000,000 تومان
• ✈️ جنگنده‌ها (+20): 35,000,000 تومان
• 🛡️ پدافند (+5%): 40,000,000 تومان
• 💣 تانک‌ها (+100): 20,000,000 تومان

از دکمه‌های زیر انتخاب کنید:
"""
        send_message(chat_id, upgrade_text, get_upgrade_keyboard())
    
    # اتحادها
    elif text == "🤝 اتحادها":
        alliance_text = f"""
🤝 **سیستم اتحادها**

اتحاد فعلی شما: {player.get('alliance', '❌ هیچ')}

✨ **مزایای اتحاد:**
• 💪 +10% قدرت در جنگ‌های گروهی
• 💰 +5% درآمد از اعضای اتحاد
• 🛡️ دفاع مشترک در برابر حملات
• ☢️ امکان ساخت بمب اتم دسته‌جمعی

📋 **لیست اتحادهای فعال:**
"""
        
        alliances = data.get("alliances", {})
        if alliances:
            for name, alliance in alliances.items():
                alliance_text += f"\n• 🤝 {name}: {len(alliance.get('members', []))} عضو"
        else:
            alliance_text += "\nهنوز اتحادی تشکیل نشده است!"
        
        alliance_text += "\n\n💡 برای تشکیل اتحاد جدید یا پیوستن، به زودی..." 
        send_message(chat_id, alliance_text, get_main_keyboard())
    
    # رتبه بندی
    elif text == "🌍 رتبه بندی":
        players_list = []
        for uid, p in data["users"].items():
            power = calculate_power(p)
            players_list.append({
                "username": p["username"],
                "country": p["country"],
                "flag": p["flag"],
                "power": power,
                "gold": p["gold"],
                "wins": p["wins"],
                "has_nuke": p.get("has_nuke", False)
            })
        
        players_list.sort(key=lambda x: x["power"], reverse=True)
        
        ranking_text = "🌍 **رتبه‌بندی قدرتمندترین کشورهای جهان** 🌍\n\n"
        for i, p in enumerate(players_list[:15], 1):
            medal = "👑" if i == 1 else "🥈" if i == 2 else "🥉" if i == 3 else f"{i}."
            nuke_icon = "💣" if p.get("has_nuke") else ""
            ranking_text += f"{medal} {p['flag']} {p['country']} {nuke_icon}\n"
            ranking_text += f"   ⚔️ قدرت: {p['power']:,} | 🏆 {p['wins']} برد\n\n"
        
        if not players_list:
            ranking_text = "هنوز بازیکنی وجود ندارد! اولین نفر باشید!"
        
        ranking_text += "\n💡 نکته: قدرت بر اساس تانک، جنگنده، موشک، پدافند و شهرها محاسبه می‌شود."
        send_message(chat_id, ranking_text, get_main_keyboard())
    
    # راهنما
    elif text == "ℹ️ راهنما":
        help_text = """
🎮 **راهنمای کامل بازی جنگ کشورها**

📊 **وضعیت کشور**: مشاهده آمار کامل کشور خود

🏭 **ساختمان‌ها**: ساخت کارخانه برای افزایش درآمد و قدرت

🏙️ **شهرها**: ساخت و توسعه شهرها (افزایش درآمد و دفاع)

⚔️ **حمله**: جنگ با کشورهای دیگر و کسب غنیمت

💰 **دریافت درآمد**: هر ۲۴ ساعت یکبار درآمد دریافت کنید

☢️ **پروژه اتم**: ساخت بمب اتم (۱۰ مرحله‌ای)

🔧 **ارتقا تجهیزات**: افزایش قدرت نظامی با پرداخت هزینه

🤝 **اتحادها**: تشکیل اتحاد با دیگر کشورها

🌍 **رتبه بندی**: مقایسه قدرت با سایر بازیکنان

---

💡 **نکات طلایی:**
• ایران دارای موشک‌های بالستیک قدرتمند است
• هر کشور نقاط قوت و ضعف خاص خود را دارد
• شهرها علاوه بر درآمد، دفاع را هم افزایش می‌دهند
• ساختمان‌ها درآمد روزانه را بالا می‌برند
• حمله به کشورهای ضعیف‌تر ریسک کمتری دارد
• اتحادها قدرت شما را در جنگ افزایش می‌دهند

🎯 **هدف بازی:** تبدیل به قدرتمندترین کشور جهان شوید!
"""
        send_message(chat_id, help_text, get_main_keyboard())

# =============== پردازش دکمه‌ها ===============

def process_callback(callback):
    callback_id = callback.get("id")
    data = callback.get("data", "")
    user_id = str(callback.get("from", {}).get("id"))
    username = callback.get("from", {}).get("first_name", "کاربر")
    message = callback.get("message", {})
    chat_id = message.get("chat", {}).get("id")
    message_id = message.get("message_id")
    
    # پاسخ به callback (الزامی برای رفع حالت انتظار دکمه)
    api_request("answerCallbackQuery", {"callback_query_id": callback_id})
    
    game_data = load_data()
    
    # ========== انتخاب کشور ==========
    if data.startswith("select:"):
        country = data.replace("select:", "")
        
        if user_id in game_data["users"]:
            send_message(chat_id, "❌ شما قبلاً کشور انتخاب کرده‌اید!", get_main_keyboard())
            return
        
        player = create_player(user_id, username, country)
        game_data["users"][user_id] = player
        save_data(game_data)
        
        send_message(
            chat_id,
            f"🎉 **تبریک! شما کشور {player['flag']} {country} را انتخاب کردید!** 🎉\n\n"
            f"💰 **پول اولیه:** {player['gold']:,} تومان\n"
            f"⚔️ **نیروهای نظامی:**\n"
            f"   • تانک‌ها: {player['army']['tanks']:,} دستگاه\n"
            f"   • جنگنده‌ها: {player['army']['jets']:,} فروند\n"
            f"   • موشک‌ها: {player['army']['missiles']:,} فروند\n"
            f"   • قدرت پدافند: {player['army']['defense']}%\n\n"
            f"✨ **ویژگی ویژه:** {COUNTRIES[country]['special']}\n\n"
            f"🏙️ **شهر اولیه:** تهران\n\n"
            "از منوی زیر بازی را شروع کنید و به امپراطوری خود قدرت ببخشید! 💪",
            get_main_keyboard()
        )
    
    # ========== ساخت ساختمان ==========
    elif data.startswith("build:"):
        building_name = data.replace("build:", "")
        
        if user_id not in game_data["users"]:
            send_message(chat_id, "❌ ابتدا با /start شروع کنید!", get_main_keyboard())
            return
        
        player = game_data["users"][user_id]
        
        if building_name in player.get("buildings", []):
            send_message(chat_id, f"❌ ساختمان {building_name} قبلاً ساخته شده!", get_main_keyboard())
            return
        
        building_info = BUILDINGS[building_name]
        
        if player["gold"] >= building_info["cost"]:
            player["gold"] -= building_info["cost"]
            if "buildings" not in player:
                player["buildings"] = []
            player["buildings"].append(building_name)
            
            # اعمال اثر ویژه ساختمان
            for effect_field, effect_value in building_info["effect"].items():
                if effect_field == "missiles":
                    player["army"]["missiles"] += effect_value
                elif effect_field == "tanks":
                    player["army"]["tanks"] += effect_value
                elif effect_field == "jets":
                    player["army"]["jets"] += effect_value
                elif effect_field == "defense":
                    player["army"]["defense"] = min(player["army"]["defense"] + effect_value, 95)
                elif effect_field == "oil":
                    player["oil"] += effect_value
                elif effect_field == "nuke":
                    player["nuke_progress"] = min(player["nuke_progress"] + effect_value, 100)
            
            game_data["users"][user_id] = player
            save_data(game_data)
            
            send_message(
                chat_id,
                f"✅ **{building_name}** با موفقیت ساخته شد!\n\n"
                f"💰 هزینه: {building_info['cost']:,} تومان\n"
                f"📈 درآمد روزانه: +{building_info['income']:,} تومان\n"
                f"✨ اثر: {building_info['desc']}\n\n"
                f"💰 موجودی باقیمانده: {player['gold']:,} تومان",
                get_main_keyboard()
            )
        else:
            needed = building_info["cost"] - player["gold"]
            send_message(
                chat_id,
                f"❌ **بودجه کافی نیست!**\n\n"
                f"🏭 ساختمان: {building_name}\n"
                f"💰 هزینه: {building_info['cost']:,} تومان\n"
                f"💰 موجودی شما: {player['gold']:,} تومان\n"
                f"💰 کمبود: {needed:,} تومان",
                get_main_keyboard()
            )
    
    # ========== ساخت شهر ==========
    elif data.startswith("city:"):
        city_name = data.replace("city:", "")
        
        if user_id not in game_data["users"]:
            send_message(chat_id, "❌ ابتدا با /start شروع کنید!", get_main_keyboard())
            return
        
        player = game_data["users"][user_id]
        
        if city_name in player.get("cities", []):
            send_message(chat_id, f"❌ شهر {city_name} قبلاً ساخته شده!", get_main_keyboard())
            return
        
        city_info = CITIES[city_name]
        
        if player["gold"] >= city_info["cost"]:
            player["gold"] -= city_info["cost"]
            if "cities" not in player:
                player["cities"] = ["تهران"]
            player["cities"].append(city_name)
            
            # افزایش دفاع
            player["army"]["defense"] = min(player["army"]["defense"] + city_info["defense"], 95)
            
            game_data["users"][user_id] = player
            save_data(game_data)
            
            send_message(
                chat_id,
                f"🏙️ **شهر {city_name} با موفقیت ساخته شد!** 🏙️\n\n"
                f"💰 هزینه: {city_info['cost']:,} تومان\n"
                f"📈 درآمد روزانه: +{city_info['income']:,} تومان\n"
                f"🛡️ دفاع اضافه: +{city_info['defense']}\n"
                f"👥 جمعیت: {city_info['population']:,} نفر\n\n"
                f"📊 موجودی باقیمانده: {player['gold']:,} تومان",
                get_main_keyboard()
            )
        else:
            needed = city_info["cost"] - player["gold"]
            send_message(
                chat_id,
                f"❌ **بودجه کافی نیست!**\n\n"
                f"🏙️ شهر: {city_name}\n"
                f"💰 هزینه: {city_info['cost']:,} تومان\n"
                f"💰 موجودی شما: {player['gold']:,} تومان\n"
                f"💰 کمبود: {needed:,} تومان",
                get_main_keyboard()
            )
    
    # ========== ارتقا تجهیزات ==========
    elif data.startswith("upgrade:"):
        upgrade_type = data.replace("upgrade:", "")
        
        if user_id not in game_data["users"]:
            send_message(chat_id, "❌ ابتدا با /start شروع کنید!", get_main_keyboard())
            return
        
        player = game_data["users"][user_id]
        
        upgrades = {
            "missiles": {"cost": 25000000, "increase": 200, "field": "missiles", "name": "موشک‌ها"},
            "jets": {"cost": 35000000, "increase": 20, "field": "jets", "name": "جنگنده‌ها"},
            "defense": {"cost": 40000000, "increase": 5, "field": "defense", "name": "پدافند"},
            "tanks": {"cost": 20000000, "increase": 100, "field": "tanks", "name": "تانک‌ها"}
        }
        
        if upgrade_type in upgrades:
            up = upgrades[upgrade_type]
            
            # اعمال تخفیف ویژه بعضی کشورها
            cost = up["cost"]
            if "تولید انبوه" in COUNTRIES[player["country"]]["special"]:
                cost = int(cost * 0.8)
                send_message(chat_id, f"✨ تخفیف 20% به دلیل ویژگی خاص {player['country']}! ✨", None)
            
            if player["gold"] >= cost:
                player["gold"] -= cost
                player["army"][up["field"]] += up["increase"]
                
                # محدودیت پدافند (حداکثر 95%)
                if up["field"] == "defense":
                    player["army"]["defense"] = min(player["army"]["defense"], 95)
                
                game_data["users"][user_id] = player
                save_data(game_data)
                
                send_message(
                    chat_id,
                    f"✅ **ارتقا {up['name']} با موفقیت انجام شد!**\n\n"
                    f"💰 هزینه: {cost:,} تومان\n"
                    f"📈 افزایش: +{up['increase']}\n"
                    f"📊 مقدار جدید: {player['army'][up['field']]:,}\n\n"
                    f"💰 موجودی باقیمانده: {player['gold']:,} تومان",
                    get_main_keyboard()
                )
            else:
                needed = cost - player["gold"]
                send_message(
                    chat_id,
                    f"❌ **بودجه کافی نیست!**\n\n"
                    f"🔧 ارتقا: {up['name']}\n"
                    f"💰 هزینه: {cost:,} تومان\n"
                    f"💰 موجودی شما: {player['gold']:,} تومان\n"
                    f"💰 کمبود: {needed:,} تومان",
                    get_main_keyboard()
                )
    
    # ========== حمله ==========
    elif data.startswith("attack:"):
        target_id = data.replace("attack:", "")
        
        if user_id not in game_data["users"] or target_id not in game_data["users"]:
            send_message(chat_id, "❌ خطا در یافتن بازیکن!", get_main_keyboard())
            return
        
        attacker = game_data["users"][user_id]
        defender = game_data["users"][target_id]
        
        # جلوگیری از حمله به خود
        if user_id == target_id:
            send_message(chat_id, "❌ نمی‌توانید به خودتان حمله کنید!", get_main_keyboard())
            return
        
        # جلوگیری از حمله مکرر (هر 5 دقیقه یکبار)
        if attacker.get("last_attack"):
            last = datetime.fromisoformat(attacker["last_attack"])
            now = datetime.now()
            if (now - last).total_seconds() < 300:
                remaining = int(300 - (now - last).total_seconds())
                send_message(chat_id, f"⏰ باید {remaining} ثانیه صبر کنید تا دوباره حمله کنید!", get_main_keyboard())
                return
        
        # محاسبه قدرت
        attacker_power = calculate_power(attacker)
        defender_power = calculate_power(defender)
        
        total_power = attacker_power + defender_power
        attacker_chance = (attacker_power / total_power) * 100
        
        roll = random.randint(1, 100)
        
        # نتیجه جنگ
        if roll <= attacker_chance:
            # پیروزی مهاجم
            loot_percent = random.uniform(0.1, 0.3)
            loot = int(defender["gold"] * loot_percent)
            damage_percent = random.uniform(0.05, 0.15)
            
            attacker["gold"] += loot
            attacker["wins"] += 1
            attacker["total_kills"] = attacker.get("total_kills", 0) + random.randint(1000, 5000)
            
            defender["gold"] -= loot
            defender["losses"] += 1
            
            result_text = f"🎉 **پیروزی!** 🎉\n\n"
            result_text += f"⚔️ شما به {defender['flag']} {defender['country']} حمله کردید و **پیروز شدید**!\n"
            result_text += f"💰 غنیمت گرفته شده: {loot:,} تومان\n"
            result_text += f"📊 قدرت شما: {attacker_power:,} | قدرت حریف: {defender_power:,}\n"
            result_text += f"🎯 شانس پیروزی: {attacker_chance:.1f}%\n\n"
            result_text += f"💪 افتخار شما افزایش یافت! ({attacker['wins']} برد)"
        else:
            # شکست مهاجم
            loot_percent = random.uniform(0.05, 0.15)
            loot = int(attacker["gold"] * loot_percent)
            
            defender["gold"] += loot
            defender["wins"] += 1
            
            attacker["gold"] -= loot
            attacker["losses"] += 1
            
            result_text = f"💀 **شکست!** 💀\n\n"
            result_text += f"⚔️ شما به {defender['flag']} {defender['country']} حمله کردید اما **شکست خوردید**!\n"
            result_text += f"💰 خسارت وارد شده: {loot:,} تومان\n"
            result_text += f"📊 قدرت شما: {attacker_power:,} | قدرت حریف: {defender_power:,}\n"
            result_text += f"🎯 شانس پیروزی: {attacker_chance:.1f}%\n\n"
            result_text += f"😔 از شکست درس بگیرید و قوی‌تر شوید!"
        
        attacker["last_attack"] = datetime.now().isoformat()
        
        game_data["users"][user_id] = attacker
        game_data["users"][target_id] = defender
        save_data(game_data)
        
        send_message(chat_id, result_text, get_main_keyboard())
        
        # ارسال نوتیفیکیشن به مدافع
        try:
            send_message(
                int(target_id),
                f"⚠️ **هشدار حمله!** ⚠️\n\n"
                f"{attacker['flag']} {attacker['country']} به کشور شما حمله کرد!\n"
                f"{'پیروز شد' if roll <= attacker_chance else 'شما پیروز شدید'}\n\n"
                f"برای دفاع از کشورتان قوی‌تر شوید! 💪",
                None
            )
        except:
            pass
    
    # ========== بازگشت ==========
    elif data == "back":
        send_message(chat_id, "🔙 بازگشت به منوی اصلی", get_main_keyboard())

# =============== حلقه اصلی ===============

def main():
    print("=" * 50)
    print("🎮 ربات جنگ کشورها - نسخه نهایی")
    print("📱 برای پیام‌رسان بله")
    print("=" * 50)
    
    # حذف Webhook
    result = api_request("deleteWebhook")
    if result and result.get("ok"):
        print("✅ Webhook غیرفعال شد")
    else:
        print("⚠️ مشکل در غیرفعال کردن Webhook")
    
    # تست اتصال
    me = api_request("getMe")
    if me and me.get("ok"):
        bot_info = me.get("result", {})
        print(f"✅ ربات {bot_info.get('first_name', 'Unknown')} با موفقیت متصل شد!")
    else:
        print("❌ خطا در اتصال به سرور بله!")
        print("لطفاً توکن ربات را بررسی کنید.")
        return
    
    last_id = load_last_id()
    print(f"📌 آخرین آپدیت ID: {last_id}")
    print("🚀 در حال انتظار برای پیام‌ها...")
    print("=" * 50)
    
    error_count = 0
    
    while True:
        try:
            updates = api_request("getUpdates", {
                "offset": last_id + 1,
                "timeout": 10,
                "limit": 100
            })
            
            if updates and updates.get("ok"):
                error_count = 0
                for update in updates.get("result", []):
                    update_id = update.get("update_id")
                    if update_id:
                        last_id = update_id
                        save_last_id(last_id)
                    
                    if "message" in update:
                        process_message(update["message"])
                    
                    if "callback_query" in update:
                        process_callback(update["callback_query"])
            
            time.sleep(0.5)
            
        except KeyboardInterrupt:
            print("\n🛑 ربات متوقف شد.")
            break
        except Exception as e:
            error_count += 1
            print(f"❌ خطا ({error_count}): {e}")
            if error_count > 10:
                print("⚠️ خطاهای متوالی زیاد، 30 ثانیه استراحت...")
                time.sleep(30)
                error_count = 0
            else:
                time.sleep(5)

if __name__ == "__main__":
    main()