Vytvoření Telegram botu pro platby pomocí Stars bez registrace
Vývojáři mohou přijímat darování a prodávat digitální zboží v Telegramu bez nutnosti založit podnikatelskou činnost nebo poskytovat pasové údaje. Použitím Telegram Stars jako měny generuje bot faktury a automaticky zpracovává platby. Architektura využívá Python s aiogram 3, SQLite pro ukládání dat a aiohttp pro API Mini App. Tímto způsobem může každý uživatel s Telegramem vytvářet produkty a získávat odkazy pro platbu.
Architektura systému
Bot na aiogram 3 komunikuje s databází SQLite, kde jsou uloženy produkty, prodejci a platební odkazy. Samostatné API na aiohttp obsluhuje Mini App přes následující koncové body:
/api/products— katalog produktů./api/donate— data pro tlačítko daru./api/create_invoice— generování faktury.
Logika plateb je soustředěna v botu: Mini App požaduje data přes API, bot vytváří faktury a potvrzuje úspěšné platby prostřednictvím události successful_payment.
Generování jedinečných odkazů
Pro zajištění bezpečnosti jsou odkazy tvořeny s unikátními kódy typu prod_fgU7d, které jsou uloženy v tabulce payment_links. Plný URL: https://t.me/System_Paybot?start=prod_fgU7d. Toto zabrání bruteforce útokům a umožňuje analýzu zdrojů provozu.
Při vyplnění obsahu produktu určí bot typ souboru podle file_id a použije univerzální mechanismus odeslání:
try:
await message.answer_document(document=content, caption=thanks)
except:
try:
await message.answer_photo(photo=content, caption=thanks)
except:
# další pokusy pro video, audio atd.
Metoda sendDocument funguje univerzálne pro většinu formátů Telegramu.
Zpracování plateb prostřednictvím Stars
Faktury se vytvářejí metodou create_invoice_link s parametry:
invoice_link = await bot.create_invoice_link(
title=title,
description=f"Koupě: {title}",
payload=f"pay_{product_id}_{user_id}",
provider_token="",
currency="XTR",
prices=[{"label": title, "amount": amount}]
)
Telegram zpracovává platbu a odesílá successful_payment s payload, který slouží k identifikaci produktu a vydání obsahu uživateli.
Admin funkce a statistika
Pro správce jsou k dispozici příkazy:
/admin_stats— celková statistika./admin_users— poslední uživatelé./admin_broadcast— hromadná zpráva./admin_ban//admin_unban— řízení přístupu.
Prodejci používají /stats pro osobní analýzu.
Řešení problémů nasazení
Omezení Stars
Stars se zúčtovávají vlastníkovi bota, převody jiným uživatelům nejsou možné. Řešení: poskytnutí zdrojového kódu pro samostatné nasazení bota.
HTTPS pro Mini App
Mini App vyžaduje HTTPS. Při obsazeném portu 443 (Xray VPN) se používá podsítě s Nginxem na 8443:
- Podsítě
shop.system-dev.ru. - Certbot pro SSL.
- Otevření portu 8443 v iptables.
- URL v BotFather:
https://shop.system-dev.ru:8443.
Oprávnění k /var/www/systempay — chmod 755 pro www-data.
CORS v API
Do aiohttp byl přidán middleware:
@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
Konečné možnosti
Bot podporuje:
- Nahrávání souborů jakéhokoli typu nebo odkazů.
- Darování libovolné částky.
- Mini App s katalogem a adaptivním rozhraním.
- Osobní statistiku.
- Admin panel.
Systém je připraven k použití pro automatizaci prodeje v Telegramu.
Co je důležité
- Jedinečné kódy odkazů zajišťují bezpečnost a analýzu bez možnosti bruteforce.
- Univerzální odesílání souborů prostřednictvím
sendDocuments fallbackem funguje pro všechny formáty Telegramu. - Stars se snadno integrují, ale zúčtování probíhá vlastníkovi bota – zdrojový kód je otevřený pro samostatné nasazení.
- HTTPS na nestandardním portu řeší Nginx + Certbot bez konfliktu s VPN.
- Middleware CORS v aiohttp řeší křížové požadavky Mini App.
— Editorial Team
Zatím žádné komentáře.