ربات فشرده‌سازی عکس

ربات فشرده‌سازی عکس تلگرام: کاهش حجم هوشمند، تغییر فرمت و مدیریت حرفه‌ای

ارسال تصاویر با کیفیت اصلی در تلگرام عالی است، اما همیشه به صرفه نیست. حجم اینترنت، فضای ذخیره‌سازی گوشی و سرعت آپلود، همگی چالش‌هایی هستند که با عکس‌های حجیم داریم. ربات فشرده‌سازی عکس تلگرام پروژه‌ای است که دقیقاً برای حل این مشکل طراحی کردم. یک ابزار همه‌کاره که نه تنها حجم عکس‌ها را به صورت هوشمند کم می‌کند، بلکه امکان تغییر فرمت و بسته‌بندی فایل‌ها را هم به شما می‌دهد.

در ادامه، هم ویژگی‌های کاربردی این ربات را می‌بینیم و هم نگاهی به معماری فنی و کدهای پشت صحنه آن می‌اندازیم.

خلاصه‌ای از پروژه

دستهجزئیات
نام پروژهربات فشرده‌سازی و تغییر فرمت تصاویر (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

(کافیست یک عکس بفرستید تا قدرتش رو در عمل ببینید!)

اولین دیدگاه را بنویسید