Vaka Çalışması
Proje Vaka Çalışması
Zorluklar, çözümler, kazanımlar, teknik öne çıkanlar, mimari ve proje ölçeği.
⚡
Zorluklar
- Mesajları birden fazla kaynak gruptan birden fazla hedef gruba otomatik olarak yönlendirme ihtiyacı
- Grupların chat_id'lerini manuel müdahale olmadan Telegram'dan otomatik olarak alma
- Telegram mesaj gönderme hız sınırlarını yönetme ve botun engellenmesini önleme
- Yasaklı kelimeler listesi kullanarak uygunsuz içeriği filtreleme
- Her mesajın başına yönetici imzasını otomatik olarak ekleme
- Çeşitli içerik türlerini (metin, resim, dosya) destekleme
- Hedef grupları dinamik olarak etkinleştirme/devre dışı bırakma
- aiogram botunu Django ile tek bir projede entegre etme
- Kötüye kullanımı önlemek için kaynak grup sayısını sınırlama
💡
Çözümler
- Botu async yönetmek için aiogram kullanma
- Botu AppsConfig.ready() ile ayrı bir iş parçacığında çalıştırma
- Telegram API'den otomatik chat_id alma için resolve_chat_id yöntemini uygulama
- Forbidden_words modeli ile yönlendirmeden önce yasaklı kelimeleri filtreleme
- replace_or_add_id yöntemi ile otomatik imza ekleme
- Mesaj türünü algılayarak (metin/resim/belge) çeşitli içerik türlerini destekleme
- Hedef grupları etkinleştirmek/devre dışı bırakmak için toggle uygulama
- Kısıtlamaları aşmak için socks5 proxy kullanma
- chanels.count() < 10 koşulu ile 10 kaynak grup sınırı
- Güvenli Django ORM etkileşimi için sync_to_async kullanma
📚
Kazanımlar
- Eksiksiz Telegram mesaj otomatik yönlendirme sistemi
- Birden fazla kaynak ve hedef grup desteği
- Akıllı yasaklı kelime filtreleme
- Otomatik yönetici imzası ekleme
- Metin, resim ve dosya desteği
- Etkinleştirme/devre dışı bırakma ile dinamik yönetim
- Güvenli yönetim paneli
- aiogram botunun Django ile başarılı entegrasyonu
- SOCKS5 proxy desteği
🔧
Teknik Öne Çıkanlar
- Django 5.2.6 ve Python 3
- pymysql ile MySQL veritabanı
- Telegram botu için aiogram 3.28 (async)
- API için Django REST Framework 3.16
- Veri filtreleme için django-filter
- İki faktörlü kimlik doğrulama için pyotp
- Celali tarih için persiantools
- Botu ayrı iş parçacığında çalıştırma
- Telegram API ile otomatik chat_id alma
- SOCKS5 proxy desteği (aiohttp_socks)
- Güvenli ORM etkileşimi için sync_to_async
- Yasaklı kelime yönetimi
- Mesajlara otomatik imza ekleme
- Metin, resim ve belge desteği
🏗️
Mimari
Forward From Group, Django'nun MVT (Model-View-Template) mimarisi üzerine kurulmuştur ve iki ana uygulamadan oluşur:
1. crm: Bağlantı, kullanıcı ve yönetim paneli yönetiminden sorumlu
- Özel CustomUser modeli
- Hedef gruplar için Target_chanel_link modeli
- Kaynak gruplar için Origin_chanel_link modeli
- Yasaklı kelimeler için Forbidden_words modeli
- Yönetici kimliği için My_telegram_id modeli
- group_links, origin_group, forbidden_words, set_my_telegram_id görünümleri
2. telegram_bot: Telegram botunu çalıştırmaktan sorumlu
- aiogram Dispatcher ile bot.py dosyası
- Botu iş parçacığında çalıştırmak için AppsConfig.ready()
- Grup mesajları için forward_handler
- Kanal mesajları için channel_post_handler
- Hedef gruplara yönlendirme için forward_to_targets yöntemi
- BroadcastMessage ve TrainingVideo modelleri
Proje DEBUG modunda çalışır ve geliştirme için SQLite, üretim için MySQL kullanır.
📐
Proje Ölçeği
- 2 ana uygulama (crm, telegram_bot)
- 7 ana veri modeli
- Otomatik mesaj yönlendirme sistemi
- Özel yönetim paneli
- Yasaklı kelime filtreleme
- Kaynak ve hedef grup bağlantı yönetimi
- SOCKS5 proxy desteği
- Özel CustomUser
- Async/threading entegrasyonu
- 10 kaynak grup sınırı