o
    /h                     @   sj  d dl Z d dlZd dlmZmZmZ d dlmZmZm	Z	 d dl
mZmZmZ ddlmZ edeZe dZe d	Ze e Zd
edejfddZd
edejfddZdedefddZd
edejfddZd
edejfddZ d
edejfddZ!ej"ddgddd Z#e$ede e$ede e$ed e e$ed!e  e$ed"e! dS )#    N)	Blueprintrequestjsonify)UpdateInlineKeyboardMarkupInlineKeyboardButton)ApplicationCommandHandlerContextTypes   )
get_clientbotTELEGRAM_BOT_TOKENTELEGRAM_WEBHOOK_URLupdate_c                       | j dI d H  d S )Nu   안녕하세요! 대정부/전력그룹사 검색·알림 봇입니다.
/search, /subscribe, /status, /help 를 사용해보세요.message
reply_textr   r    r   &/var/www/html/govbot/app/routes/bot.pystart      r   c                    r   )Nuw   /search <키워드> [--org=MOTIE|MOEF|KEPCO] [--type=emp|exec]
/subscribe [on|off] [--org=MOTIE|MOEF|KEPCO|ALL]
/statusr   r   r   r   r   help_cmd   r   r   textreturnc                 C   s   | r
|   dd  ng }d d d d}|D ].}|dr(| ddd  |d< q|dr:| ddd  |d< q|dv rB||d	< q|S )
N   )orgtypetoggle--org==r   --type=r    onoffr!   )split
startswithupperlower)r   partsargspr   r   r   
parse_args   s   

r/   c              
      s  t  | jjp	d}t|}d |jdd}t|dkr/|d dD ]}|dq" s<| jdI d H  d S |d pAd}|d pGd	}fd
d}g }	|d	kr|dkra|dg d}
n_|dkrm|dg d}
nS|dkry|dg d}
nG|dddg|dddg }
n8g }
|dv r|
|dg d7 }
|dv r|
|dg d7 }
|dv r|dg d}g d  fdd|D }|
|7 }
|
d d D ]3}|	dpd}|	d pd}|	dpd}|	d!p|	d"pd}|	
| d#| d#| d#|  q| jd$|	d d% pd&I d H  d S )'N r   )maxsplitr   )r"   r$   z onz offu"   예: /search 홍길동 --org=MOTIEr   r    empc                    sF   |D ]} | d|d  dd j}|r |  S qg S )N*%
   )tableselectilikelimitexecutedata)r6   fieldsfr;   )qsupar   r   like_any9   s   ,zsearch_cmd.<locals>.like_anyMOTIE	motie_org)name
departmentpositiontaskMOEFmoef_orgKEPCO	kepco_orgrC   rD   )r0   rA   ALL	motie_vip)r0   rG   rK   moef_vip)r0   rI   rK   )rC   rE   rD   )	u   사장u	   부사장u   사외이사u   상임감사u   전무u   상무u	   본부장u   처장u   실장c                    s&   g | ] t  fd dD r qS )c                 3   s"    | ]}|  d pdv V  qdS )rE   r0   N)get).0kxr   r   	<genexpr>S   s     z(search_cmd.<locals>.<listcomp>.<genexpr>)any)rO   )keywordsrQ   r   
<listcomp>S   s   & zsearch_cmd.<locals>.<listcomp>   -rE   phonecontactz / 
i  u   검색 결과가 없습니다.)r   r   r   r/   r(   lenreplacestripr   rN   appendjoin)r   r   r   r-   toksrP   r   typr@   linesrowsrrC   posdeptrY   r   )rU   r>   r?   r   
search_cmd'   sV   "*rh   c           	         s   t  }| jjp	d}t|}|d }|dvr2ttdddtdddgg}| jjd	|d
I d H  d S | jj}| jj	}|dkrV|
d||d  | jdI d H  d S |
d d|  | jdI d H  d S )Nr0   r!   r%   ONzsub:ON)callback_dataOFFzsub:OFFu!   구독 설정을 선택하세요:)reply_markupr&   subscribers)chat_id
first_nameu*   알림 구독이 활성화되었습니다.rn   u'   알림 구독이 해제되었습니다.)r   r   r   r/   r   r   r   effective_useridro   r6   upsertr:   deleteeq)	r   r   r?   r   r-   r!   kbuidrC   r   r   r   subscribe_cmd_   s(   

rw   c                    sV   t  }| jj}|ddd|d j}|rdnd}| j	
|I d H  d S )Nrm   r3   rn   r   u   구독 상태: ONu   구독 상태: OFF)r   rp   rq   r6   r7   rt   r9   r:   r;   r   r   )r   r   r?   rv   rowmsgr   r   r   
status_cmdu   s   $rz   z/webhookPOST)methodsc                  C   sH   t jdkrtt jddtj} tj|  t	ddiS t	ddidfS )u    Telegram webhook 엔드포인트r{   T)forceokFi  )
r   methodr   de_jsonget_jsonapplicationr   update_queue
put_nowaitr   )r   r   r   r   webhook|   s
   
r   helpsearch	subscribestatus)%oshtmlflaskr   r   r   telegramr   r   r   telegram.extr   r	   r
   supabase_clientr   __name__bot_bpgetenv	BOT_TOKENWEBHOOK_URLbuildertokenbuildr   DEFAULT_TYPEr   r   strdictr/   rh   rw   rz   router   add_handlerr   r   r   r   <module>   s,    


8
	