https://github.com/themusharraf/referral-bot
Creating unique link for telegram bot with python @themusharraf
https://github.com/themusharraf/referral-bot
aiogram aiogram3 bot python referral-system tortoise-orm
Last synced: 2 months ago
JSON representation
Creating unique link for telegram bot with python @themusharraf
- Host: GitHub
- URL: https://github.com/themusharraf/referral-bot
- Owner: themusharraf
- Created: 2024-11-05T11:52:21.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-11-05T12:08:43.000Z (7 months ago)
- Last Synced: 2025-02-09T09:29:08.541Z (4 months ago)
- Topics: aiogram, aiogram3, bot, python, referral-system, tortoise-orm
- Language: Python
- Homepage:
- Size: 6.84 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Python bilan telegram bot uchun noyob havola yaratish
## 1. User Modeli Ta'rifi
User modeli har bir foydalanuvchini ma'lumotlar bazasida ifodalaydi va asosiy ma'lumotlarni saqlash uchun maydonlarga ega:id: Har bir foydalanuvchi uchun noyob integer identifikatori, asosiy kalit `(pk=True)` sifatida belgilangan.
`user_id:` Foydalanuvchining noyob identifikatori, bu Telegram user_id yoki boshqa noyob ID bo'lishi mumkin.` unique=True` bilan yagona bo'lishi ta'minlangan.
`referral_code`: 36 belgigacha bo'lgan noyob satr `(CharField)` maydoni. Bu kod foydalanuvchining `referal identifikatori` sifatida xizmat qiladi.
`referred_by:` Boshqa bir foydalanuvchiga ishora qiluvchi xorijiy kalit. Bu maydon foydalanuvchini boshqa bir foydalanuvchi tomonidan taklif qilinganligini ko'rsatadi. Agar foydalanuvchi hech kim tomonidan taklif qilinmagan bo'lsa, bu maydon null=True bo'lib qoladi.
`referral_count:` 0 ga teng bo'lgan boshlang'ich qiymatga ega integer maydoni. Bu har bir foydalanuvchi tomonidan taklif qilingan odamlar sonini kuzatib boradi.
Meta Klass
Meta klassida model uchun jadval nomi "`users`" deb belgilangan.
`generate_unique_referral_code` Metodi
Bu sinf usuli `(@classmethod) `bo'lib, har bir foydalanuvchi uchun noyob referal kodini yaratadi.
Metod random `UUID (universial noyob identifikator)` yaratadi va bazada bunday kod mavjudligini tekshiradi` (await cls.filter(referral_code=referral_code).exists()).`
Agar noyob kod topilsa, u qaytariladi.
## 2. add_user Funksiyasi
add_user funksiyasi yangi foydalanuvchini tizimga ro'yxatdan o'tkazadi va agar kerak bo'lsa, uni referal orqali o'rnatadi.`user_id:` Foydalanuvchining noyob identifikatori (ehtimol, Telegram orqali olingan).
`referred_by_code:` Bu ixtiyoriy parametr bo'lib, foydalanuvchini taklif qilgan boshqa foydalanuvchining referal kodi hisoblanadi. Agar bu berilgan bo'lsa, funksiyada taklif qiluvchining `referral_count` qiymati oshiriladi.
Qadamlar:Referal Kod Yaratish: generate_unique_referral_code chaqirilib, yangi noyob referal kodi yaratiladi.
Foydalanuvchi Yaratish: Yangi `User` obyekti `user_id, referral_code, va referred_by` `None` bo'lgan holda yaratiladi.
Taklif Qiluvchini Tekshirish: Agar `referred_by_code` berilgan bo'lsa:
Mazkur referal kodiga ega User yozuvini olib keladi.
Agar taklif qiluvchi foydalanuvchi topilsa (`referrer)`, unda `user.referred_by` qiymati shu taklif qiluvchiga o'rnatiladi va taklif qiluvchi foydalanuvchining `referral_count` qiymati 1 ga oshiriladi va saqlanadi.Foydalanuvchini Saqlash: Yaratilgan yangi user ma'lumotlar bazasida saqlanadi.
## 3. startup Funktsiyasi
startup funksiyasi Tortoise ORM ni ishga tushiradi va ma'lumotlar bazasidagi sxemani yaratadi.`await Tortoise.init(...): sqlite://db.sqlite3` bilan `SQLite` ma'lumotlar bazasiga ulanadi va model aniqlamalarini __main__ dan olishini bildiradi.
`await Tortoise.generate_schemas():` Kerakli jadval tuzilmalarini yaratadi (User modeli uchun "users" jadvalini yaratadi).
Ishlash Jarayonining Qisqacha Tavsifi
Foydalanuvchini Ro'yxatdan O'tkazish: Yangi foydalanuvchi ro'yxatdan o'tganida, add_user chaqiriladi. Agar foydalanuvchi boshqa bir foydalanuvchi tomonidan taklif qilingan bo'lsa, `referred_by` maydoni o'rnatiladi va taklif qiluvchining referral_count qiymati oshiriladi.
Referallarni Kuzatish: Har bir foydalanuvchi noyob `referral_code` ga ega bo'lib, boshqalar bu kod orqali ro'yxatdan o'tishi mumkin.
Ma'lumotlar Bazasini Sozlash: `startup` ma'lumotlar bazasiga ulanishni ishga tushiradi va kerakli jadval tuzilmalari yaratadi.
Bu kod har bir foydalanuvchiga noyob `referal` kod berishni, referallarni kuzatishni va referal sonini dinamik tarzda yangilashni ta'minlaydi.
### database architecture

