کمک
عیبیابی و پرسشهای رایج
مشکلات رایج هنگام راهاندازی و استفاده از WZML-X، پیامهای خطای مربوط به آنها در لاگ و راهحلها، بههمراه پرسشهای پرتکرار.
بیشتر مشکلات با یک نگاه به لاگ روشن میشوند. لاگ ربات را اینطور ببینید:
docker compose logs -f app
داخل تلگرام هم مالک و سودوها میتوانند با /log فایل log.txt را بگیرند. در ادامه، پیامهای لاگ و پاسخهای ربات دقیقاً به همان شکلی آمدهاند که ربات چاپ میکند تا بتوانید جستوجویشان کنید.
ربات اصلاً بالا نمیآید
BOT_TOKEN variable is missing! Exiting now
update.py نه در config.py و نه در متغیرهای محیطی BOT_TOKEN پیدا نکرده است. مقدار را در config.py بنویسید.
OWNER_ID variable is missing! (یا همین پیام برای BOT_TOKEN، TELEGRAM_API یا TELEGRAM_HASH)
یکی از چهار متغیر ضروری خالی است. اگر config.py دارید، این مقادیر باید در خود آن پر باشند؛ تعریف آنها فقط در متغیرهای محیطی کافی نیست، چون این بررسی پیش از خواندن متغیرهای محیطی انجام میشود. جزئیات در نحوهٔ پیکربندی.
Config.py file is not Added! Checking ENVs..
ربات config.py را پیدا نکرده است. در روش Docker Compose، مطمئن شوید پیش از اجرای Compose، config.py را کنار docker-compose.yml ساختهاید:
cp config_sample.py config.py
اگر پیش از ساختن فایل، Compose را اجرا کرده باشید، ممکن است Docker بهجای فایل، یک پوشه به نام config.py ساخته باشد. آن را پاک کنید، فایل را بسازید و دوباره اجرا کنید.
کانتینر مدام ریاستارت میشود
سیاست ریاستارت app و tunnel در docker-compose.yml برابر unless-stopped است، پس هر خطا باعث شروع دوباره میشود. خطای اصلی را در docker compose logs app پیدا کنید.
پایگاه داده
Error in DB connection: … یا Database ERROR: …
ربات نتوانسته به MongoDB وصل شود. اینها را بررسی کنید:
DATABASE_URLکامل و درست کپی شده باشد و رمز عبور واقعی جای نگهدارنده را گرفته باشد. اگر رمز نویسههای خاصی مثل@یا:دارد، باید در آدرس بهصورت کدگذاریشده (percent-encoded) نوشته شود.- در MongoDB Atlas، IP سرور شما در بخش دسترسی شبکه (Network Access) مجاز شده باشد.
update_config skipped: DB not connected
ربات بدون پایگاه داده کار میکند و تغییراتی که از /bsetting میدهید بعد از ریاستارت از بین میروند. مشکل اتصال را حل کنید.
No saved config found in MongoDB, using defaults
در اولین اجرا عادی است؛ هنوز چیزی در پایگاه داده ذخیره نشده است.
بعد از عوض کردن BOT_TOKEN، همهٔ تنظیمات به حالت اول برگشت
دادهها در پایگاه داده بر اساس شناسهٔ ربات جدا نگه داشته میشوند. اگر توکن یک ربات دیگر را بگذارید، ربات تنظیمات ربات قبلی را نمیبیند.
ربات به دستورها جواب نمیدهد
فقط به /start جواب میدهد و میگوید You are not an authorized user!
شما یا این چت جزو چتها و کاربرهای مجاز نیستید. ربات دستورهای کاربران غیرمجاز را بیصدا نادیده میگیرد. راهحلها:
- مالک یا یک سودو در همان گروه
/authorize(کوتاهشده:/a) را بفرستد تا کل چت مجاز شود؛ یا روی پیام یک کاربر ریپلای کند تا فقط آن کاربر مجاز شود؛ یا شناسهٔ چت را بعد از دستور بنویسد. لغو با/unauthorize(/ua). - یا شناسهها را با فاصله در
AUTHORIZED_CHATSبنویسید. تغییر این متغیر از/bsettingبه ریاستارت نیاز دارد. - برای دسترسی مدیریتی،
/addsudo(/as) یا متغیرSUDO_USERSرا استفاده کنید.
پاسخ ربات BlackListed Detected → Restricted from Bot است
کاربر در فهرست سیاه است (/blacklist یا /bl). سودو یا مالک میتواند با /rmblacklist (/rbl) او را خارج کند.
حتی مالک هم جوابی نمیگیرد
OWNER_IDباید شناسهٔ عددی حساب شما باشد، نه نام کاربری.- نام دستورها به حروف بزرگ و کوچک حساس است؛
/Mirrorکار نمیکند،/mirrorکار میکند. - اگر
CMD_SUFFIXتنظیم شده باشد، همهٔ دستورها آن پسوند را دارند (مثلاً/mirror2). فقط/restartallو/statusallپسوند نمیگیرند.
یک قابلیت خاص کار نمیکند (مثلاً JDownloader، NZB یا Seedr)
وضعیت آن را در /bsetting ← Module Settings ← On/Off Settings بررسی کنید؛ دکمههایی که علامت ✓ دارند روشناند. در کد، مقدار پیشفرض DISABLE_JD، DISABLE_NZB و DISABLE_SEEDR برابر True است. JDownloader علاوه بر روشن بودن، به JD_EMAIL و JD_PASS و SABnzbd به USENET_SERVERS نیاز دارد.
تونل و رابط وب
لینکهای Select Files یا پخش قبلی دیگر باز نمیشوند
آدرس تونل سریع Cloudflare با هر بار شروع دوبارهٔ کانتینر تونل عوض میشود. ربات آدرس جدید را ظرف چند ثانیه برمیدارد، اما لینکهایی که قبلاً ساخته شدهاند آدرس قدیمی را دارند. آدرس فعلی را با docker compose logs tunnel ببینید. برای آدرس ثابت از تونل نامدار استفاده کنید (استقرار روی VPS).
Base URL not defined!
BASE_URL خالی است. در روش Compose بررسی کنید سرویس tunnel در حال اجراست و در لاگش آدرس trycloudflare.com دیده میشود؛ در روشهای بدون تونل، BASE_URL را دستی تنظیم کنید.
The PIN you entered is incorrect. Try Again! یا Too many PIN attempts. Try again in 60s.
پین را از دکمهٔ Pincode زیر پیام همان کار بگیرید؛ هر کار پین خودش را دارد. بعد از ۵ تلاش اشتباه، باید ۶۰ ثانیه صبر کنید.
Unauthorized access در /qbit/ یا /nzb/
آدرس کامل همراه با ?pass= را از لاگ شروع ربات بردارید (خطی که با Web UI: شروع میشود).
رابط وب بعد از زدن Reset روی BASE_URL یا WEB_ACCESS_PASSWORD از کار افتاد
در /bsetting، ریست کردن این دو متغیر پروسهٔ وبسرور را متوقف میکند. ربات را ریاستارت کنید.
پیامهای دستور /stream
Streaming is disabled.: گزینهٔSTREAMدرModule Settingsخاموش است.No streaming clients are running.:STREAM_TOKENSیاHELPER_TOKENSرا تنظیم کنید و ربات را ریاستارت کنید.BASE_URL is not configured.:BASE_URLرا تنظیم کنید.- خطای
Streaming is disabled or the stream service is not running.در مرورگر یعنی سرور پخش اجرا نمیشود.
جزئیات بیشتر در رابط وب.
qBittorrent و Aria2
Torrents are disabled. Skipping qBittorrent initialization.
DISABLE_TORRENTS روشن است و qBittorrent اجرا نمیشود.
Failed to configure qBittorrent: … یا qBittorrent is not initialized. Skipping qBittorrent options update.
qBittorrent درست بالا نیامده است. لاگ کامل را بررسی کنید و ربات را ریاستارت کنید. اگر تنظیمات qBittorrent را دستی تغییر دادهاید، در /bsetting ← Qbit Settings دکمهٔ Sync Qbittorrent تنظیمات فعلی خود qBittorrent را دوباره میخواند و ذخیره میکند.
خطاهایی که با this mostly happens after abuse aria2 تمام میشوند
توقف یا ادامهٔ یک کار در Aria2 بعد از انتخاب فایل شکست خورده است. همانطور که پیام پیشنهاد میکند، دستور /select را دوباره امتحان کنید.
تورنتهای مرده تا ابد در صف میمانند
TORRENT_TIMEOUT را (به ثانیه) تنظیم کنید؛ 0 یعنی غیرفعال. این مقدار بهعنوان bt-stop-timeout به Aria2 هم داده میشود.
مصرف منابع qBittorrent زیاد است
README.md توصیه میکند AsyncIOThreadsCount را متناسب با سرور تنظیم کنید. توضیح در بهروزرسانی و نگهداری.
تغییر .netrc روی Aria2 اثر نکرد
طبق متن بخش Private Files، تغییر .netrc تا ریاستارت روی Aria2 اعمال نمیشود.
SABnzbd و JDownloader
SABnzbd not ready, retrying (…/10): ربات تا ۱۰ بار منتظر SABnzbd میماند. اگر بهFailed to get SABnzbd options after 10 retriesرسید، لاگ را بررسی و ریاستارت کنید.Synchronization Paused. No USENET_SERVERS is provided !: ابتدا سرور Usenet را درUSENET_SERVERSیا ازSabnzbd Settingsاضافه کنید.- SABnzbd بعد از روشن کردن دوباره کار نمیکند: روشن کردن دوبارهٔ
NZBدرModule Settingsبه ریاستارت نیاز دارد. No Email or Password provided!هنگام زدنJDownloader Sync:JD_EMAILوJD_PASSرا تنظیم کنید.
تغییرات تنظیمات اعمال نمیشوند
- بعضی متغیرها فقط با ریاستارت اعمال میشوند:
BOT_TOKEN،TELEGRAM_API،TELEGRAM_HASH،OWNER_ID،DATABASE_URL،USER_SESSION_STRING،STREAM_TOKENS،TG_PROXY،AUTHORIZED_CHATSوCMD_SUFFIX. ربات هنگام ویرایش آنها یادداشتRestart required for this edit to take effect!را نشان میدهد. - اگر مقداری را در
config.pyنوشتهاید ولی بعد از ریاستارت مقدار دیگری میبینید، احتمالاً قبلاً آن را از/bsettingتغییر دادهاید. مقدار ذخیرهشده در پایگاه داده برنده است، مگر اینکه همان کلید را درconfig.pyنسبت به شروع قبلی عوض کنید. توضیح کامل در نحوهٔ پیکربندی. - بعد از ویرایش
config.pyدر روش Compose، کانتینر را باdocker compose restart appریاستارت کنید.
بهروزرسانی
Something went Wrong! Recheck your details or Ask Support!
update.py نتوانسته کد را از UPSTREAM_REPO بگیرد. آدرس مخزن و نام شاخه (UPSTREAM_BRANCH) را بررسی کنید؛ برای مخزن خصوصی، آدرس باید اطلاعات دسترسی را داشته باشد.
تغییراتی که در کد داده بودم بعد از ریاستارت از بین رفت
وقتی UPSTREAM_REPO تنظیم شده باشد، کد داخل کانتینر در هر شروع با شاخهٔ بالادستی یکی میشود. تغییراتتان را در فورک خودتان نگه دارید. جزئیات در بهروزرسانی و نگهداری.
پرسشهای رایج
آیا دانلودهای نیمهکاره بعد از ریاستارت ادامه پیدا میکنند؟
خیر. ربات در هر شروع پوشهٔ دانلودها را خالی میکند (Cleaning Download Directory). با INC_TASK_NOTIFY بعد از ریاستارت فهرست کارهای ناتمام را میگیرید و با INC_TASK_RESUME ربات دستور اصلی هر کار را دوباره اجرا میکند؛ کار از ابتدا شروع میشود. هر دو به DATABASE_URL نیاز دارند.
بزرگترین فایلی که در لیچ فرستاده میشود چقدر است؟
فایلهای بزرگتر از اندازهٔ تکهها (LEECH_SPLIT_SIZE) تکهتکه میشوند. سقف این اندازه با ربات معمولی 2097152000 بایت (حدود ۲ گیگابایت) است و اگر USER_SESSION_STRING یک حساب پرمیوم باشد، به 4194304000 بایت (حدود ۴ گیگابایت) میرسد.
آیا ربات اطلاعاتی به بیرون میفرستد؟
اگر ENABLE_TELEMETRY روشن باشد (پیشفرض: True)، گزارش خطاهای برنامه برای رفع اشکال به telemetry.wzmlx.com فرستاده میشود. برای غیرفعال کردن، آن را False کنید.
میتوانم چند ربات را با یک MongoDB اجرا کنم؟ بله. دادههای هر ربات بر اساس شناسهٔ همان ربات جدا ذخیره میشود. راهنمای کامل در چند نمونه.
زبان پیامهای ربات را میشود عوض کرد؟
DEFAULT_LANG زبان ربات را تعیین میکند (پیشفرض en). در این نسخه فایلهای زبان en و bn در کد وجود دارند.
دستورها و آرگومانها کجا توضیح داده شدهاند؟ در دستورات و آرگومانها. تنظیمات شخصی هر کاربر در تنظیمات کاربر و تنظیمات کلی در تنظیمات ربات آمده است.
کمک بیشتر
اگر مشکلتان حل نشد، لاگ مربوط را آماده کنید (توکنها و رمزها را از آن پاک کنید) و در جامعهٔ WZML-X بپرسید:
- کانال تلگرام: t.me/WZML_X
- گروه پشتیبانی: t.me/WZML_Support