
    !jn                    L   U 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ZddlmZ ddlmZ ddlmZ  ee      j)                         j*                  j*                  Z ee      e	j0                  vr"e	j0                  j3                  d ee             ddlmZmZ ddlmZmZm Z  dd	l!m"Z" dd
l#m$Z$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+ dZ,dZ-eZ. e/ ej`                  d ee,            xs d      Z1 ej`                  de-      Z2 ej`                  dd      Z3 ee.e3z        Z4 ej`                  dd      xs dZ5 ej`                  dd      Z6dZ7dZ8dZ9dZ:dZ;dZ< ejz                  d      Z> ejz                  d      Z? ejz                  d      Z@ ejz                  d      ZA ejz                  d ej                        ZC ejz                  d!ej                        ZD ejz                  d"ej                        ZE ejz                  d#ej                        ZF ej                         ZH eI       ZJd$eKd%<   dTd&ZLdUd'ZMdVd(ZNdWd)ZOdXd*ZPdYd+ZQdZd,ZRd[d-ZSd\d.ZT	 	 	 	 	 	 	 	 	 	 	 	 d]d/ZUd^d0ZVd_d1ZW	 d`	 	 	 	 	 	 	 dad2ZXdbd3ZYdcd4ZZddd5Z[d6d7ded8Z\dfdgd9Z]dhd:Z^dhd;Z_did<Z`d= Zadid>Zbdjd?Zcd@ ZddkdAZedldBZfdmdCZg	 	 	 	 	 	 	 	 dndDZhdodEZidbdFZjdpdGZkd`dqdHZldrdIZmd`dVdJZndsdKZodtdLZpdVdMZqdudNZrdbdOZsdvdPZtdvdQZudwdRZvewdSk(  r ej                   ev              yy)xuO  Telegram userbot: вход в аккаунт, /к (карта), /ап (балансы), /нс и /кс (смена).

  pip install telethon
  python userbot.py

api_id и api_hash: https://my.telegram.org → API development tools.
Сессия сохраняется в userbot.session — повторный код не нужен.
    )annotationsN)BytesIO)Path)getpass)TelegramClientevents)FloodWaitErrorMessageNotModifiedErrorSessionPasswordNeededError)Channel)SYSTEM_BY_ARGget_watch_settingslist_devices	pick_cardset_card_flag)	BOT_TOKENDEVICE_CHAT_MAPiKM 1db0b6e807c90e6364287ad8af7fa655	TG_API_IDTG_API_HASH
TG_SESSIONuserbotTG_PHONE 	PANEL_APIzhttps://oz-panel.ru:5001/apisendl   N( 	zzzoobank
   i   u$   Уже идёт обновлениеu   ^/к(?:@[\w]+)?(?:\s|$)u6   ^/к(?:@[\w]+)?(?:\s+([мб]))?(?:\s+(-[ябм]))?\s*$u   ^/ап(?:@[\w]+)?(?:\s|$)u   ^/ап(?:@[\w]+)?\s*$u*   ^/(?:нс|кс|нc|кc)(?:@[\w]+)?(?:\s|$)u-   ^/(нс|кс|нc|кc)(?:@[\w]+)?(?:\s+(.*))?$u+   Доступно:?\s*([\d][\d\s.,]*)\s*USDTz'Tether[^\n]*?:\s*([\d][\d\s.,]*)\s*USDTzset[tuple[int, int]]_watch_seenc                    t         j                  | j                               }|sy |j                  d      }|j                  d      }|r|dd  nd }||fS )N      )
COMMAND_REmatchstripgroup)textr$   first
second_rawseconds        0/var/www/oz-panel.ru/ozpay-pub/server/userbot.pyparse_kr,   F   sQ    TZZ\*EKKNEQJ)Z^tF&=    c                   t         j                  | xs dj                               }|sy |j                  d      j	                         }|j                  d      xs dj                         }|sy |j                  d      |fS )Nr   r!   r"   u   н)SHIFT_REr$   r%   r&   casefold
startswith)r'   r$   kindnames       r+   parse_shiftr4   P   sn    NNDJB--/0E;;q>""$DKKN b'')D??4 $&&r-   c                    	 t        | xs d      }|t        |      k(  rt	        t        |            S |dj                  d      j                  d      S # t        t        f$ r Y yw xY w)Nr   0z.2f.)float	TypeError
ValueErrorintstrrstrip)valuenumbers     r+   format_balancer@   [   sk    uz" V3v;S\!!#&--c22	 z" s   A A'&A'c                6   | | dk(  ryt        | t        t        f      rt        |       S t        |       j	                  dd      j	                  dd      j	                  dd      }t        j                  dd|      }	 |rt        |      S dS # t        $ r Y yw xY w)Nr                ,r7   z[^\d.])
isinstancer;   r8   r<   replaceresubr:   )r>   r'   s     r+   parse_moneyrJ   e   s    }%#u&U|u:fc*223;CCCMD66)R&D"uT{++ s   =B 
B 	BBc                h    t        j                  ddt        | xs d            j                  d      S )N\s+r   r7   )rH   rI   r<   r=   )raws    r+   _clean_usdtrN   r   s(    66&"c#)n-44S99r-   c                    t         j                  | xs d      }|rt        |j                  d            S t        j                  | xs d      }|rt        |j                  d            S y )Nr   r!   )SEND_AVAILABLE_REsearchrN   r&   SEND_TETHER_RE)r'   	availabletethers      r+   parse_send_usdtrU   v   sZ    !((4I9??1-..""4:2.F6<<?++r-   c                    t        j                  dd| xs dt         j                        j                  d      }|xs dd d S )Nz[^\w\-]+_r   )flagslk(   )rH   rI   UNICODEr%   )labelcleaneds     r+   _safe_shot_namer^      s:    ff[#u{"**EKKCPGOtSb!!r-   c                t    | D cg c](  }|j                  d      s|j                  d      s'|* c}S c c}w )Ndeviceip)get)rowsrows     r+   _device_targetsre      s+    GC3778#4CGGGs   555c                @    | j                         }d|v sd|v r| S |  dS )Nu   ошибкаusdtz USDT)r0   )	send_textlowereds     r+   format_send_linerj      s2      "G Fg$5[r-   c                    | rdnd}| d| dd| ddt        |       g}|r"|j                  d       |j                  |       dj                  |      S )	N
   Начал   Закончил    смену: r   u   Панель: u    ₽zSend: 
)rj   appendextendjoin)startedr3   panel_totalrh   linesverbpartss          r+   format_shift_reportrx      so     #<(:D&dV$

T*
!),-.	E RU99Ur-   c                4    dt        j                  |        dS )N<code></code>)htmlescape)r'   s    r+   	code_liner~      s    DKK%&g..r-   c                *   g }dD ]K  }t        | j                  |      xs d      j                         }|s2|j                  t	        |             M |j                  dt        | j                  d             d       |rdj                  |      S dS )N)r?   expirycvvr   uU   <tg-emoji emoji-id="5276037216244624892">💼</tg-emoji> <b><i>Баланс:</i></b> balanceu8   <tg-emoji emoji-id="5255806447106679302">💱</tg-emoji>ro   u   Нет данных карты)r<   rb   r%   rp   r~   r@   rr   )cardru   keyr>   s       r+   format_cardr      s    E* +DHHSM'R(..0LL5)*+ 
LLhiwx|  yA  yA  BK  yL  jM  iN  NF  G  H$499UJ*JJr-   c                
  K   i }|r||d<   	  | j                   |fi | d {    y 7 # t        $ r"  | j                   |dz   fi | d {  7   Y y t        $ r#}t        d|j                   d       Y d }~y d }~ww xY ww)N
parse_modeu   ​   FloodWait: подожди     сек.)editr
   r	   printseconds)eventr'   r   kwargsexcs        r+   edit_messager      s     
 F)|Bejj((((" 4ejj3F333 B*3;;-x@AABsO   
B+ )+ B+ "B AB BB A;6B;B  Bc                   K   	 | j                          d {    y 7 # t        $ r#}t        d|j                   d       Y d }~y d }~wt        $ r}t        d|        Y d }~y d }~ww xY ww)Nr   r   u7   Не удалось удалить сообщение: )deleter	   r   r   	Exceptionr   r   s     r+   delete_messager      sb     Olln B*3;;-x@AA OGuMNNOsH   A-  A- 	A*AA-A*A% A-%A**A-c                  K   | dk(  }|rt        j                  |      nd }t        j                  t        ||       d {   }|sy|r.t        j                  t
        |d   |d   |d       d {   }|syt        |      S 7 B7 w)Nu   м)smallersystemu$   Нет подходящих картr`   number_digitsTuB   Карта выбрана, но флаг не сохранился)r   rb   asyncio	to_threadr   r   r   )r(   r*   r   r   r   saveds         r+   
issue_cardr      s     tmG*0]v&dF""9gfMMD5''N!
 
 Wt N
s#   >B B/B0B1BBc                l   | j                         j                  dd      }	 t        j                  |      }|j	                  d      xs |}t        |t              rdj                  d |D              }t        |      d d S # t
        t        t        j                  f$ r |xs t        |       }Y ew xY w)Nutf-8rG   )errorsdetailz; c              3  X   K   | ]"  }t        |j                  d       xs |       $ yw)msgN)r<   rb   ).0items     r+   	<genexpr>z%_http_error_detail.<locals>.<genexpr>   s"     KD3txx6$7Ks   (*   )readdecodejsonloadsrb   r9   r:   JSONDecodeErrorr<   rF   listrr   )r   bodypayloadr   s       r+   _http_error_detailr      s    88:WY7D"**T"X&.$ &$KFKKv;t	 z4#7#78 "!S"s   *B -B32B3Finsecurec                    | rt        j                         S t        j                         }t        d      }|j	                         r	 |j                  t        |             |S |S # t        $ r Y |S w xY w)Nz//etc/letsencrypt/live/oz-panel.ru/fullchain.pem)cafile)ssl_create_unverified_contextcreate_default_contextr   is_fileload_verify_locationsr<   r   )r   ctxchains      r+   _ssl_contextr      st    --//

$
$
&CBCE}}	%%SZ%8 J3J  	J	s   A& &	A32A3c                Z   	 t         j                  j                  | |t                     S # t         j                  j
                  $ r  t         j                  j                  $ rD}dt        |      vr t         j                  j                  | |t        d            cY d }~S d }~ww xY w)N)timeoutcontextCERTIFICATE_VERIFY_FAILEDTr   )urllibrequesturlopenr   error	HTTPErrorURLErrorr<   )r   r   r   s      r+   _urlopenr      s    
~~%%gw%WW<<!! <<   
&c#h6~~%% $/ & 
 	

s   ), :B*&9B%B*%B*c                   t         j                  d       dt        j                  j	                  t        |       d       d}t        j                  j                  |dddd	i
      }	 t        |      5 }t        j                  |j                         j                  d            cd d d        S # 1 sw Y   y xY w# t        j                  j                  $ r}t        t!        |            |d }~ww xY w)N/	/devices/r   safez/check/balancer-   POSTAcceptapplication/jsondatamethodheadersr   )r   r=   r   parsequoter<   r   Requestr   r   r   r   r   r   r   RuntimeErrorr   )	device_idurlr   responser   s        r+   post_check_balancer     s    c"#9V\\-?-?IUW-?-X,YYg
hCnn$$-.	 % G=g 	?(::hmmo44W=>	? 	? 	?<<!! =-c23<=s6   *B= 52B1'	B= 1B:6B= :B= =C4C//C4c                  K   t         j                  j                  d      xs t         j                  j                  d      }|rt        |dd       nd }|"t	        j
                  t        |        d {   S 	  || d       d {   S 7 7 # t        $ r*}t        |dd       }|t        t        |            | d }~ww xY ww)Nserver.panel_serverpanel_serverrun_device_checkr   r   )
sysmodulesrb   getattrr   r   r   r   r   r<   )r   panelcheckr   r   s        r+   _check_balancer     s     KKOO12Uckkoon6UE8=GE-t44E}&&'99EEE9i000 F0 h-s6{+4	sH   A1C3B
4C9B BB 	CB 	C%B<<CCc                   t         j                  d       dt        j                  j	                  t        |       d       d}t        j                  j                  |dddi	      }	 t        |d
      5 }|j                         }d d d        st        d      |d d dk7  rt        d      |S # 1 sw Y   +xY w# t        j                  j                  $ r}t        t        |            |d }~ww xY w)Nr   r   r   r   z/screenGETr   zimage/png, application/json)r   r   <   r   u   пустой скрин   s   PNG

u   скрин не PNG)r   r=   r   r   r   r<   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   s         r+   get_device_screenr   #  s    c"#9V\\-?-?IUW-?-X,YY`
aCnn$$89 % G
=gr* 	#h==?D	# 455BQx''011K	# 	#<<!! =-c23<=s0   )B= 6B1B= 1B:6B= =C4C//C4c                    t         j                  j                  d      xs t         j                  j                  d      } | rt        | dd       nd }||S 	 ddlm} |S # t        $ r 	 ddlm} Y |S # t        $ r Y Y y w xY ww xY w)Nr   r   capture_screenr   )r   )r   r   rb   r   server.mainr   r   main)r   captures     r+   _local_capture_screenr   6  s    KKOO12Uckkoon6UE8=ge-t44G9 N  	6 N  		s*   A 	B)A22	A?;B>A??Bc                   K   t               }|t        j                  ||        d {   S t        j                  t        |        d {   S 7 &7 wN)r   r   r   r   )r   r   s     r+   _capture_screenr   E  sJ     #%G&&w	:::""#4i@@@ ;@s!   &AA!A
AAAc                B    t        |      }t        |        d|_        |S )Nz.png)r   r^   r3   )r\   pngbios      r+   	_png_filer   L  s$    
#,C!%().CHJr-   c                   K   	  |         d {   S 7 # t         $ rN}t        j                  t        |j                        dz          d {  7    |         d {  7  cY d }~S d }~ww xY ww)Nr!   )r	   r   sleepr;   r   )factoryr   s     r+   _call_with_floodr   R  sR     Y mmC,q0111YsT   A/
  A/ 	A,.A'AA'AA'!A,"A/'A,,A/c                   K   d }t         t        fD ]  }	 | j                  |       d {   c S  t	        dt          d|       |7 # t        $ r}|}Y d }~Hd }~ww xY ww)N   не нашёл @: )BANKER_USERNAME	BANKER_ID
get_entityr   r   )client
last_errortargetr   s       r+   resolve_bankerr  Z  sp     #'J"I. 	**6222
 *?*;2j\J
KQ[[ 3 	J	s=   A!A	AA	A!A			AAA!AA!c                H  K   | j                  |       d {   }	 | j                          d {   }	 |j                          d {    t	        |dd       xs dj                         }t        |      at        j                  d       d {    |j                  ||j                         d {   }t	        |dd       xs |j                         }|S 7 7 7 # t        $ r Y w xY w# 	 |j                          d {  7   w # t        $ r Y w w xY wxY w7 7 jw)Nraw_textr   g      ?)ids)send_messageget_responser   r   r   r%   rU   r   r   get_messagesid)convr  entityr'   sentr   r   freshs           r+   _ask_botr  d  s    ""4((D**,,	++- Hj$/52<<>Dt$mmC   ))&hkk)BBz408D??AK ),   			++- 		 	!Bs   D"CD"C0 CC0 C! 	C
C! AD"D$D"5D 6&D"C0 C! !	C-*D",C--D"0D2DDDD	DDDDD" D"c                  K   	 | j                  t               d {   }d }d}	 | j	                  |d      4 d {   }t        || |d       d {   }t        |      }|7t        || |d       d {    t        || |d       d {   }t        |      }d d d       d {    |-|rt        j                  d	d
|      d d nd}t        d| d      |S 7 # t        $ r}t        dt         d|       |d }~ww xY w7 7 7 7 7 f# 1 d {  7  sw Y   vxY w# t        j                  $ r}t        d      |d }~ww xY ww)Nr   r   r   -   r   z/walletz/startu%   Send не ответил на /walletrL   rD      u   пустое сообщениеu   не разобрал USDT ())r  SEND_BOTr   r   conversationr  rU   r   TimeoutErrorrH   rI   )r  r  r   parsedr'   r  snippets          r+   fetch_send_usdtr  u  sn    K((22 FD	M&&vr&: 	/ 	/d!$	BBD$T*F~tVVX>>>%dFFIFF(.	/ 	/ ~59"&&d+DS1?`9'!DEEM% 3 K.xj3%@AsJK
	/B ?F	/ 	/ 	/ 	/  MBCLMs   EC CC ED% DD% DD"D6D
7DDDD% 'D(D% ,1EC 	D(C>>DED% D
DDD% D"DD"D% %E	8EE		Ec                   
K   t                d {   
|D cg c]  \  }}|s	t        ||       }}}|st         
fd       d {    y t              t        k  rnd }|t         
fd       d {    t        dt        |      t              D ]1  }|||t        z    }|dk(  r|nd }	t        ||	f 
fd	       d {    3 y 7 c c}}w 7 7 ]7 w)Nc                 (     j                        S r   r
  r  r  r'   s   r+   <lambda>z&send_shift_to_banker.<locals>.<lambda>      v':':64'H r-   c                 (     j                        S r   r  r   s   r+   r!  z&send_shift_to_banker.<locals>.<lambda>  r"  r-   r   c                ,    j                  | |      S )N)caption)	send_file)chunkchunk_captionr  r  s     r+   r!  z&send_shift_to_banker.<locals>.<lambda>  s!    V=M=M% >N > r-   )r  r   r   lenTG_CAPTION_MAXrangeTG_ALBUM_MAX)r  r'   screenshotsr\   r   filesr%  indexr'  r(  r  s   ``        @r+   send_shift_to_bankerr0    s     
 "&))F5@HzucCYuc"HEHHIII$i>1dtGHIIIq#e*l3 	
eEL01#(A:4m 
 	
 	
	
 *HI
 	J
	
sU   C"C	C"
CCC"C0C" CAC"C C"C"C" C"c                  K   | j                   }|rdnd}t        | | d| d       d {    t        j                  t               d {   }t        |      }g }g }d}	t        |      }
t        |d      D ]  \  }}|d   }|j                  d      xs d	j                         xs |}t        | | d| d
| d|
 d| d
       d {    |j                  d      }	 t        |       d {   }|j                  d      xs i j                  d      }|j                  | dt        |              |	t        |      z  }		 t        |       d {   }|j                  ||f        t        | | d| d       d {    	 t!        |       d {   }t        |	      }t#        |||||      }t        | | d| d       d {    	 t%        |||       d {    t        | | d| d| dt'        |       dt        |       d|
 dt(                d {    y 7 7 7 a7 ?# t        $ r"}|j                  | d| d       Y d }~ d }~ww xY w7 # t        $ r"}|j                  | d| d       Y d }~d }~ww xY w7 7 # t        $ r}d| d}Y d }~d }~ww xY w7 7 # t        $ r%}t        | d| d|        d {  7   Y d }~y d }~ww xY w7 ǭw)Nrl   rm   rn   u!   
Собираю балансы…rB   r!   r`   r3   r   u   
ЛК r   r   u   …r   u   : ошибка (r  u   : нет скрина (u   
Проверяю Send…   ошибка (u%   
Отправляю банкиру…u&   Не отправил банкиру: z

u   
Панель: u    ₽
Send: u   
Скринов: u   
Отправлено @)r  r   r   r   r   re   r)  	enumeraterb   r%   r   rp   r@   r   rJ   r   r  rx   r0  rj   r   )r   rs   r3   r  rv   rc   targetsr-  ru   rt   totalr/  rd   r   r\   balance_valuer   r   r   rh   
panel_textreports                         r+   run_shift_reportr9    sA    \\F"<(:D
umD69[\
]]]""<00Dd#G+-KEKLE+ B
sM	&B--/<95TF-vWUG1UGSUV[U\\_"`aaa	*	;'	22D!XXh/52::9EMLLE7"^M%B$CDE 	{=11	B'	22Cs|,B$ umD69ST
UUU,)&11	  ,J $
IuMF
umD69_`
aaa"66;???
 &dV $# %!),- .{+,AeW 5!!0 1		3  U ^0 	b 3  	;LLE7"23%q9::	; 3 	BLLE7"9#a@AA	B V1 ,$SE+	,
 b? 5$J3%tTZS["\]]]sU  (K'H# K'H&A<K'H)	K'H/-H,.AH/5K'I II *K'JK'J JJ /K'	J0
K'J4 J2 J4 $9K'K%K'&K')K',H//	I8IK'IK'I  	J)J K'JK'J 	J-J("K'(J--K'2J4 4	K"=KKKK'K""K'c                B  K   t        j                  t               d {   }t        |      }|st	        | d       d {    y t        |      }t	        | d| d       d {    dd}t        j                  |D cg c]
  } ||       c}  d {   }t        d |D              }||z
  }|D 	
cg c]  \  }	}
}|	 d|  }}
}	}d| d}|r	|d	| d
z  }t	        | |dz   dj                  |      z          d {    y 7 7 7 c c}w 7 }c c}}
}	w 7 w)Nu   Нет девайсовu   Обновляю u    ЛК…c                0  K   | d   }| j                  d      xs dj                         xs |}	 t        |       d {   }|j                  d      xs i j                  d      }|dt        |      fS 7 6# t        $ r}|dd| dfcY d }~S d }~ww xY ww)	Nr`   r3   r   r   TFr2  r  )rb   r%   r   r@   r   )rd   r   r3   r   r   r   s         r+   	check_onez'refresh_all_balances.<locals>.check_one  s     M	%2,,.;)	8'	22Dxx)/R44Y?G~g666 3  	8.Q 777	8sD   -BA7 A55A7 4B5A7 7	B BB	BBBc              3  .   K   | ]  \  }}}|s
d   yw)r!   N )r   rW   successs      r+   r   z'refresh_all_balances.<locals>.<genexpr>  s     7=1gqwQ7s   r      Готово: u    ок, u    ошибокro   )rd   dictreturnztuple[str, bool, str])	r   r   r   re   r   r)  gathersumrr   )r   rc   r4  r5  r<  rd   resultsokfailr3   rW   r'   ru   summarys                 r+   refresh_all_balancesrJ    s0    ""<00Dd#G5";<<<LE
u 1%A
BBB8 NNw$GYs^$GHHG	7G7	7B2:D4;<<=4DvRv<E<rd%(GRv]++
ugntyy/??
@@@5 1 	= C %HH = Aso   DD	 D D#D$D%D DDD!D8D
9DDDDDDDc                    | j                  d      }|dvr	 t        |      S t	        j
                         D ]  }|	 t        |      c S  y # t        t        f$ r Y ;w xY w# t        t        f$ r Y <w xY w)Nalert_chat_id)Nr   )rb   r;   r9   r:   r   values)settingsrM   r>   s      r+   _alert_chat_idrO    s    
,,
'C
*	s8O !'') 5z!  :& 		 z* s"   
A 
A!AA!A32A3c                    t        | t              r't        t        t	        | j
                                    S ||nt        | dd       }|y t        t	        |            }|j                  d      r|dd  S y )Nr  z-100   )rF   r   r<   absr;   r  r   r1   )chatmarked_chat_idmarkedrM   s       r+   _internal_chat_idrV    sj    $ 3s477|$%%-9^wtTSW?XF~
c&k
C
~~f12wr-   c                    t        | dd       }|t        |dd      sy t        |dd       xs t        |dd       }	 t        |      }|dkD  r|S d S # t        t        f$ r Y y w xY w)Nreply_toforum_topicFreply_to_top_idreply_to_msg_idr   )r   r;   r9   r:   )messagerX  topics      r+   	_topic_idr^    s}    w
D1HwxFH/6d'(L]_c:dEE
 AI5'4' z" s   A A! A!c                   t        t        |dd      xs d      }|dk  ryt        | dd       xs dj                         }t        |      }|r|rd| d| d| S d| d| S t	        | |      }|sy|rd| d| d| S d| d| S )Nr  r   r   usernamezhttps://t.me/r   zhttps://t.me/c/)r;   r   r%   r^  rV  )rS  r\  rT  
message_idr`  r]  internals          r+   _message_linkrc  $  s    WWdA.3!4JQj$/52<<>HgE"8*AeWAj\BBxj*66 ~6H 
!E7!J<@@XJa
|44r-   c                    | j                         }g }|D ]+  }|j                         }|s||v s|j                  |       - |S r   )r0   rp   )r'   keywordshaystackfoundwordneedles         r+   _match_keywordsrj  6  sI    }}HE f(LL Lr-   c                0   t         xs dj                         }t        j                  j	                  d| dt        j                  |       j                  d      dddd      }t        |d	
      5 }|j                          d d d        y # 1 sw Y   y xY w)Nr   zhttps://api.telegram.org/botz/sendMessager   r   r   )zContent-Typer   r      r   )
r   r%   r   r   r   r   dumpsencoder   r   )r   tokenr   r   s       r+   _post_telegramrp  @  s    _"##%Enn$$
&ug\:ZZ$$W-!3?QR	 % G 
'2	& (  s   2BBc           	     n   | yt        | dd       xs dj                         }t        | dd       xs dj                         }|xs> dj                  d t        | dd       t        | dd       fD              j                         }|r
|r| d| d	S |rd
| S |r|S t        | dd       }|rt        |      S dS )Nr   r`  titlerD   c              3  $   K   | ]  }|r| 
 y wr   r>  r   parts     r+   r   z _sender_label.<locals>.<genexpr>Q  s        	   
first_name	last_namez (@r  @r  )r   r%   rr   r<   )senderr`  rr  r3   	sender_ids        r+   _sender_labelr|  L  s    ~
D17R>>@HVWd+1r88:E CHH FL$/FK.
 
 eg 	 Ds8*A&&8*~d+I&3y>.B.r-   c                   t         xs dj                         }| j                  d      }|r|y t        j                  t        | j                  d      xs d            }t        j                  t        | j                  d      xs | j                  d      xs d            }t        j                  t        | j                  d      xs d      j                               }t        j                  t        | j                  d      xs d            d d	 }t        | j                  d
      xs d      j                         }d| dd| g}|r|j                  d|        d }	|j                  d      rHt        j                  |d      }
|j                  d       |j                  d|
 d       dd|dddggi}	|j                  d       |j                  d       |j                  |       |dj                  |      ddd}	 t        |      }|	r|	|d<   t        |       y # t        $ r9 |	st        d       Y y 	 t        |       Y y # t        $ r t        d       Y Y y w xY ww xY w)Nr   rL  keyword
chat_titlechat_idu   чатrz  r'   i  linkuc   <tg-emoji emoji-id='5276395476646653290'>🔍</tg-emoji> <b>Ключевое слово:</b> <code>r{   uH   <tg-emoji emoji-id='5278528159837348960'>📢</tg-emoji> <b>Чат:</b> uH   <tg-emoji emoji-id='5275979556308674886'>👤</tg-emoji> <b>Кто:</b> zhttps://T)r   uB   <tg-emoji emoji-id="5278305362703835500">🔗</tg-emoji> <a href="u1   "><b>Перейти к сообщению</b></a>inline_keyboardu$   Перейти к сообщениюprimary5206222720416643915)r'   r   styleicon_custom_emoji_iduS   <tg-emoji emoji-id='5206222720416643915'>🔔</tg-emoji> <b>Сообщение:</b>ro   HTML)r  r'   r   disable_web_page_previewreply_markupzwatch alert failed)r   r%   rb   r|   r}   r<   rp   r1   rr   rB  rp  r   r   )r   ro  r  r~  r  whor   r  ru   markup	safe_linkr   payload_datas                r+   send_watch_alertr  a  sT   _"##%Ekk/*GGOkk#gkk)4:;<GS\!:!`gkk)>T!`X`abJ
++c'++h/526<<>
?C;;s7;;v.4"56u=Dw{{6"(b)//1D
mnumvv}~
RS]R^_E _`c_defFz"KKD1	RYZcYd  eV  W  	X *PY]hq  La  "b  !c   d
 
LL	LLfg	LL		% $(	D(Dz+1L(|$ (&'	(4  	(&'	((s*   	H' 'I) II%!I)$I%%I)c                  K   | j                   ry | j                  xs dj                         }|sy t               }|j	                  d      sy |j	                  d      xs g }|j	                  d      xs g }|r|sy |D ch c]"  }|j	                  d      t        |d         $ }}| j                  }||vry t        |      }|||k(  ry | j                  }	|	t        |	dd      ry t        ||      }
|
sy t        |      t        | j                        f}|t        v ry t        j                  |       t        t              dkD  r)t        j                          t        j                  |       |		 | j!                          d {   }	|	t        |	dd      ry | j%                          d {   }t        |d	d       xs= d
j'                  d t        |dd       t        |dd       fD              xs t)        |      }|dj'                  |
      ||t+        |	      |t-        || j.                  |      d}t1        j2                  t4        |       d {    y c c}w 7 # t"        $ r d }	Y w xY w7 7 w)Nr   enabledre  chatsr  botFi  rr  rD   c              3  $   K   | ]  }|r| 
 y wr   r>  rt  s     r+   r   z'handle_watch_message.<locals>.<genexpr>  s      5  	5rv  rw  rx  rA  )rL  r~  r  r  rz  r'   r  )outr  r%   r   rb   r;   r  rO  rz  r   rj  r  r   addr)  clear
get_senderr   get_chatrr   r<   r|  rc  r\  r   r   r  )r   r'   rN  re  r  r   watchedr  alert_idrz  matchedr   rS  rr  r   s                  r+   handle_watch_messager    s\    yyNN b'')D!#H<<	"||J'-2HLL!'RE5+0O4DHHTN4Ns4:OGOmmGgh'H8 3\\FgfeU;dH-Gw<UXX
'C
kOOC
;$~	 ++--F gfeU;!!DD'4( CHH 5D,-D+t,
5 - 
 
W 
 "99W%'dEMM7;G 

,g
666W P, . 	F	 "  7sn   A>I6 II'CI64I! II! #I6/I20B$I6I4
I6I! !I/,I6.I//I64I6c                   t        | dd      ry d| _        	 t                | j	                  t        j                  dt                    d
d       }| j	                  t        j                  dt                    d
d       }| j	                  t        j                  dt                    d
d       }| j	                  t        j                  d            d
d	       }y # t        $ r Y w xY w)N_ozpay_handlersFT)outgoingpatternc                (  K   t        | j                  xs d      }|t        |        d {    y 	 t        |  d {   }|j	                  d      rdnd }t        | ||       d {    y 7 B7 2# t
        $ r}d| }d }Y d }~0d }~ww xY w7 &w)Nr   rz   r|      Ошибка: )r   )r,   r  r   r   r1   r   r   )r   r  r'   r   r   s        r+   on_kzregister_handlers.<locals>.on_k  s     -2.> '''	#V,,D#'??8#<$J 5$:>>> ( - 	#C5)DJ	 	?sT   *BA/BA3 A1A3 B)B*B1A3 3	B<BBBBc                  K   t         j                  | j                  xs dj                               st	        |        d {    y t
        j                         rt        | t               d {    y t
        4 d {    	 t        |        d {    d d d       d {    y 7 f7 ;7 -7 # t        $ r"}t        | d|        d {  7   Y d }~?d }~ww xY w7 ;# 1 d {  7  sw Y   y xY ww)Nr   r  )AP_REr$   r  r%   r   _ap_locklockedr   	BUSY_TEXTrJ  r   r   s     r+   on_apz register_handlers.<locals>.on_ap  s     {{ENN0b779: '''??ui000 	B 	BB*5111	B 	B 	B ( 1	B1 B"5N3%*@AAAB	B 	B 	B 	Bs   A C6B),C6/B+0C6?B- C6C!B1B/B1C6#C$C6+C6-C6/B11	C:CCCC!CC!C6!C3'C*(C3/C6c                  K   t        | j                  xs d      }|t        | d       d {    y t        j	                         rt        | t
               d {    y |\  }}t        4 d {    	 t        | ||       d {    d d d       d {    y 7 m7 B7 /7 # t        $ r"}t        | d|        d {  7   Y d }~?d }~ww xY w7 ;# 1 d {  7  sw Y   y xY ww)Nr   u5   Укажи имя: /нс имя  или  /кс имяr  )r4   r  r   r  r  r  r9  r   )r   r  rs   r3   r   s        r+   on_shiftz#register_handlers.<locals>.on_shift  s     U^^1r2>u&]^^^??ui000 	B 	BB&ugt<<<	B 	B 	B _ 1	B< B"5N3%*@AAAB	B 	B 	B 	Bs   +C(B,C(BC(/B0C(3C5B#B!B#
C(CC(C(C(!B##	C,C	>C?C	C	CCC(C%CC%!C()incomingc                   K   	 t        |        d {    y 7 # t        $ r.}t        dt        |      j                   d|        Y d }~y d }~ww xY ww)Nzwatch handler: r   )r  r   r   type__name__r   s     r+   on_watchz#register_handlers.<locals>.on_watch  sN     	A&u--- 	AODI$6$6#7r#?@@	As6   A  A 	A$AAAAr   events.NewMessage.EventrC  None)
r   r  r   r   onr   
NewMessageCOMMAND_CATCH_REAP_CATCH_RESHIFT_CATCH_RE)r  r  r  r  r  s        r+   register_handlersr    s    v(%0!F YYv  $8HIJ? K? YYv  $DEB FB YYv  $GHB IB YYv  $/0A 1A_  s   
C! !	C-,C-c                  K   t        d       | j                          d {    | j                          d {   ry t        xs t	        d      j                         }| j                  |       d {    t	        d      j                         }	 | j                  ||       d {    y 7 7 v7 =7 # t        $ r) t        d      }| j                  |       d {  7   Y y w xY ww)Nu   Вход в Telegram…uE   Телефон в международном формате (+7…): u   Код из Telegram: uB   Пароль двухэтапной аутентификации: )password)
r   connectis_user_authorizedPHONEinputr%   send_code_requestsign_inr   r   )r  phonecoder  s       r+   loginr  
  s     	
#$
..
&&(((kUbciikE

"
"5
))))*002D0nnUD))) ( * 	*% 0_`nnhn///0ss   C+B.C+B0:C+4B25C+B6 (B4)B6 -C+0C+2C+4B6 6)C(C" C(%C+'C((C+c            	       K   t         rt        st        d      t        t        t         t              } t        |        t        |        d {    | j                          d {   }|j                  rd|j                   nd}t        d|j                   d| d|j                   d       t        d       t        d	       t        d
       t        d       t        d       | j                          d {    y 7 7 7 	w)Nuw   Задай TG_API_ID и TG_API_HASH (env) или пропиши их в userbot.py.
Ключи: https://my.telegram.orgry  u   без usernamer@  z (z, id=r  uX     /к [м|б] [-я|-б|-м]  — карта (без м/б = больший баланс)uV     /ап                  — обновить балансы всех девайсовuZ     /нс имя              — начал смену (балансы, Send, банкир)u;     /кс имя              — закончил сменуur   Не запускай вместе с панелью: вход и юзербот уже внутри panel_server.)API_IDAPI_HASH
SystemExitr   SESSION_PATHr  r  get_mer`  r   rw  r  run_until_disconnected)r  mer`  s      r+   r   r     s     2
 	

 L&(;Ff
-}}	B$&KK2;;- 5FH	N2==/H:U255'
CD	
de	
bc	
fg	
GH	
~

'
'
))) 	 *s7   A
DC?D$D%BD9D:DDD__main__)r'   r<   rC  z$tuple[str | None, str | None] | None)r'   r<   rC  ztuple[bool, str] | None)rC  r<   )rC  r8   )rM   r<   rC  r<   )r'   r<   rC  
str | None)r\   r<   rC  r<   )rc   
list[dict]rC  r  )rh   r<   rC  r<   )rs   boolr3   r<   rt   r<   rh   r<   ru   	list[str]rC  r<   )r'   r<   rC  r<   )r   rB  rC  r<   r   )r   r  r'   r<   r   r  rC  r  r  )r(   r  r*   r  rC  r<   )r   zurllib.error.HTTPErrorrC  r<   )r   r  rC  zssl.SSLContext)r  )r   zurllib.request.Requestr   r;   )r   r<   rC  rB  )r   r<   rC  bytes)r\   r<   r   r  rC  r   )r  r   )r  r   r'   r<   rC  r<   )r  r   rC  r<   )r  r   r'   r<   r-  zlist[tuple[str, bytes]]rC  r  )r   r  rs   r  r3   r<   rC  r  )rN  rB  rC  
int | None)rC  r  )rC  r  )r'   r<   re  r  rC  r  )r   rB  rC  r  )r   rB  rC  r  )r  r   rC  r  )rC  r  )y__doc__
__future__r   r   r|   r   osrH   r   r   urllib.errorr   urllib.parseurllib.requestior   pathlibr   r   __file__resolveparent_ROOTr<   pathinserttelethonr   r   telethon.errorsr	   r
   r   telethon.tl.typesr   
api.db_apir   r   r   r   r   server.configr   r   _API_ID	_API_HASHROOT_DIRr;   getenvr  r  SESSION_NAMEr  r  r   r  r  r   r,  r*  r  compiler  r#   r  r  
IGNORECASEr  r/   rP   rR   Lockr  setr   __annotations__r,   r4   r@   rJ   rN   rU   r^   re   rj   rx   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r0  r9  rJ  rO  rV  r^  rc  rj  rp  r|  r  r  r  r  r   r  runr>  r-   r+   <module>r     s   #    	 	 
 
      X ''..u:SXXHHOOAs5z" + _ _ % ` ` 4 .		YRYY{CL16Q	7299]I.ryyy18l*+		*b!)TBIIk#AB		2	2::89 RZZ=
 bjj56

+,I2==Y2::FVBJJMr}}] FV7<<>$'E! )'3
:"
H
  	
  	(/K "B"B
B B 
	B O&	 &+ 

=&A\".



 )
 
	
64nA< 		(5$	/*/(d87v9Ax0 *, zGKK r-   