-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.py
54 lines (41 loc) · 1.61 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import asyncio
import logging
from aiogram import Bot, Dispatcher, Router, types
from aiogram.filters import Command
from aiogram.types import Message
from aiogram.utils.keyboard import InlineKeyboardBuilder
from config import TOKEN, PRICE
from payment import create, check
bot = Bot(TOKEN)
db = Dispatcher()
router = Router()
db.include_router(router)
@router.message(Command(commands=['start']))
async def start_handler(message: Message):
await message.answer('Привет!')
@router.message(Command(commands=['buy']))
async def buy_handler(message: Message):
payment_url, payment_id = create(PRICE, message.chat.id)
builder = InlineKeyboardBuilder()
builder.add(types.InlineKeyboardButton(
text='Оплатить',
url=payment_url
))
builder.add(types.InlineKeyboardButton(
text='Проверить оплату',
callback_data=f'check_{payment_id}'
))
await message.answer(f"Счет сформирован!", reply_markup=builder.as_markup())
@router.callback_query(lambda c: 'check' in c.data)
async def check_handler(callback: types.CallbackQuery):
result = check(callback.data.split('_')[-1])
if result:
await callback.message.answer('Оплата прошла успешно!')
else:
await callback.message.answer('Оплата еще не прошла или возникла ошибка')
await callback.answer()
async def main():
await db.start_polling(bot, skip_updates=False)
if __name__ == '__main__':
logging.basicConfig(level=logging.INFO)
asyncio.run(main())