# راهنمای هاستینگ اشتراکی

## فایل‌های ضروری که باید آپلود کنید

این فایل‌ها باید در هاست شما باشند:

```
required_files.txt
```

### فایل‌های PHP (۳۴ فایل)

**نصب و پیکربندی:**
- setup.php - صفحه نصب حیاتی است!
- bootstrap.php - بارگذاری خودکار

**نقاط ورودی:**
- public/webhook.php - پردازشگر اصلی
- bot.php - مدیریت خط فرمان
- cron_processor.php - برای cron

**تنظیمات:**
- .env - بعد از نصب ساخته می‌شود
- config/database.php

**ساختار دیتابیس:**
- database/migrations/001_create_users_table.sql
- database/migrations/002_create_games_table.sql
- database/migrations/003_create_game_players_table.sql
- database/migrations/004_create_player_influences_table.sql
- database/migrations/005_create_deck_cards_table.sql
- database/migrations/006_create_faction_cards_table.sql
- database/migrations/007_create_game_actions_log_table.sql
- database/migrations/008_create_pending_interactions_table.sql

**کد اصلی (src/):**
- Domain/ - 6 فایل
- Engine/ - 7 فایل
- Controller/ - 3 فایل
- Repository/ - 4 فایل
- Service/ - 4 فایل
- AI/ - 4 فایل
- Utils/ - 2 فایل

## گام‌به‌گام نصب

### ۱. آپلود فایل‌ها

از FTP Client یا File Manager هاست استفاده کنید:

۱. به پوشه `public_html` بروید
۲. تمام فایل‌ها را آپلود کنید
۳. مطمئن شوید ساختار فولدرها حفظ شده

### ۲. ساخت دیتابیس

در cPanel یا پنل هاست:

۱. MySQL Databases را پیدا کنید
۲. دیتابیس جدید بسازید:
   - نام: `coup_game` (یا هر نام دلخواه)
۳. کاربر جدید بسازید:
   - نام: `coup_user`
   - رمز: انتخاب کنید
۴. کاربر را به دیتابیس متصل کنید
۵. تمام PRIVILEGES را بدهید

### ۳. نصب از مرورگر

۱. مرورگر را باز کنید
۲. بروید به: `https://yourdomain.com/setup.php`
۳. مرحله به مرحله پیش بروید:
   - خوش‌آمدگویی (Start)
   - اطلاعات دیتابیس
   - توکن ربات
   - نصب خودکار

### ۴. تنظیم Webhook

نصب‌کننده webhook را خودکار تنظیم می‌کند، اما برای اطمینان:

```bash
# در مرورگر (فقط توکن را جایگزین کنید):
https://api.telegram.org/bot8705403228:AAHlHH-Omw3Y-3L0hIvW995IB5KQT9FvSI4/setWebhook?url=https://yourdomain.com/public/webhook.php
```

### ۵. تست ربات

در تلگرام:
```
/start
```

اگر پیام خوش‌آمدگویی دریافت کردید، همه چیز آماده است!

## تنظیم Cron Job

### در cPanel:

۱. به "Cron Jobs" بروید
۲. "Add New" را بزنید
۳. تنظیمات:
   - Minute: `*/30`
   - Hour: `*`
   - Day: `*`
   - Month: `*`
   - Weekday: `*`
   - Command: `/usr/bin/php /home/youruser/public_html/cron_processor.php`

۴. ذخیره کنید

### پیدا کردن مسیر PHP:

```php
// یک فایل phpinfo.php بسازید:
<?php phpinfo(); ?>

// در مرورگر باز کنید و "Loaded Configuration File" را پیدا کنید
// یا از هاستینگ بپرسید
```

## پرمیشن‌های فایل

به طور معمول این‌ها درست هستند:
- PHP files: 644
- پوشه‌ها: 755
- logs: 777 (برای نوشتن)

اگر مشکلی بود، از FTP Client راست کلیک کنید و "Change Permissions" را بزنید.

## خطاهای رایج

### 500 Internal Server Error

**علت:** خطای PHP یا خط آپلود ناقص

**راه‌حل:**
۱. log خطا را چک کنید
۲. فایل‌های دات‌آپلود را چک کنید
۳. نسخه PHP را چک کنید (حداقل 8.2)

### "Class not found" Error

**علت:** فایل bootstrap.php درست لود نشده

**راه‌حل:**
۱. مطمئن شوید webhook.php اولش `require_once __DIR__ . '/../bootstrap.php';` دارد
۲. bootstrap.php وجود دارد

### Database Connection Failed

**علت:** اطلاعات دیتابیس اشتباه

**راه‌حل:**
۱. .env را چک کنید
۲. دیتابیس وجود دارد؟
۳. کاربر دسترسی دارد؟
۴. اطلاعات phpMyAdmin با .env یکی است؟

### Webhook Not Working

**علت:** آدرس webhook اشتباه

**راه‌حل:**
۱. آدرس را چک کنید:
   ```
   https://api.telegram.org/bot<TOKEN>/getWebhookInfo
   ```
۲. URL باید https باشد (نه http)
۳. فایل webhook.php در پوشه public/ است

### Cron Job Not Running

**علت:** مسیر PHP یا فایل اشتباه

**راه‌حل:**
۱. مسیر PHP صحیح است؟
۲. مسیر فایل cron_processor.php صحیح است؟
۳. log فایل را چک کنید: logs/cron.log

## تست کردن کامپوننت‌ها

### تست دیتابیس:
```php
// یک فایل test_db.php بسازید:
<?php
require 'bootstrap.php';
try {
    Coup\Config\Database::getConnection();
    echo "Database OK!";
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}
?>
```

### تست webhook:
```bash
curl -X POST https://yourdomain.com/public/webhook.php \
     -H "Content-Type: application/json" \
     -d '{"update_id":123,"message":{"message_id":1,"from":{"id":123456},"chat":{"id":123456},"date":1234567890,"text":"/start"}}'
```

### تست تلگرام:
```
/start
/help
/create
```

## راهنمای BotFather

اگر ربات ندارید:

۱. در تلگرام @BotFather را پیدا کنید
۲. `/newbot` بزنید
۳. نام ربات انتخاب کنید (مثلا "Coup Bot")
۴. username انتخاب کنید (مثلا "my_coup_bot")
۵. توکن دریافت کنید (شبیه: 123456789:ABC...)
۶. توکن را در نصب‌کننده وارد کنید

## امنیت

### توک‌ها و پسوردها:
- هرگز توکن ربات را فاش نکنید
- .env را در دسترس عموم نگذارید
- رمز دیتابیس قوی انتخاب کنید

### HTTPS:
- حتما HTTPS استفاده کنید
- SSL Certificate رایگان از Let's Encrypt بگیرید

## نگهداری

### به‌روزرسانی:
- هر چند وقت یک بار به `/start` بزنید
- اگر مشکی دید، نصب مجدد کنید

### Backup:
- دیتابیس را به‌طور منظم backup بگیرید
- فایل .env را backup کنید

### پایش:
- log فایل‌ها را گاهی چک کنید
- webhook info را چک کنید

---

**موفق باشید! 🎮**

اگر سوالی دارید، INSTALL.md و CHECKLIST.md را ببینید.
