⚡
چالشها
۱. مدیریت همزمان دو محیط متفاوت (Django وب + ربات تلگرام Aiogram) در یک پروژه واحد.
۲. احراز هویت کاربران بدون رمز عبور از طریق Telegram ID.
۳. ارسال پیام همگانی به تعداد زیادی کاربر تلگرام با رعایت محدودیتهای Rate Limit تلگرام.
۴. یکپارچهسازی مدل کاربر سفارشی (CustomUser) با سیستم احراز هویت جنگو.
۵. مدیریت درخواستهای چندزبانه و ذخیرهسازی دادههای ۴ زبانه در دیتابیس.
۶. هماهنگی بین اجرای async ربات تلگرام و اجرای sync جنگو.
💡
راهحلها
۱. استفاده از Aiogram برای مدیریت ربات و Django برای پنل مدیریت.
۲. شناسایی کاربران با telegram_id یکتا به جای نام کاربری/رمز.
۳. ارسال پیامها در یک thread جداگانه با فاصله زمانی ۶۰ ثانیه بین هر ارسال برای جلوگیری از بلاک شدن.
۴. ساخت CustomUser با ارثبری از AbstractUser و افزودن فیلدهای اختصاصی تلگرام.
۵. ذخیره محتوای چندزبانه در فیلدهای جداگانه (title_en, title_ar, title_tr و ...).
۶. استفاده از sync_to_async برای فراخوانی ORM جنگو در محیط async ربات.
📚
دستاوردها
- کاهش زمان پاسخگویی به مشتریان از چند روز به چند ساعت.
- مدیریت یکپارچه تمام درخواستهای کاربران در یک پنل واحد.
- قابلیت ارسال پیام همگانی به تمام کاربران با یک کلیک.
- ثبتنام خودکار کاربران از طریق ربات تلگرام بدون نیاز به فرم.
- پشتیبانی از ۴ زبان (فارسی، انگلیسی، عربی، ترکی) برای محتوای پروژهها.
🔧
نکات فنی برجسته
- استفاده از FSM (Finite State Machine) در Aiogram برای مدیریت مراحل ثبتنام کاربر.
- پیادهسازی سیستم Permission سفارشی (IsSuperUser) برای محدودسازی دسترسیها.
- تبدیل تاریخ میلادی به شمسی با کتابخانه persiantools.
- مدیریت امن فایلهای آپلودشده با نامگذاری یکتا بر اساس timestamp.
- استفاده از AJAX برای ویرایش لینک کانالها بدون رفرش صفحه.
- پشتیبانی از Proxy (SOCKS5) برای اتصال به تلگرام در محیطهای محدود.
🏗️
معماری پروژه
پروژه بر پایه معماری MVT جنگو بنا شده و شامل سه اپلیکیشن اصلی است:
۱. crm: مدیریت کاربران، مشاوره، سرمایهگذاری، تریدرها و لینک کانالها.
۲. telegram_bot: پیادهسازی ربات تلگرام با Aiogram و مدیریت FSM.
۳. payments: بخش پرداخت (در حال توسعه).
ارتباط بین ربات و پنل از طریق دیتابیس مشترک (SQLite/MySQL) برقرار است. ربات در یک thread جداگانه در زمان اجرای runserver بالا میآید.
📐
مقیاس پروژه
پروژه در سطح یک اپلیکیشن متوسط با پتانسیل رشد به مقیاس بزرگ طراحی شده است. در حال حاضر از SQLite استفاده میکند که برای توسعه و تست مناسب است و برای پروداکشن قابل ارتقا به MySQL یا PostgreSQL میباشد.