From 2c6454f19f662919f80598cfee07702c43ba3c9d Mon Sep 17 00:00:00 2001 From: welaskez Date: Thu, 6 Mar 2025 12:25:50 +0500 Subject: [PATCH] Remove link_type param, added create_startapp_link method --- aiogram/utils/deep_linking.py | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/aiogram/utils/deep_linking.py b/aiogram/utils/deep_linking.py index 8956f93d..d44500ce 100644 --- a/aiogram/utils/deep_linking.py +++ b/aiogram/utils/deep_linking.py @@ -3,6 +3,7 @@ from __future__ import annotations __all__ = [ "create_start_link", "create_startgroup_link", + "create_startapp_link", "create_deep_link", "create_telegram_link", "encode_payload", @@ -24,7 +25,6 @@ BAD_PATTERN = re.compile(r"[^a-zA-Z0-9-_]") async def create_start_link( bot: Bot, payload: str, - link_type: Literal["start", "startgroup", "startapp"], encode: bool = False, encoder: Optional[Callable[[bytes], bytes]] = None, ) -> str: @@ -36,7 +36,6 @@ async def create_start_link( :param bot: bot instance :param payload: args passed with /start - :param link_type: name of query arg :param encode: encode payload with base64url or custom encoder :param encoder: custom encoder callable :return: link @@ -44,7 +43,7 @@ async def create_start_link( username = (await bot.me()).username return create_deep_link( username=cast(str, username), - link_type=link_type, + link_type="start", payload=payload, encode=encode, encoder=encoder, @@ -79,6 +78,34 @@ async def create_startgroup_link( ) +async def create_startapp_link( + bot: Bot, + payload: str, + encode: bool = False, + encoder: Optional[Callable[[bytes], bytes]] = None, +) -> str: + """ + Create 'startapp' deep link with your payload. + + If you need to encode payload or pass special characters - + set encode as True + + :param bot: bot instance + :param payload: args passed with /start + :param encode: encode payload with base64url or custom encoder + :param encoder: custom encoder callable + :return: link + """ + username = (await bot.me()).username + return create_deep_link( + username=cast(str, username), + link_type="startapp", + payload=payload, + encode=encode, + encoder=encoder, + ) + + def create_deep_link( username: str, link_type: Literal["start", "startgroup", "startapp"],