o
    LDi                     @  s   d dl mZ g dZd dlZd dlmZmZmZmZ d dl	m
Z
 d dlmZmZ er6d dlmZ d 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_deep_linkcreate_start_linkcreate_startapp_linkcreate_startgroup_linkcreate_telegram_linkdecode_payloadencode_payloadN)TYPE_CHECKINGLiteralOptionalcast)r   )r   r	   )Callable)Botz[^a-zA-Z0-9-_]Fbotr   payloadstrencodeboolencoderCallable[[bytes], bytes] | None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    f/var/www/www-root/data/www/77.83.87.30/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   6   r"   r   app_name
str | Nonec                   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   Q   s   r   r   r   *Literal['start', 'startgroup', 'startapp']c                 C  s   t |ts	t|}|s|rt||d}tt|rd}t|t|dkr+d}t||s<t| 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   msg	deep_linkr    r    r!   r   t   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   aiogram.utils.linkr   aiogram.utils.payloadr   r	   collections.abcr   aiogramr   compiler,   r   r   r   r   r    r    r    r!   <module>   s0    

'