# Farnoud Bot

<p align="center">
  <img src="https://storage.filebin.net/filebin/eebf7c12552879ba80f9c90b134c33d8ad6fa85c3c752695ff2b90a707ec2757?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=GK352fd2505074fc9dde7fd2cb%2F20260823%2Fhel1-dc4%2Fs3%2Faws4_request&X-Amz-Date=20260823T143914Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D900&response-content-disposition=inline%3B%20filename%3D%22image.png_2K_202608231552.jpeg%22&response-content-type=image%2Fjpeg&x-id=GetObject&X-Amz-Signature=7f45bc03d39b46cbb97f0306af9b8fadbb98ca943b69d07be712284ad6672c4f" alt="Farnoud Bot" width="480"/>
</p>

<p align="center">
  <b>ربات فروش سرویس VPN + پنل مدیریت وب + Telegram Mini App</b><br/>
  رایگان و متن‌باز — توسعه‌یافته توسط <a href="https://github.com/FarnoudHosseini">Farnoud Hosseini</a>
</p>

<p align="center">
  <a href="https://t.me/+6vJiX_pRVcVjNWE0">گروه تلگرام پشتیبانی</a> ·
  <a href="https://donofa.ir/farnoudhosseini">حمایت مالی (Donate)</a> ·
  <a href="https://github.com/FarnoudHosseini/FarnoudBot">GitHub</a>
</p>

---

## نصب روی هاست / VPS (اوبونتو ۲۲.۰۴ / ۲۴.۰۴)

### روش ۱ — نصب یک‌خطی از گیت‌هاب

```bash
curl -sSL https://raw.githubusercontent.com/FarnoudHosseini/FarnoudBot/main/install.sh | sudo bash
```

### روش ۲ — نصب از فایل زیپ (همین نسخه)

```bash
# بعد از آپلود و استخراج زیپ روی سرور:
cd /path/to/FarnoudBot
sudo bash install.sh
```

اسکریپت به‌طور خودکار تشخیص می‌دهد که از پوشهٔ محلی اجرا شده و همان فایل‌ها را نصب می‌کند (نیازی به کلون از گیت نیست).

### روش ۳ — دانلود و اجرا

```bash
wget -O install.sh https://raw.githubusercontent.com/FarnoudHosseini/FarnoudBot/main/install.sh
sudo bash install.sh
```

منوی اسکریپت:

```
1) Full Install
2) Update
3) Uninstall
4) Finish / Resume / Fix packages
5) Restart Bot
0) Exit
```

### مراحل نصب خودکار
1. به‌روزرسانی سیستم و نصب پیش‌نیازها (Python, MySQL, Nginx, Certbot, UFW, Fail2ban)
2. دریافت دامنه (باید روی IP سرور ست شده باشد)
3. صدور و نصب گواهی SSL رایگان (Let's Encrypt)
4. دریافت توکن ربات از BotFather
5. دریافت آیدی عددی ادمین
6. ساخت دیتابیس با **پسورد تصادفی**، تکمیل کامل فایل `.env`، هش امن رمز ورود پنل وب
7. تنظیمات امنیتی نهایی + راه‌اندازی سرویس‌های systemd

پس از نصب، آدرس پنل و رمز ورود وب در خروجی نمایش داده می‌شود.

---

## نصب روی هاست / cPanel / aaPanel

راهنمای کامل و ساده (نصب‌کننده وب، Cron، Supervisor):

📘 **[README_HOSTING.md](README_HOSTING.md)**

خلاصه:
1. فایل‌ها را آپلود کنید و دامنه + SSL را وصل کنید.
2. در cPanel از **Setup Python App** با فایل `passenger_wsgi.py` استفاده کنید؛ در aaPanel با `gunicorn` + Supervisor.
3. مرورگر را باز کنید: `https://دامنه-شما/install` و فرم نصب را پر کنید.
4. Cron Jobها را با `cron_jobs.py` تنظیم کنید.

> مسیر نصب اوبونتو (`install.sh`) تغییری نکرده و مثل قبل کار می‌کند.

---

## تنظیم Mini App در BotFather

پس از نصب و فعال بودن SSL:

1. به [@BotFather](https://t.me/BotFather) بروید → `/mybots` → ربات خودتان.
2. **Bot Settings** → **Menu Button** (یا بخش Mini App).
3. این آدرس را وارد کنید (دامنه خودتان):
   ```
   https://your-domain.com/miniapp/
   ```
4. در پنل وب ربات هم می‌توانید URL مینی‌اپ را از تنظیمات مربوطه ذخیره کنید (`MINIAPP_URL` در `.env`).

بدون این مرحله، دکمه منوی مینی‌اپ داخل تلگرام باز نمی‌شود.

---

## تنظیم گروه گزارش (`/setgroup`)

1. یک سوپرگروه بسازید؛ بهتر است **Topics / Forum** روشن باشد.
2. ربات را ادمین گروه کنید.
3. با همان اکانت ادمین اصلی (`ADMIN_ID`) داخل گروه بزنید:
   ```
   /setgroup
   ```
4. ربات گروه را ثبت می‌کند و در صورت امکان تاپیک‌های گزارش (بکاپ، خطا و …) را می‌سازد.
5. تست بکاپ فوری:
   ```
   /backup
   ```

---

## قابلیت‌های ربات

### برای کاربر نهایی
- **خرید سرویس** با کیف پول (تأیید قبل از کسر موجودی)
- **انتخاب لوکیشن / پنل** مقصد
- **تست رایگان** با امکان انتخاب پنل
- **کیف پول**: شارژ کارت‌به‌کارت، کد هدیه، تاریخچه تراکنش
- **سرویس‌های من**: مشاهده وضعیت، حجم، انقضا، لینک اتصال
- **رفرال**: لینک دعوت، پاداش ثبت‌نام و درصد از خرید زیرمجموعه
- **تیکت پشتیبانی** با دپارتمان‌های قابل تنظیم
- **درخواست نمایندگی (Reseller)**
- **Telegram Mini App** موبایل‌محور با احراز هویت `initData` و HMAC سمت سرور
- منوی شیشه‌ای (Inline) قابل شخصی‌سازی + ایموجی پریمیوم

### برای ادمین (داخل ربات — دستور `/admin`)
- آمار ربات و داشبورد
- تنظیم همه پیام‌ها و خوش‌آمدگویی (با متغیر و Premium Emoji)
- مدیریت پنل‌های VPN (PasarGuard / X-UI و …)
- سقف فروش هر پنل
- محصولات و دسته‌بندی (Drag & Drop ترتیب)
- سرویس‌های فروخته‌شده و مدیریت سفارش
- کاربران ربات: جستجو، موجودی، نقش، مسدودسازی
- ارسال همگانی (همه / دارای موجودی / بدون موجودی / دارای زیرمجموعه) + پین
- مدیریت کارت‌های پرداخت
- درخواست‌های شارژ (تأیید / رد خودکار اختیاری)
- ایموجی پریمیوم و منوی شیشه‌ای
- ادمین‌های ربات
- سرویس ساعتی (روشن/خاموش)
- بهینه‌سازی و آنتی‌اسپم
- فاصله بکاپ خودکار دیتابیس
- مدیریت اعتبار ورود وب‌پنل از داخل ربات
- **دکمه شیشه‌ای لینک گیت‌هاب پروژه**

### پنل وب مدیریت
- UI با استایل Liquid Glass / macOS
- داشبورد آماری و نمودار
- مدیریت پنل‌ها، محصولات، سفارش‌ها، کاربران
- رفرال، تخفیف، هدیه، وفاداری
- تیکت‌های پشتیبانی
- تنظیمات پیام‌ها و شخصی‌سازی
- Mini App در مسیر `/miniapp/`

### امنیت
- پسورد ورود پنل وب با **هش werkzeug** (مهاجرت نرم از plaintext قدیمی)
- `.env` با مجوز ۶۰۰ و تولید خودکار `SECRET_KEY` و پسورد دیتابیس تصادفی
- Nginx reverse proxy + هدرهای امنیتی
- پورت ۵۰۰۰ فقط لوکال؛ فایروال UFW و Fail2ban
- احراز هویت Mini App فقط از طریق Telegram `initData` تأییدشده سمت سرور
- Idempotency برای خرید کیف‌پولی و قفل ردیف کاربر

---

## ساختار پروژه (خلاصه)

```
FarnoudBot/
├── main.py / bot.py          # ورود ربات تلگرام
├── admin_app.py              # پنل وب Flask + Mini App
├── config.py                 # خواندن از .env
├── database.py + db_*.py     # لایه دیتابیس
├── handlers/                 # هندلرهای ربات
├── services/                 # کلاینت پنل‌ها و provision
├── static/ / templates/      # فرانت پنل و مینی‌اپ
├── models_schema.sql
├── install.sh                # نصب‌کننده تعاملی
└── requirements.txt
```

---

## اجرا دستی (توسعه)

```bash
cp .env.example .env
# مقادیر BOT_TOKEN و ADMIN_ID و DB را پر کنید
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
# دیتابیس و جداول را بسازید
python admin_app.py   # پنل → http://127.0.0.1:5000
python main.py        # ربات
```

ورود پیش‌فرض پنل پس از نصب اسکریپت: `admin` + رمز تصادفی نمایش‌داده‌شده.

---

## لینک‌ها

| مورد | لینک |
|------|------|
| مخزن | https://github.com/FarnoudHosseini/FarnoudBot |
| گروه پشتیبانی | https://t.me/+6vJiX_pRVcVjNWE0 |
| حمایت مالی | https://donofa.ir/farnoudhosseini |

---

**Credit:** Farnoud Hosseini  
ربات رایگان است. در صورت مفید بودن از طریق لینک دونیت حمایت کنید.

## پرداخت واریزا

نسخه جدید سیستم پرداخت، واریزا را به‌صورت رسمی و سروری پشتیبانی می‌کند:

- فعال/غیرفعال کردن جداگانه کارت‌به‌کارت و واریزا از وب‌پنل و پنل مدیریت تلگرام
- تغییر نام دکمه هر روش پرداخت
- ساخت لینک پرداخت واریزا برای شارژ کیف پول و خرید سرویس
- تأیید خودکار از طریق Webhook امضاشده HMAC-SHA256
- تطبیق پرداخت با `slug` اختصاصی و نه مبلغ؛ بنابراین تغییر جزئی مبلغ واریزا باعث خطای تطبیق نمی‌شود
- جلوگیری از دوباره‌پرداخت شدن Webhookهای تکراری

### تنظیم واریزا

در وب‌پنل از بخش **مالی → کارت‌ها**:

1. آدرس عمومی HTTPS سرور را وارد کنید.
2. API Key واریزا و Webhook Secret را وارد کنید.
3. واریزا را فعال کنید.
4. آدرس نمایش‌داده‌شده در بخش Webhook را در پروفایل واریزا به‌عنوان `callback_url` ثبت کنید.

مستندات رسمی API واریزا: https://variza.ir/developers
