mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-06 07:50:32 +00:00
* Migrate to hatchling instead of poetry, ruff instead of flake8 * Migrate to hatchling instead of poetry, ruff instead of flake8 * Update tests suite * venv? * -m venv? * Change dependencies * Remove venv * Change mypy config * Added changelog * Mark uvloop incompatible with pypy * Update release script * Use internal caching for dependencies * Re-disable cov branches * Added contributing guide
63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
from pathlib import Path
|
|
|
|
from aiohttp.web_fileresponse import FileResponse
|
|
from aiohttp.web_request import Request
|
|
from aiohttp.web_response import json_response
|
|
|
|
from aiogram import Bot
|
|
from aiogram.types import (
|
|
InlineKeyboardButton,
|
|
InlineKeyboardMarkup,
|
|
InlineQueryResultArticle,
|
|
InputTextMessageContent,
|
|
WebAppInfo,
|
|
)
|
|
from aiogram.utils.web_app import check_webapp_signature, safe_parse_webapp_init_data
|
|
|
|
|
|
async def demo_handler(request: Request):
|
|
return FileResponse(Path(__file__).parent.resolve() / "demo.html")
|
|
|
|
|
|
async def check_data_handler(request: Request):
|
|
bot: Bot = request.app["bot"]
|
|
|
|
data = await request.post()
|
|
if check_webapp_signature(bot.token, data["_auth"]):
|
|
return json_response({"ok": True})
|
|
return json_response({"ok": False, "err": "Unauthorized"}, status=401)
|
|
|
|
|
|
async def send_message_handler(request: Request):
|
|
bot: Bot = request.app["bot"]
|
|
data = await request.post()
|
|
try:
|
|
web_app_init_data = safe_parse_webapp_init_data(token=bot.token, init_data=data["_auth"])
|
|
except ValueError:
|
|
return json_response({"ok": False, "err": "Unauthorized"}, status=401)
|
|
|
|
reply_markup = None
|
|
if data["with_webview"] == "1":
|
|
reply_markup = InlineKeyboardMarkup(
|
|
inline_keyboard=[
|
|
[
|
|
InlineKeyboardButton(
|
|
text="Open",
|
|
web_app=WebAppInfo(url=str(request.url.with_scheme("https"))),
|
|
)
|
|
]
|
|
]
|
|
)
|
|
await bot.answer_web_app_query(
|
|
web_app_query_id=web_app_init_data.query_id,
|
|
result=InlineQueryResultArticle(
|
|
id=web_app_init_data.query_id,
|
|
title="Demo",
|
|
input_message_content=InputTextMessageContent(
|
|
message_text="Hello, World!",
|
|
parse_mode=None,
|
|
),
|
|
reply_markup=reply_markup,
|
|
),
|
|
)
|
|
return json_response({"ok": True})
|