ربات فشردهسازی عکس تلگرام: کاهش حجم هوشمند، تغییر فرمت و مدیریت حرفهای
ارسال تصاویر با کیفیت اصلی در تلگرام عالی است، اما همیشه به صرفه نیست. حجم اینترنت، فضای ذخیرهسازی گوشی و سرعت آپلود، همگی چالشهایی هستند که با عکسهای حجیم داریم. ربات فشردهسازی عکس تلگرام پروژهای است که دقیقاً برای حل این مشکل طراحی کردم. یک ابزار همهکاره که نه تنها حجم عکسها را به صورت هوشمند کم میکند، بلکه امکان تغییر فرمت و بستهبندی فایلها را هم به شما میدهد.
در ادامه، هم ویژگیهای کاربردی این ربات را میبینیم و هم نگاهی به معماری فنی و کدهای پشت صحنه آن میاندازیم.
خلاصهای از پروژه
| دسته | جزئیات |
| نام پروژه | ربات فشردهسازی و تغییر فرمت تصاویر (Image Compressor) |
| پلتفرم | تلگرام (Telegram Bot API) |
| تکنولوژی هسته | پایتون ۳.۱۲ (Python) |
| فریمورک | Aiogram 3.x (کاملاً Async) |
| موتور پردازش تصویر | Pillow (PIL) و pillow-heif |
| پایگاه داده | SQLite با SQLAlchemy (مدیریت کاربر و تنظیمات) |
| ویژگیهای کلیدی | فشردهسازی هوشمند، تبدیل فرمت (WebP, PDF, PNG)، پشتیبانی از آلبوم (Batch/ZIP)، پنل ادمین |
| وضعیت اجرا | فعال روی سرور لینوکس با Systemd |
تجربهای متفاوت برای کاربر: ساده، سریع، منعطف
هدف اصلی من در ساخت این ربات، راحتی کاربر بود. برخلاف ابزارهای آنلاین که پر از تبلیغات هستند، اینجا همه چیز در محیط امن تلگرام انجام میشود.
۱. فشردهسازی هوشمند (Smart Mode)
کاربر نیازی نیست درگیر اعداد و ارقام شود. حالت Smart در ربات، خودش حجم فایل ورودی را تحلیل میکند:
- اگر فایل بالای ۵ مگابایت باشد: فشردهسازی قوی اعمال میشود.
- اگر فایل سبک باشد: کیفیت اصلی حفظ میشود.
البته کاربر میتواند دستی کیفیت را روی Low، Medium یا High تنظیم کند.
۲. تغییر فرمت آنی
شاید بخواهید عکس JPG را به PDF تبدیل کنید تا در یک سند اداری استفاده کنید، یا آن را به WebP تبدیل کنید تا در وبسایتتان استفاده کنید. این ربات با یک تنظیم ساده در منو، تمام عکسهای ارسالی شما را به فرمت دلخواه (JPG, PNG, WebP, PDF) تبدیل میکند.
۳. مدیریت فایلهای گروهی (Batch Processing)
این یکی از جذابترین قابلیتهاست. اگر ۱۰ عکس را همزمان (به صورت آلبوم) بفرستید، ربات گیج نمیشود!
- آنها را دریافت میکند.
- میپرسد: «جدا جدا بفرستم یا همه را یک فایل ZIP کنم؟»
- اگر ZIP را انتخاب کنید، یک آرشیو تمیز و فشرده تحویل میگیرید.
از دید یک توسعهدهنده: چرا این پروژه متمایز است؟
به عنوان یک برنامهنویس، نوشتن کدی که فقط “کار کند” کافی نیست؛ کد باید تمیز (Clean)، مقیاسپذیر (Scalable) و پایدار باشد. در ساخت ربات فشردهسازی عکس تلگرام روی موارد زیر تمرکز کردم:
معماری مدرن و ناهمگام (Asyncio)
استفاده از Aiogram 3 و Asyncio یعنی ربات در زمان پردازش یک عکس سنگین، برای سایر کاربران قفل نمیشود. عملیات I/O (دانلود و آپلود) و پردازش CPU-bound (فشردهسازی) به گونهای مدیریت شدهاند که ربات همیشه پاسخگو (Responsive) باشد.
پایداری و مدیریت خطا
- Auto-Registration: اگر دیتابیس ریست شود یا کاربر جدیدی عکسی بفرستد، سیستم هوشمندانه (Lazy Loading) کاربر را در لحظه ثبت میکند تا خطایی رخ ندهد.
- Cleaner Utility: فایلهای موقت (Temp) به حال خود رها نمیشوند. یک سیستم پاکسازی خودکار وجود دارد که بعد از ارسال فایل نهایی، فضای سرور را آزاد میکند.
دیتابیس و مدیریت State
از SQLAlchemy (ORM) برای ارتباط با دیتابیس استفاده شده تا تغییر نوع دیتابیس (مثلاً به PostgreSQL) در آینده آسان باشد. تنظیمات هر کاربر (زبان، کیفیت، فرمت) به صورت دائمی ذخیره میشود.
میانافزارهای قدرتمند (Middlewares)
- Throttling: جلوگیری از اسپم با محدود کردن نرخ درخواستها.
- Channel Lock: قابلیت اجبار عضویت در کانال برای استفاده از ربات
- I18n: سیستم چندزبانه واقعی که تمام متون را از فایلهای JSON میخواند و افزودن زبان جدید را بسیار ساده میکند.
نتیجهگیری
این پروژه ترکیبی از قدرت پایتون در پردازش تصویر و سرعت تلگرام در انتقال فایل است. چه به عنوان یک کاربر عادی بخواهید آرشیو عکسهایتان را کمحجم کنید و چه به عنوان یک دولوپر بخواهید نمونهای از یک ربات استاندارد ببینید، این پروژه حرفهای زیادی برای گفتن دارد.
لینک ربات: @botbox_imagecompressorbot
(کافیست یک عکس بفرستید تا قدرتش رو در عمل ببینید!)


