o
    5˜ŽjL  ã                   @  s¾   d dl mZ g d¢Zd dlZd dlmZmZmZ d dlm	Z	 d dl
mZmZ er4d dlmZ d dlmZ e d	¡Z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Ú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    úW/var/www/kodo/Anonymous/send/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   7   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   R   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|ƒtkr/dt› 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 z characters long.)Ú
isinstancer   r	   ÚreÚsearchÚBAD_PATTERNÚ
ValueErrorÚlenÚDEEPLINK_PAYLOAD_LENGTHr   r   )r   r   r   r$   r   r   ÚmsgÚ	deep_linkr    r    r!   r   u   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   Úaiogram.utils.linkr   Úaiogram.utils.payloadr   r	   Úcollections.abcr   Úaiogramr   Úcompiler+   r.   r   r   r   r   r    r    r    r!   Ú<module>   s2    

üüû'ú