
    hji                     n   S 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
  SSKJr  SSKJrJrJr  SS	KJr  SS
KJrJr  SSKJr  SSK7  0 r0 r0 r0 r\" \R?                  S5      \ \!45      (       a$  \R?                  S5      /r"\RG                  S\"5        \" S\$S9r%\" S\$S9r&\R?                  S5      r'\R?                  S5      r(\)" S5      r*\)" S5      r+\)" S5      r,Sr-\R?                  S5      (       a  S\R?                  S5      -   S-   r-\R?                  S5      =(       d    Sr.\/ S3\/ S3\/ S3\/ S3\/ S 3\/ S!3/r00 r10 r2\3Rh                  (       a  \3Rh                  Rj                  OSr6S" r7S#\ 4S$ jr8\R?                  S%5      (       a?  \9" S&S'9S( 5       r:\9" S)S'9S* 5       r:\;Ry                  \
Rz                  " S+S, S-95      S. 5       r>\9" S/S+S09S1 5       r?\;Ry                  \
Rz                  " S+S2 S395      S4 5       r@\;Ry                  \
Rz                  " S+S5 S-95      S6 5       r>\9" S7S+S09S8 5       r:\9" S9S+S09S: 5       rA\9" S;S+S09S< 5       rB\9" S=S+S09S> 5       rC\9" S?S+S09S@ 5       rD\9" SAS+SB9SC 5       rE\F" \R                  " SD5      \;R                  /SE9SF 5       rI\F" \R                  " SG5      \;R                  /SE9SH 5       rJ\F" \R                  " SI5      \;R                  /SE9SJ 5       rK\F" \R                  " SK5      \;R                  /SE9SL 5       rL\F" SM5      SN 5       rM\N" \R                  " SO5      S+SP9SQ 5       rO\F" \R                  " SR5      \;R                  /SE9SS 5       rP\F" \R                  " ST5      5      SU 5       rQ\F" \R                  " SV5      5      SW 5       rRg! \ a    Sr GNf = f)Xu  
✘ Commands Available -

• `{i}a` or `{i}approve`
    Approve someone to PM.

• `{i}da` or `{i}disapprove`
    Disapprove someone to PM.

• `{i}block`
    Block someone.

• `{i}unblock` | `{i}unblock all`
    Unblock someone.

• `{i}nologpm`
    Stop logging messages from the user.

• `{i}logpm`
    Start logging messages from the user.

• `{i}startarchive`
    Archive new PMs.

• `{i}stoparchive`
    Don't archive new PMs.

• `{i}cleararchive`
    Unarchive all chats.

• `{i}listapproved`
   List all approved PMs.

• `{i}pmpermit on/off`
    Enable or disable PMPermit. Check current status with no argument.
    N)remove)DEVLIST)tabulate)events)MessageNotModifiedError)BlockRequestGetBlockedRequestUnblockRequest)ReportSpamRequest)get_display_nameresolve_bot_file_id)
KeyManager   )*PMPERMIT)castLOGUSERSPMPICLOG_CHANNELpmperm_1pmperm_2pmperm_3zA**PMSecurity of {ON}!**

{UND}

You have {warn}/{twarn} warnings!PM_TEXTz**PMSecurity of {ON}!**

z#

You have {warn}/{twarn} warnings!PMWARNS   aapproveda
disapproveblockunblockc                      [         R                  X05         [        R                  X05        g ! [         a     N$f = f! [         a     g f = fN)	WARN_MSGSupdateKeyErrorU_WARNS)useridmessagewarns_givens      %/root/TeamUltroid/plugins/pmpermit.py	update_pmr,   m   sS    &*+,-    s   0 A  
== 
AAchatc                 p   #     [         U    R                  5       I S h  vN   g  N! [         a     g f = f7fr#   )
_to_deletedeleter&   )r-   s    r+   delete_pm_warn_msgsr1   x   s2     %%''' s(   6& $& 6& 
3636PMLOGzlogpm$)patternc                 N  #    U R                   (       d  U R                  SSS9I S h  vN $ [        R                  U R                  5      (       d  U R                  SSS9I S h  vN $ [        R                  U R                  5        U R                  SSS9I S h  vN $  Nw N= N7f)N`Use me in Private.`   time `Wasn't logging msgs from here.`z `Now I Will log msgs from here.`)
is_privateeorLogmcontainschat_idr   es    r+   _rA      s      ||5A>>>}}QYY''AJJJAIIUU=AUFFF ?J G3   %B%B;B%#B!$6B%B#B%!B%#B%znologpm$c                 N  #    U R                   (       d  U R                  SSS9I S h  vN $ [        R                  U R                  5      (       a  U R                  SSS9I S h  vN $ [        R                  U R                  5        U R                  SSS9I S h  vN $  Nw N= N7f)Nr5   r6   r7   r9   z!`Now I Won't log msgs from here.`)r:   r;   r<   r=   r>   addr?   s    r+   rA   rA      s      ||5A>>>==##AJJJUU>QUGGG ?J HrB   Tc                     U R                   $ r#   )r:   r?   s    r+   <lambda>rF      s    1<<    )incomingfuncc                 f  #    U R                  5       I S h  vN nUR                  (       dF  UR                  (       d5  UR                  (       d$  [        R                  UR                  5      (       a  g U R                  [        R                  S5      =(       d    [        5      I S h  vN   g  N N7f)N
PMLOGGROUP)
get_senderbotis_selfverifiedr<   r=   id
forward_toudBget_keyr   )eventusers     r+   permitpmrV      sm      %%''88t||t}}dgg8N8Ns{{<8GKHHH ( 	Is"   B1B-BB1'B/(B1/B1zpmpermit( (.*)|$))r3   fullsudoc                   #    U R                   R                  S5      R                  5       R                  5       nUS;   a/  [        R                  SS5        U R                  SSS9I S h  vN   g US;   a.  [        R                  S5        U R                  S	SS9I S h  vN   g [        R                  S5      (       a  S
OSnU R                  SU S[         S3SS9I S h  vN   g  N{ NI N	7f)Nr   )onenable1	PMSETTINGTz`PMPermit enabled.`   r7   )offdisable0z`PMPermit disabled.`enableddisabledz`PMPermit is currently z.
Use zpmpermit on/off to toggle.`   )
pattern_matchgroupstriplowerrR   set_keyr;   del_keyrS   HNDLR)r@   argstatuss      r+   toggle_pmpermitrm      s     
//


"
(
(
*
0
0
2C
##K&ee)e222	'	'K ee*e333!kk+66Jee%fXWUG;VW  
 	
 	
 	3 	4	
s7   A'C+)C%*3C+C'AC+C) C+'C+)C+c                     U R                   =(       aS    U R                  =(       a@    [        U R                  5      =(       a$    U R                  R	                  [
        5      (       + $ r#   )r:   outbooltext
startswithrj   r?   s    r+   rF   rF      s9    q||__$qvv,_qvvGXGXY^G_C__rG   )outgoingrI   c           
        #    [         R                  S5      (       a  [         R                  S5      (       d  g U R                  5       I S h  vN nUR                  (       d6  UR                  (       d%  UR
                  (       d  UR                  [        ;   a  g [        R                  UR                  5      (       a  g [        R                  UR                  5        [        UR                  5      I S h  vN    [        R                  UR                  SS9I S h  vN   [         R                  S5      nU(       d  g  [        R!                  U["        UR                     S[%        USS9 S	UR                   S
3SS9I S h  vN   g  GN< N Np! [         a     Nzf = f N! [&         a:    [        R)                  US[%        USS9 S	UR                   S
3SS9I S h  vN     g [*         a     g f = f7f)Nr\   AUTOAPPROVEr   folderr   z,#AutoApproved : <b>OutGoing Message.
User : Thtml</b> [<code>z</code>]ry   
parse_mode)rR   rS   get_chatrM   rN   rO   rP   r   keymr=   rD   r1   ultroid_botedit_folderBaseExceptionasstedit_message_not_approvedinline_mentionr&   send_messager   )r@   miss_log_chs      r+   autoapprr      s     ;;{##3;;}+E+EDxx4<<4==DGGw4F}}TWWHHTWW
dgg
&&&%%dgga%888 kk-(G$''";N4VZ<[;\\himipiphqqyz	   
 	
 	
  '8 	
  
;N4VZ<[;\\himipiphqqyz   
 	
 	

 # s   A	G2FB(G24F
5G2:!F FF  G2>AF  FF  G2
G2F 
FG2FG2F   ;G/GG/!G2#	G/,G2.G//G2c                 t   U R                   =(       a    U R                  [        ;  =(       a    U R                  (       + =(       at    U R                  S L=(       a_    U R                  R
                  (       + =(       a=    U R                  R                  (       + =(       a    U R                  R                  (       + $ r#   )r:   	sender_idr   ro   senderrM   rN   rO   r?   s    r+   rF   rF      s    q|| "KKw&"I" HHD " 	"
    " !!!"rG   c                   ^ ^^^^	^
^^^#    [         R                  S5      (       d  g [        S5      =(       a    [        =(       d    SmT R                  mTc  g T R
                  =(       d    Sn[        R                  TR                  5      (       Gd  U[        :w  Ga  [        S5      (       a'   [        R                  TR                  SS9I S h  vN   T R                  (       a2  [         R                  S5      (       d  T R!                  5       I S h  vN   TR"                  m
[%        T5      mTR&                  (       a  S	TR&                   3O[)        TR                  5      m[+        T5      m	[        R-                  5       m[         R                  S
5      n [.        TR                     S-   mU(       a  [0        R3                  U[4        TR                     ST	 STR                   ST S[6         S3	[8        R;                  SSTR                   3S9[8        R;                  SSTR                   3S9/S9I S h  vN   UU UUU	U
UUU4	S jn[B        RE                  TR                  5      nUbf  X:w  a4  SU;   a  g [G        TR                  5      I S h  vN   U" 5       I S h  vN   OY[G        TR                  5      I S h  vN   U" 5       I S h  vN   O,[G        TR                  5      I S h  vN   U" 5       I S h  vN   U[B        TR                  '   [.        RE                  TR                  S5      S-   [.        TR                  '   [.        TR                     [6        :  Ga  [G        TR                  5      I S h  vN   T RI                  [J        5      I S h  vN [L        TR                  '   [.        RO                  TR                  S 5        [B        RO                  TR                  S 5        [        [Q        TR                  5      5      I S h  vN   [        [S        TR                  S95      I S h  vN   U(       aB  [0        R3                  U[4        TR                     ST	 STR                   S35      I S h  vN   g g g g g  GN! [         a   n[        R                  U5         S nAGNS nAff = f GN GN! [<         a    U(       a  [0        R?                  UST	 STR                   S[6         S3[8        R;                  SSTR                   3S9[8        R;                  SSTR                   3S9/S9I S h  vN  [4        TR                  '   Sm GN[@         a    Sm GN(f = f GN GN GN GN GN GN~ GN GN GNs GNR GN7f)Nr\   	INLINE_PMF MOVE_ARCHIVEr   rv   DISABLE_PMDEL@r   zIncoming PM from **z** [`z
`] with **/z** warning!
Approve PMapprove_dataBlock PMblock_buttonsz`] with **1/c                    >	#    [         R                  [        T[        [        TTT
TTS9	n [        T	R                  U T5        T(       ar   [        R                  [        ST	R                   35      I S h  vN nUS   R                  T	R                  TR                  SS9I S h  vN [        T	R                  '   g [         (       a=  [        R#                  T	R                  [         U S9I S h  vN [        T	R                  '   g [        R%                  T	R                  U 5      I S h  vN [        T	R                  '   g  N N! [         a(  n[        R                  [        U5      5         S nAg S nAff = f N NQ7f)N)	ONwarntwarnUNDnamefullnameusernamecountmentionip_r   T)reply_tohide_via)caption)UNAPPROVED_MSGformat
OWNER_NAMEWARNSr   r,   rP   r   inline_querymy_botclickr/   	ExceptionLOGSinfostrr   	send_filer   )message_resultsexr   rT   r   	inline_pmr   r   rU   r   wrns      r+   _send_warn_msg permitpm.<locals>._send_warn_msg  s;    %,,!! - 
H dggx-'$/$<$<Vs477)_$UUG07
0@0@%((T 1A 1 +Jtww'
 ,7,A,AGGUH -B - '
477# -8,D,DTWWh,W&W
477# V+ ! 'IIc"g&&'' 'Xsr   AE:
*E 4D=5/E $D?%E :2E:,E6-9E:&E8'E:=E ?E 
E3E.)E:.E33E:8E:
PMSecurityr   )peerz**z`] was Blocked for spamming.)*rR   rS   Redisr   r   rq   r~   r=   rP   r   r   r   r   r   r   mediar0   
first_namer   r   r   r   r   COUNT_PMr   r   r   r   Buttoninliner&   r   r   LASTMSGgetr1   respondUNSr/   popr   r   )rT   cur_texterr   r   prevmsgr   r   r   r   r   rU   r   r   s   `     @@@@@@@@r+   rV   rV      s_     ;;{##{#.85I<<D|zzRH==!!h#o  !--dgga-@@@ ;;s{{?;;,,.  #D)*.--Qt}}o&S\ &

++m,	477#a'C''!$''*)'%y
3%qQVPWWbcl8DGG99MNjy7IJ	 (   .	X 	X8 ++dgg&"8+)$''222$&&&)$''222$&&&%dgg... """#$LL!4q8DGG%%dgg...(-c(:":JtwwLL$'KK&l4773444/TWW=>>>''!$''*	twwi/KL    &i '6! A  		" !  
	/3/@/@)'%yUGS^_l8DGG99MNjy7IJ 0A 0 * *dgg& C& 	C	H 3&2&."
 /": 5>sc  B"V.!R	 RR	 >VR6BVB"R< :R9;R< ?AVU+V"U.#V U1VU4V-U7.V<U:=A?V<U==VV A6VV#V4V5AV<V	=	VR	 	
R3R.(V.R33V9R< <BU(=U >U(VU($V'U((V.V1V4V7V:V=V VVV	Vz(start|stop|clear)archive$c                 6  #    U R                   R                  S5      R                  5       nUS:X  a/  [        R	                  SS5        U R                  SSS9I S h  vN   g US:X  a/  [        R	                  SS	5        U R                  S
SS9I S h  vN   g US:X  a;   U R                  R                  SS9I S h  vN   U R                  SSS9I S h  vN   g g  N| NI N" N! [         a,  nU R                  [        U5      SS9I S h  vN     S nAg S nAff = f7f)Nr   startr   Truez.Now I will move new Unapproved DM's to archiver]   r7   stopFalsez/Now I won't move new Unapproved DM's to archiveclear)unpackzUnarchived all chats)
rd   re   rf   rR   rh   r;   clientr   r   r   )r@   xmms      r+   rA   rA   Y  s     	a &&(AG|NF+eeD1eMMM	
fNG,eeEAeNNN	
g	)((&&a&000%%.Q%777 
	 	N 	O 17 	)%%Ba%(((	)s~   ADC4DCDC  9C:C  CC  DDC  C   
D*DD	DDDDz(a|approve)(?: |$)c                   #    U R                   (       a#  U R                  5       I S h  vN R                  nOGU R                  (       a  U R	                  5       I S h  vN nOU R                  [        5      I S h  vN $ UR                  [        ;   a  [        U S5      I S h  vN $ [        R                  UR                  5      (       Gd0  [        R                  UR                  5         [        UR                  5      I S h  vN   U R                  R                  UR                  SS9I S h  vN   [#        U S[%        USS9 S3SS	9I S h  vN   [&        R)                  S
5      nU(       a   [*        R-                  U[.        UR                     S[%        USS9 SUR                   S3[0        R3                  SSUR                   3S9[0        R3                  SSUR                   3S9/SS9I S h  vN   g g U R                  SSS9I S h  vN   g  GN GN GN GN| GN N! [          a     Nf = f N NB! [4         a    [*        R7                  US[%        USS9 SUR                   S3[0        R3                  SSUR                   3S9[0        R3                  SSUR                   3S9/SS9I S h  vN  [.        UR                  '    g [8         a     g f = f N7f)Nz4This is a developer account.
Automatically approved.r   rv   <b>Trx   z!</b> <code>approved to PM!</code>ry   r{   r   #APPROVED

<b>rz   -</code>] <code>was approved to PM you!</code>Disapprove PMdisapprove_r   Blockr   r   r|   `User may already be approved.`r]   r7   )reply_to_msg_idget_reply_messager   r:   r}   editNO_REPLYrP   r   r;   r~   r=   rD   r1   r   r   r   eodr   rR   rS   r   r   r   r   r   r&   r   r   )apprvpmrU   r   s      r+   	approvepmr   j  s    //1199			%%''\\(+++ww'C
 
 	
 ==!!	%dgg.....,,TWWQ,??? .D122ST
 	
 	

 ++m,''!$''*&~d'F&G|TXT[T[S\  ]J  Kok$''<STgfTWWI4FG  & ( 	 	 	 2 kk;!kDDDa 2'+
 /? 			
	  	/3/@/@&~d'F&G|TXT[T[S\  ]J  Kok$''<STgfTWWI4FG  & 0A 0 * *dgg& +  	Es   %KH3KHK9H:'K!H"AK+H% H +H% /H#0H% 4KH5 K0BH9 4H75H9 9KKKKKK H% #H% %
H2/K1H22K7H9 9A<K5J86KK	KKKKz(da|disapprove)(?: |$)c                   #    U R                   (       a#  U R                  5       I S h  vN R                  nOGU R                  (       a  U R	                  5       I S h  vN nOU R                  [        5      I S h  vN $ UR                  [        ;   a  [        U S5      I S h  vN $ [        R                  UR                  5      (       a  [        R                  UR                  5        [        U S[        USS9 S3SS9I S h  vN   [        R!                  S5      nU(       a   ["        R%                  U[&        UR                     S	[        USS9 S
UR                   S3[(        R+                  SSUR                   3S9[(        R+                  SSUR                   3S9/SS9I S h  vN   g g [        U S[        USS9 S3SS9I S h  vN   g  GN GNx GN] GN8 N N4! [,         a    ["        R/                  US	[        USS9 S
UR                   S3[(        R+                  SSUR                   3S9[(        R+                  SSUR                   3S9/SS9I S h  vN  [&        UR                  '    g [0         a     g f = f N7f)Nz5`This is a developer account.
Cannot be disapproved.`r   Trx   z$</b> <code>Disapproved to PM!</code>ry   r{   r   #DISAPPROVED

<b>rz   z0</code>] <code>was disapproved to PM you.</code>r   r   r   r   r   r   z%</b> <code>was never approved!</code>)r   r   r   r:   r}   r   r   rP   r   r;   r~   r=   r   r   r   rR   rS   r   r   r   r   r   r&   r   r   )r@   rU   r   s      r+   disapprovepmr     sx    ))++33	
ZZ\!VVH%%%ww'D
 
 	
 }}TWWDGG.D122VW
 	
 	

 ++m,''!$''*).D*I)J,W[W^W^V_  `P  Ql8DGG99MNgfTWWI4FG  & ( 	 	 	 2 .D122WX
 	
 	
W ,!%
	
	  	/3/@/@).D*I)J,W[W^W^V_  `P  Ql8DGG99MNgfTWWI4FG  & 0A 0 * *dgg& + 	
s   %JG3JGJ9G:'J!G"A!JG J%BG  )G*G  .J
JJJJJJG   A<JIJ3J5	J>J JJzblock( (.*)|$)c           
        #    U R                   R                  S5      R                  5       nU R                  (       a#  U R	                  5       I S h  vN R
                  nOaU(       a%   U R                  R                  U5      I S h  vN nO5U R                  (       a  U R                  nO[        U [        SS9I S h  vN $ U R                  [        U5      5      I S h  vN   U R                  R                  U5      I S h  vN nU R                  [!        U5       SU S35      I S h  vN    ["        R%                  U5         [(        R+                  [,        R/                  S5      [0        U   S[!        U5       SU S3[2        R5                  S	S
U 3S9/S9I S h  vN   g  GNT GN!! [         a-  nU R                  [        U5      5      I S h  vN  s S nA$ S nAff = f GN( GN	 N N! [&         a     Nf = f N_! [6         aa    [(        R9                  [,        R/                  S5      S[!        U5       SU S3[2        R5                  S	S
U 3S9/S9I S h  vN  [0        U'    g [:         a     g f = f7f)Nr   
   r7    [`z`] `has been blocked!`r   z
#BLOCKED

z`] has been **blocked**.UnBlockunblock_r   r   )rd   re   rf   r   r   r   r   parse_idr   r;   r   r:   r>   r   r   
get_entityr   r~   r   AttributeErrorr   r   rR   rS   r   r   r   r&   r   r   )r    matchrU   r   anames        r+   blockpmr     s5    %%a(..0E--//::		,..u55D 
		}}r222
,,|D)
***,,))$//E
))~e,-S6LM
NNNDKK&$>%01TF:RSi.?@	   
 	
 	
' 0 6 	,3r7++++	,
 3*/N  	
  
$($5$5KK&>%01TF:RSi.?@ %6 %
 
 
d # s  AI9F$I9(F* F'F* 1I9<G$=!I9G'"I9G*'I9)G,*I9/G. AH  G>H  #I9'F* *
G!4GGGG!I9G!!I9'I9*I9,I9.
G;8I9:G;;I9>H   AI6II6(I9*	I63I95I66I9zunblock( (.*)|$)c           
        #    U R                   R                  S5      R                  5       nU R                  5       I S h  vN nU(       a  UR                  nGO2U(       Ga  US:X  Ga  U R                  [        S5      5      I S h  vN nU R                  [        SS5      5      I S h  vN n[        UR                  5      nU(       d  [        US5      I S h  vN $ UR                   HM  n[        R                  " S5      I S h  vN   U R                  [        UR                  5      5      I S h  vN   MO     US:  a  [        USU S35      I S h  vN $ UR                  (       a  U R                  [        SS5      5      I S h  vN nUR                   HM  n[        R                  " S	5      I S h  vN   U R                  [        UR                  5      5      I S h  vN   MO     U[        UR                  5      -  nUR                  (       a  M  [        USU S
35      I S h  vN $  U R                  R                  U5      I S h  vN nO:U R$                  (       a  U R&                  nOU R                  [(        SS9I S h  vN $  U R                  [        U5      5      I S h  vN   U R                  R+                  U5      I S h  vN nU R                  [-        U5       SU S35      I S h  vN    [.        R1                  [2        R5                  S5      [6        U   S[-        U5       SU S3[8        R;                  SSU 3S9/S9I S h  vN   g  GN GN GN GN GN` GN7 GN GN GN GN GNP GN/! [          a-  nU R                  [#        U5      5      I S h  vN  s S nA$ S nAff = f GN1 GN N N! [          a'  n	U R                  SU	 35      I S h  vN  s S n	A	$ S n	A	ff = f N! [<         aa    [.        R?                  [2        R5                  S5      S[-        U5       SU S3[8        R;                  SSU 3S9/S9I S h  vN  [6        U'    g [@         a     g f = f7f)Nr   allcom_1r   z"__You have not blocked Anyone...__   z__Unblocked z	 Users!__r6   z	 users.__r   r7   r   z`] `has been UnBlocked!`zERROR - r   z#UNBLOCKED

z`] has been **unblocked**.r   r   r   r   )!rd   re   rf   r   r   r;   
get_stringr   r	   lenusersasynciosleepr
   rP   r   r   r   r:   r>   r   r   r   r   r   rR   rS   r   r   r   r&   r   r   )
rT   r   replyrU   msgu_sr   r   r   ets
             r+   	unblockpmr     s    %%a(..0E))++E	E>		*W"566C%6q!%<==C		NE &JKKK		mmA&&&ll>$''#:;;; " rz UG9&EFFF))!LL):1a)@AAIID!--***,,~dgg'>??? & SYY' ))) SLy"ABBB	,..u55D 
		}}YYxbY1110ll>$/000ll--d33ii>%01TF:RSTTTKK&$^E233tf<VWgfTFO<	   
 	
 	
O ,
 7= L&; GA*?B 6 	,3r7++++	,
 203T 0YY"////0	
  
$($5$5KK&^E233tf<VWgfTFO< %6 %
 
 
d # s  =Q0M AQ0M"Q0(M)/Q0M",Q0M%+Q01M(2!Q0M+3Q0M.,Q04M15+Q0 M4!1Q0Q0'M7(Q0-M= M:M= 6Q0N7Q0O )N:*"O N='O 4N?5O :AO7 O5O7 Q0Q0Q0"Q0%Q0(Q0+Q0.Q01Q04Q07Q0:M= =
N4N/$N'%N/)N4*Q0/N44Q0:O =O ?O 
O2O-"O%#O-'O2(Q0-O22Q05O7 7AQ-QQ-Q0!	Q-*Q0,Q--Q0zlistapproved$)r3   ownerc           	      *  #    U R                  [        S5      5      I S h  vN n[        R                  5       nU(       d  UR                  SSS9I S h  vN $ / nU HT  n [	        [
        R                  U5      I S h  vN 5      nUR                  UR                  5       [        U5      /5        MV     [        SS5       n[        (       a  UR                  [        USS	/S
S95        O(SR                  S U5       5      nUR                  U5        S S S 5        U R                  S[          S["         S3SS9I S h  vN   UR%                  5       I S h  vN   ['        S5        g  GND GN N! [         a    Sn Nf = f! , (       d  f       Ns= f NS N=7f)Nr   z"`You haven't approved anyone yet!`r]   r7   r   zapproved_pms.txtwUserNameUserIDalways)headers	showindexc              3   >   #    U  H  nS US    SUS    3v   M     g7f)[z] - r   N ).0rU   s     r+   	<genexpr> list_approved.<locals>.<genexpr>Q  s%     I54QtBxjT!WI65s   zList of users approved by [z](tg://user?id=))file)r;   r   r~   r   r   r   r   r   appendrf   r   openr   writejoinr   r   OWNER_IDr0   r   )rT   xxr   r   ir   	list_apprrq   s           r+   list_approvedr  >  se    yyG,-	-B
((*CVV@qVIIIE	#+*@*@*C$CDD 	djjlCF+,  
 #	&)8OOX(>(S 77I5IIDOOD! 
' ++
%j\
!L    
 ))+
3 
. J %D 	D	 
'	&
 s   FE$2FE'F E,=E*
>E,:F AE>*F;F<FFF'F*E,,E;8F:E;;F>
FFFs   approve_(.*))
from_usersc           	        #    [        U R                  R                  S5      R                  S5      5      nU[        ;   a  U R                  S5      I S h  vN   [        R                  U5      (       d  [        R                  U5         [        R                  USS9I S h  vN    [        R                  U5      I S h  vN nU R                  S[        USS9 S	UR                   S
3[         R#                  SSU 3S9[         R#                  SSU 3S9//SS9I S h  vN   [%        U5      I S h  vN   U R'                  SSS9I S h  vN   g U R                  S[         R#                  SSU 3S9[         R#                  SSU 3S9//S9I S h  vN   g  GN@ N! [         a     GNf = f N! [         a    U R                  5       I S h  vN  s $ f = f N N N NL7f)Nr   UTF-8zIt's a dev! Approved!r   rv   r   Trx   rz   r   r   r   r   r   r   ry   r   z	Approved.alertr   r   )int
data_matchre   decoder   r   r~   r=   rD   r   r   r   r   r0   r   rP   r   r   r1   answerrT   uidrU   s      r+   apr_inr(  \  s     e$$Q'..w7
8C
g~jj0111==	))#a)888	($//44D jj~d>?|DGG9  UB  C MM/+cU8KMLMM'&M?   	
 		
 		
 "#&&&ll;dl333jj- MM/+cU8KMLMM'&M?  
 	
 	
1 	2 9 		 5 	('''	(		
 	'3	
s   AGF3G	F  F!F &F, >F*?F, AGGG0G1GG	AGGGF 
F'#G&F''G*F, ,G	G
GGGGGGGs   disapprove_(.*)c           	        #    [        U R                  R                  S5      R                  S5      5      n[        R                  U5      (       a  [        R                  U5         [        R                  U5      I S h  vN nU R                  S[        USS9 SUR                   S3[        R                  SS	U 3S
9[        R                  SSU 3S
9//SS9I S h  vN   U R!                  SSS9I S h  vN   g U R                  S[        R                  SSU 3S
9[        R                  SSU 3S
9//S9I S h  vN   g  N! [         a    U R                  5       I S h  vN  s $ f = f N Nx N47f)Nr   r  r   Trx   rz   z0</code>] <code>was disapproved to PM you!</code>r   r   r   r   r   ry   r   zDisapproved.r   z`User was never approved!`r   r   r   )r"  r#  re   r$  r~   r=   r   r   r   r   r0   r   r   rP   r   r   r%  r&  s      r+   	disapr_inr*    s     e$$Q'..w7
8C}}SC	($//44D jj!.D"A!B,twwi  XH  I MM,xu5EMFMM'&M?   	
 		
 		
 ll>l666jj( MM/+cU8KMLMM'&M?  
 	
 	
 5 	('''	(		
 	7	
sz   A#E2&E >E?E AE2E,E25E.6AE2;E0<E2E E) E#!E)&E2(E))E2.E20E2s
   block_(.*)c                 (  #    [        U R                  R                  S5      R                  S5      5      n [	        [        U5      5      I S h  vN    [        R                  U5      I S h  vN nU R                  S[        USS9 SUR                   S3[        R                  SS	U 3S
9SS9I S h  vN   U R                  SSS9I S h  vN   g  N! [         a     Nf = f Nv! [         a    U R                  5       I S h  vN  s $ f = f NZ ND7f)Nr   r  zBLOCKED

<b>Trx   rz   z"</code>] <code>was blocked!</code>r   r   r   ry   r   zBlocked.r   )r"  r#  re   r$  r   r   r   r   r0   r   r   rP   r   r   r%  r&  s      r+   blck_inr,    s     e$$Q'..w7
8C,s+,,,$ ++C00 **
489dggYNpqi.>?    
 ,,z,
... 	-  1 $\\^###$
 /   4DC CC C% ,C#-C% 1AD3D4DDDC 
C DC  D#C% %DDDD
DDDs   unblock_(.*)c                 (  #    [        U R                  R                  S5      R                  S5      5      n [	        [        U5      5      I S h  vN    [        R                  U5      I S h  vN nU R                  S[        USS9 SUR                   S3[        R                  SS	U 3S
9SS9I S h  vN   U R                  SSS9I S h  vN   g  N! [         a     Nf = f Nv! [         a    U R                  5       I S h  vN  s $ f = f NZ ND7f)Nr   r  z#UNBLOCKED

<b>Trx   rz   z$</code>] <code>was unblocked!</code>r   r   r   ry   r   z
Unblocked.r   )r"  r#  re   r$  r   r
   r   r   r0   r   r   rP   r   r   r%  r&  s      r+   	unblck_inr/    s     e$$Q'..w7
8C.-...$ ++C00 **
N4d;<L	QuvgfSEN;    
 ,,|4,
000 	/  1 $\\^###$
 1r-  deletedisshtc                    #     U R                  S5      I S h  vN   U R                  5       I S h  vN   g  N N! [         a6    [        R	                  U R
                  U R                  5      I S h  vN     g f = f7f)NzDeleted.)r%  r0   r   r   delete_messagesr>   rP   r?   s    r+   ytfuxistr3    s_     ;hhz"""hhj 	# ;))!))QTT:::;sI   A=: 6: 8: A=: : 7A:1A42A:7A=9A::A=zip_(.*))r  c                   #    [        U R                  R                  S5      R                  5       5      n [        U   n [        U   nU S[         3n[        R                  SSU 3S9[        R                  USU 3S9//nS	nS
u  pS n
 [        R                  S5      S   R                  5       nUS;   a  SnSnONUS;   a  SnSnOC [%        [        5      n	U	(       a(  U R(                  R+                  U	SSUUSS9I S h  vN /n	OSnSnU	(       dD  U(       a  [,        R/                  [        SU/ 5      n
U R(                  R1                  SWUSUUU
U
S9/n	U R3                  U	SSS9I S h  vN   g ! [
         a"  n[        R                  U5        Sn S nAGNXS nAff = f! [         a    Sn GNef = f! [         ["        4 a    S n GNf = f! [&         a     Nf = f N Nr7f)Nr   ?z**PMSecurity of {OWNER_NAME}**r   Warns
admin_onlyr   don_T)NN.r  )imgjpgpngphotoz	image/jpg)mp4mkvgifz	video/mp4r@  zInline PmPermitz~ @TeamUltroidF)titledescriptionrq   r   link_previewarticler   zInline PMPermit.z@TeamUltroid)rA  typerq   rB  include_mediar   thumbcontentu   • Ultroid •r   )	switch_pmswitch_pm_param)r"  rd   re   rf   r'   r   r   r   r$   r&   r   r   r   r   splitrg   r   
IndexErrorr   
ValueErrorbuilderdocumenttypesInputWebDocumentrD  r%  )rT   	from_userwarnsr@   msg_wrnsr   rF  	mime_typerescontext_types                r+   	in_pm_ansr[    s"    E''--a06689I	"0# WAeWD MM'*YK(@MAMM$tD6]M3	
G MNIDkk#r"((* ##		%	%		%e,C mm,,+ 0#!& -  	C E!M))%IrBDMM!!(*+ " 	
 ,,s&7,
QQQ{  		!
  0/0 J'   		6 Rs   3G	E0  	F 	AG&F2 2G	G (G GA)G*G+G0
F:FGFGF/+G.F//G2GGGG
GGGGGzadmin_only(.*)c                 *  #    [        U R                  R                  S5      R                  5       5      nU R	                  [
        R                  SSU 3S9[
        R                  SSU 3S9/[
        R                  SSU 3S9//S	9I S h  vN   g  N7f)
Nr   r   r   r   r   r   u   « Backpmbk_r   )r"  rd   re   rf   r   r   r   )rT   r-   s     r+   _admin_toolsr^  +  s     u""((+1134D
** l8D61BCjv? ]]9U4&>]:;
    s   B	BBBzdon_(.*)c                    #    U R                   R                  S5      R                  5       R                  S5      R	                  S5      nSUS   -   nUSUS   -   -  nU R                  USS9I S h  vN   g  N7f)	Nr   zutf-8r   u   👮‍♂ Warn Count : r   u   
🤖 Total Warn Count : Tr   )rd   re   rf   r$  rK  r%  )r@   r   rq   s      r+   _mejikr`  9  sp     ??  #))+227;AA#FD%Q/D(4722D
((4t(
$$$s   A.A80A61A8z	pmbk_(.*)c                   #    [        U R                  R                  S5      R                  5       5      n [        U   nU S[         3nU R                  [        R                  SSU 3S9[        R                  USU 3S9//S9I S h  vN   g ! [
         a*  n[        R                  [        U5      5        Sn S nANS nAff = f N<7f)	Nr   r`   r   r6  r7  r   r8  r   )r"  rd   re   rf   r'   r   r   r   r   r   r   r   r   )rT   rR  rS  r@   rU  s        r+   edtrb  A  s     E''--a06689I	" WAeWD
** gj,DEd4v7
    	  		#a&s:   3C	B A
C	C
C
C B>9C>CC)S__doc__r   reosr   pyUltroid.dBr   r   ImportErrortelethonr   telethon.errorsr   telethon.tl.functions.contactsr   r	   r
   telethon.tl.functions.messagesr   telethon.utilsr   r   pyUltroid.dB.baser   r   r   r   r$   r'   
isinstancerR   rS   r"  r   valuerh   listr~   r<   r   r   r   r   r   r   r   r   rj   PMCMDSr   r/   r   mer   r   r,   r1   ultroid_cmdrA   r   rY   
NewMessagerV   rm   r   r   r   r   r  r  callbackcompiler'  r(  r*  r,  r/  r3  
in_patternr[  r^  r`  rb  r  rG   r+   <module>rx     s  #J  	   !  3 
 = @ (  
	
ckk*%Sz22[[$%EKK
E"*4(*4(Gkk-(j!X;;y%
++i
 	!
1	2  	I#!gQKgWgRLgZgUOgW
 
!WW		$C  ;;wGG HH ^^'	
II (48
 9
  
_D 
"	hhV 1DA) B)  )D92E :2Ej -=1
 >1
h %5' 6'T '$7: 8:z _D1 2: 
JJ  	#
#
L 
JJ  	

> 
JJ  	//$ 
JJ  	11$ 
.; ; BJJy!.AR /ARH 
"**%
&KOO3DE
 F
 
"**Z
 !% "% 
"**[
!" #]  Hs   N( (N43N4