• XSS.stack #1 – первый литературный журнал от юзеров форума

Как обработать запрос на вебхук ?

CheckData

(L2) cache
Пользователь
Регистрация
19.05.2023
Сообщения
304
Реакции
70
Добрый день, нужно обработать запрос, который шлется на вебхук. После платежки приходят данные и хочу сделать, чтобы они отсылались на вебхук и тг бот их же обработал, а после отправил пользователю - "good"

Код:
import logging
from aiogram.utils.executor import start_webhook
from create_bot import dp, bot
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from handlers import client
from aiohttp import web

WEBHOOK_HOST = ''
WEBHOOK_PATH = ''
WEBHOOK_URL = f"{WEBHOOK_HOST}{WEBHOOK_PATH}"
WEBAPP_HOST = '127.0.0.1'
WEBAPP_PORT = 8443

logging.basicConfig(level=logging.INFO)
dp.middleware.setup(LoggingMiddleware())
client.register_handlers_client(dp)


async def on_startup(dp):
    await bot.set_webhook(WEBHOOK_URL)


async def on_shutdown(dp):
    logging.warning('Shutting down..')
    await bot.delete_webhook()
    await dp.storage.close()
    await dp.storage.wait_closed()
    logging.warning('Bye!')


if __name__ == '__main__':
    start_webhook(
        dispatcher=dp,
        webhook_path=WEBHOOK_PATH,
        on_startup=on_startup,
        on_shutdown=on_shutdown,
        skip_updates=True,
        host=WEBAPP_HOST,
        port=WEBAPP_PORT,
    )
 
Код:
import logging
from aiogram.utils.executor import start_webhook
from create_bot import dp, bot
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from handlers import client
from aiohttp import web
from aiogram import Bot, Dispatcher, types
from aiogram.utils.executor import set_webhook

app = web.Application()
WEBHOOK_HOST = ''
WEBHOOK_PATH = f'bot'
WEBHOOK_URL = f"{WEBHOOK_HOST}/{WEBHOOK_PATH}"
WEBAPP_HOST = '127.0.0.1'
WEBAPP_PORT = 8443
Bot.set_current(bot)


logging.basicConfig(level=logging.INFO)
dp.middleware.setup(LoggingMiddleware())
client.register_handlers_client(dp)


async def on_startup(_):
    await bot.set_webhook(WEBHOOK_URL)


async def on_shutdown(_):
    logging.warning('Shutting down..')
    await bot.delete_webhook(WEBHOOK_URL)
    await dp.storage.close()
    await dp.storage.wait_closed()
    logging.warning('Bye!')


async def handle_webhook(request):
    #обработка команд
    update = types.Update(**await request.json())
    await dp.process_update(update)
    return web.Response()


async def handle_webhook2(request):
    #Обработка платежа
    return web.Response(text='response')

app.router.add_post(f'/bot', handler=handle_webhook)
app.router.add_post(f'/pay', handler=handle_webhook2)

if __name__ == "__main__":
    set_webhook(
        dispatcher=dp,
        webhook_path='',
        skip_updates=True,
        on_startup=on_startup,
        on_shutdown=on_shutdown,
        web_app=app,
    )
    web.run_app(
        app,
        host=WEBAPP_HOST,
        port=WEBAPP_PORT,
    )

Решение!
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх