
    hj-!                         S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r
  S SKJrJrJrJr  SSKJr  SS	K7   " S
 S\5      rg)    N)Logger)TelegramClient)utils)AccessTokenExpiredErrorAccessTokenInvalidErrorApiIdInvalidErrorAuthKeyDuplicatedError   )Var   )*c                      ^  \ rS rSrSSSS\SS4S\4U 4S jjjrS r\S 5       r	S r
S	 rS
 rS rS rS r\S 5       r\S 5       r\S 5       rS rS rSrU =r$ )UltroidClient   NTloggerc	                 h  > 0 U l         / U l        Xl        Xpl        X`l        XPl        U=(       d    [        R                  U
S'   U=(       d    [        R                  U
S'   [        U
S'   [        TU ],  " U40 U
D6  U R                  U R                  US95        U R                  R                  U l        g )Napi_idapi_hashbase_logger)	bot_token)_cache_dialogs_handle_error_log_atr   udBr   API_IDAPI_HASHTelethonLoggersuper__init__run_in_loopstart_clientsessiondc_id)selfr#   r   r   r   r   r   log_attemptexit_on_errorargskwargs	__class__s              1/root/TeamUltroid/pyUltroid/startup/BaseClient.pyr    UltroidClient.__init__   s     *"!/SZZx%5z .}+F+**Y*?@\\''
    c                 <    SU R                    SU R                   S3$ )Nz<Ultroid.Client :
 self: z
 bot: z
>)	full_name_botr%   s    r+   __repr__UltroidClient.__repr__6   s     +DNN+;8DII;cRRr-   c                 Z    U R                   (       a  U R                   R                  5       $ g N)meto_dictr1   s    r+   __dict__UltroidClient.__dict__9   s    7777??$$ r-   c                 \  #    U R                   (       a  U R                  R                  S5         U R                  " S0 UD6I Sh  vN   U R                  5       I Sh  vN U l        U R                   R"                  (       a  SU R                   R$                   3nO#['        U R                   S	S5        U R(                  nU R                   (       a  U R                  R                  S
U 35        U R+                  5       I Sh  vN U l        g N! [         a4    U R                  R                  S5        [        R                  " 5          GN[        [        4 al  nU R                  (       a5  U R                  R                  S5        [        R                  " 5       s SnA$ U R                  R                  S5         SnAGNwSnAf[        [        4 aO    U R                  R                  S5        U R                  R                  S5        [        R                  " 5          GNf = f GN GN(7f)zfunction to start clientzTrying to login.Nz/API ID and API_HASH combination does not match!z#String session expired. Create new!zString session expired.	BOT_TOKENz^Bot token is expired or invalid. Create new from @Botfather and add in BOT_TOKEN env variable!@phonezLogged in as  )r   r   infostartr   criticalsysexitr	   EOFErrorr   r   r   r   del_keyget_mer6   botusernamesetattrr/   is_botr0   )r%   r)   err6   s       r+   r"   UltroidClient.start_client>   s~    <<KK/0	**&v&&&& %77;;TWW%%&'BDGGWd+B<<KK}RD12++-'	7 '  	KK  !RSHHJ&1 	<!!$$%JKxxz!KK  !:;;')@A 	 HH[)KK  p HHJ	 & (s   -H,D DD 
H,H&B#H,H)
H,D :H#H,H#A GH#H, G;H,AH#H,"H##H,)H,c                   ^ ^^^^#    SSK nSSKJn  [        R                  " 5       mU" U5      nUR	                  SUR
                  5      nUR	                  SS5      nU(       a  US   mUR	                  SS	5      nUR	                  S
S5      n	UR	                  SSU S35      mT R                  n
UR                  R                  U5      nUS:  a  SnU(       a  T R                  (       a  T R                  R	                  S5      (       a  T R                  S    H  nUS   U:X  d  M  US   U:X  d  M  US   U:X  d  M$  US   U
:X  d  M/  U	(       a4  [        R                  " [        5         UR                  U5        SSS5        US   [        R                  " 5       T-
  4s  $    SSKJn  SSKJm  SnU(       d@  [%        US5       nU" T UUU(       a
  UUUU U4S jOSS9I Sh  vN nSSS5        U(       d  M@  U
UUUUS.nT R                  R	                  S5      (       a  T R                  S   R'                  U5        OT R                  R)                  SU/05        U	(       a4  [        R                  " [        5         UR                  U5        SSS5        U[        R                  " 5       T-
  4$ ! , (       d  f       GN?= f N! , (       d  f       N= f! , (       d  f       NM= f7f)zUpload files in a faster wayr   N)Pathfilenameshow_progressFevent	use_cacheT	to_deletemessagez
Uploading ...i  P upload_cachesizepathnameby_botraw_file)upload_fileprogressrbc           	      L   > TR                   R                  T" XTTT5      5      $ r5   loopcreate_task	completedtotalrQ   rT   r^   r%   
start_times     r+   <lambda>-UltroidClient.fast_uploader.<locals>.<lambda>   "    1F1F$Yuj'R2r-   )clientfilerO   progress_callback)rZ   rW   rX   rY   r[   )ospathlibrN   timegetrY   r0   rX   getsizer   
contextlibsuppressFileNotFoundErrorremovepyUltroid.fns.FastTelethonr\   pyUltroid.fns.helperr^   openappendupdate)r%   rl   r)   rn   rN   rX   rO   rP   rR   rS   rZ   rW   filesr\   r[   fcacherQ   rT   r^   rg   s   `                @@@@r+   fast_uploaderUltroidClient.fast_uploader`   sY     	 YY[
Dz::j$))4

?E:7OEJJ{D1	JJ{E2	**Y*XJc(BCwwt$+!M)H)H^4&MT)f-f1h61 '001BCIIdO D ,diikJ.FFF 5 	;1dD!Q!,% %	 
 "  " (  
 ;;??>**KK'..u5KK89$$%67		$ 8z111I DC "!2 87s   DK)'K)2K)=K)!K))J3;A
K)K#K$K(K)9BK)?K"K)3
K	=K)K
KK)
K&"K)c                 8  ^ ^^^^#    UR                  SS5      nUR                  SS5      nU(       a  US   mUR                  S:  a  SnSSKnSS	KJn  SS
KJn  SSKJm  [        R                  " 5       mU(       d8   [        UR                  S   U5      (       a  UR                  S   R                  nUR                  SSU S35      mSn	U	(       d@  ['        US5       n
U" T UU
U(       a
  UUUU U4S jOSS9I Sh  vN n	SSS5        U	(       d  M@  U	[        R                  " 5       T-
  4$ ! [         aM    UR                  nUR                  S5      S   S-   [!        [#        T5      5      -   UR%                  U5      -   n Nf = f N! , (       d  f       N= f7f)zDownload files in a faster wayrP   FrO    rQ   i   r   N)DocumentAttributeFilename)download_filer]   /-rT   zDownloading rU   wbc           	      L   > TR                   R                  T" XTTT5      5      $ r5   ra   rd   s     r+   rh   /UltroidClient.fast_downloader.<locals>.<lambda>   rj   r-   )rk   locationoutrm   )rq   rW   	mimetypestelethon.tl.typesr   rw   r   rx   r^   rp   
isinstance
attributes	file_name
IndexError	mime_typesplitstrroundguess_extensionry   )r%   rl   r)   rP   rO   r   r   r   mimetyper[   r}   rQ   rT   r^   rg   s   `          @@@@r+   fast_downloaderUltroidClient.fast_downloader   sz     

?E:::j"-7OE99|#!M?<1YY[

doob13LMM#r2<<H **Y,xj(DEh%!.! %	 
 "  & ( z1113  >>NN3'*%
+,-  //9:  &%s[   A5F=7D- 4+FF	=F>F	FF-AFFFFF		
FFc                 8    U R                   R                  U5      $ )zrun inside asyncio loop)rb   run_until_complete)r%   functions     r+   r!   UltroidClient.run_in_loop   s    yy++H55r-   c                 $    U R                  5         g)zrun asyncio loopN)run_until_disconnectedr1   s    r+   runUltroidClient.run   s    ##%r-   c                     XR                  5       Vs/ s H  oDS   PM	     sn;   a  gU R                  " U/UQ70 UD6  gs  snf )z)Add new event handler, ignoring if existsr   N)list_event_handlersadd_event_handler)r%   funcr(   r)   _s        r+   add_handlerUltroidClient.add_handler   sD    ":":"<="<QaD"<==t5d5f5 >s   >c                     [         $ r5   )telethon_utilsr1   s    r+   r   UltroidClient.utils   s    r-   c                 L    U R                   R                  U R                  5      $ )zfull name of Client)r   get_display_namer6   r1   s    r+   r/   UltroidClient.full_name   s     zz**47733r-   c                 .    U R                   R                  $ )zClient's user id)r6   idr1   s    r+   uidUltroidClient.uid   s     wwzzr-   c                 @    [        [        R                  " U 5      5      $ r5   )dictinspect
getmembersr1   s    r+   r7   UltroidClient.to_dict   s    G&&t,--r-   c                    #    [         R                  " [        5         [        U5      nS S S 5        U R	                  U5      I S h  vN $ ! , (       d  f       N'= f N7fr5   )rs   rt   
ValueErrorintget_peer_id)r%   texts     r+   parse_idUltroidClient.parse_id   sA       ,t9D -%%d+++ -,+s'   AA
AAA

AA)	r0   r   r   r   r   r$   r   r6   r   )__name__
__module____qualname____firstlineno__LOGSr   r    r2   propertyr8   r"   r   r   r!   r   r   r   r/   r   r7   r   __static_attributes____classcell__)r*   s   @r+   r   r      s     ( ( (4S % % (DD2L02d6&6   4 4  ., ,r-   r   )rs   r   rB   rp   loggingr   telethonpatchr   telethonr   r   telethon.errorsr   r   r   r	   configsr   r   r   r>   r-   r+   <module>r      s<      
   ( ,   _,N _,r-   