# Coaxys Telegram to S3 Uploader ربات تلگرام برای دریافت فایل یا لینک مستقیم، آپلود سریع روی S3 با `rclone`، و تحویل لینک دانلود امضاشده با اعتبار ۱۶۸ ساعت. ## قابلیت‌ها - دریافت فایل، ویدیو، عکس، صدا، استیکر و لینک مستقیم از تلگرام - دانلود فایل از تلگرام یا URL و قرار دادن در صف پردازش - آپلود روی bucket `coaxys` با `rclone copyto` - استفاده از تنظیمات پرسرعت rclone مثل multipart concurrency، chunk size، transfers و checkers - گزارش مرحله‌ای در تلگرام: دانلود، صف، آپلود، بررسی S3، ساخت لینک و خطا - ساخت لینک دانلود ۱۶۸ ساعته با `rclone link --expire 168h` - لغو یا حذف یک فایل با `/del ` - پاکسازی صف با `/delall` - نمایش وضعیت صف و پردازش با `/status` - Safe Mode برای ZIP رمزدار قبل از آپلود ## ساختار پروژه ```text main.py اجرای همزمان worker تلگرام و worker آپلود telebot.py دریافت پیام‌ها، دانلود فایل از تلگرام، مدیریت صف و پیام‌های ربات rub.py worker آپلود S3 با rclone، بررسی فایل و ساخت لینک دانلود queue/ فایل‌های runtime صف و وضعیت downloads/ فایل‌های موقت دانلودشده bot.log لاگ اجرای nohup ``` ## پیش‌نیازها ```bash sudo apt update sudo apt install python3 python3-venv python3-pip rclone -y python3 -m venv venv source venv/bin/activate pip install -r requirements.txt ``` remote زیر باید در rclone تنظیم شده باشد: ```text coaxys ``` تست دسترسی S3: ```bash rclone ls coaxys:coaxys --s3-no-check-bucket ``` ## تنظیمات فایل `.env` را در ریشه پروژه بسازید: ```env API_ID=your_telegram_api_id API_HASH=your_telegram_api_hash BOT_TOKEN=your_bot_token ``` تنظیمات اختیاری: ```env RCLONE_REMOTE=coaxys:coaxys RCLONE_PREFIX= RCLONE_TRANSFERS=8 RCLONE_CHECKERS=16 RCLONE_S3_UPLOAD_CONCURRENCY=8 RCLONE_S3_CHUNK_SIZE=32M RCLONE_S3_UPLOAD_CUTOFF=16M RCLONE_MULTI_THREAD_STREAMS=8 RCLONE_RETRIES=3 RCLONE_LOW_LEVEL_RETRIES=20 RCLONE_NO_OUTPUT_TIMEOUT=180 RCLONE_COMMIT_TIMEOUT=90 MAX_RETRIES=5 UPLOAD_TIMEOUT=0 DOWNLOAD_LINK_EXPIRE=168h ``` اگر `RCLONE_PREFIX` خالی باشد، فایل‌ها در root bucket آپلود می‌شوند. برای آپلود داخل پوشه، مثلا `uploads` قرار دهید. ## اجرا اجرای معمولی: ```bash python3 main.py ``` اجرای دائمی با nohup: ```bash pkill -f python3 setsid nohup python3 -u main.py > bot.log 2>&1 < /dev/null & echo $! > bot.pid ``` مشاهده لاگ: ```bash tail -f bot.log ``` بررسی پردازش‌ها: ```bash ps -eo pid,ppid,stat,cmd | grep -E 'python3 -u main.py|telebot.py|rub.py' ``` ## دستورات ربات ```text /start /status /del /delall /safemode on /safemode off ``` ## خروجی نهایی بعد از آپلود موفق، ربات پیام نهایی شامل نام فایل، حجم، مسیر ذخیره‌سازی و لینک دانلود می‌دهد. لینک با `rclone link --expire 168h` ساخته می‌شود و معمولا فرم زیر دارد: ```text https://s3.ir-thr-at1.arvanstorage.ir/coaxys/file.ext?...&X-Amz-Expires=604800&... ``` ## نکات عملیاتی - `queue/` و `downloads/` runtime هستند و نباید commit شوند. - اگر آپلود به ۱۰۰٪ رسید ولی پیام نهایی دیر آمد، worker تا حدود ۶۰ ثانیه منتظر visible شدن فایل در `rclone ls` می‌ماند. - برای بررسی دستی فایل‌ها: ```bash rclone ls coaxys:coaxys --s3-no-check-bucket ``` - برای ساخت لینک دستی: ```bash rclone link --expire 168h coaxys:coaxys/path/to/file.ext --s3-no-check-bucket ``` ## امنیت `.env`، rclone config، فایل‌های دانلودشده، queue state و ZIPهای تولیدشده را منتشر نکنید. توکن ربات، Telegram API credentials و کلیدهای S3 محرمانه هستند.