Index of /

NameLast ModifiedSize
Directoryadmin2025-11-02 12:25-
Directoryuploads2025-10-28 09:02-
[TXT]add_trial_permissions.php2025-10-25 20:15 3k
Fileadmin_queue.log2025-10-28 20:07 1k
Fileapproval_queue.log2025-10-28 14:05 2k
[TXT]bot.php2025-11-02 12:31 72k
Filebot_webhook.log2025-12-02 07:59 181k
[TXT]check_expired_subscriptions.php2025-10-21 10:14 7k
[TXT]check_trial_expiry.php2025-10-21 11:02 7k
[TXT]config.php2025-11-02 12:34 3k
[TXT]connect.php2025-10-27 08:53 1k
FileCRON_SETUP_GUIDE.md2025-10-21 10:14 6k
[TXT]daily_send.php2025-11-02 11:29 10k
Filedaily_send_cron.log2025-12-03 09:30 1k
[TXT]database.php2025-11-02 11:03 46k
Fileerror_log2025-12-03 20:43 50k
Fileexplore_ai_subscription_check.log2025-12-04 03:30 1k
Fileexplore_ai_trial_check.log2025-12-03 22:30 1k
[TXT]jdf.php2025-10-28 18:13 8k
Filephp_error.log2025-12-02 07:59 1593k
[TXT]process_queue.php2025-10-28 09:12 7k
Filequeue.log2025-11-02 11:29 6k
[TXT]queue_manager.php2025-10-22 10:51 18k
FileQUEUE_SYSTEM_GUIDE.md2025-10-22 10:01 9k
Filesubscription_expiry.log2025-12-04 03:30 79k
[TXT]telegram_functions.php2025-10-25 19:58 21k
Filetelegram_worker.log2025-12-03 16:31 26450k
[TXT]telegram_worker.php2025-10-28 09:12 30k
[TXT]test_queue_direct.php2025-10-28 09:13 6k
[TXT]test_worker_token.php2025-10-28 09:13 5k
Filetrial_queue.log2025-10-28 11:00 1k
FileTROUBLESHOOTING.md2025-10-22 08:17 4k
[TXT]webhook.php2025-10-13 08:39 2k
[TXT]webhook_control.php2025-10-28 09:13 13k
Filewelcome_queue.log2025-10-28 11:04 1k
<!DOCTYPE html> <html lang="fa" dir="rtl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ربات هوش مصنوعی Explore AI - راهنمای کامل</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.rtl.min.css" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Vazir:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css" rel="stylesheet"> <style> :root { --primary-color: #667eea; --secondary-color: #764ba2; --success-color: #28a745; --warning-color: #ffc107; --danger-color: #dc3545; --info-color: #17a2b8; --dark-color: #343a40; --light-color: #f8f9fa; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Vazir', sans-serif; line-height: 1.8; color: var(--dark-color); background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); min-height: 100vh; } .container { max-width: 1200px; margin: 0 auto; padding: 20px; } .header { background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%); color: white; padding: 60px 0; text-align: center; border-radius: 20px; margin-bottom: 40px; box-shadow: 0 10px 30px rgba(0,0,0,0.2); } .header h1 { font-size: 3rem; font-weight: 700; margin-bottom: 20px; text-shadow: 2px 2px 4px rgba(0,0,0,0.3); } .header p { font-size: 1.3rem; opacity: 0.9; max-width: 800px; margin: 0 auto; } .nav-tabs { background: white; border-radius: 15px; padding: 20px; margin-bottom: 30px; box-shadow: 0 5px 15px rgba(0,0,0,0.1); } .nav-tabs .nav-link { border: none; color: var(--dark-color); font-weight: 500; padding: 15px 25px; margin: 0 5px; border-radius: 10px; transition: all 0.3s ease; } .nav-tabs .nav-link:hover { background-color: var(--light-color); transform: translateY(-2px); } .nav-tabs .nav-link.active { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; box-shadow: 0 5px 15px rgba(102, 126, 234, 0.3); } .tab-content { background: white; border-radius: 20px; padding: 40px; box-shadow: 0 10px 30px rgba(0,0,0,0.1); margin-bottom: 30px; } .section { margin-bottom: 50px; } .section h2 { color: var(--primary-color); font-size: 2.2rem; font-weight: 600; margin-bottom: 25px; padding-bottom: 15px; border-bottom: 3px solid var(--primary-color); position: relative; } .section h2::before { content: ''; position: absolute; bottom: -3px; left: 0; width: 50px; height: 3px; background: var(--secondary-color); } .section h3 { color: var(--secondary-color); font-size: 1.8rem; font-weight: 500; margin: 30px 0 20px 0; padding-right: 20px; border-right: 4px solid var(--secondary-color); } .section h4 { color: var(--dark-color); font-size: 1.4rem; font-weight: 500; margin: 25px 0 15px 0; } .feature-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 25px; margin: 30px 0; } .feature-card { background: linear-gradient(135deg, #fff 0%, #f8f9fa 100%); border-radius: 15px; padding: 25px; box-shadow: 0 5px 15px rgba(0,0,0,0.1); transition: all 0.3s ease; border: 1px solid #e9ecef; } .feature-card:hover { transform: translateY(-5px); box-shadow: 0 10px 25px rgba(0,0,0,0.15); } .feature-card h4 { color: var(--primary-color); font-size: 1.3rem; margin-bottom: 15px; display: flex; align-items: center; } .feature-card h4 i { margin-left: 10px; font-size: 1.5rem; } .feature-card ul { list-style: none; padding: 0; } .feature-card li { padding: 8px 0; border-bottom: 1px solid #f0f0f0; display: flex; align-items: center; } .feature-card li:last-child { border-bottom: none; } .feature-card li::before { content: '✓'; color: var(--success-color); font-weight: bold; margin-left: 10px; font-size: 1.2rem; } .code-block { background: #2d3748; color: #e2e8f0; padding: 25px; border-radius: 15px; margin: 20px 0; overflow-x: auto; font-family: 'Courier New', monospace; box-shadow: 0 5px 15px rgba(0,0,0,0.2); } .code-block pre { margin: 0; white-space: pre-wrap; } .code-block .comment { color: #68d391; } .code-block .keyword { color: #f687b3; } .code-block .string { color: #fbb6ce; } .alert { border-radius: 15px; padding: 20px; margin: 20px 0; border: none; box-shadow: 0 5px 15px rgba(0,0,0,0.1); } .alert-success { background: linear-gradient(135deg, #d4edda, #c3e6cb); color: #155724; } .alert-warning { background: linear-gradient(135deg, #fff3cd, #ffeaa7); color: #856404; } .alert-danger { background: linear-gradient(135deg, #f8d7da, #f5c6cb); color: #721c24; } .alert-info { background: linear-gradient(135deg, #d1ecf1, #bee5eb); color: #0c5460; } .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin: 30px 0; } .stat-card { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; padding: 25px; border-radius: 15px; text-align: center; box-shadow: 0 5px 15px rgba(0,0,0,0.2); } .stat-card h3 { font-size: 2.5rem; font-weight: 700; margin-bottom: 10px; } .stat-card p { font-size: 1.1rem; opacity: 0.9; } .table { background: white; border-radius: 15px; overflow: hidden; box-shadow: 0 5px 15px rgba(0,0,0,0.1); } .table thead { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; } .table thead th { border: none; padding: 20px; font-weight: 600; } .table tbody td { padding: 15px 20px; border-bottom: 1px solid #f0f0f0; } .table tbody tr:hover { background-color: #f8f9fa; } .btn { border-radius: 10px; padding: 12px 25px; font-weight: 500; transition: all 0.3s ease; border: none; } .btn:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(0,0,0,0.2); } .btn-primary { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); } .btn-success { background: linear-gradient(135deg, var(--success-color), #20c997); } .btn-warning { background: linear-gradient(135deg, var(--warning-color), #fd7e14); } .btn-danger { background: linear-gradient(135deg, var(--danger-color), #e83e8c); } .btn-info { background: linear-gradient(135deg, var(--info-color), #6f42c1); } .footer { background: var(--dark-color); color: white; padding: 40px 0; text-align: center; border-radius: 20px; margin-top: 50px; } .footer h3 { margin-bottom: 20px; color: var(--primary-color); } .footer p { opacity: 0.8; margin-bottom: 15px; } .footer a { color: var(--primary-color); text-decoration: none; transition: all 0.3s ease; } .footer a:hover { color: var(--secondary-color); text-decoration: underline; } .toc { background: white; border-radius: 15px; padding: 25px; margin-bottom: 30px; box-shadow: 0 5px 15px rgba(0,0,0,0.1); } .toc h3 { color: var(--primary-color); margin-bottom: 20px; font-size: 1.5rem; } .toc ul { list-style: none; padding: 0; } .toc li { padding: 8px 0; border-bottom: 1px solid #f0f0f0; } .toc li:last-child { border-bottom: none; } .toc a { color: var(--dark-color); text-decoration: none; transition: all 0.3s ease; display: flex; align-items: center; } .toc a:hover { color: var(--primary-color); padding-right: 10px; } .toc a::before { content: '→'; margin-left: 10px; transition: all 0.3s ease; } .toc a:hover::before { margin-left: 15px; } @media (max-width: 768px) { .header h1 { font-size: 2rem; } .header p { font-size: 1rem; } .tab-content { padding: 20px; } .section h2 { font-size: 1.8rem; } .feature-grid { grid-template-columns: 1fr; } .stats-grid { grid-template-columns: repeat(2, 1fr); } } .fade-in { animation: fadeIn 0.8s ease-in; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .highlight { background: linear-gradient(135deg, #fff3cd, #ffeaa7); padding: 2px 8px; border-radius: 5px; font-weight: 500; } .badge { font-size: 0.9rem; padding: 8px 12px; border-radius: 20px; } .badge-primary { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); } .badge-success { background: linear-gradient(135deg, var(--success-color), #20c997); } .badge-warning { background: linear-gradient(135deg, var(--warning-color), #fd7e14); } .badge-danger { background: linear-gradient(135deg, var(--danger-color), #e83e8c); } .badge-info { background: linear-gradient(135deg, var(--info-color), #6f42c1); } </style> </head> <body> <div class="container"> <!-- Header --> <div class="header fade-in"> <h1><i class="fas fa-robot me-3"></i>ربات هوش مصنوعی Explore AI</h1> <p>راهنمای کامل نصب، راه‌اندازی و استفاده از سیستم مدیریت محتوای وایرال</p> </div> <!-- Navigation Tabs --> <div class="nav-tabs fade-in"> <ul class="nav nav-tabs" id="mainTabs" role="tablist"> <li class="nav-item" role="presentation"> <button class="nav-link active" id="overview-tab" data-bs-toggle="tab" data-bs-target="#overview" type="button" role="tab"> <i class="fas fa-home me-2"></i>نمای کلی </button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="installation-tab" data-bs-toggle="tab" data-bs-target="#installation" type="button" role="tab"> <i class="fas fa-download me-2"></i>نصب و راه‌اندازی </button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="cron-tab" data-bs-toggle="tab" data-bs-target="#cron" type="button" role="tab"> <i class="fas fa-clock me-2"></i>تنظیمات Cron </button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="queue-tab" data-bs-toggle="tab" data-bs-target="#queue" type="button" role="tab"> <i class="fas fa-tasks me-2"></i>سیستم صف </button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="trial-tab" data-bs-toggle="tab" data-bs-target="#trial" type="button" role="tab"> <i class="fas fa-flask me-2"></i>اشتراک آزمایشی </button> </li> </ul> </div> <!-- Tab Content --> <div class="tab-content" id="mainTabContent"> <!-- Overview Tab --> <div class="tab-pane fade show active" id="overview" role="tabpanel"> <div class="toc"> <h3><i class="fas fa-list me-2"></i>فهرست مطالب</h3> <ul> <li><a href="#features">ویژگی‌های اصلی</a></li> <li><a href="#structure">ساختار پروژه</a></li> <li><a href="#database">ساختار دیتابیس</a></li> <li><a href="#daily-send">سیستم ارسال روزانه</a></li> <li><a href="#voice-system">سیستم ویس و آپلود</a></li> <li><a href="#user-management">مدیریت کاربران</a></li> <li><a href="#reports">آمار و گزارش‌گیری</a></li> <li><a href="#security">امنیت</a></li> <li><a href="#troubleshooting">عیب‌یابی</a></li> </ul> </div> <div class="section" id="features"> <h2><i class="fas fa-star me-2"></i>ویژگی‌های اصلی</h2> <div class="feature-grid"> <div class="feature-card"> <h4><i class="fas fa-users"></i>سیستم عضویت و مدیریت کاربران</h4> <ul> <li>ثبت‌نام کاربران با شماره موبایل</li> <li>تایید دستی توسط مدیریت</li> <li>سیستم اشتراک Pro و مدیریت دسترسی</li> <li>مدیریت دسته‌بندی‌های مجاز برای هر کاربر</li> <li>سیستم اشتراک آزمایشی 4 روزه</li> </ul> </div> <div class="feature-card"> <h4><i class="fas fa-video"></i>مدیریت ویدئوها</h4> <ul> <li>دسته‌بندی ویدئوها (کسب و کار، آرایشی، خیاطی، آشپزی و...)</li> <li>آپلود سریع با File ID تلگرام</li> <li>آمار کامل (بازدید، لایک، فالور، کامنت، نرخ تعامل)</li> <li>سیستم ویس توضیحی برای هر ویدئو</li> <li>ارسال روزانه خودکار ویدئوها</li> </ul> </div> <div class="feature-card"> <h4><i class="fas fa-calendar-day"></i>سیستم ارسال روزانه</h4> <ul> <li>ارسال روزانه یک ویدئو به هر کاربر</li> <li>پیام مخصوص با برندینگ "Explore AI"</li> <li>آمار کامل ویدئو در پیام</li> <li>مدیریت هوشمند ترتیب ویدئوها</li> <li>توقف خودکار هنگام انقضای اشتراک</li> </ul> </div> <div class="feature-card"> <h4><i class="fas fa-cogs"></i>پنل مدیریت پیشرفته</h4> <ul> <li>مدیریت کاربران و دسترسی‌ها</li> <li>مدیریت محتوا و آمار</li> <li>ارسال روزانه ویدئوها</li> <li>آمار و گزارش‌گیری کامل</li> <li>مدیریت دسته‌بندی‌های کاربران</li> <li>سیستم صف‌بندی پیام‌ها</li> </ul> </div> </div> </div> <div class="section" id="structure"> <h2><i class="fas fa-folder me-2"></i>ساختار پروژه</h2> <div class="code-block"> <pre><span class="comment"># ساختار کلی پروژه</span> viral_content_bot/ ├── config.php <span class="comment"># تنظیمات اصلی</span> ├── database.php <span class="comment"># اتصال دیتابیس و ایجاد جداول</span> ├── bot.php <span class="comment"># فایل اصلی ربات</span> ├── daily_send.php <span class="comment"># اسکریپت ارسال روزانه</span> ├── daily_send_queue.php <span class="comment"># ارسال روزانه با صف</span> ├── queue_manager.php <span class="comment"># کلاس مدیریت صف</span> ├── telegram_worker.php <span class="comment"># Worker یکپارچه برای پردازش صف</span> ├── check_trial_expiry.php <span class="comment"># بررسی انقضای اشتراک آزمایشی</span> ├── telegram_functions.php <span class="comment"># توابع تلگرام</span> ├── jdf.php <span class="comment"># تبدیل تاریخ شمسی</span> ├── webhook.php <span class="comment"># وب‌هوک تلگرام</span> ├── admin/ <span class="comment"># پنل مدیریت</span> │ ├── index.php <span class="comment"># داشبورد</span> │ ├── login.php <span class="comment"># ورود ادمین</span> │ ├── users.php <span class="comment"># مدیریت کاربران</span> │ ├── videos.php <span class="comment"># مدیریت ویدئوها</span> │ ├── categories.php <span class="comment"># مدیریت دسته‌بندی‌ها</span> │ ├── messages.php <span class="comment"># ارسال پیام</span> │ ├── trial_settings.php <span class="comment"># تنظیمات اشتراک آزمایشی</span> │ ├── queue_monitor.php <span class="comment"># مانیتورینگ صف</span> │ ├── reports.php <span class="comment"># گزارش‌گیری</span> │ └── settings.php <span class="comment"># تنظیمات</span> └── uploads/ <span class="comment"># فایل‌های آپلود شده</span> ├── videos/ ├── audios/ └── images/</pre> </div> </div> <div class="section" id="database"> <h2><i class="fas fa-database me-2"></i>ساختار دیتابیس</h2> <h3>جداول اصلی</h3> <h4>1. جدول `users` - کاربران</h4> <div class="code-block"> <pre><span class="keyword">CREATE TABLE</span> users ( id <span class="keyword">INT AUTO_INCREMENT PRIMARY KEY</span>, chat_id <span class="keyword">BIGINT UNIQUE NOT NULL</span>, first_name <span class="keyword">VARCHAR</span>(100), last_name <span class="keyword">VARCHAR</span>(100), username <span class="keyword">VARCHAR</span>(100), phone <span class="keyword">VARCHAR</span>(20), status <span class="keyword">ENUM</span>(<span class="string">'pending'</span>, <span class="string">'pro'</span>, <span class="string">'trial'</span>, <span class="string">'blocked'</span>) <span class="keyword">DEFAULT</span> <span class="string">'pending'</span>, subscription_type <span class="keyword">ENUM</span>(<span class="string">'trial'</span>, <span class="string">'pro'</span>) <span class="keyword">DEFAULT NULL</span>, subscription_start_date <span class="keyword">DATETIME NULL</span>, subscription_end_date <span class="keyword">DATETIME NULL</span>, step <span class="keyword">ENUM</span>(<span class="string">'phone'</span>, <span class="string">'name'</span>, <span class="string">'completed'</span>) <span class="keyword">DEFAULT</span> <span class="string">'phone'</span>, created_at <span class="keyword">TIMESTAMP DEFAULT CURRENT_TIMESTAMP</span>, updated_at <span class="keyword">TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP</span> );</pre> </div> <h4>2. جدول `message_queue` - صف پیام‌ها</h4> <div class="code-block"> <pre><span class="keyword">CREATE TABLE</span> message_queue ( id <span class="keyword">INT AUTO_INCREMENT PRIMARY KEY</span>, chat_id <span class="keyword">BIGINT NOT NULL</span>, message_type <span class="keyword">ENUM</span>(<span class="string">'text'</span>, <span class="string">'video'</span>, <span class="string">'photo'</span>, <span class="string">'voice'</span>), content <span class="keyword">TEXT NOT NULL</span>, file_id <span class="keyword">VARCHAR</span>(255) <span class="keyword">NULL</span>, file_path <span class="keyword">VARCHAR</span>(500) <span class="keyword">NULL</span>, caption <span class="keyword">TEXT NULL</span>, reply_markup <span class="keyword">TEXT NULL</span>, parse_mode <span class="keyword">VARCHAR</span>(20) <span class="keyword">DEFAULT</span> <span class="string">'Markdown'</span>, priority <span class="keyword">INT DEFAULT</span> 5, status <span class="keyword">ENUM</span>(<span class="string">'pending'</span>, <span class="string">'processing'</span>, <span class="string">'sent'</span>, <span class="string">'failed'</span>, <span class="string">'cancelled'</span>), error_message <span class="keyword">TEXT NULL</span>, try_count <span class="keyword">INT DEFAULT</span> 0, max_retries <span class="keyword">INT DEFAULT</span> 3, retry_after <span class="keyword">TIMESTAMP NULL</span>, created_at <span class="keyword">TIMESTAMP DEFAULT CURRENT_TIMESTAMP</span>, updated_at <span class="keyword">TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP</span>, processed_at <span class="keyword">TIMESTAMP NULL</span> );</pre> </div> <div class="alert alert-info"> <h4><i class="fas fa-info-circle me-2"></i>نکته مهم</h4> <p>تمام جداول به صورت خودکار توسط فایل <code>database.php</code> ایجاد می‌شوند. نیازی به ایجاد دستی جداول نیست.</p> </div> </div> <div class="section" id="daily-send"> <h2><i class="fas fa-calendar-day me-2"></i>سیستم ارسال روزانه</h2> <h3>ویژگی‌های سیستم</h3> <ul> <li><strong>ارسال هوشمند</strong>: هر کاربر روزانه یک ویدئو دریافت می‌کند</li> <li><strong>ترتیب ویدئوها</strong>: ویدئوها به ترتیب از دسته‌بندی‌های مجاز ارسال می‌شوند</li> <li><strong>چرخه کامل</strong>: وقتی ویدئوهای یک دسته تمام شد، از اول شروع می‌کند</li> <li><strong>مدیریت اشتراک</strong>: فقط کاربران Pro و آزمایشی ویدئو دریافت می‌کنند</li> </ul> <h3>پیام مخصوص</h3> <div class="code-block"> <pre>🤖 ایده تولید محتوا امروز شما بر اساس هوش مصنوعی Explore AI 📅 تاریخ: 1403/10/15 📁 دسته‌بندی: بازاریابی دیجیتال 🎬 عنوان: راهنمای بازاریابی دیجیتال 📊 آمار و عملکرد ویدئو: 👀 بازدید: 1,250 ❤️ لایک: 89 👥 جذب فالور: 23 💬 کامنت: 15 📈 نرخ تعامل: 12.5% 💡 نکات مهم: • این ویدئو بر اساس الگوریتم‌های هوش مصنوعی انتخاب شده • آمار ارائه شده از منابع معتبر جمع‌آوری شده • برای بهترین نتیجه، ویدئو را کامل تماشا کنید 🎯 ─────────────────────────────────── [ویدئو + ویس توضیحی]</pre> </div> </div> <div class="section" id="voice-system"> <h2><i class="fas fa-microphone me-2"></i>سیستم ویس و آپلود سریع</h2> <h3>ویژگی‌های ویس</h3> <ul> <li><strong>ویس توضیحی</strong>: هر ویدئو می‌تواند شامل یک فایل ویس توضیحی باشد</li> <li><strong>فرمت OGG</strong>: ویس‌ها با فرمت OGG ذخیره می‌شوند (مناسب برای تلگرام)</li> <li><strong>File ID</strong>: پشتیبانی از File ID تلگرام برای آپلود سریع ویس</li> <li><strong>ارسال خودکار</strong>: ویس به صورت خودکار بعد از ویدئو ارسال می‌شود</li> </ul> <h3>آپلود سریع با File ID</h3> <ul> <li><strong>بدون آپلود مجدد</strong>: ویدئو قبلاً در سرورهای تلگرام ذخیره شده</li> <li><strong>دسترسی فوری</strong>: کاربران فوراً می‌توانند ویدئو را مشاهده کنند</li> <li><strong>صرفه‌جویی در پهنای باند</strong>: نیازی به آپلود مجدد نیست</li> </ul> </div> <div class="section" id="user-management"> <h2><i class="fas fa-users me-2"></i>مدیریت کاربران</h2> <h3>سیستم دسترسی</h3> <ul> <li><strong>دسته‌بندی‌های مجاز</strong>: هر کاربر فقط به دسته‌بندی‌های تعریف شده دسترسی دارد</li> <li><strong>مدیریت آسان</strong>: از پنل مدیریت می‌توانید دسته‌بندی‌های هر کاربر را تنظیم کنید</li> <li><strong>امنیت بالا</strong>: بررسی دسترسی در تمام مراحل</li> </ul> <h3>وضعیت‌های کاربر</h3> <div class="stats-grid"> <div class="stat-card"> <h3>Pro</h3> <p>دسترسی کامل به تمام امکانات</p> </div> <div class="stat-card"> <h3>Trial</h3> <p>اشتراک آزمایشی 4 روزه</p> </div> <div class="stat-card"> <h3>Blocked</h3> <p>دسترسی محدود شده</p> </div> <div class="stat-card"> <h3>Pending</h3> <p>در انتظار تایید</p> </div> </div> </div> <div class="section" id="reports"> <h2><i class="fas fa-chart-bar me-2"></i>آمار و گزارش‌گیری</h2> <h3>آمار ویدئوها</h3> <ul> <li>بازدید</li> <li>لایک</li> <li>جذب فالور</li> <li>کامنت</li> <li>نرخ تعامل</li> </ul> <h3>آمار ارسال روزانه</h3> <ul> <li>آمار روزانه ارسال‌ها</li> <li>آمار هفته گذشته</li> <li>لیست آخرین ارسال‌ها</li> <li>وضعیت کاربران فعال</li> </ul> </div> <div class="section" id="security"> <h2><i class="fas fa-shield-alt me-2"></i>امنیت</h2> <ul> <li>تمام ورودی‌ها اعتبارسنجی می‌شوند</li> <li>استفاده از prepared statements</li> <li>رمزگذاری رمزهای عبور</li> <li>محدودیت دسترسی ادمین</li> <li>بررسی دسترسی در تمام مراحل</li> </ul> </div> <div class="section" id="troubleshooting"> <h2><i class="fas fa-tools me-2"></i>عیب‌یابی</h2> <h3>بررسی اتصال دیتابیس</h3> <div class="code-block"> <pre><span class="keyword">try</span> { $pdo = <span class="keyword">new</span> PDO($dsn, $user, $pass); <span class="keyword">echo</span> <span class="string">"اتصال موفق"</span>; } <span class="keyword">catch</span> (PDOException $e) { <span class="keyword">echo</span> <span class="string">"خطا: "</span> . $e->getMessage(); }</pre> </div> <h3>بررسی جداول</h3> <div class="code-block"> <pre><span class="comment">-- نمایش جداول</span> <span class="keyword">SHOW TABLES</span>; <span class="keyword">DESCRIBE</span> users;</pre> </div> <h3>تست ارسال روزانه</h3> <div class="code-block"> <pre><span class="comment"># اجرای دستی</span> php /path/to/daily_send_queue.php <span class="comment"># بررسی cron job</span> crontab -l tail -f /var/log/daily_send.log</pre> </div> </div> </div> <!-- Installation Tab --> <div class="tab-pane fade" id="installation" role="tabpanel"> <div class="section"> <h2><i class="fas fa-download me-2"></i>نصب و راه‌اندازی</h2> <h3>پیش‌نیازها</h3> <div class="feature-grid"> <div class="feature-card"> <h4><i class="fas fa-code"></i>PHP</h4> <p>نسخه 7.4 یا بالاتر</p> </div> <div class="feature-card"> <h4><i class="fas fa-database"></i>MySQL</h4> <p>نسخه 5.7 یا بالاتر</p> </div> <div class="feature-card"> <h4><i class="fas fa-server"></i>سرور وب</h4> <p>Apache یا Nginx</p> </div> <div class="feature-card"> <h4><i class="fas fa-robot"></i>توکن ربات</h4> <p>توکن ربات تلگرام</p> </div> </div> <h3>مراحل نصب</h3> <h4>1. دانلود و آپلود فایل‌ها</h4> <div class="code-block"> <pre><span class="comment"># کلون کردن پروژه</span> git clone https://github.com/your-repo/viral-content-bot.git cd viral-content-bot</pre> </div> <h4>2. تنظیم دیتابیس</h4> <ul> <li>ایجاد دیتابیس MySQL</li> <li>ویرایش فایل <code>config.php</code> و وارد کردن اطلاعات دیتابیس</li> <li>جداول به صورت خودکار ایجاد می‌شوند</li> </ul> <h4>3. تنظیم ربات تلگرام</h4> <ul> <li>ویرایش <code>TELEGRAM_BOT_TOKEN</code> در <code>config.php</code></li> <li>تنظیم <code>ADMIN_CHAT_IDS</code> برای ادمین‌ها</li> </ul> <h4>4. تنظیم وب‌هوک</h4> <div class="code-block"> <pre><span class="comment"># تنظیم وب‌هوک</span> curl <span class="string">"https://your-domain.com/webhook.php?set_webhook"</span> <span class="comment"># بررسی وضعیت وب‌هوک</span> curl <span class="string">"https://your-domain.com/webhook.php?webhook_info"</span></pre> </div> <h4>5. دسترسی به پنل مدیریت</h4> <ul> <li>مراجعه به <code>https://your-domain.com/admin/</code></li> <li>ورود با نام کاربری: <code>admin</code> و رمز عبور: <code>123456</code></li> </ul> <div class="alert alert-success"> <h4><i class="fas fa-check-circle me-2"></i>نصب موفق!</h4> <p>ربات شما آماده استفاده است. حالا می‌توانید کاربران را تایید کرده و محتوا اضافه کنید.</p> </div> </div> </div> <!-- Cron Tab --> <div class="tab-pane fade" id="cron" role="tabpanel"> <div class="section"> <h2><i class="fas fa-clock me-2"></i>تنظیمات Cron Job</h2> <h3>فایل‌های Cron Job مورد نیاز</h3> <h4>1. ارسال روزانه ویدئوها</h4> <div class="code-block"> <pre><span class="comment"># ارسال روزانه ویدئوها در ساعت 9 صبح</span> 0 9 * * * /usr/bin/php /path/to/viral_content_bot/daily_send_queue.php >> /var/log/explore_ai_daily_send.log 2>&1</pre> </div> <h4>2. بررسی اشتراک‌های منقضی</h4> <div class="code-block"> <pre><span class="comment"># بررسی هر ساعت برای اشتراک‌های منقضی شده</span> 0 * * * * /usr/bin/php /path/to/viral_content_bot/check_expired_subscriptions.php >> /var/log/explore_ai_subscription_check.log 2>&1</pre> </div> <h4>3. بررسی انقضای اشتراک‌های آزمایشی</h4> <div class="code-block"> <pre><span class="comment"># بررسی انقضای اشتراک‌های آزمایشی (هر روز ساعت 2 صبح)</span> 0 2 * * * /usr/bin/php /path/to/viral_content_bot/check_trial_expiry.php >> /var/log/explore_ai_trial_check.log 2>&1</pre> </div> <h4>4. Worker سیستم صف</h4> <div class="code-block"> <pre><span class="comment"># اجرای Worker هر دقیقه</span> * * * * * /usr/bin/php /path/to/viral_content_bot/telegram_worker.php >> /var/log/explore_ai_queue_worker.log 2>&1</pre> </div> <h3>مراحل تنظیم</h3> <h4>مرحله 1: دسترسی به Cron</h4> <div class="code-block"> <pre><span class="comment"># باز کردن ویرایشگر Cron</span> crontab -e <span class="comment"># یا برای کاربر خاص</span> crontab -e -u username</pre> </div> <h4>مرحله 2: اضافه کردن Job ها</h4> <div class="code-block"> <pre><span class="comment"># اضافه کردن خطوط زیر به فایل Cron</span> 0 9 * * * /usr/bin/php /home/username/viral_content_bot/daily_send_queue.php >> /var/log/explore_ai_daily_send.log 2>&1 0 * * * * /usr/bin/php /home/username/viral_content_bot/check_expired_subscriptions.php >> /var/log/explore_ai_subscription_check.log 2>&1 0 2 * * * /usr/bin/php /home/username/viral_content_bot/check_trial_expiry.php >> /var/log/explore_ai_trial_check.log 2>&1 * * * * * /usr/bin/php /home/username/viral_content_bot/telegram_worker.php >> /var/log/explore_ai_queue_worker.log 2>&1</pre> </div> <h4>مرحله 3: بررسی مسیر PHP</h4> <div class="code-block"> <pre><span class="comment"># پیدا کردن مسیر PHP</span> which php <span class="comment"># یا</span> /usr/bin/php --version</pre> </div> <h4>مرحله 4: ایجاد پوشه لاگ</h4> <div class="code-block"> <pre><span class="comment"># ایجاد پوشه لاگ (در صورت عدم وجود)</span> sudo mkdir -p /var/log sudo touch /var/log/explore_ai_*.log sudo chmod 666 /var/log/explore_ai_*.log</pre> </div> <h3>نحوه عملکرد</h3> <h4>ارسال روزانه (`daily_send_queue.php`):</h4> <ol> <li><strong>بررسی کاربران Pro و آزمایشی</strong> با اشتراک فعال</li> <li><strong>انتخاب ویدئو</strong> بر اساس دسته‌بندی‌های مجاز</li> <li><strong>اضافه کردن به صف</strong> به جای ارسال مستقیم</li> <li><strong>ثبت لاگ</strong> در جدول <code>daily_send_logs</code></li> <li><strong>جلوگیری از ارسال تکراری</strong> در یک روز</li> </ol> <h4>بررسی اشتراک (`check_expired_subscriptions.php`):</h4> <ol> <li><strong>جستجوی کاربران</strong> با اشتراک منقضی شده</li> <li><strong>تغییر وضعیت</strong> از <code>pro</code> به <code>blocked</code></li> <li><strong>ارسال پیام اطلاع‌رسانی</strong> به کاربر</li> <li><strong>ثبت لاگ</strong> در فایل <code>subscription_expiry.log</code></li> </ol> <h4>بررسی اشتراک آزمایشی (`check_trial_expiry.php`):</h4> <ol> <li><strong>جستجوی کاربران آزمایشی</strong> با اشتراک منقضی شده</li> <li><strong>تغییر وضعیت</strong> از <code>trial</code> به <code>blocked</code></li> <li><strong>ارسال پیام انقضا</strong> از طریق صف</li> <li><strong>ثبت لاگ</strong> کامل</li> </ol> <h3>نحوه مانیتورینگ</h3> <h4>بررسی لاگ‌ها:</h4> <div class="code-block"> <pre><span class="comment"># مشاهده لاگ ارسال روزانه</span> tail -f /var/log/explore_ai_daily_send.log <span class="comment"># مشاهده لاگ بررسی اشتراک</span> tail -f /var/log/explore_ai_subscription_check.log <span class="comment"># مشاهده لاگ Worker</span> tail -f /var/log/explore_ai_queue_worker.log</pre> </div> <h4>بررسی وضعیت Cron:</h4> <div class="code-block"> <pre><span class="comment"># مشاهده Job های فعال</span> crontab -l <span class="comment"># بررسی سرویس Cron</span> sudo systemctl status cron <span class="comment"># مشاهده لاگ سیستم Cron</span> sudo tail -f /var/log/syslog | grep CRON</pre> </div> <h3>نکات مهم</h3> <div class="alert alert-warning"> <h4><i class="fas fa-exclamation-triangle me-2"></i>امنیت</h4> <ul> <li>مسیر فایل‌ها باید قابل دسترسی باشد</li> <li>فایل‌های PHP باید مجوز اجرا داشته باشند</li> <li>لاگ‌ها باید قابل نوشتن باشند</li> </ul> </div> <div class="alert alert-info"> <h4><i class="fas fa-info-circle me-2"></i>عملکرد</h4> <ul> <li><strong>تاخیر بین ارسال‌ها</strong> برای جلوگیری از محدودیت API</li> <li><strong>مدیریت خطاها</strong> و ثبت در لاگ</li> <li><strong>بررسی اتصال دیتابیس</strong> قبل از اجرا</li> </ul> </div> <h3>تست</h3> <div class="code-block"> <pre><span class="comment"># تست دستی ارسال روزانه</span> /usr/bin/php /path/to/viral_content_bot/daily_send_queue.php <span class="comment"># تست دستی بررسی اشتراک</span> /usr/bin/php /path/to/viral_content_bot/check_expired_subscriptions.php <span class="comment"># تست دستی Worker</span> /usr/bin/php /path/to/viral_content_bot/telegram_worker.php</pre> </div> <div class="alert alert-success"> <h4><i class="fas fa-check-circle me-2"></i>تنظیم موفق!</h4> <p>با تنظیم صحیح Cron Job ها، سیستم Explore AI به صورت خودکار کار می‌کند!</p> </div> </div> </div> <!-- Queue Tab --> <div class="tab-pane fade" id="queue" role="tabpanel"> <div class="section"> <h2><i class="fas fa-tasks me-2"></i>سیستم صف‌بندی پیام‌ها</h2> <h3>معرفی سیستم</h3> <p>سیستم صف‌بندی پیام‌ها برای مدیریت ارسال پیام‌های انبوه به کاربران طراحی شده است. این سیستم مشکلات زیر را حل می‌کند:</p> <div class="feature-grid"> <div class="feature-card"> <h4><i class="fas fa-check-circle"></i>مزایا</h4> <ul> <li>مدیریت محدودیت‌های Telegram API</li> <li>ارسال دسته‌ای</li> <li>تلاش مجدد خودکار</li> <li>مانیتورینگ کامل</li> <li>اولویت‌بندی</li> </ul> </div> <div class="feature-card"> <h4><i class="fas fa-cogs"></i>ویژگی‌ها</h4> <ul> <li>پشتیبانی از تمام انواع پیام</li> <li>مدیریت خطا و تلاش مجدد</li> <li>آمار کامل و گزارش‌گیری</li> <li>رابط کاربری برای مانیتورینگ</li> </ul> </div> </div> <h3>فایل‌های سیستم</h3> <h4>فایل‌های اصلی:</h4> <div class="code-block"> <pre>viral_content_bot/ ├── queue_manager.php <span class="comment"># کلاس مدیریت صف</span> ├── telegram_worker.php <span class="comment"># Worker یکپارچه برای پردازش صف</span> ├── daily_send_queue.php <span class="comment"># ارسال روزانه با صف</span> ├── ondemand_worker.php <span class="comment"># Worker On-Demand</span> ├── webhook_worker.php <span class="comment"># Web Hook برای Worker</span> └── admin/ ├── queue_monitor.php <span class="comment"># صفحه مانیتورینگ</span> └── messages.php <span class="comment"># ارسال پیام با صف</span></pre> </div> <h3>نحوه استفاده</h3> <h4>1. ارسال روزانه:</h4> <div class="code-block"> <pre><span class="comment"># اجرای ارسال روزانه</span> php daily_send_queue.php <span class="comment"># اجرای ارسال روزانه + پردازش فوری</span> php daily_send_queue.php --process</pre> </div> <h4>2. ارسال پیام انبوه:</h4> <ul> <li>از طریق پنل ادمین: <code>admin/messages.php</code></li> <li>انتخاب نوع پیام (متن، ویدئو، عکس، ویس)</li> <li>انتخاب کاربران هدف</li> <li>اضافه کردن به صف یا پردازش فوری</li> </ul> <h4>3. مانیتورینگ:</h4> <ul> <li>دسترسی به <code>admin/queue_monitor.php</code></li> <li>مشاهده آمار کلی</li> <li>مدیریت پیام‌های stuck</li> <li>پاک کردن پیام‌های قدیمی</li> </ul> <h3>تنظیمات Cron Job</h3> <h4>1. Worker اصلی:</h4> <div class="code-block"> <pre><span class="comment"># هر دقیقه Worker را اجرا کن</span> * * * * * /usr/bin/php /path/to/telegram_worker.php <span class="comment"># یا هر 30 ثانیه</span> */30 * * * * /usr/bin/php /path/to/telegram_worker.php</pre> </div> <h4>2. ارسال روزانه:</h4> <div class="code-block"> <pre><span class="comment"># هر روز ساعت 9 صبح</span> 0 9 * * * /usr/bin/php /path/to/daily_send_queue.php <span class="comment"># هر روز ساعت 9 صبح + پردازش فوری</span> 0 9 * * * /usr/bin/php /path/to/daily_send_queue.php --process</pre> </div> <h4>3. پاک کردن پیام‌های قدیمی:</h4> <div class="code-block"> <pre><span class="comment"># هر روز ساعت 2 صبح</span> 0 2 * * * /usr/bin/php /path/to/telegram_worker.php --cleanup</pre> </div> <h3>مانیتورینگ</h3> <h4>آمار کلی:</h4> <ul> <li>تعداد کل پیام‌ها</li> <li>پیام‌های در انتظار</li> <li>پیام‌های در حال پردازش</li> <li>پیام‌های ارسال شده</li> </ul> <h4>عملیات مدیریت:</h4> <ul> <li><strong>پاک کردن پیام‌های قدیمی</strong> - حذف پیام‌های 7 روزه</li> <li><strong>بازگرداندن پیام‌های Stuck</strong> - پیام‌های بیش از 5 دقیقه در حال پردازش</li> <li><strong>لغو پیام‌های در انتظار</strong> - لغو تمام پیام‌های pending</li> </ul> <h4>Auto Refresh:</h4> <ul> <li>به‌روزرسانی خودکار هر 10 ثانیه</li> <li>امکان فعال/غیرفعال کردن</li> </ul> <h3>تنظیمات پیشرفته</h3> <h4>تنظیمات Worker:</h4> <div class="code-block"> <pre><span class="comment">// در telegram_worker.php</span> private $maxMessagesPerRun = 50; <span class="comment">// حداکثر پیام در هر اجرا</span> private $delayBetweenMessages = 0.5; <span class="comment">// تاخیر بین پیام‌ها (ثانیه)</span> private $delayBetweenRuns = 2; <span class="comment">// تاخیر بین اجراها (ثانیه)</span> private $maxRetries = 3; <span class="comment">// حداکثر تلاش مجدد</span> private $retryDelay = 5; <span class="comment">// تاخیر تلاش مجدد (ثانیه)</span></pre> </div> <h4>اولویت‌ها:</h4> <div class="stats-grid"> <div class="stat-card"> <h3>1</h3> <p>اولویت بالا (پیام‌های فوری)</p> </div> <div class="stat-card"> <h3>3</h3> <p>اولویت متوسط (ارسال روزانه)</p> </div> <div class="stat-card"> <h3>5</h3> <p>اولویت عادی (پیام‌های معمولی)</p> </div> <div class="stat-card"> <h3>7</h3> <p>اولویت پایین (پیام‌های غیرضروری)</p> </div> </div> <h4>محدودیت‌های Telegram:</h4> <ul> <li><strong>30 پیام در ثانیه</strong> برای هر ربات</li> <li><strong>20 پیام در دقیقه</strong> برای هر چت</li> <li><strong>1 پیام در ثانیه</strong> برای هر چت (بهترین حالت)</li> </ul> <h3>مشکلات رایج</h3> <h4>Worker اجرا نمی‌شود:</h4> <div class="code-block"> <pre><span class="comment"># بررسی دسترسی فایل</span> chmod +x telegram_worker.php <span class="comment"># بررسی مسیر PHP</span> which php <span class="comment"># اجرای دستی برای تست</span> php telegram_worker.php</pre> </div> <h4>پیام‌ها در صف می‌مانند:</h4> <ul> <li>بررسی اجرای Cron Job</li> <li>بررسی لاگ‌های خطا</li> <li>بررسی محدودیت‌های API</li> </ul> <h4>خطاهای API:</h4> <ul> <li>بررسی توکن ربات</li> <li>بررسی محدودیت‌های Telegram</li> <li>بررسی وضعیت کاربران</li> </ul> <h4>پیام‌های Stuck:</h4> <ul> <li>استفاده از دکمه "بازگرداندن پیام‌های Stuck"</li> <li>بررسی لاگ‌های Worker</li> <li>تنظیم مجدد Cron Job</li> </ul> <h3>آمار و گزارش‌گیری</h3> <h4>لاگ‌ها:</h4> <ul> <li><code>queue_worker.log</code> - لاگ Worker</li> <li><code>daily_send_queue.log</code> - لاگ ارسال روزانه</li> <li><code>admin_queue.log</code> - لاگ ارسال ادمین</li> </ul> <h4>آمار دیتابیس:</h4> <div class="code-block"> <pre><span class="comment">-- آمار کلی صف</span> <span class="keyword">SELECT</span> status, <span class="keyword">COUNT</span>(*) <span class="keyword">as</span> count <span class="keyword">FROM</span> message_queue <span class="keyword">GROUP BY</span> status; <span class="comment">-- پیام‌های امروز</span> <span class="keyword">SELECT</span> <span class="keyword">COUNT</span>(*) <span class="keyword">as</span> today_messages <span class="keyword">FROM</span> message_queue <span class="keyword">WHERE</span> <span class="keyword">DATE</span>(created_at) = <span class="keyword">CURDATE</span>(); <span class="comment">-- نرخ موفقیت</span> <span class="keyword">SELECT</span> <span class="keyword">COUNT</span>(<span class="keyword">CASE WHEN</span> status = <span class="string">'sent'</span> <span class="keyword">THEN</span> 1 <span class="keyword">END</span>) <span class="keyword">as</span> sent, <span class="keyword">COUNT</span>(*) <span class="keyword">as</span> total, <span class="keyword">ROUND</span>(<span class="keyword">COUNT</span>(<span class="keyword">CASE WHEN</span> status = <span class="string">'sent'</span> <span class="keyword">THEN</span> 1 <span class="keyword">END</span>) * 100.0 / <span class="keyword">COUNT</span>(*), 2) <span class="keyword">as</span> success_rate <span class="keyword">FROM</span> message_queue;</pre> </div> <div class="alert alert-success"> <h4><i class="fas fa-check-circle me-2"></i>سیستم صف آماده!</h4> <p>سیستم صف‌بندی پیام‌ها آماده استفاده است و تمام فعالیت‌های ربات را مدیریت می‌کند.</p> </div> </div> </div> <!-- Trial Tab --> <div class="tab-pane fade" id="trial" role="tabpanel"> <div class="section"> <h2><i class="fas fa-flask me-2"></i>سیستم اشتراک آزمایشی</h2> <h3>معرفی سیستم</h3> <p>سیستم اشتراک آزمایشی به کاربران جدید امکان استفاده رایگان از تمام امکانات ربات را برای مدت محدود می‌دهد.</p> <div class="feature-grid"> <div class="feature-card"> <h4><i class="fas fa-star"></i>ویژگی‌ها</h4> <ul> <li>4 روز دسترسی کامل</li> <li>دریافت ویدئوهای روزانه</li> <li>دسترسی به تمام دسته‌بندی‌ها</li> <li>آمار کامل ویدئوها</li> <li>پیام‌های مخصوص آزمایشی</li> </ul> </div> <div class="feature-card"> <h4><i class="fas fa-cogs"></i>قابلیت‌ها</h4> <ul> <li>فعال/غیرفعال کردن از پنل</li> <li>تنظیم تعداد روزهای آزمایشی</li> <li>ویرایش پیام‌های خوش‌آمدگویی</li> <li>مدیریت خودکار انقضا</li> <li>آمار کاربران آزمایشی</li> </ul> </div> </div> <h3>نحوه عملکرد</h3> <h4>1. فعال کردن اشتراک آزمایشی:</h4> <ol> <li>دسترسی به <code>admin/trial_settings.php</code></li> <li>فعال کردن گزینه "فعال کردن اشتراک آزمایشی"</li> <li>تنظیم تعداد روزها (پیش‌فرض: 4 روز)</li> <li>ذخیره تنظیمات</li> </ol> <h4>2. ثبت‌نام کاربر جدید:</h4> <ol> <li>کاربر دستور <code>/start</code> را ارسال می‌کند</li> <li>سیستم بررسی می‌کند که اشتراک آزمایشی فعال است</li> <li>وضعیت کاربر به <code>trial</code> تغییر می‌کند</li> <li>تاریخ انقضا تنظیم می‌شود (4 روز بعد)</li> <li>پیام خوش‌آمدگویی آزمایشی ارسال می‌شود</li> </ol> <h4>3. انقضای اشتراک:</h4> <ol> <li>Cron Job روزانه اجرا می‌شود</li> <li>کاربران آزمایشی منقضی شده شناسایی می‌شوند</li> <li>وضعیت به <code>blocked</code> تغییر می‌کند</li> <li>پیام انقضا ارسال می‌شود</li> </ol> <h3>تنظیمات</h3> <h4>تنظیمات قابل تغییر:</h4> <div class="code-block"> <pre><span class="comment"># تنظیمات در جدول settings</span> trial_enabled <span class="comment"># فعال/غیرفعال بودن</span> trial_days <span class="comment"># تعداد روزهای آزمایشی</span> trial_message <span class="comment"># پیام شروع اشتراک</span> trial_expired_message <span class="comment"># پیام انقضای اشتراک</span></pre> </div> <h4>متغیرهای قابل استفاده در پیام‌ها:</h4> <ul> <li><code>{first_name}</code> - نام کاربر</li> <li><code>{trial_end_date}</code> - تاریخ انقضای اشتراک</li> <li><code>{expired_date}</code> - تاریخ انقضا (در پیام انقضا)</li> </ul> <h3>پیام‌های پیش‌فرض</h3> <h4>پیام شروع اشتراک آزمایشی:</h4> <div class="code-block"> <pre>🎉 تبریک! شما 4 روز اشتراک آزمایشی رایگان دریافت کردید! ✨ امکانات شما: • دریافت ویدئوهای ویرال روزانه • دسترسی به تمام دسته‌بندی‌ها • آمار کامل ویدئوها ⏰ اشتراک شما تا {trial_end_date} معتبر است. 💎 برای ادامه استفاده، اشتراک Pro تهیه کنید.</pre> </div> <h4>پیام انقضای اشتراک آزمایشی:</h4> <div class="code-block"> <pre>⚠️ اشتراک آزمایشی شما به پایان رسید 👋 سلام {first_name} عزیز! ⏰ اشتراک آزمایشی 4 روزه شما در تاریخ {expired_date} به پایان رسیده است. 🔒 دسترسی شما محدود شده است: • دریافت ویدئوهای روزانه متوقف شد • دسترسی به دسته‌بندی‌های Pro محدود شد • پشتیبانی اولویت‌دار غیرفعال شد 💎 برای تمدید اشتراک Pro با پشتیبانی تماس بگیرید: 📞 @ExploreAI_Support 💡 می‌توانید از خدمات رایگان ربات استفاده کنید.</pre> </div> <h3>تنظیمات Cron Job</h3> <h4>بررسی انقضای اشتراک‌های آزمایشی:</h4> <div class="code-block"> <pre><span class="comment"># هر روز ساعت 2 صبح</span> 0 2 * * * /usr/bin/php /path/to/check_trial_expiry.php >> /var/log/explore_ai_trial_check.log 2>&1 <span class="comment"># با پردازش فوری</span> 0 2 * * * /usr/bin/php /path/to/check_trial_expiry.php --process >> /var/log/explore_ai_trial_check.log 2>&1</pre> </div> <h3>وضعیت‌های کاربر</h3> <div class="stats-grid"> <div class="stat-card"> <h3>Trial</h3> <p>اشتراک آزمایشی فعال</p> </div> <div class="stat-card"> <h3>Pro</h3> <p>اشتراک Pro</p> </div> <div class="stat-card"> <h3>Blocked</h3> <p>مسدود/منقضی شده</p> </div> <div class="stat-card"> <h3>Pending</h3> <p>در انتظار تایید</p> </div> </div> <h3>ویژگی‌های کلیدی</h3> <h4>✅ فقط کاربران جدید:</h4> <p>تغییرات فقط روی کاربران جدید تأثیر می‌گذارد. کاربران فعلی تحت تأثیر قرار نمی‌گیرند.</p> <h4>✅ قابل کنترل:</h4> <ul> <li>فعال/غیرفعال کردن از پنل مدیریت</li> <li>تنظیم تعداد روزهای آزمایشی</li> <li>ویرایش پیام‌ها</li> </ul> <h4>✅ خودکار:</h4> <ul> <li>بررسی انقضا توسط Cron Job</li> <li>تغییر وضعیت خودکار</li> <li>ارسال پیام انقضا</li> </ul> <h4>✅ یکپارچه:</h4> <ul> <li>استفاده از سیستم صف</li> <li>لاگ‌گیری کامل</li> <li>آمار و گزارش‌گیری</li> </ul> <h3>آمار کاربران آزمایشی</h3> <h4>از طریق پنل مدیریت:</h4> <ul> <li>تعداد کاربران آزمایشی فعال</li> <li>تعداد اشتراک‌های معتبر</li> <li>تعداد اشتراک‌های منقضی شده</li> </ul> <h4>از طریق دیتابیس:</h4> <div class="code-block"> <pre><span class="comment">-- آمار کاربران آزمایشی</span> <span class="keyword">SELECT</span> <span class="keyword">COUNT</span>(*) <span class="keyword">FROM</span> users <span class="keyword">WHERE</span> status = <span class="string">'trial'</span>; <span class="comment">-- اشتراک‌های معتبر</span> <span class="keyword">SELECT</span> <span class="keyword">COUNT</span>(*) <span class="keyword">FROM</span> users <span class="keyword">WHERE</span> status = <span class="string">'trial'</span> <span class="keyword">AND</span> subscription_end_date > <span class="keyword">NOW</span>(); <span class="comment">-- اشتراک‌های منقضی شده</span> <span class="keyword">SELECT</span> <span class="keyword">COUNT</span>(*) <span class="keyword">FROM</span> users <span class="keyword">WHERE</span> status = <span class="string">'trial'</span> <span class="keyword">AND</span> subscription_end_date <= <span class="keyword">NOW</span>();</pre> </div> <div class="alert alert-success"> <h4><i class="fas fa-check-circle me-2"></i>سیستم آزمایشی آماده!</h4> <p>حالا کاربران جدید 4 روز اشتراک آزمایشی رایگان دریافت می‌کنند!</p> </div> </div> </div> </div> <!-- Footer --> <div class="footer"> <h3><i class="fas fa-robot me-2"></i>ربات هوش مصنوعی Explore AI</h3> <p>سیستم کامل مدیریت محتوای وایرال با قابلیت‌های پیشرفته</p> <p> <a href="https://t.me/ExploreAI_Support"><i class="fab fa-telegram me-2"></i>پشتیبانی تلگرام</a> | <a href="mailto:support@example.com"><i class="fas fa-envelope me-2"></i>ایمیل پشتیبانی</a> </p> <p><small>نسخه 3.1.0 - آخرین به‌روزرسانی: 1403/10/15</small></p> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-core.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js"></script> <script> // Smooth scrolling for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); const target = document.querySelector(this.getAttribute('href')); if (target) { target.scrollIntoView({ behavior: 'smooth', block: 'start' }); } }); }); // Add fade-in animation to sections const observerOptions = { threshold: 0.1, rootMargin: '0px 0px -50px 0px' }; const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('fade-in'); } }); }, observerOptions); document.querySelectorAll('.section').forEach(section => { observer.observe(section); }); // Auto-refresh for queue monitoring (if on queue tab) let refreshInterval; const queueTab = document.getElementById('queue-tab'); queueTab.addEventListener('click', function() { if (refreshInterval) { clearInterval(refreshInterval); } // Auto-refresh every 30 seconds when on queue tab refreshInterval = setInterval(() => { // This would typically reload queue data via AJAX console.log('Refreshing queue data...'); }, 30000); }); // Clear interval when switching away from queue tab document.querySelectorAll('.nav-link').forEach(tab => { tab.addEventListener('click', function() { if (this.id !== 'queue-tab' && refreshInterval) { clearInterval(refreshInterval); } }); }); // Add copy functionality to code blocks document.querySelectorAll('.code-block').forEach(block => { const copyBtn = document.createElement('button'); copyBtn.className = 'btn btn-sm btn-outline-light position-absolute top-0 end-0 m-2'; copyBtn.innerHTML = '<i class="fas fa-copy"></i>'; copyBtn.style.zIndex = '10'; copyBtn.addEventListener('click', function() { const text = block.querySelector('pre').textContent; navigator.clipboard.writeText(text).then(() => { copyBtn.innerHTML = '<i class="fas fa-check"></i>'; setTimeout(() => { copyBtn.innerHTML = '<i class="fas fa-copy"></i>'; }, 2000); }); }); block.style.position = 'relative'; block.appendChild(copyBtn); }); </script> </body> </html>
Proudly Served by LiteSpeed Web Server at berozposh.ir Port 443