⚡
چالشها
- نیاز به ارسال پیام همگانی به تعداد زیادی از کاربران تلگرام بدون مسدود شدن بات
- مدیریت محدودیتهای ارسال پیام تلگرام (Rate Limit)
- اجرای همزمان بات تلگرام و سرور جنگو در یک پروژه واحد
- ذخیره خودکار اطلاعات کاربران هنگام استارت بات
- نیاز به سیستم احراز هویت دو مرحلهای برای پنل مدیریتی
- مدیریت لینک کانالها و گروهها به صورت پویا
- ارسال تصویر و متن به صورت همزمان به کاربران و گروهها
- یکپارچهسازی سیستم CRM با بات تلگرام
💡
راهحلها
- استفاده از aiogram برای مدیریت بات تلگرام به صورت async
- اجرای بات در یک ترد جداگانه با AppsConfig.ready()
- ذخیره chat_id و username کاربران در مدل Users_link با get_or_create
- پیادهسازی ارسال پسزمینه با asyncio و threading
- استفاده از فاصله زمانی ۵ ثانیه بین ارسالها برای جلوگیری از محدودیت
- پیادهسازی سیستم 2FA با pyotp برای امنیت بیشتر
- استفاده از CustomUser سفارشی برای ذخیره اطلاعات تلگرام
- پیادهسازی پنل ادمین با فرمهای ساده HTML
- استفاده از persiantools برای نمایش تاریخ شمسی
📚
دستاوردها
- سامانه کامل مدیریت پیامهای تلگرام
- ارسال همگانی به کاربران و گروهها با مدیریت Rate Limit
- ذخیره خودکار کاربران در اولین تعامل با بات
- پنل مدیریتی امن با 2FA
- یکپارچهسازی موفق بات تلگرام با جنگو
- پشتیبانی از ارسال تصویر و متن
- سیستم CRM کامل برای مدیریت کاربران
🔧
نکات فنی برجسته
- Django 5.2.6 و Python 3
- پایگاه داده MySQL با pymysql
- aiogram 3.28 برای بات تلگرام (async)
- python-telegram-bot 22.3 به عنوان پشتیبان
- Django REST Framework 3.16 برای API
- django-filter برای فیلتر دادهها
- django-environ و python-decouple برای مدیریت تنظیمات
- pyotp برای احراز هویت دو مرحلهای
- persiantools برای تاریخ شمسی
- اجرای بات در ترد جداگانه با AppsConfig
- مدیریت Rate Limit تلگرام با فاصله ۵ ثانیه
- CustomUser سفارشی برای ذخیره telegram_id و chat_id
- پیادهسازی 2FA با TOTP
🏗️
معماری پروژه
پروژه فوروارد بات بر پایه معماری MVT (Model-View-Template) جنگو ساخته شده و از دو اپلیکیشن اصلی تشکیل شده است:
۱. crm: مسئول مدیریت کاربران، لینکها و پنل ادمین
- مدل CustomUser سفارشی با telegram_id, telegram_username, phone_number
- مدل Chanel_link برای ذخیره لینک کانالها
- مدل Users_link برای ذخیره chat_id کاربران
- ویوهای login_view, sendmassage, sendgroupmessage
- ویوهای group_links, users_link برای مدیریت لینکها
۲. telegram_bot: مسئول اجرای بات تلگرام
- فایل bot.py با aiogram Dispatcher
- AppsConfig.ready() برای اجرای بات در ترد جداگانه
- مدل BroadcastMessage برای ذخیره پیامهای همگانی
- مدل TrainingVideo برای ویدیوهای آموزشی
- هندلر /start برای ذخیره خودکار کاربران
پروژه در حالت DEBUG اجرا میشود و از SQLite برای توسعه و MySQL برای تولید استفاده میکند.
📐
مقیاس پروژه
- ۲ اپلیکیشن اصلی (crm, telegram_bot)
- ۵ مدل دادهای اصلی
- سیستم بات تلگرام با aiogram
- پنل ادمین اختصاصی
- سیستم 2FA
- ارسال همگانی به کاربران و گروهها
- مدیریت لینک کانالها
- CustomUser سفارشی
- یکپارچهسازی async/threading