شروع

پیش‌نیازها

هر چیزی که قبل از راه‌اندازی WZML-X لازم دارید؛ از سرور و Docker تا توکن ربات، کلیدهای API تلگرام و MongoDB.

قبل از استقرار (راه‌اندازی) ربات، این موارد را آماده کنید. پنج مقدار اول ضروری هستند و بدون آن‌ها ربات بالا نمی‌آید یا تنظیماتش ذخیره نمی‌شود؛ بقیه فقط برای قابلیت‌هایی لازم‌اند که می‌خواهید فعال کنید.

موردمتغیر پیکربندیضروری؟
توکن ربات از @BotFatherBOT_TOKENبله
شناسهٔ API تلگرامTELEGRAM_APIبله
هش API تلگرامTELEGRAM_HASHبله
شناسهٔ عددی مالک رباتOWNER_IDبله
آدرس اتصال MongoDBDATABASE_URLبله (طبق README.md)

۱. سرور

روش پیشنهادی پروژه، اجرای ربات روی یک VPS یا سرور اختصاصی لینوکسی با Docker است. سورس پروژه حداقل سخت‌افزاری مشخصی اعلام نمی‌کند، اما این اعداد از خود کد به شما کمک می‌کنند برآورد کنید:

  • دیسک: همهٔ دانلودها در پوشهٔ downloads ذخیره می‌شوند و فایل باید کامل دانلود شود تا آپلود شود. فضای دیسک باید دست‌کم به اندازهٔ بزرگ‌ترین کاری باشد که می‌خواهید انجام دهید؛ استخراج یا فشرده‌سازی فضای بیشتری می‌خواهد.
  • رم JDownloader: با -Xms256m -Xmx500m اجرا می‌شود. توضیح خود ربات برای DISABLE_JD می‌گوید خاموش کردن آن حدود ۲۵۶ تا ۵۰۰ مگابایت رم آزاد می‌کند.
  • رم SABnzbd: طبق توضیح DISABLE_NZB، خاموش کردن آن حدود ۱۰۰ تا ۲۰۰ مگابایت رم آزاد می‌کند.
  • qBittorrent: در فایل پیش‌فرض configs/qbittorrent/qBittorrent/config/qBittorrent.conf مقدار MemoryWorkingSetLimit=512 و Session\AsyncIOThreadsCount=16 تنظیم شده است. خود README.md توصیه می‌کند AsyncIOThreadsCount را با اندازهٔ سرورتان تنظیم کنید.
  • پردازنده: متغیرهای CPU_LIMIT، FFMPEG_CORES و THROTTLE_SERVICES تقسیم پردازنده بین FFmpeg و سرویس‌های پس‌زمینه را کنترل می‌کنند. روی سرورهای ۲ هسته‌ای یا کمتر، ربات سرویس‌ها را به هستهٔ خاصی محدود نمی‌کند.

۲. Docker، Docker Compose و Git

استقرار با Docker و Docker Compose (همراه buildx) انجام می‌شود. ساده‌ترین راه نصب Docker روی بیشتر توزیع‌های لینوکس، اسکریپت رسمی Docker است (برای جزئیات به مستندات docs.docker.com مراجعه کنید):

curl -fsSL https://get.docker.com | sh

بعد از نصب، مطمئن شوید هر سه بخش در دسترس هستند:

docker --version
docker compose version
docker buildx version

برای دریافت کد هم به Git نیاز دارید:

git --version

۳. توکن ربات (BOT_TOKEN)

  1. در تلگرام به @BotFather پیام دهید.
  2. دستور /newbot را بفرستید.
  3. یک نام نمایشی و یک نام کاربری که به bot ختم شود انتخاب کنید.
  4. BotFather یک توکن به شکل 1234567890:AA... می‌دهد. آن را در BOT_TOKEN قرار دهید.

۴. کلیدهای API تلگرام (TELEGRAM_API و TELEGRAM_HASH)

ربات علاوه بر توکن، برای اتصال به تلگرام به یک شناسه و هش API نیاز دارد:

  1. به my.telegram.org بروید و با شمارهٔ تلفن خود وارد شوید.
  2. بخش API development tools را باز کنید و یک برنامه بسازید.
  3. مقدار api_id (یک عدد) را در TELEGRAM_API و مقدار api_hash را در TELEGRAM_HASH بگذارید.

TELEGRAM_API باید عدد باشد (بدون کوتیشن) و TELEGRAM_HASH رشته (داخل کوتیشن):

TELEGRAM_API = 1234567
TELEGRAM_HASH = "0123456789abcdef0123456789abcdef"

۵. شناسهٔ عددی مالک (OWNER_ID)

OWNER_ID شناسهٔ عددی حساب تلگرام شماست، نه نام کاربری. مالک ربات به همهٔ دستورها و تنظیمات دسترسی دارد.

برای پیدا کردن آن، می‌توانید به یکی از ربات‌هایی که شناسهٔ کاربر را نمایش می‌دهند (مثلاً @userinfobot) پیام دهید؛ این ربات‌ها بخشی از WZML-X نیستند. مقدار را بدون کوتیشن بنویسید:

OWNER_ID = 123456789

۶. پایگاه دادهٔ MongoDB (DATABASE_URL)

ربات تنظیماتی را که از داخل تلگرام تغییر می‌دهید، فایل‌های خصوصی (مثل token.pickle و rclone.conf)، داده‌های کاربران، RSS و لینک‌های پخش را در MongoDB نگه می‌دارد. بدون آن، تغییرات /bsetting بعد از ری‌استارت از بین می‌روند و قابلیت‌هایی مثل /broadcast یا اطلاع‌رسانی کارهای ناتمام کار نمی‌کنند.

راه ساده، استفاده از MongoDB Atlas است:

  1. در mongodb.com/atlas حساب بسازید و یک کلاستر ایجاد کنید.
  2. یک کاربر پایگاه داده با نام کاربری و رمز عبور بسازید.
  3. در بخش دسترسی شبکه (Network Access)، اجازهٔ اتصال از IP سرورتان را بدهید.
  4. از گزینهٔ Connect، رشتهٔ اتصال (connection string) را کپی کنید و رمز عبور را در آن جایگزین کنید.
DATABASE_URL = "mongodb+srv://USERNAME:PASSWORD@CLUSTER.mongodb.net/?retryWrites=true&w=majority"

ربات خودش پایگاه داده‌ای به نام wzmlx می‌سازد و داده‌های هر ربات را بر اساس شناسهٔ همان ربات جدا نگه می‌دارد؛ پس لازم نیست نام پایگاه داده را در آدرس بنویسید.

۷. اعتبارنامه‌های اختیاری

این موارد را فقط برای قابلیت‌هایی آماده کنید که می‌خواهید استفاده کنید. همه را می‌توانید بعداً هم از /bsetting اضافه کنید.

قابلیتچه چیزی لازم استتوضیح
گوگل درایو با حساب خودتانفایل token.pickle و GDRIVE_IDبا اسکریپت gen_scripts/gen_token_pickle ساخته می‌شود.
گوگل درایو با سرویس‌اکانت‌هاپوشهٔ accounts/ یا فایل accounts.zip و USE_SERVICE_ACCOUNTSبا gen_scripts/gen_sa_accounts و gen_scripts/add_to_team_drive.
فهرست چند درایو برای جست‌وجوفایل list_drives.txtبا gen_scripts/driveid.
Rcloneفایل rclone.conf و RCLONE_PATHفایل پیکربندی Rclone که ریموت‌های شما در آن تعریف شده‌اند.
MegaMEGA_EMAIL و MEGA_PASSWORDبرای استفاده از حساب Mega.
JDownloaderJD_EMAIL و JD_PASSحساب My JDownloader.
Usenet (SABnzbd)USENET_SERVERSمشخصات سرور Usenet؛ فیلدهای name، host، username و password الزامی‌اند.
حساب کاربری تلگرامUSER_SESSION_STRINGاسترینگ سشن Pyrogram. اگر حساب پرمیوم باشد، سقف تکه‌ها در لیچ از حدود ۲ گیگابایت به حدود ۴ گیگابایت می‌رسد.
SeedrSEEDR_EMAIL و SEEDR_PASSWORDحساب Seedr.cc.
AllDebridALLDEBRID_API_KEYکلید API حساب AllDebrid.
آپلودهاست‌هاGOFILE_API، BUZZHEAVIER_API، PIXELDRAIN_KEY، DEVUPLOADS_KEY، VIKINGFILE_HASHکلیدهای سرویس‌های آپلود مستقیم.
پخش آنلاینSTREAM_TOKENS یا HELPER_TOKENSتوکن ربات‌های کمکی؛ دستور /stream بدون آن‌ها کار نمی‌کند.

ساختن token.pickle، سرویس‌اکانت‌ها، list_drives.txt و استرینگ سشن در صفحهٔ اسکریپت‌های کمکی توضیح داده شده است. شرح همهٔ متغیرها در مرجع متغیرها آمده است.

چک‌لیست نهایی

  • سرور لینوکسی با دسترسی SSH
  • Docker، Docker Compose و buildx نصب شده
  • Git نصب شده
  • BOT_TOKEN از @BotFather
  • TELEGRAM_API و TELEGRAM_HASH از my.telegram.org
  • OWNER_ID عددی
  • DATABASE_URL از MongoDB که از IP سرور قابل دسترسی است

وقتی همه آماده بود، به استقرار روی VPS بروید.

مثلاً LEECH_SPLIT_SIZE، /mirror، -up یا «تامبنیل»