PG | UPLOADER — راهنمای نصب و نگهداری
نسخه بسته: 1.0.0

پیش‌نیازهای هاست
- PHP 8.1 یا جدیدتر
- افزونه‌های PDO_SQLite، cURL و mbstring
- SSL/HTTPS فعال روی دامنه
- امکان نوشتن PHP در پوشه‌های data و storage/backups
- دسترسی خروجی HTTPS به api.telegram.org

نصب ساده
1) توکن قبلی که در گفتگو افشا شده را در @BotFather باطل کن و توکن جدید بگیر. توکن را در چت نفرست.
2) پوشه uplo را در Document Root ساب‌دامین یا در پوشه‌ای که می‌خواهی، آپلود و استخراج کن.
3) در مرورگر آدرس https://دامنه-خودت/uplo/setup.php را باز کن. اگر پوشه uplo مستقیماً Document Root ساب‌دامین است، آدرس /setup.php خواهد بود.
4) کلید نصب را از SETUP_KEY.txt داخل فایل ZIP بردار و همراه توکن جدید وارد کن. فایل SETUP_KEY.txt از وب مسدود است.
5) پس از ذخیره تنظیمات، روی «ثبت خودکار وبهوک» بزن. در صورت موفقیت، کلید نصب حذف می‌شود.
6) از @PGuploader_bot روی Start بزن. مالک از قبل روی شناسه 8178520407 تنظیم شده است.
7) از پنل مدیریت، منابع عضویت اجباری و سایر تنظیمات را پیکربندی کن.

نصب مسیرها
- اگر Document Root دامنه اصلی ریشه public_html است، فایل‌ها در public_html/uplo قرار می‌گیرند.
- اگر Document Root خود ساب‌دامین به public_html/uplo تنظیم شده است، محتوای پوشه داخلی uplo را مستقیماً در همان Document Root آپلود کن، نه در پوشه uplo/uplo.
- وبهوک خودکار، مسیر واقعی setup.php را از درخواست تشخیص می‌دهد.

کار با ربات
- کاربران: رفرال‌گیری، حساب کاربری، پشتیبانی.
- مالک: پنل مدیریت از طریق دکمه‌های تلگرام؛ آپلود و انتشار فایل؛ ساخت مجموعه چندفایلی؛ مدیریت لینک؛ بکاپ؛ تیکت‌ها؛ تنظیمات؛ عضویت اجباری؛ حالت اضطراری.
- برای انتشار مجموعه، از پنل «ساخت مجموعه فایل» را بزن، فایل‌ها را یکی‌یکی بفرست و «پایان افزودن فایل‌ها» را انتخاب کن.
- فایل‌ها در هاست دانلود و ذخیره نمی‌شوند؛ Telegram file_id و فراداده در SQLite ذخیره می‌شوند.
- رنگ‌های قرمز/آبی/سبز برای دکمه‌های استاندارد inline keyboard توسط همه کلاینت‌ها و روش‌های رسمی قابل تضمین نیستند. در بخش‌های پشتیبانی‌شده باید از قابلیت‌های جدید تلگرام استفاده شود؛ این بسته در حال حاضر از دکمه‌های استاندارد استفاده می‌کند.

بکاپ خودکار واقعی
ربات هنگام دریافت webhook نیز بکاپ روزانه و صف ارسال را بررسی می‌کند، اما برای بکاپ روزانه حتی در روزهای بدون فعالیت، اجرای دقیق انتشار زمان‌بندی‌شده و ادامه صف پیام همگانی، Cron Job در cPanel بساز:
Command: php /FULL/PATH/TO/uplo/cron.php
Schedule: هر دقیقه (*/1 * * * *)؛ در صورت محدودیت cPanel، حداقل هر 5 دقیقه
مسیر FULL را با مسیر واقعی هاست جایگزین کن؛ از cPanel > File Manager مسیر را بررسی کن.
Cron فقط از CLI اجرا می‌شود و از وب قابل فراخوانی نیست.

امنیت و محدودیت‌ها
- توکن فقط در data/config.php نگهداری می‌شود و دسترسی مستقیم به data و storage مسدود است.
- بعد از نصب setup.php را حذف کن اگر به‌صورت خودکار پاک نشده است.
- به ربات در کانال‌ها/گروه‌های اجباری دسترسی لازم بده؛ برای getChatMember معمولاً باید مدیر باشد.
- فایل 100MB تضمین نمی‌شود. محدودیت واقعی به Bot API، نوع رسانه، حساب ربات و محدودیت‌های تلگرام وابسته است.
- protect_content فقط بازنشر/ذخیره معمول را محدود می‌کند و جلوی همه روش‌های کپی یا اسکرین‌شات را نمی‌گیرد.
- بکاپ دیتابیس شامل فایل‌های واقعی تلگرام نیست؛ فایل‌ها در تلگرام می‌مانند.
- بازیابی بکاپ، اطلاعات فعلی دیتابیس را جایگزین می‌کند. قبل از بازیابی بکاپ تازه بگیر.
- اگر PHP یا SQLite در هاست خطا داد، از cPanel > Select PHP Version و Error Log استفاده کن.

پوشه‌ها
app/bootstrap.php  اتصال دیتابیس، تنظیمات و توابع مشترک
app/handler.php   منطق ربات و پنل تلگرام
index.php         وبهوک
setup.php         نصب اولیه و ثبت وبهوک
cron.php          وظایف دوره‌ای (CLI)
data/             تنظیمات و دیتابیس خصوصی
storage/backups/  نسخه‌های پشتیبان خصوصی
