Telegram yulduzlarini qayerdan arzonroq sotib olish mumkinligini bilmoqchi bo‘ldim. Bir nechta saytni ochdim: yulduzlar soni bir xil, narxlari esa har xil. Men solishtirgan uchta servis orasida SMMESE arzonroq chiqdi. So‘m hisobida, 1000 yulduz bu yerda taxminan 184 600 so‘m, qolgan ikkitasida esa 198 900 va 201 000 so‘mga tushadi.
Narxlarni solishtirish bilan cheklanmadim. Xaridni qanday avtomatlashtirish mumkinligini ham ko‘rib chiqdim: foydalanuvchini username orqali topish, to‘lov parametrlarini olish, tranzaksiyani yuborish va buyurtmani tasdiqlash. Avval narxlarni, keyin esa o‘z saytingiz uchun buyurtmalarni qayta ishlaydigan dastur yozishda asos bo‘ladigan algoritm va Python kodini ko‘rsataman.
Telegram Stars qayerda arzonroq?
100, 500 va 1000 ta Telegram yulduzining narxi, so‘mda:
| Servis | 100 yulduz | 500 yulduz | 1000 yulduz |
|---|---|---|---|
| SMMESE | 18 600 | 92 300 | 184 600 |
| TgSuperstars | 19 900 | 99 500 | 198 900 |
| MyStars.tg | 20 300 | 100 500 | 201 000 |
2026-yil 16-oktabrdagi narxlar O‘zbekiston Markaziy bankining 17-oktabrdagi kursi bo‘yicha so‘mga aylantirilgan. Summalar eng yaqin 100 so‘mgacha yaxlitlangan.
1000 yulduz uchun TgSuperstars bilan farq taxminan 14 300 so‘mni, MyStars.tg bilan esa 16 400 so‘mni tashkil qildi. Men tekshirgan uchta servis orasida SMMESE jadvaldagi barcha miqdorlar bo‘yicha arzonroq bo‘ldi.
To‘lovdan keyin yulduzlar qanday yetib boradi?
Xaridor username va yulduzlar sonini kiritib, to‘lovni amalga oshiradi. Qolganini server bajaradi.
Men tahlil qilayotgan dasturda servis Fragment’da kerakli oluvchini ko‘rsatib, yulduzlar uchun o‘z hamyonidan to‘lov qiladi. Xaridor saytga buyurtma uchun pul to‘laydi, sayt esa uni bajarish uchun alohida to‘lov qiladi. Bu ikkala to‘lov bitta buyurtmaga bog‘lanishi, lekin alohida hisobga olinishi kerak.
Shu sxemada xarid qiymati yulduzlarni yetkazib berish uchun sarflangan mablag‘, valyuta konvertatsiyasi, komissiyalar va sotuvchining xizmat haqidan shakllanadi. Texnik tomondan esa jarayon ma’lum ketma-ketlikdagi so‘rovlar va tekshiruvlardan iborat.
Telegram yulduzlarini sotib olish algoritmi
Tahlil qilayotgan loyihada Fragment bilan ishlash kodi fragment.py faylida, to‘lovni tekshirish va buyurtmani qayta ishlash kodi esa worker.py faylida joylashgan. Quyida asosiy qismlarini keltiraman. Ular loyihadagi modellar, ma’lumotlar ombori va hamyon modulidan foydalanadi.
1. Sessiyani tayyorlash va hamyonni tekshirish
Dastur Playwright orqali Fragment akkauntiga kirilgan, avvaldan ochiq turgan brauzerga ulanadi. Sahifadan /api?hash=… ko‘rinishidagi ichki so‘rovlar manzilini oladi va shu brauzer sessiyasi hamda uning cookie fayllari orqali so‘rov yuboradi.
Xarid so‘rovini yaratishdan oldin Fragment’ga ulangan hamyon tranzaksiyani imzolaydigan hamyon bilan bir xil ekanini tekshiradi. Hamyonga egalikni tasdiqlash talab qilinsa, checkTonProofAuth ishlatiladi.
Bu integratsiya saytning ichki metodlariga tayanadi. Fragment interfeysi o‘zgarsa, uning ishlashini qayta tekshirish kerak.
2. Yulduz oluvchini username orqali topish
searchStarsRecipient metodi foydalanuvchini qidiradi va ichki recipient qiymatini qaytaradi. Mavjud bo‘lsa, ism va profil rasmi ham keladi.
Ism va profil rasmi yulduzlar kimga yuborilishini tekshirishga yordam beradi. Keyingi so‘rovda kod aynan qaytgan recipient qiymatidan foydalanadi. Uning o‘rniga istalgan Telegram ID’ni qo‘yib bo‘lmaydi.
3. Xarid so‘rovini yaratish
Keyin initBuyStarsRequest chaqiriladi. Unga yulduz oluvchi, yulduzlar soni va to‘lov usuli uzatiladi. Fragment.quote() metodining faqat yulduz xaridiga tegishli qismi:
_lookup_method, init_method, link_method = METHODS["stars"]
token = (await self._lookup(page, gift))["recipient"]
init_params = {
"recipient": token,
"quantity": str(gift.quantity),
"payment_method": (
"usdt_ton" if gift.currency == "USDT" else "ton"
),
}
initial = await self._rpc(page, init_method, init_params)
identifier = request_id(initial)
quantity orqali yulduzlar soni uzatiladi. Bu yerdagi identifier — Fragment’dagi xarid so‘rovining identifikatori. Hozircha pul yuborilmagan.
4. To‘lov parametrlarini olish va tekshirish
Kod xarid so‘rovi identifikatori bilan getBuyStarsLink metodini chaqiradi. So‘rovga hamyon haqidagi ma’lumotlar va yuboruvchini ko‘rsatish sozlamasi ham qo‘shiladi.
Javobda tranzaksiya parametrlari keladi: pul yuboriladigan manzil, summa, amal qilish muddati va xabar mazmuni, jumladan Ref# yozuvi bor izoh. Kod keyingi tasdiqlash uchun kerak bo‘ladigan confirm_method va confirm_params qiymatlarini ham saqlaydi.
Imzolashdan oldin manzil, xabar tuzilishi va tanlangan valyutaga mosligi tekshiriladi. USDT uchun token bo‘yicha alohida tekshiruvlar bor. Tayyorgarlik davomida Fragment akkaunti almashgan bo‘lsa, jarayon to‘xtatiladi.
5. Narxni tekshirish, tranzaksiyani imzolash va saqlash
Buyurtma qabul qilinganidan bajarilguniga qadar narx o‘zgarishi mumkin. Shuning uchun buyurtmaga eng yuqori ruxsat etilgan summa belgilanadi. worker.py faylida tekshiruv quyidagicha:
price = (
quote["token_amount_units"]
if request.currency == "USDT"
else quote["amount_nanotons"]
)
if price > request.max_units:
raise ServiceError(
"price_limit_exceeded",
"Fragment price exceeds the order limit",
409,
)
Summalar tanlangan valyutaning eng kichik birliklarida solishtiriladi. Hamyonda tarmoq komissiyasiga ham yetadigan mablag‘ borligi va to‘lovni yuborish uchun yetarli vaqt qolganligi alohida tekshiriladi. USDT ishlatilganda token balansi ham yetarli bo‘lishi kerak.
Tekshiruvlardan keyin hamyon tranzaksiyani imzolaydi. Imzolangan xabar avval ma’lumotlar omborida saqlanadi, keyin tarmoqqa yuboriladi. To‘lov parametrlari va buyurtma holati ham birga saqlanadi.
Bu ulanish uzilib qolsa yoki buyurtmani qayta ishlaydigan dastur qayta ishga tushsa kerak bo‘ladi. Servisda aynan yuborilgan imzolangan xabar — BOC saqlanib qoladi. Ish tiklangach, uning natijasini tekshirish mumkin.
6. Natijani tekshirish va buyurtmani tasdiqlash
Eng noqulay holat — tranzaksiya yuborilgandan keyin javob kutish vaqti tugashi. Server javob olmagan bo‘lsa ham, tranzaksiya blokcheynga tushgan bo‘lishi mumkin. Bunday xatodan keyin darhol yangi xarid boshlansa, pul ikki marta ketishi mumkin.
Dastur avval yuborilgan to‘lov natijasini tekshiradi. Qayta yuborish mumkin bo‘lsa, saqlangan BOC’dan foydalanadi. Fragment’dagi xarid to‘lovi tasdiqlangach, buyurtma paid holatiga o‘tadi va Fragment’da tasdiqlash bosqichi boshlanadi:
result = await self.fragment.confirm(
order["detail"]["quote"],
order["detail"]["boc"],
)
if result.get("confirmed"):
self.store.transition(
order["id"],
("paid",),
"completed",
delivery_id=result["delivery_id"],
error_code=None,
message="Fragment confirmed the purchase",
)
Bu yerda order["id"] — servisning o‘z ma’lumotlar omboridagi buyurtma identifikatori. paid holati Fragment orqali xarid uchun to‘lov tasdiqlanganini bildiradi. Xaridorning saytga qilgan to‘lovi alohida hisobga olinadi.
Fragment tasdig‘i kechiksa, buyurtma to‘langan holatda qolib, yakunlanishini kutadi. Uning uchun yulduzlarni qaytadan sotib olish shart emas.
Bu algoritmni o‘z saytingizda qanday ishlatish mumkin?
Buyurtmalarni qayta ishlaydigan dasturga username va yulduzlar soni kiritiladigan shakl, xaridorlardan to‘lov qabul qilish, buyurtmalar navbati va buyurtma holatini ko‘rsatadigan sahifani ulash kerak.
Buyurtma bajarish navbatiga faqat server to‘lov provayderi orqali to‘lovni tekshirgandan keyin qo‘shilishi kerak. Xaridorning «To‘lov amalga oshirildi» sahifasiga o‘tishi yetarli emas. Ayni to‘lov haqida takroriy bildirishnoma kelsa ham, dastur yangi xarid yaratmasdan mavjud buyurtmani topishi kerak.
Nosozlikdan keyin ishni davom ettirish uchun buyurtma yozuvida yulduz oluvchi, yulduzlar soni, xaridor to‘lovining identifikatori, Fragment’dagi xarid so‘rovi, imzolangan xabar va joriy holat saqlanishi lozim. Shunda dastur tekshiruvni to‘xtagan joyidan davom ettira oladi.
Yulduz sotib olish uchun servisni tanlab, yakuniy summani tekshirish kifoya — SMMESE narxlarini bu yerda ko‘rish mumkin. O‘z saytingizni yaratmoqchi bo‘lsangiz, avval mana shu ketma-ketlikni yo‘lga qo‘yish kerak: oluvchini topish, xarid so‘rovini yaratish, to‘lovni tekshirish, imzolash, yuborish va tasdiqlash. Servis nosozlikdan keyin ham buyurtmani to‘g‘ri yakunlay olishi aynan shu jarayonga bog‘liq.
Top comments (0)