Tworzenie bota Telegram do płatności za pomocą Stars bez rejestracji
Programiści mogą przyjmować donaty i sprzedawać produkty cyfrowe w Telegramie bez potrzeby rejestrowania IP ani podawania danych z paszportu. Korzystając z Telegrama Stars jako waluty, bot generuje faktury i automatycznie przetwarza płatności. Architektura opiera się na Pythonie z aiogram 3, SQLite do przechowywania danych oraz aiohttp do API Mini App. Dzięki temu każdy użytkownik z Telegramem może tworzyć produkty i uzyskiwać linki do płatności.
Architektura systemu
Bot na aiogram 3 komunikuje się z bazą SQLite, gdzie przechowywane są produkty, sprzedawcy i linki płatności. Oddzielny API na aiohttp obsługuje Mini App przez następujące punkty końcowe:
/api/products— katalog produktów./api/donate— dane dla przycisku donatu./api/create_invoice— generowanie faktury.
Logika płatności skupia się w bocie: Mini App pobiera dane przez API, bot tworzy faktury i potwierdza pomyślne płatności poprzez zdarzenie successful_payment.
Generowanie unikalnych linków
Dla bezpieczeństwa linki tworzone są z unikalnymi kodami typu prod_fgU7d, przechowywanymi w tabeli payment_links. Pełny URL: https://t.me/System_Paybot?start=prod_fgU7d. Zapobiega to próbom przebicia ID i umożliwia analizę źródeł ruchu.
Przy wydaniu treści produktu bot określa typ pliku po file_id i używa uniwersalnego mechanizmu wysyłania:
try:
await message.answer_document(document=content, caption=thanks)
except:
try:
await message.answer_photo(photo=content, caption=thanks)
except:
# kolejne próby dla video, audio itp.
Metoda sendDocument działa uniwersalnie dla większości formatów Telegrama.
Przetwarzanie płatności za pomocą Stars
Faktury tworzone są metodą create_invoice_link z parametrami:
invoice_link = await bot.create_invoice_link(
title=title,
description=f"Kupno: {title}",
payload=f"pay_{product_id}_{user_id}",
provider_token="",
currency="XTR",
prices=[{"label": title, "amount": amount}]
)
Telegram przetwarza płatność, wysyłając successful_payment z payload, który służy do identyfikacji produktu i wydania go użytkownikowi.
Funkcje admina i statystyki
Właściciel ma dostęp do poleceń:
/admin_stats— ogólna statystyka./admin_users— ostatni użytkownicy./admin_broadcast— rozsyłka masowa./admin_ban//admin_unban— zarządzanie dostępem.
Sprzedawcy korzystają z /stats do własnej analizy.
Rozwiązanie problemów wdrożenia
Ograniczenia Stars
Stars są naliczane właścicielowi bota, przesyłanie innym użytkownikom jest niemożliwe. Rozwiązanie: udostępnienie kodu źródłowego do samodzielnego uruchomienia botów.
HTTPS dla Mini App
Mini App wymaga HTTPS. Gdy port 443 jest zajęty (np. przez Xray VPN), używany jest podsłownik z Nginxem na porcie 8443:
- Podsłownik
shop.system-dev.ru. - Certbot do SSL.
- Otwarcie portu 8443 w iptables.
- URL w BotFather:
https://shop.system-dev.ru:8443.
Prawa dostępu do /var/www/systempay — chmod 755 dla www-data.
CORS w API
Dodano middleware w aiohttp:
@web.middleware
async def cors_middleware(request, handler):
response = await handler(request)
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS'
response.headers['Access-Control-Allow-Headers'] = 'Content-Type'
return response
Ostateczne możliwości
Bot obsługuje:
- Przesyłanie plików dowolnego typu lub linków.
- Donaty dowolnej kwoty.
- Mini App z katalogiem i adaptacyjnym interfejsem.
- Indywidualną statystykę.
- Panel administracyjny.
System gotowy do automatyzacji sprzedaży w Telegramie.
Co warto pamiętać
- Unikalne kody linków zapewniają bezpieczeństwo i analizę bez prób przebicia ID.
- Uniwersalna wysyłka plików przez
sendDocumentz fallback działa dla wszystkich formatów Telegrama. - Stars łatwo integrują się, ale są naliczane właścicielowi bota — kod jest otwarty do samodzielnego wdrożenia.
- HTTPS na niestandardowym porcie rozwiązuje Nginx + Certbot bez konfliktów z VPN.
- Middleware CORS w aiohttp rozwiązuje żądania międzydomenowe Mini App.
— Editorial Team
Brak komentarzy.