
    w	h,e                     4   d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
 d dlmZ d dl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 dlZd d	lmZ d dlZd d
lm Z m!Z! d dl"m#Z#m$Z$m%Z%m&Z&  e         ejN                  d      Z( ejN                  dd      Z) ejN                  dd      Z* ejN                  d      Z+ ejN                  dd      Z, ejN                  dd      Z- ejN                  dd      Z. e/ ejN                  dd             Z0 ejb                  ejd                          ee(      Z3 e       Z4 ee4      Z5 e       Z6e5jo                  e6        G d de      Z8e5jr                  ju                   e8e-              G d de      Z; G d  d!e      Z<da=d" Z>d#e/fd$Z?d#e/fd%Z@d&eAfd'ZBd(eAfd)ZCd*eAd+eAfd,ZDd+eAfd-ZEe6j                   e
d.            d+ej                  d/efd0       ZHe6j                  ej                  d1k(        d+ej                  d/efd2       ZJe6j                  e;j                        d+ej                  d/efd3       ZLe6j                  ej                  j                  d4            d5ej                  d/efd6       ZQe6j                  e;j                        d+ej                  d/efd7       ZSe6j                  e;j                        d+ej                  d/efd8       ZUe6j                  e;j                        d+ej                  d/efd9       ZWe6j                  e;j                        d+ej                  d/efd:       ZYe6j                  ej                  d;k(   e
d<            d+ej                  fd=       ZZe6j                  ej                  d>k(        d5ej                  fd?       Z[e6j                  ej                  d@k(        d5ej                  fdA       Z\e6j                  ej                  dBk(        d5ej                  d/efdC       Z]e6j                  e;j                        d+ej                  d/efdD       Z^e6j                  ej                  dEk(        d5ej                  d/efdF       Z_e6j                  ej                  j                  dG            d5ej                  d/efdH       Z`e6j                  ej                  dIk(        d5ej                  d/efdJ       Zae6j                  e;j                        d+ej                  d/efdK       Zbe6j                  ej                  dLk(        d5ej                  d/efdM       Zce6j                  e;j                        d+ej                  d/efdN       Zde6j                  ej                  dOk(        d5ej                  d/efdP       Zee6j                  e;j                        d+ej                  d/efdQ       Zfe6j                  ej                  dRk(        d5ej                  d/efdS       Zge6j                  e;j                        d+ej                  d/efdT       Zhe6j                  ej                  dUk(        d5ej                  fdV       Zie6j                  ej                  dWk(        d5ej                  fdX       Zje6j                  ej                  dYk(        d5ej                  fdZ       Zke6j                  ej                  d[k(        d5ej                  fd\       Zle6j                  ej                  d]k(        d5ej                  fd^       Zme6j                  ej                  d_k(        d5ej                  fd`       Zne6j                  ej                  dak(        d5ej                  d/efdb       Zoe6j                  e<j                        d+ej                  d/efdc       Zqe6j                  ej                  ddk(        d5ej                  fde       Zre6j                  ej                  dfk(        d5ej                  fdg       Zse6j                  ej                  dhk(        d5ej                  fdi       Zte6j                  ej                  djk(        d5ej                  fdk       Zue6j                   e
dl            d+ej                  fdm       Zve6j                   e
dn            d+ej                  fdo       Zwdp Zxdq Zydr Zze{dsk(  r e j                   ez              yy)t    N)Bot
DispatcherFRoutertypesBaseMiddleware)Command)
FSMContext)StateStatesGroup)MemoryStorage)InlineKeyboardMarkupInlineKeyboardButtonReplyKeyboardMarkupKeyboardButtonFSInputFile)SimpleRequestHandlersetup_application)load_dotenv)webweb_exceptions)CallableDictAny	Awaitable	BOT_TOKENDB_HOST	localhostDB_USERrootDB_PASSDB_NAMEnetwell_botWEBHOOK_SECRETsecretWEBHOOK_PATHz/webhookADMIN_ID)level)token)storagec                   X    e Zd ZdefdZdeeeeef   gee   f   dedeeef   defdZ	y)	SecretTokenMiddlewaresecret_tokenc                     || _         y N)r-   )selfr-   s     #/var/www/netwell/bot/netwell_bot.py__init__zSecretTokenMiddleware.__init__#   s
    (    handlereventdatareturnc                    K   t        |d      r\|j                  j                  j                  d      | j                  k7  r*t        j                  d       t        j                  d       |||       d {   S 7 w)NrequestzX-Telegram-Bot-Api-Secret-TokenzInvalid secret token)	hasattrr9   headersgetr-   loggingwarningr   HTTPForbidden)r0   r4   r5   r6   s       r1   __call__zSecretTokenMiddleware.__call__&   sh      5)$)>)>)B)BCd)eimiziz)zOO23 ../EFFUD))))s   A5A>7A<8A>N)
__name__
__module____qualname__strr2   r   r   r   r   r@    r3   r1   r,   r,   "   s\    )S )	*3S#X/3?@	* 	* 38n		*
 
	*r3   r,   c                   `    e Zd Z e       Z e       Z e       Z e       Z e       Z e       Z	y)ProfileFormN)
rA   rB   rC   r   namecityphone	corporateemailaboutrE   r3   r1   rG   rG   4   s,    7D7DGEIGEGEr3   rG   c                       e Zd Z e       Zy)SearchStateN)rA   rB   rC   r   searchrE   r3   r1   rO   rO   <   s	    WFr3   rO   c                     K   	 t        j                  t        t        t        t
        d       d {   at        j                  d       y 7 # t        $ r"} t        j                  d|         Y d } ~ y d } ~ ww xY ww)NT)hostuserpassworddb
autocommitu   DB подключенаu   Ошибка DB: )aiomysqlcreate_poolr   r   r!   r"   poolr=   info	Exceptionerror)es    r1   init_dbr^   B   sa     /))wWw[bostt./ u /)!-../s>   A<-A AA A<A 	A9A4/A<4A99A<user_idc           	      z  K   t         sy	 t         j                         4 d {   }|j                         4 d {   }|j                  d| f       d {    |j	                          d {   }|r'|d   r"	 d d d       d {    d d d       d {    y|rdj                  |j                         D cg c]  }| d	 c}      }|j                  d| dt        |j                               | fz          d {    |j                  dk(  rdj                  dgt        |j                               z         }dj                  d	gt        |      d
z   z        }| ft        |j                               z   }	|j                  d| d| d|	       d {    d d d       d {    d d d       d {    y7 7 7 s7 ^7 I7 <c c}w 7 7 >7 0# 1 d {  7  sw Y   @xY w7 7# 1 d {  7  sw Y   yxY w# t        $ r"}
t        j                  d|
        Y d }
~
yd }
~
ww xY ww)NFz,SELECT blocked FROM users WHERE user_id = %sr   , z = %szUPDATE users SET z WHERE user_id = %sr_   z%s   zINSERT INTO users (z
) VALUES ()Tu#   Ошибка сохранения: )rY   acquirecursorexecutefetchonejoinkeystuplevaluesrowcountlistlenr[   r=   r\   )r_   kwargsconncurresultkupdatesfieldsplaceholdersrk   r]   s              r1   	save_userrw   J   s)    <<> 	k 	kT{{} k kkk"PSZR\]]]"||~-fQi k k	k 	k 	k "iifkkm(LA3e(LMG++(9'BU&VX]^d^k^k^mXnryq{X{|||||q(!%I;fkkm9L+L!M'+yy$3v;?1K'L")eFMMO.D!D!kk,?xzR^Q__`*acijjjk k	k 	k" #	kk]-k	k )M| kk k k k	k 	k 	k 	k"  ;A3?@sV  H;H GH G8GG8 G!G
G!/G0G!<G8GG8H GH H; G!=G	;G!GBG!GG!#G8.G/G83H >G6?H H;H G8
G!G!G8H G!G!G8!G3	'G*(G3	/G86H 8H
>H?H
H 	H;
H 	H8H3.H;3H88H;c                 :  K   t         sy 	 t         j                         4 d {   }|j                  t        j                        4 d {   }|j                  d| f       d {    |j                          d {   cd d d       d {    cd d d       d {    S 7 7 [7 B7 ,7 7 # 1 d {  7  sw Y   nxY wd d d       d {  7   y # 1 d {  7  sw Y   y xY w# t        $ r"}t        j                  d|        Y d }~y d }~ww xY ww)Nz:SELECT * FROM users WHERE user_id = %s AND blocked = FALSEu:   Ошибка получения пользователя: )
rY   rd   re   rW   
DictCursorrf   rg   r[   r=   r\   )r_   rp   rq   r]   s       r1   get_userrz   d   s     <<> 	, 	,T{{8#6#67 , ,3kk"^ah`jkkk \\^+, , ,	, 	, 	,,k+,	,, , ,	, 	, 	, 	, 	,  RSTRUVWs  DC- B%C- $CB'CB1&B)'B1>B+?B1CB-CC- B/ C- $D%C- 'C)B1+B1-C/C- 1C	7B:8C	?CC- CC- DC*C!C*&C- )D*C- -	D6DDDD
name_queryc                 H  K   t         sg S 	 t         j                         4 d {   }|j                  t        j                        4 d {   }|j                  dd|  df       d {    |j                          d {   cd d d       d {    cd d d       d {    S 7 7 _7 B7 ,7 7 # 1 d {  7  sw Y   nxY wd d d       d {  7   y # 1 d {  7  sw Y   y xY w# t        $ r$}t        j                  d|        g cY d }~S d }~ww xY ww)NzvSELECT name, phone, email, corporate, city as office, about FROM users WHERE name LIKE %s AND blocked = FALSE LIMIT 10%u   Ошибка поиска: 
rY   rd   re   rW   ry   rf   fetchallr[   r=   r\   )r{   rp   rq   r]   s       r1   search_userr   p   s*    	<<> 	, 	,T{{8#6#67 , ,3kk  #[  `a  bl  am  mn  ^o  ]q  r  r  r \\^+, , ,	, 	, 	,, r+,	,, , ,	, 	, 	, 	, 	,  3A378	s	  	D"C2 B*C2 $CB,CB6+B.,B6B0B6CB2CC2 $B4%C2 )D"*C2 ,C.B60B62C4C2 6C	<B?=C	CC2 CC2 D"C/#C&$C/+C2 .D"/C2 2	D;DDD"DD"
event_typec                 @  K   t         sg S 	 t         j                         4 d {   }|j                  t        j                        4 d {   }|j                  d| f       d {    |j                          d {   cd d d       d {    cd d d       d {    S 7 7 [7 B7 ,7 7 # 1 d {  7  sw Y   nxY wd d d       d {  7   y # 1 d {  7  sw Y   y xY w# t        $ r$}t        j                  d|        g cY d }~S d }~ww xY ww)Nz4SELECT date, description FROM events WHERE type = %su   Ошибка событий: r~   )r   rp   rq   r]   s       r1   
get_eventsr   |   s     	<<> 	, 	,T{{8#6#67 , ,3kk"X[eZghhh \\^+, , ,	, 	, 	,,h+,	,, , ,	, 	, 	, 	, 	,  5aS9:	s	  	DC. B&C. $CB(CB2'B*(B2?B, B2CB.CC.  B0!C. %D&C. (C*B2,B2.C0C. 2C	8B;9C	 CC. CC. DC+C" C+'C. *D+C. .	D7DDDDDrI   messagec                 n  K   t         sy 	 t         j                         4 d {   }|j                         4 d {   }|j                  d| f       d {    |2 cg c3 d {   }|d   7 M7 67 7 6 nc c}w }}d d d       d {  7   n# 1 d {  7  sw Y   nxY wd d d       d {  7   n# 1 d {  7  sw Y   nxY wD ]1  }	 t        j                  ||       d {  7   $# t        $ r Y /w xY w y # t        $ r"}t        j                  d|        Y d }~y d }~ww xY ww)Nz=SELECT user_id FROM users WHERE city = %s AND blocked = FALSEr   u   Ошибка рассылки: 	rY   rd   re   rf   botsend_messager[   r=   r\   )rI   r   rp   rq   rowusersuidr]   s           r1   broadcast_by_cityr      s    =<<> 	6 	6T{{} 6 6kk"adhcjkkk1455#Q	66k55556 6 6 6 6	6 	6 	6 	6 	6  	C&&sG444 	
  =7s;<<=s  D5D A1D B;A3B; BA5B A;"A9
&A7'A9
*A;1D 3B;5B7A9
9A;:BB;BB;B&	BB&	"B;)D 4B75D ;CCC	D C6/C20C65D 6	D?D DD D5	D2D-(D5-D22D5c                 j  K   t         sy 	 t         j                         4 d {   }|j                         4 d {   }|j                  d       d {    |2 cg c3 d {   }|d   7 K7 47 7 6 nc c}w }}d d d       d {  7   n# 1 d {  7  sw Y   nxY wd d d       d {  7   n# 1 d {  7  sw Y   nxY wD ]1  }	 t        j                  ||        d {  7   $# t        $ r Y /w xY w y # t        $ r"}t        j                  d|        Y d }~y d }~ww xY ww)Nz/SELECT user_id FROM users WHERE blocked = FALSEr   u(   Ошибка рассылки всем: r   )r   rp   rq   r   r   r   r]   s          r1   broadcast_allr      s    F<<> 	6 	6T{{} 6 6kk"STTT1455#Q	66T55556 6 6 6 6	6 	6 	6 	6 	6  	C&&sG444 	
  F@DEEFs  D3D A/D B9A1B9 BA3BA9 A7
$A5%A7
(A9/D 1B93B5A7
7A98B B9BB9B$	BB$	 B9'D 2B53D 9C?C CD C4-C0.C43D 4	D =D ?D  D D3	D0D+&D3+D00D3startstatec                   K   t        | j                  j                         d {   }|sN| j                  d       d {    t	        t        d      ggd      }| j                  d|       d {    y | j                  d       d {    t	        t        d	      ggd      }| j                  d	|       d {    y 7 7 7 W7 ?7 w)
Nu   Привет, я корпоративный бот Нетвелл и буду твоим помощником. Для доступа в меню и подписки, нажми кнопку СТАРТ.
   СТАРТtextTkeyboardresize_keyboardu*   Нажми СТАРТ для анкеты.reply_markup   Отлично, теперь ты часть Нетвелл! Нажми кнопку МЕНЮ, чтобы получить информацию о компании, коллегах или изменить свои данные   МЕНЮ)rz   	from_useridanswerr   r   )r   r   rS   kbs       r1   start_handlerr      s     '++..//Dnn  i  j  	j  	j N,M+N*OaefnnIXZn[[[nn  C  D  	D  	D N
,K+L*M_cdnnZbn999 0 	j[ 	D9sW   #CCC C
3C4C5CC3CCC
CCCCr   c                    K   |j                  t        j                         d {    | j                  d       d {    y 7 7 w)Nu0  Заполни короткую анкету, чтобы мы могли познакомиться. Расскажи кратко о себе, прикрепи любимый трек или мем. Важно: информация будет доступна коллегам.
Имя и Фамилия:)	set_staterG   rH   r   r   r   s     r1   anketa_startr      sI     
//+**
+++
..  M  N  N  N , Ns   #AAAAAAc                 L  K   |j                  | j                  j                                d {    t        t	        dd      gt	        dd      gg      }|j                  t        j                         d {    | j                  d|	       d {    y 7 m7 "7 	w)
NrH      Москваcity_mskr   callback_data   Санкт-Петербургcity_spbinline_keyboardu   Выберите Город:r   )	update_datar   stripr   r   r   rG   rI   r   )r   r   r   s      r1   process_namer      s     


!3!3!5

666		>	LM	#BR\	]^/ 
B //+**
+++
..7b.
III 7
 ,Is4   .B$BAB$=B >B$B"B$ B$"B$city_callbackc                 :  K   | j                   dk(  rdnd}|j                  |       d {    |j                  t        j                         d {    | j
                  j                  d       d {    | j                          d {    y 7 g7 B7 !7 w)Nr   r   r   rI   u"   Мобильный телефон:)r6   r   r   rG   rJ   r   r   r   r   rI   s      r1   process_cityr      s     %]]j8>>]D




&&&
//+++
,,,



!
!"F
GGG
//
 ',GsE   )BB&BB"B5B6BBBBBBc                 X  K   | j                   j                         }|j                         s| j                  d       d {    y |j	                  |       d {    |j                  t        j                         d {    | j                  d       d {    y 7 `7 G7 "7 w)Nu?   Введите только цифры для телефона.rJ   u&   Корпоративный номер:)r   r   isdigitr   r   r   rG   rK   r   r   rJ   s      r1   process_phoner      s     LL E==?nn^___


%

(((
//+//
000
..A
BBB	 	`(0BG   ?B*B"B*B$&B*B&B*B(B*$B*&B*(B*c                 X  K   | j                   j                         }|j                         s| j                  d       d {    y |j	                  |       d {    |j                  t        j                         d {    | j                  d       d {    y 7 `7 G7 "7 w)N'   Введите только цифры.rK   u   Почта:)r   r   r   r   r   r   rG   rL   r   r   corps      r1   process_corporater      s     <<D<<>nnFGGG


d

+++
//+++
,,,
..
'''	 	H+,'r   c                 @  K   | j                   j                         }d|vr| j                  d       d {    y |j                  |       d {    |j	                  t
        j                         d {    | j                  d       d {    y 7 `7 G7 "7 w)N@u>   Некорректная почта (должен быть @).rL   u   Кратко о себе:)r   r   r   r   r   rG   rM   r   r   rL   s      r1   process_emailr      s     LL E
%nn]^^^


%

(((
//+++
,,,
..4
555	 	_(,5sE   3BBBB&B7B8BBBBBBc                   K   |j                          d {   }| j                  j                         |d<   t        | j                  j
                  fi | d {   rf|j                          d {    | j                  d       d {    t        t        d      ggd      }| j                  d|       d {    y | j                  d       d {    y 7 7 7 p7 Y7 '7 w)	NrM   r   r   r   Tr   r   uC   Ошибка сохранения. Попробуйте позже.)
get_datar   r   rw   r   r   clearr   r   r   )r   r   r6   r   s       r1   process_aboutr      s     !!DLL&&(DMw((++4t444kkmnn  C  D  	D  	D N
,K+L*M_cdnnZbn999nnbccc "4 	D9csj   C,C AC,C"C,3C$4C,C&3C, C(C,C*C,"C,$C,&C,(C,*C,r   menuc           
         K   t        t        dd      gt        dd      gt        dd      gt        dd	      gt        d
d      gg      }| j                  d|       d {    y 7 wNu   Изменить анкетуprofiler   u   О компанииcompanyu   Справочникcontactsu   Поиск контактовrP   u)   Календарь мероприятийr5   r   u	   Меню:r   )r   r   r   )r   r   s     r1   menu_handlerr      sv     		#BR[	\]	#8		RS	#9	TU	#BRZ	[\	#N^e	fg/ 
B ..2.
666s   A$A.&A,'A.backc           
      (  K   t        t        dd      gt        dd      gt        dd      gt        dd	      gt        d
d      gg      }| j                  j                  d|       d {    | j                          d {    y 7 7 wr   r   r   r   r   r   r   s     r1   back_to_menur     s     		#BR[	\]	#8		RS	#9	TU	#BRZ	[\	#N^e	fg/ 
B 


!
!+B
!
???
//
 @$   A.B0B1BB	BBr   c                 \  K   t        t        dd      gt        dd      gt        dd      gt        dd	      gt        d
d      gt        dd      gt        dd      gg      }| j                  j                  d|       d {    | j                          d {    y 7 7 w)Nu   Имя и Фамилияchange_namer   u
   Городchange_cityu!   Мобильный телефонchange_phoneu%   Корпоративный номерchange_corporateu
   Почтаchange_emailu   Кратко о себеchange_about   Назад в менюr   r   u:   Выбери, что бы ты хотел изменитьr   r   r   s     r1   profile_menur     s     		#=]	[\	<}	MN	#FVd	ef	#JZl	mn	<~	NO	#=^	\]	#;6	RS/ 
B 


!
!"^mo
!
ppp
//
 qs$   BB,
B(B,"B*#B,*B,r   c                    K   |j                  t        j                         d {    | j                  j	                  d       d {    | j	                          d {    y 7 @7 7 	w)Nu3   Введите новое Имя и Фамилию:)r   rG   rH   r   r   r   r   s     r1   change_name_startr   !  sV     
//+**
+++



!
!"W
XXX
//
 ,X3   #A,A&"A,A(	A, A*!A,(A,*A,c                 ^  K   t        | j                  j                  | j                  j	                                d {   r| j                  d       d {    n| j                  d       d {    |j                          d {    t        |        d {    y 7 c7 L7 47 7 w)Nr   7   Спасибо, ваши данные изменены!    Ошибка изменения.rw   r   r   r   r   r   r   r   r   s     r1   change_name_processr   '  s     w((++',,2D2D2FGGGnnVWWWnn?@@@
++-
w
 HW@X   =B-B# B-B%B-2B'3B-
B)B-B+B-%B-'B-)B-+B-r   c                    K   t        t        dd      gt        dd      gt        dd      gg      }| j                  j                  d	|
       d {    | j                          d {    y 7 7 w)Nr   update_city_mskr   r   update_city_spbu
   Назадr   r   u'   Выберите новый Город:r   r   )r   r   r   s      r1   change_city_startr   0  s|     		>AR	ST	#BRc	de	<v	FG/ 
B
 


!
!"KZ\
!
]]]
//
 ^s$   AA8A4A8.A6/A86A8update_city_c                 H  K   | j                   dk(  rdnd}t        | j                  j                  |       d {   r$| j                  j                  d       d {    n#| j                  j                  d       d {    t        |        d {    y 7 _7 >7 7 w)Nr   r   r   r   r   r   )r6   rw   r   r   r   r   r   r   s      r1   change_city_processr   :  s     %]].??>EdDx)),,4888%%&_```%%&HIII
x
   	 9`I sE   8B"B"B"B#B"BB"B B"B"B" B"r   c                    K   |j                  t        j                         d {    | j                  j	                  d       d {    | j	                          d {    y 7 @7 7 	w)Nu<   Введите новый Мобильный телефон:)r   rG   rJ   r   r   r   s     r1   change_phone_startr   C  sV     
//+++
,,,



!
!"`
aaa
//
 -ar   c                   K   | j                   j                         }|j                         s| j                  d       d {    y t	        | j
                  j                  |       d {   r| j                  d       d {    n| j                  d       d {    |j                          d {    t        |        d {    y 7 7 e7 N7 67  7 w)Nr   r   r   r   	r   r   r   r   rw   r   r   r   r   r   s      r1   change_phone_processr   I  s     LL E==?nnFGGGw((++5999nnVWWWnn?@@@
++-
w
 	H9W@k   ?CC)C+C,CCCCC6C7C	C
CCCCCCr   c                    K   |j                  t        j                         d {    | j                  j	                  d       d {    | j	                          d {    y 7 @7 7 	w)Nu@   Введите новый Корпоративный номер:)r   rG   rK   r   r   r   s     r1   change_corporate_startr   V  sV     
//+//
000



!
!"d
eee
//
 1er   c                   K   | j                   j                         }|j                         s| j                  d       d {    y t	        | j
                  j                  |       d {   r| j                  d       d {    n| j                  d       d {    |j                          d {    t        |        d {    y 7 7 e7 N7 67  7 w)Nr   r   r   r   r   r   s      r1   change_corporate_processr   \  s     <<D<<>nnFGGGw((++t<<<nnVWWWnn?@@@
++-
w
 	H<W@r   r   c                    K   |j                  t        j                         d {    | j                  j	                  d       d {    | j	                          d {    y 7 @7 7 	w)Nu%   Введите новую Почту:)r   rG   rL   r   r   r   s     r1   change_email_startr   i  sV     
//+++
,,,



!
!"I
JJJ
//
 -Jr   c                   K   | j                   j                         }d|vr| j                  d       d {    y t        | j                  j
                  |       d {   r| j                  d       d {    n| j                  d       d {    |j                          d {    t        |        d {    y 7 7 e7 N7 67  7 w)Nr   u$   Некорректная почта.r   r   r   )r   r   r   rw   r   r   r   r   r   s      r1   change_email_processr  o  s     LL E
%nnCDDDw((++5999nnVWWWnn?@@@
++-
w
 	E9W@si   3CC)CC C8C9CC	C*C+C=C>CCC	CCCr   c                    K   |j                  t        j                         d {    | j                  j	                  d       d {    | j	                          d {    y 7 @7 7 	w)Nu7   Введите новое описание о себе:)r   rG   rM   r   r   r   s     r1   change_about_startr  |  sV     
//+++
,,,



!
!"[
\\\
//
 -\r   c                 ^  K   t        | j                  j                  | j                  j	                                d {   r| j                  d       d {    n| j                  d       d {    |j                          d {    t        |        d {    y 7 c7 L7 47 7 w)N)rM   r   r   r   r   s     r1   change_about_processr    s     w((++7<<3E3E3GHHHnnVWWWnn?@@@
++-
w
 IW@r   r   c           
      (  K   t        t        dd      gt        dd      gt        dd      gt        dd	      gt        d
d      gg      }| j                  j                  d|       d {    | j                          d {    y 7 7 w)Nu1   Презентация корпоративнаяpresentationr   u%   Презентация внешняяproductsu   Гайдлайн	brandbooku   Логотипыlogor   r   r   u&   Выберите нужный файлr   r   r   s     r1   company_menur    s     		#Vft	uv	#JZd	ef	#5[	QR	#5V	LM	#;6	RS/ 
B 


!
!"JY[
!
\\\
//
 ]r   r  c                 6  K   	 t         j                  | j                  j                  t	        d             d {    | j                          d {    y 7 # t
        $ r1}| j                  j                  d|        d {  7   Y d }~Pd }~ww xY w7 Dw)Nz'/var/www/netwell/files/presentation.pdf*   Ошибка отправки файла: r   send_documentr   r   r   r[   r   r   r   r]   s     r1   send_presentationr    s     X 2 2 5 5{Cl7mnnn //
 	o X%%(RSTRU&VWWWXU   B6A AA BBBA 	B#!BBB
BBBr  c                 6  K   	 t         j                  | j                  j                  t	        d             d {    | j                          d {    y 7 # t
        $ r1}| j                  j                  d|        d {  7   Y d }~Pd }~ww xY w7 Dw)Nz#/var/www/netwell/files/products.pdfr  r  r  s     r1   send_productsr    s     X 2 2 5 5{Ch7ijjj //
 	k X%%(RSTRU&VWWWXr  r	  c                 6  K   	 t         j                  | j                  j                  t	        d             d {    | j                          d {    y 7 # t
        $ r1}| j                  j                  d|        d {  7   Y d }~Pd }~ww xY w7 Dw)Nz$/var/www/netwell/files/brandbook.pdfr  r  r  s     r1   send_brandbookr    s     X 2 2 5 5{Ci7jkkk //
 	l X%%(RSTRU&VWWWXr  r
  c                 6  K   	 t         j                  | j                  j                  t	        d             d {    | j                          d {    y 7 # t
        $ r1}| j                  j                  d|        d {  7   Y d }~Pd }~ww xY w7 Dw)Nz/var/www/netwell/files/logo.zipr  r  r  s     r1   	send_logor    s     X 2 2 5 5{Cd7efff //
 	g X%%(RSTRU&VWWWXr  r   c                   K   t        d       d {   }|ridj                  |D cg c]'  }|d    d|d    d|d    d|d    d|d    d|d	    ) c}      }| j                  j                  |d d
        d {    n#| j                  j                  d       d {    t	        |        d {    y 7 c c}w 7 C7 !7 w)Nr}   
rH   ra   rJ   rL   rK   officerM      u   Справочник пуст.)r   rh   r   r   r   )r   r   ur   s       r1   send_contactsr    s     c""Eyy  ~C  DxyQvYKr!G*R'
|2anEUUWXYZbXcWddfghipgqfrs  D  E%%d5Dk222%%&FGGG
x
    # D2G sP   CB8C,B:(C;B?<#CC C2C3C:CCCrP   c                    K   |j                  t        j                         d {    | j                  j	                  d       d {    | j	                          d {    y 7 @7 7 	w)Nu'   Введите Имя и Фамилию)r   rO   rP   r   r   r   s     r1   search_startr     sV     
//+,,
---



!
!"K
LLL
//
 .Lr   c                   K   t        | j                  j                                d {   }|r_dj                  |D cg c]'  }|d    d|d    d|d    d|d    d|d    d|d    ) c}      }| j	                  |d d	        d {    n| j	                  d
       d {    |j                          d {    y 7 c c}w 7 >7 &7 w)Nr  rH   ra   rJ   rL   rK   r  rM   r  u!   Контакт не найден.)r   r   r   rh   r   r   )r   r   resultsrr   s        r1   process_searchr$    s      2 2 455Gyy  ~E  FxyQvYKr!G*R'
|2anEUUWXYZbXcWddfghipgqfrs  F  GnnT%4[)))nn@AAA
++- 6 F)AsP   'CCC,C+C	C
C#C
$C;C<CC
CCr5   c           	        K   t        t        dd      gt        dd      gt        dd      gt        dd	      gg
      }| j                  j                  d|       d {    | j                          d {    y 7 7 w)Nu   Корпоративныеcorporativer   u   Обученияstudyu
   Месяцmonthr   r   r   u   Выберите тип:r   r   r   s     r1   
event_menur)    s     		#?}	]^	#5W	MN	<w	GH	#;6	RS	/ 
B 


!
!"<2
!
NNN
//
 Os$   A!B#B$B;B<BBr&  c           	        K   t        d       d {   }dj                  |D cg c]  }|d    d|d     c}      xs d}| j                  j                  |       d {    | j                          d {    y 7 nc c}w 7 $7 w)Nr&  r  date: descriptionu   Нет событий.r   rh   r   r   r   eventsr]   r   s       r1   send_corporativer1    s     m,,F99&IQ62a&6%78IJfNfD



!
!$
'''
//
 -I'=   BB BB)B"B#B:B	;BB	Br'  c           	        K   t        d       d {   }dj                  |D cg c]  }|d    d|d     c}      xs d}| j                  j                  |       d {    | j                          d {    y 7 nc c}w 7 $7 w)Nr'  r  r+  r,  r-  u   Нет обучений.r.  r/  s       r1   
send_studyr4    s     g&&F99&IQ62a&6%78IJhNhD



!
!$
'''
//
 'I'r2  r(  c           	        K   t        d       d {   }dj                  |D cg c]  }|d    d|d     c}      xs d}| j                  j                  |       d {    | j                          d {    y 7 nc c}w 7 $7 w)Nr(  r  r+  r,  r-  u   Нет активностей.r.  r/  s       r1   
send_monthr6    s     g&&F99&IQ62a&6%78IJnNnD



!
!$
'''
//
 'I'r2  admin_broadcastc                   K   | j                   j                  t        k7  ry | j                  j	                  d      }t        |      dk  r| j                  d       d {    y |d   |d   }}|dk(  rt        |       d {    nt        ||       d {    | j                  d       d {    y 7 V7 57 "7 w)N   )maxsplit   uL   Формат: /admin_broadcast [Москва|Питер|ВСЕ] "Текст"rb   u   ВСЕu&   Рассылка отправлена!)	r   r   r'   r   splitrn   r   r   r   )r   partsrI   r   s       r1   r7  r7    s     x'LL*E
5zA~nnmnnnq58$DxD!!!d+++
..A
BBB 	o 	"+BsH   AB>B6 "B>B8B>B:B>0B<1B>8B>:B><B>blockc                   K   | j                   j                  t        k7  ry | j                  j	                         }t        |      dk  r| j                  d       d {    y 	 t        |d         }t        j                         4 d {   }|j                         4 d {   }|j                  d|f       d {    d d d       d {    d d d       d {    | j                  d       d {    y 7 7 t7 ]7 D7 6# 1 d {  7  sw Y   FxY w7 =# 1 d {  7  sw Y   MxY w7 ;# t        $ r | j                  d       d {  7   Y y w xY ww)Nr9  u   Формат: /block <user_id>rb   z2UPDATE users SET blocked = TRUE WHERE user_id = %su   Заблокирован!u   Неверный ID.)r   r   r'   r   r<  rn   r   intrY   rd   re   rf   
ValueError)r   r=  r   rp   rq   s        r1   admin_blockrB    sH    x'LL E
5zA~nn=>>>5%(m<<> 	` 	`T{{} ` `kk"VY\X^___` `	` 	` nn8999 	?	``_` ` ` `	` 	` 	` 	` 	: 5nn34445s   AEC=E$&D5 
C?D5 D#D$D'D>D?DDDDD5 DD5 7D38D5 <E?D5 DDDD	DD	DD5 D0$D'%D0,D5 5EEEEEEc                    K   t                d {    dt         }t        j                  |t               d {    t        j                  d|        y 7 I7 w)Nzhttps://netwell.nsforge.link)urlr-   u   Webhook установлен: )r^   r&   r   set_webhookr$   r=   rZ   )_webhook_urls     r1   
on_startuprH    sN     
)OO0?K
//k/
GGGLL1+?@ Gs   AA+AAAAc                    K   t         j                          d {    t        r1t        j                          t        j	                          d {    y y 7 <7 wr/   )r   delete_webhookrY   closewait_closed)rF  s    r1   on_shutdownrM    sF     





      	!s!   AA5AAAAc                     K   t                d {    t        j                  d       d {    t        j	                  t        t        j                                d {    y 7 X7 <7 	w)NT)drop_pending_updates)allowed_updates)r^   r   rJ  dpstart_pollingresolve_used_update_typesrE   r3   r1   mainrT  (  sU     
)OO


$

777


30L0L0N

OOO 7Os1   A/A)A/A+4A/#A-$A/+A/-A/__main__)}asyncior=   aiogramr   r   r   r   r   r   aiogram.filtersr	   aiogram.fsm.contextr
   aiogram.fsm.stater   r   aiogram.fsm.storage.memoryr   aiogram.typesr   r   r   r   r   aiogram.webhook.aiohttp_serverr   r   rW   dotenvr   osaiohttpr   r   typingr   r   r   r   getenvr   r   r   r!   r"   r$   r&   r@  r'   basicConfigINFOr   r*   rQ  routerinclude_routerr,   updateouter_middlewarerG   rO   rY   r^   rw   rz   rD   r   r   r   r   r   Messager   r   r   rH   r   callback_queryr6   
startswithCallbackQueryr   rJ   r   rK   r   rL   r   rM   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r   rP   r$  r)  r1  r4  r6  r7  rB  rH  rM  rT  rA   runrE   r3   r1   <module>rn     s	     E E # * 0 4 v v R   	 ' 1 1 BIIk"	
"))I{
+
"))Iv
&
"))I

"))I}
-+X6ryy4yryyQ'(   ',, '		
/ 	   & *N * 		  0@ A+ +  /S 4
C 

# 

 
=# = ="F F"  !	: 	:z 	: "	: ,&'N Nj N (N   !J Jj J "J qvv((12!4!4 Z  3 !!"C Cz C #C %%&(U]] (: ( '( !!"6 6z 6 #6 !!"	d 	dz 	d #	d *$gfo67 7 77 qvv'(	!4!4 	 )	 qvv*+!4!4  , qvv./e&9&9 *  0
   ! u}}  Z   "  qvv./e&9&9 *  0 qvv((89!(;(; !J ! :! qvv/0u':': :  1
 !!"
  
 j 
  #
  qvv!3345+>+> z  5
 %%&
 EMM 
 * 
  '
  qvv/0u':': :  1
 !!"
  
 j 
  #
  qvv/0u':': :  1
 !!"   j   #  qvv*+	!4!4 	 ,	 qvv/0e&9&9  1 qvv+,%"5"5  - qvv,-5#6#6  . qvv'(e11  ) qvv+,!%"5"5 ! -! qvv)*!4!4 Z  +
 ""#%-- 
  $ qvv()u22  * qvv./U%8%8  0 qvv()u22  * qvv()u22  * )*+C5== C ,C  !5u}} 5 "5"A!P
 zGKK r3   