# 🤖 راهنمای نصب - ربات فوروارد Multi-Tenant

## معماری سیستم

```
یک ربات تلگرام
├── ✈️ ایران فلای
│   ├── کانال منبع خاص خودش
│   ├── گروه‌های هدف خودش
│   ├── پیام‌های زمان‌بندی خودش
│   └── ادمین‌های مستقل
└── 🎫 فلای تیکت
    ├── کانال منبع خاص خودش
    ├── گروه‌های هدف خودش
    ├── پیام‌های زمان‌بندی خودش
    └── ادمین‌های مستقل
```

## سطوح دسترسی

| نوع | توضیح | تنظیم |
|-----|-------|-------|
| **سوپر ادمین** | دسترسی به همه شرکت‌ها | از `.env` با `TELEGRAM_SUPER_ADMIN_IDS` |
| **ادمین شرکت** | فقط شرکت خودش | از داخل ربات توسط سوپر ادمین |

---

## ۱. ایجاد پروژه

```bash
composer create-project laravel/laravel telegram-bot
cd telegram-bot
```

## ۲. کپی فایل‌ها

```
app/Models/           Company.php, Admin.php, TargetGroup.php,
                      ScheduledMessage.php, SendLog.php
app/Services/         TelegramService.php, BotHandlerService.php, BotStateService.php
app/Jobs/             SendScheduledMessagesJob.php
app/Http/Controllers/ TelegramWebhookController.php
app/Console/Commands/ SetupTelegramWebhook.php
config/               telegram.php
database/migrations/  (همه فایل‌های migration)
routes/               api.php, console.php
```

## ۳. تنظیم .env

```bash
cp .env.example .env
php artisan key:generate
```

```env
APP_URL=https://yourdomain.com
DB_DATABASE=telegram_bot
TELEGRAM_BOT_TOKEN=توکن_از_BotFather
TELEGRAM_SUPER_ADMIN_IDS=آیدی_عددی_شما
TELEGRAM_WEBHOOK_SECRET=یک_رشته_تصادفی
```

## ۴. اجرا

```bash
composer install
php artisan migrate
php artisan telegram:webhook set
```

## ۵. Cron

```bash
crontab -e
# اضافه کنید:
* * * * * cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1
```

## ۶. Queue Worker با Supervisor

```ini
[program:telegram-bot]
command=php /path/to/project/artisan queue:work redis --sleep=3 --tries=3
autostart=true
autorestart=true
numprocs=2
stdout_logfile=/path/to/project/storage/logs/worker.log
```

---

## نحوه استفاده

### اولین بار (سوپر ادمین):
1. `/start` بزنید → منوی انتخاب شرکت
2. شرکت مورد نظر را انتخاب کنید
3. از منو → **مدیریت ادمین‌ها** → ادمین اضافه کنید
4. گروه‌ها را اضافه کنید
5. پیام‌های زمان‌بندی بسازید

### ادمین شرکت:
- `/start` بزنید → مستقیم وارد منوی شرکتش می‌شود
- فقط داده‌های شرکت خودش را می‌بیند

### تنظیم کانال پیش‌فرض شرکت:
در جدول `companies` فیلد `source_channel` را set کنید تا هنگام ساخت پیام جدید نیازی به وارد کردن کانال نباشد.

```sql
UPDATE companies SET source_channel = '@iranfly_channel' WHERE slug = 'iranfly';
UPDATE companies SET source_channel = '@flyticket_channel' WHERE slug = 'flyticket';
```
