§
    ä¦djT-  ã                  óH  — d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z
ddlZ
ddlZ
ddlmZ ddlmZ ddlmZ dZdZ G d	„ d
e¦  «        Z ed¦  «        fd#d„Zd$d„Zd%d„Z G d„ d¦  «        Zd&d„Zd'd„Zd(d„Zd(d„Zd)d!„Ze d"k    r e! e¦   «         ¦  «        ‚dS )*z5Small Telegram Bot API bridge for messages and files.é    )ÚannotationsN)ÚPath)ÚAny)Úuuid4zhttps://api.telegram.orgzhttps://api.telegram.org/filec                  ó   — e Zd ZdS )ÚTelegramErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    útelegram_bot.pyr   r      s   € € € € € Ø€Dr   r   z.envÚpathr   ÚreturnÚNonec                óö  — |                       ¦   «         sd S |                      d¬¦  «                             ¦   «         D ]¹}|                     ¦   «         }|r|                     d¦  «        sd|vrŒ2|                     dd¦  «        \  }}|                     ¦   «         }|                     ¦   «                              d¦  «                             d¦  «        }t          j                             ||¦  «         Œºd S )Núutf-8©Úencodingú#ú=é   ú"ú')	ÚexistsÚ	read_textÚ
splitlinesÚstripÚ
startswithÚsplitÚosÚenvironÚ
setdefault)r   Úraw_lineÚlineÚkeyÚvalues        r   Úload_dotenvr(      sç   € Ø�;Š;‰=Œ=ð Øˆà—N’N¨G�NÑ4Ô4×?Ò?ÑAÔAð *ð *ˆØ�~Š~ÑÔˆØð 	�t—’ sÑ+Ô+ð 	¨s¸$¨¨ØØ—Z’Z  QÑ'Ô'‰
ˆˆUØ�iŠi‰kŒkˆØ—’‘”×#Ò# CÑ(Ô(×.Ò.¨sÑ3Ô3ˆÝ
Œ
×Ò˜c 5Ñ)Ô)Ð)Ð)ð*ð *r   ÚnameÚstrc                ón   — t           j                             | ¦  «        }|st          d| › d�¦  «        ‚|S )NzMissing z. Add it to .env or export it.)r!   r"   Úgetr   )r)   r'   s     r   Úrequire_envr-   *   s=   € ÝŒJ�NŠN˜4Ñ Ô €EØð MÝÐK tÐKÐKÐKÑLÔLÐLØ€Lr   r'   r   c                ó0   — t          j        | dd¬¦  «        S )NF©ú,ú:)Úensure_asciiÚ
separators)ÚjsonÚdumps)r'   s    r   Úcompact_jsonr6   1   s   € ÝŒ:�e¨%¸JÐGÑGÔGÐGr   c                  óŽ   — e Zd Zd3d„Zd4d5d„Zd6d„Zd7d„Zd8d„Zd9d„Zd:d„Z	d4d;d#„Z
d4d<d&„Zd=d'„Zd>d(„Zd?d*„Zd?d+„Zd@d.„ZdAdBd2„Zd	S )CÚTelegramBotÚtokenr*   Údata_dirr   Údownload_dirr   r   c                óX   — || _         || _        || _        |dz  | _        |dz  | _        d S )Nz
state.jsonzinbox.jsonl)r9   r:   r;   Ú
state_pathÚ
inbox_path)Úselfr9   r:   r;   s       r   Ú__init__zTelegramBot.__init__6   s4   € ØˆŒ
Ø ˆŒØ(ˆÔØ" \Ñ1ˆŒØ" ]Ñ2ˆŒˆˆr   NÚmethodÚpayloadúdict[str, Any] | Noneúdict[str, Any]c                ó   — |pi }t           j                             |¦  «                             d¦  «        }t           j                             t          › d| j        › d|› �|d¬¦  «        }|                      |¦  «        S )Nr   ú/botú/ÚPOST)ÚdatarA   )	ÚurllibÚparseÚ	urlencodeÚencodeÚrequestÚRequestÚAPI_ROOTr9   Ú
_read_json)r?   rA   rB   ÚbodyrN   s        r   ÚapizTelegramBot.api=   s   € Ø�-˜RˆÝŒ|×%Ò% gÑ.Ô.×5Ò5°gÑ>Ô>ˆÝ”.×(Ò(ÝÐ2Ð2˜TœZÐ2Ð2¨&Ð2Ð2ØØð )ñ 
ô 
ˆð
 �Š˜wÑ'Ô'Ð'r   ÚfieldsÚ
file_fieldÚ	file_pathc           	     óR  — dt          ¦   «         j        › �}t          ¦   «         }|                     ¦   «         D ]§\  }}|                     d|› d�                     d¦  «        ¦  «         |                     d|› d�                     d¦  «        ¦  «         |                     t          |¦  «                             d¦  «        ¦  «         |                     d¦  «         Œ¨t          j        |j	        ¦  «        d         pd	}	|                     d|› d�                     d¦  «        ¦  «         |                     d|› d
|j	        › d|	› d�                     d¦  «        ¦  «         |                     | 
                    ¦   «         ¦  «         |                     d¦  «         |                     d|› d�                     d¦  «        ¦  «         t          j                             t          › d| j        › d|› �t!          |¦  «        ddd|› �i¬¦  «        }
|                      |
¦  «        S )Nz----codex-telegram-z--z
r   z&Content-Disposition: form-data; name="z"

s   
r   zapplication/octet-streamz"; filename="z"
Content-Type: z

z--
rF   rG   rH   zContent-Typezmultipart/form-data; boundary=)rI   rA   Úheaders)r   ÚhexÚ	bytearrayÚitemsÚextendrM   r*   Ú	mimetypesÚ
guess_typer)   Ú
read_bytesrJ   rN   rO   rP   r9   ÚbytesrQ   )r?   rA   rT   rU   rV   ÚboundaryrR   r&   r'   Úcontent_typerN   s              r   Úapi_multipartzTelegramBot.api_multipartG   s3  € ð 7­©¬¬Ð6Ð6ˆÝ‰{Œ{ˆà Ÿ,š,™.œ.ð 	!ð 	!‰JˆC�Ø�KŠKÐ+˜XÐ+Ð+Ð+×2Ò2°7Ñ;Ô;Ñ<Ô<Ð<Ø�KŠKÐOÀÐOÐOÐO×VÒVÐW^Ñ_Ô_Ñ`Ô`Ð`Ø�KŠK�˜E™
œ
×)Ò)¨'Ñ2Ô2Ñ3Ô3Ð3Ø�KŠK˜Ñ Ô Ð Ð å Ô+¨I¬NÑ;Ô;¸AÔ>Ð\ÐB\ˆØ�ŠÐ'˜Ð'Ð'Ð'×.Ò.¨wÑ7Ô7Ñ8Ô8Ð8Ø�Šð8¸ð 8ð 8Ø&œ^ð8ð 8à!-ð8ð 8ð 8÷ Šf�W‰oŒoñ	
ô 	
ð 	
ð 	�Š�I×(Ò(Ñ*Ô*Ñ+Ô+Ð+Ø�Š�GÑÔÐØ�ŠÐ)˜Ð)Ð)Ð)×0Ò0°Ñ9Ô9Ñ:Ô:Ð:å”.×(Ò(ÝÐ2Ð2˜TœZÐ2Ð2¨&Ð2Ð2Ý�t‘”ØØ#Ð%PÀhÐ%PÐ%PÐQð	 )ñ 
ô 
ˆð �Š˜wÑ'Ô'Ð'r   rN   úurllib.request.Requestc                ót  — 	 t           j                             |d¬¦  «        5 }t          j        |                     ¦   «                              d¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   n�# t           j        j        $ rI}|                     ¦   «                              dd¬¦  «        }t          d|j
        › d|› �¦  «        |‚d }~wt           j        j        $ r}t          d|j        › �¦  «        |‚d }~ww xY w|                     d	¦  «        st          d
t          |¦  «        › �¦  «        ‚|S )NéZ   ©Útimeoutr   Úreplace)ÚerrorszTelegram API HTTP z: zTelegram API request failed: ÚokzTelegram API error: )rJ   rN   Úurlopenr4   ÚloadsÚreadÚdecodeÚerrorÚ	HTTPErrorr   ÚcodeÚURLErrorÚreasonr,   r6   )r?   rN   ÚresponserI   ÚexcÚdetails         r   rQ   zTelegramBot._read_jsonl   sŠ  € ð	WÝ”×'Ò'¨¸Ð'Ñ<Ô<ð CÀÝ”z (§-¢-¡/¤/×"8Ò"8¸Ñ"AÔ"AÑBÔB�ðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð CøøåŒ|Ô%ð 	Tð 	Tð 	TØ—X’X‘Z”Z×&Ò& w°yÐ&ÑAÔAˆFÝÐ I°S´XÐ IÐ IÀÐ IÐ IÑJÔJÐPSÐSøøøøÝŒ|Ô$ð 	Wð 	Wð 	WÝÐ LÀÄ
Ð LÐ LÑMÔMÐSVÐVøøøøð	Wøøøð �xŠx˜‰~Œ~ð 	MÝÐ Kµ|ÀDÑ7IÔ7IÐ KÐ KÑLÔLÐLØˆsG   ‚!A5 £:A)ÁA5 Á)A-Á-A5 Á0A-Á1A5 Á5DÂ	ACÃDÃ$C<Ã<Dc                ó8   — |                       d¦  «        d         S )NÚgetMeÚresult©rS   )r?   s    r   Úget_mezTelegramBot.get_mez   s   € Ø�xŠx˜Ñ Ô  Ô*Ð*r   Úoffsetú
int | Nonerh   Úintúlist[dict[str, Any]]c                ó|   — |t          j        dgd¬¦  «        dœ}|�||d<   |                      d|¦  «        d         S )NÚmessager/   )r3   )rh   Úallowed_updatesr}   Ú
getUpdatesrz   )r4   r5   rS   )r?   r}   rh   rB   s       r   Úget_updateszTelegramBot.get_updates}   sP   € àÝ#œz¨9¨+À*ÐMÑMÔMð#
ð #
ˆð ÐØ &ˆG�HÑØ�xŠx˜ gÑ.Ô.¨xÔ8Ð8r   Úchat_idÚtextc                ó@   — |                       d||dœ¦  «        d         S )NÚsendMessage)r†   r‡   rz   r{   )r?   r†   r‡   s      r   Úsend_messagezTelegramBot.send_message†   s#   € Ø�xŠx˜°7ÀDÐ'IÐ'IÑJÔJÈ8ÔTÐTr   r   Úcaptionú
str | Nonec                ó    — |                      ¦   «         st          d|› �¦  «        ‚d|i}|r||d<   |                      d|d|¦  «        d         S )NzFile not found: r†   r‹   ÚsendDocumentÚdocumentrz   )Úis_filer   rc   )r?   r†   r   r‹   rT   s        r   Úsend_documentzTelegramBot.send_document‰   sd   € Ø�|Š|‰~Œ~ð 	;ÝÐ 9°4Ð 9Ð 9Ñ:Ô:Ð:Ø"+¨WÐ!5ˆØð 	(Ø 'ˆF�9ÑØ×!Ò! .°&¸*ÀdÑKÔKÈHÔUÐUr   Úfile_idÚtarget_namec                óX  — |                       dd|i¦  «        d         }|d         }|pt          |¦  «        j        }| j        |z  }|j                             dd¬¦  «         t          j                             t          › d| j
        › d|› �¦  «        }	 t          j                             |d	¬
¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   n4# t          j        j        $ r}	t!          d|	j        › �¦  «        |	‚d }	~	ww xY w|S )NÚgetFiler’   rz   rV   T©ÚparentsÚexist_okrF   rG   rf   rg   zTelegram file download failed: )rS   r   r)   r;   ÚparentÚmkdirrJ   rN   rO   Ú	FILE_ROOTr9   rl   Úwrite_bytesrn   rp   rs   r   rt   )
r?   r’   r“   Ú	file_inforV   Úsuffix_nameÚtargetrN   ru   rv   s
             r   Údownload_filezTelegramBot.download_file‘   sj  € Ø—H’H˜Y¨°GÐ(<Ñ=Ô=¸hÔGˆ	Ø˜kÔ*ˆ	Ø!Ð9¥T¨)¡_¤_Ô%9ˆØÔ" [Ñ0ˆØŒ×Ò D°4ÐÑ8Ô8Ð8å”.×(Ò(­IÐ)SÐ)S¸4¼:Ð)SÐ)SÈ	Ð)SÐ)SÑTÔTˆð	YÝ”×'Ò'¨¸Ð'Ñ<Ô<ð 4ÀØ×"Ò" 8§=¢=¡?¤?Ñ3Ô3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4øøåŒ|Ô$ð 	Yð 	Yð 	YÝÐ NÀ#Ä*Ð NÐ NÑOÔOÐUXÐXøøøøð	Yøøøàˆs<   Â!C6 Â6(C*ÃC6 Ã*C.Ã.C6 Ã1C.Ã2C6 Ã6D'Ä
D"Ä"D'c                ó¼   — | j                              ¦   «         sd S t          j        | j                              d¬¦  «        ¦  «        }|                     d¦  «        S )Nr   r   r}   )r=   r   r4   rm   r   r,   )r?   rI   s     r   Úload_offsetzTelegramBot.load_offset    sQ   € ØŒ×%Ò%Ñ'Ô'ð 	Ø�4ÝŒz˜$œ/×3Ò3¸WÐ3ÑEÔEÑFÔFˆØ�xŠx˜Ñ!Ô!Ð!r   c                óª   — | j                              dd¬¦  «         | j                             t	          j        d|idd¬¦  «        dz   d¬	¦  «         d S )
NTr–   r}   Fé   ©r2   Úindentú
r   r   )r:   rš   r=   Ú
write_textr4   r5   )r?   r}   s     r   Úsave_offsetzTelegramBot.save_offset¦   sg   € ØŒ×Ò D°4ÐÑ8Ô8Ð8ØŒ×"Ò"ÝŒJ˜ &Ð)¸ÀaÐHÑHÔHÈ4ÑOØð 	#ñ 	
ô 	
ð 	
ð 	
ð 	
r   Úupdatec                óò   — | j                              dd¬¦  «         | j                             dd¬¦  «        5 }|                     t          |¦  «        dz   ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NTr–   Úar   r   r§   )r:   rš   r>   ÚopenÚwriter6   )r?   rª   Ústreams      r   Úappend_inboxzTelegramBot.append_inbox­   s¸   € ØŒ×Ò D°4ÐÑ8Ô8Ð8ØŒ_×!Ò! #°Ð!Ñ8Ô8ð 	6¸FØ�LŠL� fÑ-Ô-°Ñ4Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6s   ¹&A,Á,A0Á3A0c                ó6  — |                       |¦  «         |                     d¦  «        pi }|                     d¦  «        pi }|                     d¦  «        }|                     d¦  «        }|                      |¦  «        }|dk    r%|�#|                      t	          |¦  «        d¦  «         |                     d¦  «        ||                     d¦  «        pi                      d	¦  «        |d
„ |D ¦   «         dœ}t          t          |¦  «        d¬¦  «         d S )Nr‚   ÚchatÚidr‡   z/startz.Bot is connected. Send messages or files here.Ú	update_idÚfromÚusernamec                ó,   — g | ]}t          |¦  «        ‘ŒS r   )r*   )Ú.0r   s     r   ú
<listcomp>z-TelegramBot.handle_update.<locals>.<listcomp>Â   s   € Ð<Ð<Ð<¨�3˜t™9œ9Ð<Ð<Ð<r   )r´   r†   rµ   r‡   Ú
downloadedT©Úflush)r°   r,   Údownload_message_filesrŠ   r*   Úprintr6   )r?   rª   r‚   r²   r†   r‡   rº   Úsummarys           r   Úhandle_updatezTelegramBot.handle_update²   s  € Ø×Ò˜&Ñ!Ô!Ð!Ø—*’*˜YÑ'Ô'Ð-¨2ˆØ�{Š{˜6Ñ"Ô"Ð( bˆØ—(’(˜4‘.”.ˆØ�{Š{˜6Ñ"Ô"ˆà×0Ò0°Ñ9Ô9ˆ
Ø�8ÒÐ Ð 3Ø×Ò�c '™lœlÐ,\Ñ]Ô]Ð]ð  Ÿš KÑ0Ô0ØØ—[’[ Ñ(Ô(Ð.¨B×3Ò3°JÑ?Ô?ØØ<Ð<°Ð<Ñ<Ô<ð
ð 
ˆõ 	�l˜7Ñ#Ô#¨4Ð0Ñ0Ô0Ð0Ð0Ð0r   r‚   ú
list[Path]c                ó  — g }|                      d¦  «        }|rB|                     |                      |d         |                      d¦  «        ¦  «        ¦  «         dD ]G}|                      |¦  «        }|r.|                     |                      |d         ¦  «        ¦  «         ŒH|                      d¦  «        pg }|r@t          |d„ ¬¦  «        }|                     |                      |d         ¦  «        ¦  «         |S )Nr�   r’   Ú	file_name)ÚaudioÚvoiceÚvideoÚ	animationÚstickerÚphotoc                ó.   — |                       dd¦  «        S )NÚ	file_sizer   )r,   )Úitems    r   ú<lambda>z4TelegramBot.download_message_files.<locals>.<lambda>Ô   s   € °4·8²8¸KÈÑ3KÔ3K€ r   )r&   )r,   Úappendr    Úmax)r?   r‚   rº   r�   r&   rÌ   ÚphotosÚlargests           r   r½   z"TelegramBot.download_message_filesÆ   s  € Ø!#ˆ
à—;’;˜zÑ*Ô*ˆØð 	bØ×Ò˜d×0Ò0°¸)Ô1DÀhÇlÂlÐS^ÑF_ÔF_Ñ`Ô`ÑaÔaÐaàFð 	Gð 	GˆCØ—;’;˜sÑ#Ô#ˆDØð GØ×!Ò! $×"4Ò"4°T¸)´_Ñ"EÔ"EÑFÔFÐFøà—’˜WÑ%Ô%Ð+¨ˆØð 	FÝ˜&Ð&KÐ&KÐLÑLÔLˆGØ×Ò˜d×0Ò0°¸Ô1CÑDÔDÑEÔEÐEàÐr   FÚonceÚboolc                ó@  — |                       ¦   «         }t          dd¬¦  «         	 |                      ||¬¦  «        }|D ]D}|                      |¦  «         t	          |d         ¦  «        dz   }|                      |¦  «         ŒE|rd S |st          j        d¦  «         Œy)Nz/Polling Telegram updates. Press Ctrl+C to stop.Tr»   )r}   rh   r´   r   )r¢   r¾   r…   rÀ   r   r©   ÚtimeÚsleep)r?   rh   rÒ   r}   Úupdatesrª   s         r   ÚrunzTelegramBot.runÙ   s¼   € Ø×!Ò!Ñ#Ô#ˆÝÐ?ÀtÐLÑLÔLÐLð		Ø×&Ò&¨f¸gÐ&ÑFÔFˆGØ!ð )ð )�Ø×"Ò" 6Ñ*Ô*Ð*Ý˜V KÔ0Ñ1Ô1°AÑ5�Ø× Ò  Ñ(Ô(Ð(Ð(Øð Ø�Øð Ý”
˜1‘”�ð		r   )r9   r*   r:   r   r;   r   r   r   )N)rA   r*   rB   rC   r   rD   )
rA   r*   rT   rD   rU   r*   rV   r   r   rD   )rN   rd   r   rD   )r   rD   )r}   r~   rh   r   r   r€   )r†   r*   r‡   r*   r   rD   )r†   r*   r   r   r‹   rŒ   r   rD   )r’   r*   r“   rŒ   r   r   )r   r~   )r}   r   r   r   )rª   rD   r   r   )r‚   rD   r   rÁ   )F)rh   r   rÒ   rÓ   r   r   )r	   r
   r   r@   rS   rc   rQ   r|   r…   rŠ   r‘   r    r¢   r©   r°   rÀ   r½   rØ   r   r   r   r8   r8   5   s^  € € € € € ð3ð 3ð 3ð 3ð(ð (ð (ð (ð (ð#(ð #(ð #(ð #(ðJð ð ð ð+ð +ð +ð +ð9ð 9ð 9ð 9ðUð Uð Uð UðVð Vð Vð Vð Vðð ð ð ð ð"ð "ð "ð "ð
ð 
ð 
ð 
ð6ð 6ð 6ð 6ð
1ð 1ð 1ð 1ð(ð ð ð ð&ð ð ð ð ð ð r   r8   Úargsúargparse.Namespacec                ó�   — t          | dd ¦  «        }|r|S t          j                             d¦  «        }|r|S t	          d¦  «        ‚)Nr†   ÚTELEGRAM_DEFAULT_CHAT_IDzDMissing chat_id. Pass it explicitly or set TELEGRAM_DEFAULT_CHAT_ID.)Úgetattrr!   r"   r,   r   )rÙ   r†   Údefault_chat_ids      r   Úresolve_chat_idrß   è   sQ   € Ý�d˜I tÑ,Ô,€GØð Øˆå”j—n’nÐ%?Ñ@Ô@€OØð ØÐå
Ð^Ñ
_Ô
_Ð_r   úargparse.ArgumentParserc                 ó  — t          j        d¬¦  «        } |                      dd¬¦  «        }|                     dd¬¦  «         |                     d	d
¬¦  «        }|                     dt
          dd¬¦  «         |                     ddd¬¦  «         |                     dd¬¦  «        }|                     ddd¬¦  «         |                     dd¬¦  «        }|                     ddd¬¦  «         |                     dd¬¦  «         | S )Nz%Telegram Bot API bridge for @kjn3bot.)ÚdescriptionÚcommandT)ÚdestÚrequiredúget-mezPrint bot identity.)ÚhelprØ   z$Receive incoming messages and files.z	--timeouté2   z Long polling timeout in seconds.)ÚtypeÚdefaultrç   z--onceÚ
store_truezFetch one batch and exit.)Úactionrç   úsend-messagezSend a text message.Úvaluesú+z[chat_id] text)Únargsrç   ú	send-filezSend a file as a document.z[chat_id] pathz	--captionzOptional file caption.)ÚargparseÚArgumentParserÚadd_subparsersÚ
add_parserÚadd_argumentr   )ÚparserÚ
subparsersÚ
run_parserrŠ   Ú	send_files        r   Úbuild_parserrû   ô   s$  € ÝÔ$Ð1XÐYÑYÔY€FØ×&Ò&¨IÀÐ&ÑEÔE€Jà×Ò˜(Ð)>ÐÑ?Ô?Ð?à×&Ò& uÐ3YÐ&ÑZÔZ€JØ×Ò˜K­c¸2ÐDfÐÑgÔgÐgØ×Ò˜H¨\Ð@[ÐÑ\Ô\Ð\à×(Ò(¨Ð>TÐ(ÑUÔU€LØ×Ò˜h¨cÐ8HÐÑIÔIÐIà×%Ò% kÐ8TÐ%ÑUÔU€IØ×Ò˜8¨3Ð5EÐÑFÔFÐFØ×Ò˜;Ð-EÐÑFÔFÐFà€Mr   c                óÞ   — t          | j        ¦  «        dk    rd | _        | j        d         | _        d S | j        d         | _        d                     | j        dd …         ¦  «        | _        d S )Nr   r   ú )Úlenrî   r†   r‡   Újoin©rÙ   s    r   Únormalize_send_message_argsr    s]   € Ý
ˆ4Œ;ÑÔ˜1ÒÐØˆŒØ”K ”NˆŒ	ˆ	ˆ	à”{ 1”~ˆŒØ—H’H˜Tœ[¨¨¨œ_Ñ-Ô-ˆŒ	ˆ	ˆ	r   c                ó´   — t          | j        ¦  «        dk    rd | _        | j        d         | _        d S | j        d         | _        | j        d         | _        d S )Nr   r   )rþ   rî   r†   r   r   s    r   Únormalize_send_file_argsr    sM   € Ý
ˆ4Œ;ÑÔ˜1ÒÐØˆŒØ”K ”NˆŒ	ˆ	ˆ	à”{ 1”~ˆŒØ”K ”NˆŒ	ˆ	ˆ	r   r   c            
     ó¨  — t          ¦   «          t          ¦   «         } |                      ¦   «         }	 t          t	          d¦  «        t          t          j                             dd¦  «        ¦  «        t          t          j                             dd¦  «        ¦  «        ¬¦  «        }|j	        dk    r8t          t          j        |                     ¦   «         dd	¬
¦  «        ¦  «         dS |j	        dk    r#|                     |j        |j        ¬¦  «         dS |j	        dk    r]t#          |¦  «         |                     t'          |¦  «        |j        ¦  «        }t          t          j        |dd	¬
¦  «        ¦  «         dS |j	        dk    rpt+          |¦  «         |                     t'          |¦  «        t          |j        ¦  «        |j        ¦  «        }t          t          j        |dd	¬
¦  «        ¦  «         dS nB# t2          $ r Y dS t4          $ r)}t          d|› �t6          j        ¬¦  «         Y d }~dS d }~ww xY w|                      ¦   «          d	S )NÚTELEGRAM_BOT_TOKENÚTELEGRAM_DATA_DIRrI   ÚTELEGRAM_DOWNLOAD_DIRÚ	downloads)r9   r:   r;   ræ   Fr¤   r¥   r   rØ   )rh   rÒ   rí   rñ   é‚   zerror: )Úfiler   )r(   rû   Ú
parse_argsr8   r-   r   r!   r"   r,   rã   r¾   r4   r5   r|   rØ   rh   rÒ   r  rŠ   rß   r‡   r  r‘   r   r‹   ÚKeyboardInterruptr   ÚsysÚstderrÚ
print_help)r÷   rÙ   Úbotrz   rv   s        r   Úmainr    s/  € Ý�M„M€MÝ‰^Œ^€FØ×ÒÑÔ€DðÝÝÐ2Ñ3Ô3Ý�"œ*Ÿ.š.Ð)<¸fÑEÔEÑFÔFÝ�bœjŸnšnÐ-DÀkÑRÔRÑSÔSð
ñ 
ô 
ˆð Œ<˜8Ò#Ð#Ý•$”*˜SŸZšZ™\œ\¸ÀaÐHÑHÔHÑIÔIÐIØ�1àŒ<˜5Ò Ð Ø�GŠG˜DœL¨t¬yˆGÑ9Ô9Ð9Ø�1àŒ<˜>Ò)Ð)Ý'¨Ñ-Ô-Ð-Ø×%Ò%¥o°dÑ&;Ô&;¸T¼YÑGÔGˆFÝ•$”*˜V°%ÀÐBÑBÔBÑCÔCÐCØ�1àŒ<˜;Ò&Ð&Ý$ TÑ*Ô*Ð*Ø×&Ò&¥°tÑ'<Ô'<½dÀ4Ä9¹o¼oÈtÌ|Ñ\Ô\ˆFÝ•$”*˜V°%ÀÐBÑBÔBÑCÔCÐCØ�1ð	 'øõ ð ð ð ØˆsˆsÝð ð ð Ýˆo˜ˆoˆo¥C¤JÐ/Ñ/Ô/Ð/Øˆqˆqˆqˆqˆqøøøøðøøøð ×ÒÑÔÐØˆ1s2   ²B6G< Ã*,G< ÄA&G< Æ A9G< Ç<
H;È		H;ÈH6È6H;Ú__main__)r   r   r   r   )r)   r*   r   r*   )r'   r   r   r*   )rÙ   rÚ   r   r*   )r   rà   )rÙ   rÚ   r   r   )r   r   )"Ú__doc__Ú
__future__r   rò   r4   r]   r!   r  rÕ   Úurllib.errorrJ   Úurllib.parseÚurllib.requestÚpathlibr   Útypingr   Úuuidr   rP   r›   ÚRuntimeErrorr   r(   r-   r6   r8   rß   rû   r  r  r  r	   Ú
SystemExitr   r   r   ú<module>r     sý  ðà ;Ð ;à "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð &€Ø+€	ð	ð 	ð 	ð 	ð 	�Lñ 	ô 	ð 	ð "˜T &™\œ\ð *ð *ð *ð *ð *ðð ð ð ðHð Hð Hð Hðpð pð pð pð pñ pô pð pðf	`ð 	`ð 	`ð 	`ðð ð ð ð(.ð .ð .ð .ð#ð #ð #ð #ð'ð 'ð 'ð 'ðT ˆzÒÐØ
ˆ*�T�T‘V”VÑ
Ô
Ðð Ðr   