# 🔔 Worker Scripts - راهنمای اسکریپت‌های خودکار

این پوشه شامل اسکریپت‌هایی است که باید به صورت دوره‌ای و خودکار اجرا شوند.

## 📋 فهرست Worker ها

### 1. `expiry_reminder_worker.php` - یادآوری انقضای سرویس

این worker به کاربران یادآوری می‌کند که سرویس‌شان در حال انقضا است.

**زمان‌بندی یادآورها:**
- 🔔 **۲ روز قبل** از انقضا
- ⚠️ **۱ روز قبل** از انقضا  
- 🔴 **روز انقضا**

**پیام‌ها شامل:**
- اطلاعات سرویس (پلن، قیمت، تاریخ انقضا)
- دکمه "🛒 خرید سرویس جدید"
- دکمه "📦 سرویس‌های من"
- دکمه "💰 کیف پول"

---

## 🚀 راه‌اندازی با Cron Job

### گام ۱: دسترسی به Cron

در سرور لینوکس خود وارد crontab شوید:

```bash
crontab -e
```

### گام ۲: افزودن Job

یکی از گزینه‌های زیر را بر اساس نیازتان اضافه کنید:

#### ✅ پیشنهادی: هر روز ساعت ۹ صبح

```bash
0 9 * * * /usr/bin/php /path/to/telegram-bot/worker/expiry_reminder_worker.php >> /path/to/telegram-bot/worker/expiry_reminder.log 2>&1
```

#### گزینه‌های دیگر:

**هر روز ساعت ۸ صبح:**
```bash
0 8 * * * /usr/bin/php /path/to/telegram-bot/worker/expiry_reminder_worker.php >> /path/to/telegram-bot/worker/expiry_reminder.log 2>&1
```

**دو بار در روز (صبح ۹ و عصر ۶):**
```bash
0 9,18 * * * /usr/bin/php /path/to/telegram-bot/worker/expiry_reminder_worker.php >> /path/to/telegram-bot/worker/expiry_reminder.log 2>&1
```

**هر ۱۲ ساعت:**
```bash
0 */12 * * * /usr/bin/php /path/to/telegram-bot/worker/expiry_reminder_worker.php >> /path/to/telegram-bot/worker/expiry_reminder.log 2>&1
```

### گام ۳: ذخیره و خروج

- در nano: `Ctrl+X` سپس `Y` سپس `Enter`
- در vim: `ESC` سپس `:wq`

### گام ۴: بررسی Cron Jobs فعال

```bash
crontab -l
```

---

## 🔧 تنظیمات سرور

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

```bash
which php
```

خروجی معمولا یکی از این‌هاست:
- `/usr/bin/php`
- `/usr/local/bin/php`
- `/opt/php/bin/php`

### تست دستی Worker:

```bash
php /path/to/telegram-bot/worker/expiry_reminder_worker.php
```

### بررسی لاگ‌ها:

```bash
tail -f /path/to/telegram-bot/worker/expiry_reminder.log
```

یا لاگ اصلی:
```bash
tail -f /path/to/telegram-bot/storage/logs/app.log
```

---

## 📊 مانیتورینگ

### بررسی وضعیت Cron Service:

```bash
sudo systemctl status cron
```

یا:
```bash
sudo service cron status
```

### بررسی لاگ‌های سیستمی Cron:

```bash
grep CRON /var/log/syslog | tail -20
```

---

## 🛠️ عیب‌یابی

### ۱. Cron اجرا نمی‌شود؟

بررسی کنید:
- آیا سرویس cron فعال است؟ `sudo systemctl start cron`
- آیا مسیر PHP صحیح است? `which php`
- آیا دسترسی‌ها درست است؟ `chmod +x expiry_reminder_worker.php`

### ۲. خطاهای PHP

لاگ‌ها را بررسی کنید:
```bash
cat /path/to/telegram-bot/worker/expiry_reminder.log
```

### ۳. دیتابیس متصل نمی‌شود

مطمئن شوید فایل `.env` در مسیر صحیح است و اطلاعات دیتابیس درست است.

---

## 🎯 نکات مهم

1. **Time Zone:** مطمئن شوید timezone سرور و PHP یکسان است
2. **Permissions:** فایل worker باید قابل اجرا باشد
3. **Path:** همیشه از مسیر کامل (absolute path) استفاده کنید
4. **Logs:** همیشه خروجی را به فایل لاگ بفرستید تا بتوانید مشکلات را پیدا کنید
5. **Testing:** قبل از اضافه کردن به cron، یکبار به صورت دستی تست کنید

---

## 📝 مثال کامل

```bash
# باز کردن crontab
crontab -e

# اضافه کردن این خط:
0 9 * * * /usr/bin/php /var/www/telegram-bot/worker/expiry_reminder_worker.php >> /var/www/telegram-bot/worker/expiry_reminder.log 2>&1

# ذخیره و خروج
# سپس بررسی:
crontab -l
```

---

## 🔄 Alternatives (جایگزین‌ها)

اگر به cPanel دسترسی دارید:
1. وارد **Cron Jobs** شوید
2. **Add New Cron Job** را بزنید
3. تنظیمات زمانی را انتخاب کنید (مثلا هر روز ساعت ۹ صبح)
4. دستور را وارد کنید:
   ```
   /usr/bin/php /home/username/public_html/telegram-bot/worker/expiry_reminder_worker.php
   ```
5. ذخیره کنید

---

## 📞 پشتیبانی

اگر مشکلی داشتید:
1. لاگ‌ها را بررسی کنید
2. Worker را به صورت دستی اجرا کنید
3. خطاها را در `app.log` و `expiry_reminder.log` جستجو کنید

---

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

