o
    Fh                     @  s   d dl mZ g dZd dlZd dlmZmZmZmZm	Z	 d dl
mZ d dlmZmZ er2d dlmZ edZ			d d!ddZ			d d!ddZ				d"d#ddZ				d$d%ddZdS )&    )annotations)create_start_linkcreate_startgroup_linkcreate_startapp_linkcreate_deep_linkcreate_telegram_linkencode_payloaddecode_payloadN)TYPE_CHECKINGCallableLiteralOptionalcast)r   )r	   r   )Botz[^a-zA-Z0-9-_]Fbotr   payloadstrencodeboolencoder"Optional[Callable[[bytes], bytes]]returnc                   *   |   I dH j}ttt|d|||dS )aS  
    Create 'start' 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
    Nstartusername	link_typer   r   r   mer   r   r   r   r   r   r   r   r    r    M/var/www/html/venv/lib/python3.10/site-packages/aiogram/utils/deep_linking.pyr         r   c                   r   )aX  
    Create 'startgroup' 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
    N
startgroupr   r   r   r    r    r!   r   4   r"   r   app_nameOptional[str]c                   s,   |   I dH j}ttt|d||||dS )aS  
    Create 'startapp' deep link with your payload.

    If you need to encode payload or pass special characters - set encode as True

    **Read more**:

    - `Main Mini App links <https://core.telegram.org/api/links#main-mini-app-links>`_
    - `Direct mini app links <https://core.telegram.org/api/links#direct-mini-app-links>`_

    :param bot: bot instance
    :param payload: args passed with /start
    :param encode: encode payload with base64url or custom encoder
    :param app_name: if you want direct mini app link
    :param encoder: custom encoder callable
    :return: link
    Nstartapp)r   r   r   r$   r   r   r   )r   r   r   r$   r   r   r    r    r!   r   O   s   r   r   r   *Literal['start', 'startgroup', 'startapp']c                 C  s   t |ts	t|}|s|rt||d}tt|rtdt|dkr'td|s8t| fi t	t||i}|S t| |fi t	t||i}|S )aV  
    Create deep link.

    :param username:
    :param link_type: `start`, `startgroup` or `startapp`
    :param payload: any string-convertible data
    :param app_name: if you want direct mini app link
    :param encode: encode payload with base64url or custom encoder
    :param encoder: custom encoder callable
    :return: deeplink
    )r   zfWrong payload! Only A-Z, a-z, 0-9, _ and - are allowed. Pass `encode=True` or encode payload manually.@   z)Payload must be up to 64 characters long.)

isinstancer   r   researchBAD_PATTERN
ValueErrorlenr   r   )r   r   r   r$   r   r   	deep_linkr    r    r!   r   r   s   
r   )FN)
r   r   r   r   r   r   r   r   r   r   )FNN)r   r   r   r   r   r   r$   r%   r   r   r   r   )NFN)r   r   r   r'   r   r   r$   r%   r   r   r   r   r   r   )
__future__r   __all__r*   typingr
   r   r   r   r   aiogram.utils.linkr   aiogram.utils.payloadr	   r   aiogramr   compiler,   r   r   r   r   r    r    r    r!   <module>   s.    

'