Index of /
| Name | Last Modified | Size |
|---|---|---|
| 2025-11-02 12:25 | - | |
| 2025-10-28 09:02 | - | |
| 2025-10-25 20:15 | 3k | |
| 2025-10-28 20:07 | 1k | |
| 2025-10-28 14:05 | 2k | |
| 2025-11-02 12:31 | 72k | |
| 2025-12-02 07:59 | 181k | |
| 2025-10-21 10:14 | 7k | |
| 2025-10-21 11:02 | 7k | |
| 2025-11-02 12:34 | 3k | |
| 2025-10-27 08:53 | 1k | |
| 2025-10-21 10:14 | 6k | |
| 2025-11-02 11:29 | 10k | |
| 2025-12-03 09:30 | 1k | |
| 2025-11-02 11:03 | 46k | |
| 2025-12-03 20:43 | 50k | |
| 2025-12-04 03:30 | 1k | |
| 2025-12-03 22:30 | 1k | |
| 2025-10-28 18:13 | 8k | |
| 2025-12-02 07:59 | 1593k | |
| 2025-10-28 09:12 | 7k | |
| 2025-11-02 11:29 | 6k | |
| 2025-10-22 10:51 | 18k | |
| 2025-10-22 10:01 | 9k | |
| 2025-12-04 03:30 | 79k | |
| 2025-10-25 19:58 | 21k | |
| 2025-12-03 16:31 | 26450k | |
| 2025-10-28 09:12 | 30k | |
| 2025-10-28 09:13 | 6k | |
| 2025-10-28 09:13 | 5k | |
| 2025-10-28 11:00 | 1k | |
| 2025-10-22 08:17 | 4k | |
| 2025-10-13 08:39 | 2k | |
| 2025-10-28 09:13 | 13k | |
| 2025-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