start
This commit is contained in:
24
bot/handlers/__init__.py
Normal file
24
bot/handlers/__init__.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from aiogram import Router, types
|
||||
from aiogram.filters import CommandStart
|
||||
from bot.handlers import payments
|
||||
from bot.handlers.payments import send_donation_invoice
|
||||
|
||||
router = Router()
|
||||
router.include_router(payments.router)
|
||||
|
||||
@router.message(CommandStart())
|
||||
async def cmd_start(message: types.Message):
|
||||
await message.answer(f"""Привет, {message.from_user.full_name}!
|
||||
⭐ Поддержать проект
|
||||
|
||||
Если вам нравится проект и вы хотите помочь его развитию, вы можете отправить звёзды в качестве добровольной поддержки.
|
||||
|
||||
Пожертвования помогают покрывать:
|
||||
— еду автору
|
||||
— аренду серверов
|
||||
— развитие и улучшение проекта
|
||||
|
||||
Поддержка полностью добровольная и не является обязательным условием получения доступа.""")
|
||||
|
||||
# Отправляем кнопку оплаты (инвойс) сразу после текста
|
||||
await send_donation_invoice(message)
|
||||
46
bot/handlers/payments.py
Normal file
46
bot/handlers/payments.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from aiogram import Router, F, types
|
||||
from aiogram.filters import Command
|
||||
from aiogram.types import LabeledPrice, PreCheckoutQuery, CallbackQuery
|
||||
|
||||
router = Router()
|
||||
|
||||
# Функция отправки инвойса (чтобы не дублировать код)
|
||||
async def send_donation_invoice(message: types.Message):
|
||||
await message.answer_invoice(
|
||||
title="Пожертвование",
|
||||
description="пожертвовать на развитие",
|
||||
payload="donation_payload",
|
||||
provider_token="",
|
||||
currency="XTR",
|
||||
prices=[LabeledPrice(label="Пожертвование", amount=10)],
|
||||
start_parameter="donation",
|
||||
allow_paid_broadcast=False,
|
||||
)
|
||||
|
||||
@router.message(Command("pay"))
|
||||
async def cmd_pay(message: types.Message):
|
||||
await send_donation_invoice(message)
|
||||
|
||||
@router.callback_query(F.data == "donate_10_stars")
|
||||
async def on_donate_click(callback: CallbackQuery):
|
||||
await send_donation_invoice(callback.message)
|
||||
await callback.answer()
|
||||
|
||||
# Обработчик pre_checkout_query (проверка перед оплатой)
|
||||
|
||||
# Обработчик pre_checkout_query (проверка перед оплатой)
|
||||
@router.pre_checkout_query()
|
||||
async def pre_checkout_handler(pre_checkout_query: PreCheckoutQuery):
|
||||
await pre_checkout_query.answer(ok=True)
|
||||
|
||||
# Обработчик успешной оплаты
|
||||
@router.message(F.successful_payment)
|
||||
async def success_payment_handler(message: types.Message):
|
||||
payment_info = message.successful_payment
|
||||
# Здесь можно добавить логику начисления дней подписки в БД
|
||||
|
||||
await message.answer(
|
||||
f"✅ Оплата прошла успешно!\n"
|
||||
f"Сумма: {payment_info.total_amount} {payment_info.currency}\n"
|
||||
f"Спасибо за пожертвование!"
|
||||
)
|
||||
Reference in New Issue
Block a user