# 🤖 ربات مدیریت برنامه‌های روزانه تلگرام 💕

یک ربات تلگرام زیبا و عاشقانه برای مدیریت و یادآوری برنامه‌های روزانه

## ✨ ویژگی‌ها

- 📅 ثبت برنامه‌های روزانه با زمان دقیق
- ⏰ یادآوری خودکار و هوشمند در زمان مشخص شده
- 🌅 پیام‌های ویژه برای ساعت‌های بیدار شدن (مثل ساعت 2 صبح)
- 💖 پیام‌های عاشقانه و شخصی‌سازی شده بر اساس احساسات
- ✅ علامت‌گذاری کارهای انجام شده
- 📋 نمایش کارهای امروز
- 😊 پاسخ‌های بانمک به تشکر و پیام‌های مثبت
- 📊 **سیستم تحلیل پیشرفته عملکرد و آمار**
- 🎯 **سیستم گیمیفیکیشن و امتیازدهی**
- 💡 **پیشنهادهای هوشمند بر اساس الگوهای رفتاری**
- 🔄 **پشتیبان‌گیری خودکار داده‌ها**
- 🎭 **استیکرهای پیشفرض هوشمند**
- 🧠 **تشخیص احساسات و پاسخ‌های مناسب**
- 📈 **یادآوری‌های شخصی‌سازی شده**

## 🚀 نصب و راه‌اندازی (Node.js)

### پیش‌نیازها:
- Node.js نسخه 14 یا بالاتر
- npm یا yarn

### مراحل نصب:

1. نصب پکیج‌های مورد نیاز:
```bash
npm install
```

2. دریافت توکن ربات از [@BotFather](https://t.me/BotFather) در تلگرام

3. ایجاد فایل `.env` و قرار دادن توکن:
```bash
# کپی کردن فایل نمونه
cp env.example .env

# یا به صورت دستی فایل .env بسازید و این را در آن بنویسید:
BOT_TOKEN=توکن_ربات_تو_اینجا_بذار
```

**⚠️ هشدار امنیتی:** برای امنیت بیشتر، **هرگز** توکن را مستقیماً در کد قرار ندهید. همیشه از متغیرهای محیطی استفاده کنید.

اگر نمی‌خواهید از فایل `.env` استفاده کنید، می‌توانید مستقیماً متغیر محیطی تنظیم کنید:
```bash
export BOT_TOKEN=توکن_ربات_تو
node bot.js
```

4. اجرای ربات:

**روش 1: اجرای ساده**
```bash
npm start
```

یا:
```bash
node bot.js
```

**روش 2: اجرای دائمی با PM2 (توصیه می‌شود برای هاست)**
```bash
# نصب PM2 (یکبار)
npm install -g pm2

# اجرای ربات با PM2
npm run pm2:start

# مشاهده لاگ‌ها
npm run pm2:logs

# توقف ربات
npm run pm2:stop

# راه‌اندازی مجدد
npm run pm2:restart
```

PM2 ربات را به صورت دائمی اجرا می‌کند و در صورت crash، خودکار restart می‌شود.

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

### اضافه کردن کار جدید:
```
ساعت ۱۴:۳۰، برو ورزش
۱۶:۰۰، زنگ بزن به مامان
ساعت ۲:۰۰، بیدار شو
```

### دستورات:
- `/start` - شروع ربات و نمایش راهنما
- `/help` - نمایش راهنما
- `/today` - نمایش کارهای امروز
- `/report` - گزارش عملکرد روزانه
- `/stats` - نمایش آمار کامل و تحلیل عملکرد
- `/suggest` - دریافت پیشنهادهای هوشمند
- `/motivate` - پیام انگیزشی و استیکر
- `/set_lazy` - تنظیم استیکر تنبل
- `/set_scenario1` - تنظیم استیکر نصیحت
- `/set_scenario2_yes` - تنظیم استیکر اعتراض (آره)
- `/set_scenario2_no` - تنظیم استیکر اعتراض (نه)

### پاسخ به تشکر و پیام‌های مثبت:
ربات به طور خودکار به پیام‌هایی مثل:
- سلام، خوبی، ممنون، مرسی
- عالی، خوب، قشنگ
- بهترینی، بانمکی
و... پاسخ‌های بانمک می‌دهد! 😊

### تنظیم استیکرها:
1. **استیکرهای موفقیت**: هر استیکری که بفرستید، به لیست استیکرهای موفقیت اضافه می‌شود
2. **استیکر تنبل**: `/set_lazy` سپس استیکر بفرستید
3. **استیکرهای سناریو**: از دستورات مربوطه استفاده کنید

### استیکرهای پیشفرض:
ربات دارای استیکرهای پیشفرض بانمک است که در صورت عدم تنظیم استیکر سفارشی استفاده می‌شوند:

| نوع استیکر | فایل | کاربرد |
|------------|------|--------|
| 🎭 تنبل | `stik/6.webm` | وقتی کار را انجام ندادی |
| 💡 نصیحت | `stik/1.webm` | سناریوی نصیحت |
| 😂 اعتراض (آره) | `stik/2.webp` | پاسخ آره به اعتراض |
| 😊 اعتراض (نه) | `stik/3.webm` | پاسخ نه به اعتراض |
| ✅ موفقیت | `stik/3.webm`, `stik/5.webp` | وقتی کار را انجام دادی |

**نکته:** می‌توانید با دستورات `/set_*` استیکرهای خود را تنظیم کنید!

### سیستم گزارش روزانه:
ربات می‌تواند عملکرد روزانه شما را گزارش دهد:
- تعداد کارهایی که اصلا حواست نبود
- تعداد کارهایی که حواست بود اما انجام ندادی
- تعداد کارهایی که حواست بود و انجام دادی

### سناریوهای رندوم:
ربات گاهاً سناریوهای بانمکی رندوم مطرح می‌کند و با استیکر پاسخ می‌دهد!

### 🎯 ویژگی‌های هوشمند

#### 📊 سیستم تحلیل عملکرد
- تحلیل الگوهای رفتاری (صبح‌دوست یا شب‌دوست بودن)
- تشخیص procrastinator یا over-achiever بودن
- محاسبه نرخ consistency و ارائه توصیه‌ها
- تحلیل روند عملکرد هفتگی

#### 🧠 تشخیص هوشمند زمان و کار
- پشتیبانی از اعداد فارسی (۲۳:۰۰)
- تشخیص زمان بدون کلمه "ساعت" (23:00 خواب)
- پشتیبانی از فرمت‌های مختلف: `23:00`، `23 : 00`، `23 00`

#### 🎮 سیستم گیمیفیکیشن
- امتیازدهی برای تکمیل کارها
- سیستم سطح‌بندی (level)
- استریک‌های متوالی با بونوس
- روزهای کامل با جایزه ویژه
- پیام‌های انگیزشی شخصی‌سازی شده

#### 🧠 یادگیری از رفتارها
- تشخیص احساسات پیام‌ها (خوشحال، ناراحت، خنثی)
- انتخاب پیام‌ها بر اساس عملکرد گذشته
- پیشنهادهای هوشمند بر اساس زمان روز
- یادآوری‌های شخصی‌سازی شده

#### 💾 پشتیبان‌گیری خودکار
- پشتیبان‌گیری روزانه از همه داده‌ها
- پاکسازی خودکار پشتیبان‌های قدیمی
- بازیابی سریع در صورت مشکل
- پشتیبان‌گیری قبل از تغییرات مهم

#### 🎭 استیکرهای هوشمند
- استیکرهای پیشفرض برای همه حالت‌ها
- پاسخ به استیکرها با استیکر و پیام
- ذخیره خودکار استیکرهای دریافتی
- استیکرهای انگیزشی در زمان مناسب
- ارسال خودکار استیکر در یادآوری‌ها و سناریوها

## 📁 ساختار پروژه

- `bot.js` - فایل اصلی ربات
- `config.js` - تنظیمات و توکن
- `database.js` - مدیریت ذخیره داده‌ها
- `handlers.js` - هندلرهای دستورات
- `messages.js` - پیام‌های عاشقانه و هوشمند
- `reminders.js` - سیستم یادآوری هوشمند
- `analytics.js` - سیستم تحلیل عملکرد پیشرفته
- `gamification.js` - سیستم امتیازدهی و انگیزش
- `smartSuggestions.js` - سیستم پیشنهادهای هوشمند
- `backup.js` - سیستم پشتیبان‌گیری خودکار
- `stickers.json` - فایل استیکرها و تنظیمات
- `gamification.json` - داده‌های امتیازدهی (به صورت خودکار ساخته می‌شود)
- `package.json` - وابستگی‌های پروژه
- `tasks.json` - فایل ذخیره وظایف (به صورت خودکار ساخته می‌شود)

## 💕 نکات مهم

- ربات دقیقاً در زمان مشخص شده یادآوری می‌کند
- برای ساعت‌های بیدار شدن (قبل از 6 صبح) پیام‌های ویژه ارسال می‌شود
- تمام داده‌ها در فایل `tasks.json` ذخیره می‌شوند
- ربات هر 30 ثانیه یکبار چک می‌کند که آیا زمان یادآوری رسیده یا نه

## 🔧 برای هاست

برای اجرا روی هاست Node.js:
1. فایل‌های پروژه را آپلود کنید
2. `npm install` را اجرا کنید
3. توکن ربات را در `.env` یا `config.js` قرار دهید
4. ربات را با PM2 اجرا کنید (توصیه می‌شود):
   ```bash
   npm install -g pm2
   npm run pm2:start
   ```

### مزایای PM2:
- ✅ اجرای دائمی ربات
- ✅ Restart خودکار در صورت crash
- ✅ مدیریت حافظه
- ✅ لاگ‌گیری خودکار
- ✅ جلوگیری از timeout و خطاهای اتصال

## 📦 وابستگی‌ها

- `telegraf` - کتابخانه ربات تلگرام
- `dotenv` - مدیریت متغیرهای محیطی (اختیاری)
