شروع
پیشنیازها
هر چیزی که قبل از راهاندازی WZML-X لازم دارید؛ از سرور و Docker تا توکن ربات، کلیدهای API تلگرام و MongoDB.
قبل از استقرار (راهاندازی) ربات، این موارد را آماده کنید. پنج مقدار اول ضروری هستند و بدون آنها ربات بالا نمیآید یا تنظیماتش ذخیره نمیشود؛ بقیه فقط برای قابلیتهایی لازماند که میخواهید فعال کنید.
| مورد | متغیر پیکربندی | ضروری؟ |
|---|---|---|
| توکن ربات از @BotFather | BOT_TOKEN | بله |
| شناسهٔ API تلگرام | TELEGRAM_API | بله |
| هش API تلگرام | TELEGRAM_HASH | بله |
| شناسهٔ عددی مالک ربات | OWNER_ID | بله |
| آدرس اتصال MongoDB | DATABASE_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)
- در تلگرام به @BotFather پیام دهید.
- دستور
/newbotرا بفرستید. - یک نام نمایشی و یک نام کاربری که به
botختم شود انتخاب کنید. - BotFather یک توکن به شکل
1234567890:AA...میدهد. آن را درBOT_TOKENقرار دهید.
۴. کلیدهای API تلگرام (TELEGRAM_API و TELEGRAM_HASH)
ربات علاوه بر توکن، برای اتصال به تلگرام به یک شناسه و هش API نیاز دارد:
- به my.telegram.org بروید و با شمارهٔ تلفن خود وارد شوید.
- بخش API development tools را باز کنید و یک برنامه بسازید.
- مقدار
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 است:
- در mongodb.com/atlas حساب بسازید و یک کلاستر ایجاد کنید.
- یک کاربر پایگاه داده با نام کاربری و رمز عبور بسازید.
- در بخش دسترسی شبکه (Network Access)، اجازهٔ اتصال از IP سرورتان را بدهید.
- از گزینهٔ 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 که ریموتهای شما در آن تعریف شدهاند. |
| Mega | MEGA_EMAIL و MEGA_PASSWORD | برای استفاده از حساب Mega. |
| JDownloader | JD_EMAIL و JD_PASS | حساب My JDownloader. |
| Usenet (SABnzbd) | USENET_SERVERS | مشخصات سرور Usenet؛ فیلدهای name، host، username و password الزامیاند. |
| حساب کاربری تلگرام | USER_SESSION_STRING | استرینگ سشن Pyrogram. اگر حساب پرمیوم باشد، سقف تکهها در لیچ از حدود ۲ گیگابایت به حدود ۴ گیگابایت میرسد. |
| Seedr | SEEDR_EMAIL و SEEDR_PASSWORD | حساب Seedr.cc. |
| AllDebrid | ALLDEBRID_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 بروید.