o
    8h                     @   s*  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	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jfddZdedejdefddZdedejdefddZdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd d#lmZ dedejfd$d%Zdedejfd&d'ZdS )(    )Update)ContextTypes)supabase_serviceorg_chart_service)search_stateNupdatecontextc                    s8   | j j}td|  d}| jj|ddI d H  d S )Nz/start - Chat ID: u?  📢 *산업부·기재부·전력그룹사 인사 발령 알림 봇*

아래 명령어를 통해 검색 및 알림 수신을 설정할 수 있습니다.
(메뉴 기능을 활용하거나 직접 입력하여 사용 가능합니다.)

🔍 *직원 검색 기능*
1️⃣ `/motie_search` - 산업부 직원 검색
2️⃣ `/moef_search` - 기재부 직원 검색

📌 *주요 간부 명단 조회*
3️⃣ `/motie_map` - 산업부 주요 간부 명단 (팀장 이상)
4️⃣ `/moef_map` - 기재부 주요 간부 명단 (팀장 이상)

🔔 *인사발령 알림 설정*
📢 *산업부*
5️⃣ `/motie_subscribe` - 산업부 인사발령 알림 켜기
6️⃣ `/motie_unsubscribe` - 산업부 인사발령 알림 끄기

📢 *기재부*
7️⃣ `/moef_subscribe` - 기재부 인사발령 알림 켜기
8️⃣ `/moef_unsubscribe` - 기재부 인사발령 알림 끄기

📢 *전력그룹사*
9️⃣ `/kepco_subscribe` - 전력그룹사 인사발령 알림 켜기
🔟 `/kepco_unsubscribe` - 전력그룹사 인사발령 알림 끄기

ℹ️ *인사발령 정보는 공시된 정부 홈페이지 및 알리오에서 수집됩니다.*
(언론 등 외부 출처 인사발령 정보는 포함되지 않습니다.)

ℹ️ *알림은 미수신이 기본 값이므로, 수신을 원하실 경우 반드시 알림 켜기를 실행해주세요.*Markdown)
parse_mode)effective_chatidloggerinfomessage
reply_text)r   r   chat_idr    r   ./var/www/html/bot/handlers/command_handlers.pystart   s   r   c                        t |j| jjdI d H  d S )Nmotier   send_org_chartbotr   r   r   r   r   r   r   	motie_map*      r   c                    r   )Nmoefr   r   r   r   r   moef_map-   r   r   tablec              
      s   | j j}| j j}zt||| | jdI d H  W d S  ty@ } z| jdI d H  t	d|  W Y d }~d S d }~ww )Nu1   ✅ 인사발령 알림을 구독하셨습니다!u   ❌ 구독 중 오류 발생!u   구독 오류: )
r   r   
first_namer   upsert_subscriptionr   r   	Exceptionr   error)r   r   r   r   r    er   r   r   handle_subscribe1   s   r%   c              
      sx   | j j}zt|| | jdI d H  W d S  ty; } z| jdI d H  td|  W Y d }~d S d }~ww )Nu%   🛑 구독이 취소되었습니다.u$   ❌ 구독 취소 중 오류 발생!u   구독 취소 오류: )	r   r   r   delete_subscriptionr   r   r"   r   r#   )r   r   r   r   r$   r   r   r   handle_unsubscribe;   s   r'   c                       t | |dI d H  d S Nmotie_subscribersr%   r   r   r   r   motie_subscribeE       r,   c                    r(   r)   r'   r   r   r   r   motie_unsubscribeF   r-   r/   c                    r(   Nmoef_subscribersr+   r   r   r   r   moef_subscribeG   r-   r2   c                    r(   r0   r.   r   r   r   r   moef_unsubscribeH   r-   r3   c                    r(   Nkepco_subscribersr+   r   r   r   r   kepco_subscribeI   r-   r6   c                    r(   r4   r.   r   r   r   r   kepco_unsubscribeJ   r-   r7   c                    (   | j j}dt|< | jdI d H  d S )Nr   u9   🔎 산업부에서 검색할 이름을 입력하세요.r   r   r   r   r   r   r   r   r   r   r   motie_searchM      r;   c                    r8   )Nr   u9   🔎 기재부에서 검색할 이름을 입력하세요.r9   r:   r   r   r   moef_searchR   r<   r=   )motie_servicec                    sL   t  }|rd|d  d|d  d|d  }nd}| j|I d H  d S )Nu$   🆕 인사 공지 발견!

제목: titleu	   
날짜: dateu	   
링크: urlu-   📭 새로운 인사 공지는 없습니다.)r>   check_latest_noticer   r   )r   r   resultmsgr   r   r   motie_checkZ   s   $rE   c              
      s   z$t  }|sd}nd}|D ]
}|d| d7 }q| j|I d H  W d S  tyI } z| jdI d H  td|  W Y d }~d S d }~ww )Nu+   ✅ 조직도에는 변화가 없습니다.u8   📊 다음과 같은 변화가 발견되었습니다:

z- 
u-   ❌ 조직도 업데이트 중 오류 발생!u   motie_update 오류: )r>   update_org_chartr   r   r"   loggingr#   )r   r   changesrD   liner$   r   r   r   motie_updatec   s   rK   )telegramr   telegram.extr   servicesr   r   handlers.stater   rH   	getLogger__name__r   DEFAULT_TYPEr   r   r   strr%   r'   r,   r/   r2   r3   r6   r7   r;   r=   r>   rE   rK   r   r   r   r   <module>   s,   


	