a
    y{Jh                     @  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rdd dlmZ edZdd
dddddddZdd
dddddddZddddddddddZdS )    )annotations)create_start_linkcreate_startgroup_linkcreate_deep_linkcreate_telegram_linkencode_payloaddecode_payloadN)TYPE_CHECKINGCallableLiteralOptionalcast)r   )r   r   )Botz
[^A-z0-9-]Fr   strboolz"Optional[Callable[[bytes], bytes]])botpayloadencodeencoderreturnc                   s(   |   I dH j}ttt|d|||dS )a[  
    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   L/var/www/shaz/venv/lib/python3.9/site-packages/aiogram/utils/deep_linking.pyr      s    r   c                   s(   |   I dH j}ttt|d|||dS )a`  
    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
    NZ
startgroupr   r   r   r   r   r   r   4   s    r   zLiteral['start', 'startgroup'])r   r   r   r   r   r   c                 C  sh   t |tst|}|s|r&t||d}tt|r:tdt|dkrNtdt| fi t	t||iS )a  
    Create deep link.

    :param username:
    :param link_type: `start` or `startgroup`
    :param payload: any string-convertible data
    :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   P   s    
r   )FN)FN)FN)
__future__r   __all__r!   typingr	   r
   r   r   r   Zaiogram.utils.linkr   Zaiogram.utils.payloadr   r   Zaiogramr   compiler#   r   r   r   r   r   r   r   <module>   s"   	
       