diff --git a/core/app.cpython-312-x86_64-linux-gnu.so b/core/app.cpython-312-x86_64-linux-gnu.so index 7f845e32..f23a9d60 100644 Binary files a/core/app.cpython-312-x86_64-linux-gnu.so and b/core/app.cpython-312-x86_64-linux-gnu.so differ diff --git a/middlewares/webhook_guard.py b/middlewares/webhook_guard.py new file mode 100644 index 00000000..7e2fa389 --- /dev/null +++ b/middlewares/webhook_guard.py @@ -0,0 +1,19 @@ +from aiohttp import web + + +def telegram_webhook_guard_middleware(webhook_path: str, secret_token: str): + @web.middleware + async def middleware(request: web.Request, handler): + if request.path != webhook_path: + return web.Response(status=204) + + if request.method != "POST": + return web.Response(status=204) + + header = request.headers.get("X-Telegram-Bot-Api-Secret-Token") + if header != secret_token: + return web.Response(status=204) + + return await handler(request) + + return middleware