Как добавить Telegram Stars в вашего бота. Гайд на Python + Aiogram 3

Как добавить Telegram Stars в вашего бота. Гайд на Python + Aiogram 3

Как вы уже знаете, Telegram будет банить ботов, которые не сделали Telegram Stars единственным методом оплаты. Чтобы не попасть под блокировку, следуйте нашему гайду по внедрению Stars в ваш проект.

Весь код будет написан на AIOgram 3.7.0. Для обновления напишите в командной строке:

​pip install aiogram==3.7.0

Библиотеки

from aiogram import Router, F, Bot from aiogram.filters import Command from aiogram.types import Message, PreCheckoutQuery

Отправка счета

router = Router() @router.message(Command('start')) # Обрабатываем команду /start async def create_invoice(msg: Message): await msg.answer_invoice( title="Заголовок", description="Описание", payload="payload", currency="XTR", prices=[ LabeledPrice(label="label", amount=5), # 5 Telegram Stars ], )

Обработка платежа

Pre Checkout Query отвечает за обработку и утверждение платежа перед тем, как пользователь его совершит.

@router.pre_checkout_query() async def checkout_handler(checkout_query: PreCheckoutQuery): await checkout_query.answer(ok=True)

Следующая функция будет отслеживать успешный платеж:

@router.message(F.successful_payment) async def star_payment(msg: Message, bot: Bot): await bot.refund_star_payment( # Возвращаем средства для теста msg.chat.id, msg.successful_payment.telegram_payment_charge_id, ) await msg.answer(f"ID вашей транзакции: {msg.successful_payment.telegram_payment_charge_id}")

Здесь вы можете прислать пользователю платный товар, продлить подписку, открыть доступ и т.д.

Как добавить Telegram Stars в вашего бота. Гайд на Python + Aiogram 3

Полный код

from aiogram import Router, F, Bot from aiogram.filters import Command from aiogram.types import Message, PreCheckoutQuery router = Router() @router.message(Command('start')) async def create_invoice(msg: Message): await msg.answer_invoice( title="Заголовок", description="Описание", payload="payload", currency="XTR", prices=[ LabeledPrice(label="label", amount=5), # 5 Telegram Stars ], ) @router.pre_checkout_query() async def checkout_handler(checkout_query: PreCheckoutQuery): await checkout_query.answer(ok=True) @router.message(F.successful_payment) async def star_payment(msg: Message, bot: Bot): await bot.refund_star_payment( # Возвращаем средства для теста msg.chat.id, msg.successful_payment.telegram_payment_charge_id, ) await msg.answer(f"ID вашей транзакции: {msg.successful_payment.telegram_payment_charge_id}")

Итог

Надеюсь этот код помог вам интегрировать Telegram Stars в ваш проект.

Если у вас нет навыков программирования, вы можете отдать это дело нам. Мы профессиональная команда разработчиков Telegram ботов. За 2 года работы выполнили более 50 проектов.

Получите бесплатную консультацию по разработке чат-бота уже сегодня 👇

Начать дискуссию