Import documentation: README.md
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
# 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 <job_id>`
|
||||
- پاکسازی صف با `/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 <job_id>
|
||||
/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 محرمانه هستند.
|
||||
Reference in New Issue
Block a user