<?php
/**
 * Auto-extracted module from the old large bot.php.
 * Loaded by bot.php in the original execution order.
 */
function GCMB($chatID){$data = bot('getChat',['chat_id'=>$chatID]);
return (isset($data->ok) ? $data->ok : false);
}
//////////------------------------\\\\\\\\\\\\\\
//////////------------------------\\\\\\\\\\\\\\
function top($number,$invite){
$usersscan = bot_data_scandir('melat');
foreach ($usersscan as $userlist){
$users = bot_data_get_json('melat/'.$userlist);
$userlistsave[$userlist] = $users[$invite]; } 
$chakhesh = $userlistsave; 
arsort($chakhesh,SORT_NUMERIC); 
$charkhesharray = array();
foreach ($chakhesh as $key=>$value){
$charkhesharray[] = $key;  }
$neshonbde = str_replace('.json','',$charkhesharray[$number]);
return $neshonbde;}

// ================= Admin Top Users Dashboard =================
function admin_best_clean_int($value){
    if(is_array($value) || is_object($value)) return 0;
    return (int)preg_replace('/[^0-9\-]/', '', (string)$value);
}
function admin_best_html($value){
    return htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8');
}
function admin_best_metric_info($metric, $money='الماس'){
    $map = [
        'wallet' => ['key'=>'Points', 'title'=>'💎 برترین موجودی کاربران', 'unit'=>$money, 'desc'=>'کاربرانی که بیشترین موجودی فعلی را دارند.'],
        'joins'  => ['key'=>'ads', 'title'=>'✅ برترین دریافت‌کنندگان پاداش عضویت', 'unit'=>'عضویت موفق', 'desc'=>'کاربرانی که بیشترین عضویت تاییدشده انجام داده‌اند.'],
        'orders' => ['key'=>'sefaresh', 'title'=>'📦 برترین سفارش‌دهنده‌ها', 'unit'=>'سفارش', 'desc'=>'کاربرانی که بیشترین سفارش ثبت کرده‌اند.'],
        'refs'   => ['key'=>'zirmjmae', 'title'=>'👥 برترین زیرمجموعه‌گیرها', 'unit'=>'زیرمجموعه', 'desc'=>'کاربرانی که بیشترین دعوت مستقیم داشته‌اند.'],
        'refjoins' => ['key'=>'zirmjmae-join', 'title'=>'🔥 برترین زیرمجموعه‌های فعال', 'unit'=>'عضویت توسط زیرمجموعه', 'desc'=>'کاربرانی که زیرمجموعه‌هایشان بیشترین عضویت انجام داده‌اند.'],
        'refbonus' => ['key'=>'zirmjmae-porsant', 'title'=>'🎁 برترین پورسانت زیرمجموعه', 'unit'=>$money, 'desc'=>'کاربرانی که بیشترین پورسانت از زیرمجموعه گرفته‌اند.'],
    ];
    return isset($map[$metric]) ? $map[$metric] : $map['wallet'];
}
function admin_best_collect_users($metric, $limit=10){
    $info = admin_best_metric_info($metric);
    $key = $info['key'];
    $rows = [];
    foreach(bot_data_glob('melat/*.json') as $file){
        $id = basename((string)$file, '.json');
        if($id === '' || $id === '.' || $id === '..') continue;
        $u = bot_data_get_json('melat/'.$id.'.json');
        if(!is_array($u)) continue;
        $score = admin_best_clean_int($u[$key] ?? 0);
        if($score <= 0) continue;
        $rows[] = [
            'id'=>(string)$id,
            'score'=>$score,
            'points'=>admin_best_clean_int($u['Points'] ?? 0),
            'joins'=>admin_best_clean_int($u['ads'] ?? 0),
            'orders'=>admin_best_clean_int($u['sefaresh'] ?? 0),
            'refs'=>admin_best_clean_int($u['zirmjmae'] ?? 0),
            'panel'=>(string)($u['type-panel'] ?? 'عادی'),
            'date'=>(string)($u['date-start'] ?? '-'),
        ];
    }
    usort($rows, function($a,$b){
        if($a['score'] == $b['score']) return admin_best_clean_int($b['points']) <=> admin_best_clean_int($a['points']);
        return $b['score'] <=> $a['score'];
    });
    return array_slice($rows, 0, max(1, (int)$limit));
}
function admin_best_user_stats(){
    $total = 0; $wallet = 0; $joins = 0; $orders = 0; $refs = 0;
    foreach(bot_data_glob('melat/*.json') as $file){
        $id = basename((string)$file, '.json');
        if($id === '' || $id === '.' || $id === '..') continue;
        $u = bot_data_get_json('melat/'.$id.'.json');
        if(!is_array($u)) continue;
        $total++;
        $wallet += admin_best_clean_int($u['Points'] ?? 0);
        $joins  += admin_best_clean_int($u['ads'] ?? 0);
        $orders += admin_best_clean_int($u['sefaresh'] ?? 0);
        $refs   += admin_best_clean_int($u['zirmjmae'] ?? 0);
    }
    return ['total'=>$total, 'wallet'=>$wallet, 'joins'=>$joins, 'orders'=>$orders, 'refs'=>$refs];
}
function admin_best_order_stats(){
    $stats = ['total'=>0, 'active'=>0, 'done'=>0, 'cancel'=>0, 'target'=>0, 'received'=>0, 'left'=>0];
    foreach(bot_data_glob('ads/*.json') as $file){
        $id = basename((string)$file, '.json');
        if($id === '' || $id === '.' || $id === '..') continue;
        $o = bot_data_get_json('ads/'.$id.'.json');
        if(!is_array($o)) continue;
        $stats['total']++;
        $status = (string)($o['stats'] ?? $o['status'] ?? '');
        if(strpos($status, 'تکمیل') !== false) $stats['done']++;
        elseif(strpos($status, 'کنسل') !== false || strpos($status, 'لغو') !== false) $stats['cancel']++;
        else $stats['active']++;
        $stats['target'] += admin_best_clean_int($o['member'] ?? $o['target_count'] ?? 0);
        $stats['received'] += admin_best_clean_int($o['tedad'] ?? $o['received_count'] ?? 0);
        if(isset($o['left']) && is_array($o['left'])){
            foreach($o['left'] as $x){ if((string)$x !== '' && (string)$x !== '0') $stats['left']++; }
        }else{
            $stats['left'] += admin_best_clean_int($o['left_count'] ?? 0);
        }
    }
    return $stats;
}
function admin_best_dashboard_text($money='الماس', $icmoney='💎'){
    $u = admin_best_user_stats();
    $o = admin_best_order_stats();
    $fulfill = $o['target'] > 0 ? round(($o['received'] / max(1,$o['target'])) * 100, 1) : 0;
    return "🏆 **داشبورد برترین کاربران**\n\n".
        "👤 کل کاربران: **{$u['total']}**\n".
        "{$icmoney} مجموع موجودی کاربران: **{$u['wallet']}** {$money}\n".
        "✅ مجموع عضویت‌های موفق: **{$u['joins']}**\n".
        "👥 مجموع زیرمجموعه‌ها: **{$u['refs']}**\n".
        "📦 سفارش‌های ثبت‌شده کاربران: **{$u['orders']}**\n\n".
        "📊 **وضعیت سفارش‌ها**\n".
        "📦 کل سفارش‌ها: **{$o['total']}**\n".
        "♻️ فعال: **{$o['active']}** | ✅ تکمیل: **{$o['done']}** | ❌ لغو: **{$o['cancel']}**\n".
        "🎯 هدف کل: **{$o['target']}** | دریافت‌شده: **{$o['received']}** | پیشرفت: **{$fulfill}%**\n".
        "💔 لفت/جریمه ثبت‌شده: **{$o['left']}**\n\n".
        "یکی از رتبه‌بندی‌های زیر را انتخاب کن:";
}
function admin_best_keyboard(){
    return json_encode(['inline_keyboard'=>[
        [['text'=>'💎 موجودی', 'callback_data'=>'admintop_wallet'], ['text'=>'✅ عضویت‌ها', 'callback_data'=>'admintop_joins']],
        [['text'=>'📦 سفارش‌دهنده‌ها', 'callback_data'=>'admintop_orders'], ['text'=>'👥 زیرمجموعه‌گیری', 'callback_data'=>'admintop_refs']],
        [['text'=>'🔥 زیرمجموعه فعال', 'callback_data'=>'admintop_refjoins'], ['text'=>'🎁 پورسانت', 'callback_data'=>'admintop_refbonus']],
        [['text'=>'🔄 بروزرسانی داشبورد', 'callback_data'=>'admintop_menu'], ['text'=>'📤 گزارش کامل', 'callback_data'=>'admintop_export']],
    ]], JSON_UNESCAPED_UNICODE);
}
function admin_best_rank_text($metric, $money='الماس', $icmoney='💎', $limit=10){
    $info = admin_best_metric_info($metric, $money);
    $rows = admin_best_collect_users($metric, $limit);
    $text = $info['title']."\n".$info['desc']."\n\n";
    if(!$rows){
        $text .= "هنوز داده‌ای برای این رتبه‌بندی ثبت نشده است.";
    }else{
        $medals = ['🥇','🥈','🥉'];
        $i = 1;
        foreach($rows as $r){
            $rank = $medals[$i-1] ?? ($i.'.');
            $id = admin_best_html($r['id']);
            $panel = admin_best_html($r['panel']);
            $score = number_format((int)$r['score']);
            $points = number_format((int)$r['points']);
            $joins = number_format((int)$r['joins']);
            $orders = number_format((int)$r['orders']);
            $refs = number_format((int)$r['refs']);
            $unit = admin_best_html($info['unit']);
            $text .= "{$rank} <code>{$id}</code> — **{$score}** {$unit}\n".
                "   {$icmoney} موجودی: {$points} | ✅ عضویت: {$joins} | 📦 سفارش: {$orders} | 👥 زیرمجموعه: {$refs} | پنل: {$panel}\n\n";
            $i++;
        }
    }
    return $text;
}
function admin_best_rank_keyboard($metric='wallet'){
    $metric = preg_match('/^(wallet|joins|orders|refs|refjoins|refbonus)$/', (string)$metric) ? (string)$metric : 'wallet';
    return json_encode(['inline_keyboard'=>[
        [['text'=>'🔄 بروزرسانی همین لیست', 'callback_data'=>'admintop_'.$metric], ['text'=>'🏆 داشبورد', 'callback_data'=>'admintop_menu']],
        [['text'=>'💎 موجودی', 'callback_data'=>'admintop_wallet'], ['text'=>'✅ عضویت‌ها', 'callback_data'=>'admintop_joins']],
        [['text'=>'📦 سفارش‌دهنده‌ها', 'callback_data'=>'admintop_orders'], ['text'=>'👥 زیرمجموعه‌گیری', 'callback_data'=>'admintop_refs']],
        [['text'=>'🔥 زیرمجموعه فعال', 'callback_data'=>'admintop_refjoins'], ['text'=>'🎁 پورسانت', 'callback_data'=>'admintop_refbonus']],
    ]], JSON_UNESCAPED_UNICODE);
}
function admin_best_export_text($money='الماس', $icmoney='💎'){
    $sections = ['wallet','joins','orders','refs','refjoins','refbonus'];
    $text = admin_best_dashboard_text($money, $icmoney)."\n\n━━━━━━━━━━━━\n";
    foreach($sections as $m){
        $text .= "\n".admin_best_rank_text($m, $money, $icmoney, 5)."\n━━━━━━━━━━━━\n";
    }
    return $text;
}
// ================= /Admin Top Users Dashboard =================
