
    Ri                    B   d Z ddlmZ ddlZddlmZmZmZmZ ddl	m
Z
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZ ddlmZmZmZ  ej:                  dej<                          ej>                  e       Z!	 	 d	 	 	 	 	 	 	 	 	 ddZ"ddZ#e dk(  r e#        yy)uu   Gemini 텔레그램 봇.

python-telegram-bot v20+ (async) 기반.
환경변수 GEMINI_BOT_TOKEN을 사용합니다.
    )annotationsN)replace_thinking_messagesend_responsesend_thinking_messageshould_respond)BOT_PERSONASConversationMemory)DiscussionManager)call_gemini)Update)
ChatAction)ApplicationContextTypesMessageHandlerfilters)GEMINI_BOT_TOKENMAX_MESSAGE_LENGTHOWNER_USER_IDz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)formatlevelc                  K   | j                   y|j                  j                  xs d}| j                   }|j                  }|y|j                  j
                  }|j                  xs dj                         }|sy|1|j                  r%|j                  xs d}	|j                  ||	d|      syt        | |t              sy||j                  s|j                  ||      }
|j                  ||      syd|v r |j                  dd      j                         n|}|
r6|j                  |      r%|j                  j!                  |d       d{    ||j#                  |d|d	       	 |t%        |j                  |       d{   }|j'                  |||
      }t)        |       d{   }t+        |j                  |||       d{    t-        j.                  |i       j/                  d|      }|j#                  |||d	       ny| j0                  }|=|j                  j3                  |j
                  t4        j6                         d{    t)        |       d{   }t9        | ||t:               d{    ||j=                  |      ss|j?                  |      }|rNddl }|jC                  |d       |jD                  j/                  d      }|,|jG                   |||||             y|jI                          yyyy7 7 7 h7 K7 7 7 # tJ        $ r_}tL        jO                  d|d       	 | j                   jQ                  d|        d{  7   n# tJ        $ r Y nw xY wY d}~yY d}~yd}~ww xY ww)uF   수신 메시지를 처리하고 Gemini CLI 결과를 반환합니다.N Tz--deepu   🔬 심층 분석 모드)chat_idtextu   제이회장님F)is_bot)current_messagename)r   action)max_lenr   trigger_next_bot_responseu   handle_message 오류: %s)exc_infou"   ❌ 오류가 발생했습니다: ))messagebotusername	from_userchatidr   stripr   should_bot_respondr   r   on_user_message
is_my_turnreplaceshould_announce_deep_modesend_messageadd_messager   format_contextr   r   r   geteffective_chatsend_chat_actionr   TYPINGr   r   is_chain_runningon_bot_responseasyncioset_chain_runningbot_datacreate_taskstop_discussion	Exceptionloggererror
reply_text)updatecontextdmmemorybot_usernamer"   senderr   	user_textsender_usernameis_newthinking_msg_idcontext_promptresultbot_namer&   next_botr7   
trigger_fnes                       S/home/jay/workspace/.worktrees/task-2117-dev1/services/multimodel-bot/gemini_bot.pyhandle_messagerQ      sm     ~~;;''-2LnnGF~llooG#**,I	~&-- ///R$$\?D'R flMB 
~fmm##GY7}}\73?G9?TI%%h399;Zc	b227;++**7A\*]]]w(99US1$9'++w$OOO#227LZc2dN&~66F*7;;RXYYY $''b9==flSHw&F ((Dkk22 GG%,, 3    'y11FASTTT >""5"5g">)),7H$$Wd3$--112MN
)''"$#"(	 ""$ * #?>= ^ P 7Y 2T,  0!dC	..++.PQRPS,TUUU 		 Vs   ENLN*L  L&L  ,L-L  LBL  LL  &L'L  LA7L  9N:L  
NL  L  L  L  L  L   	N)N!M*#M&$M*)N*	M63N5M66N9
NNNc                 6   t        j                         j                  t              j	                         } | j                  t        t        j                  t        j                   z  t                     t        j                  d       | j                          y )Nu   Gemini 봇 시작 중...)r   buildertokenr   buildadd_handlerr   r   TEXTCOMMANDrQ   r=   inforun_polling)applications    rP   mainr\   ~   sc    %%'--.>?EEGKN7<<7??:J+JN[\
KK*+    __main__)NN)
r@   r   rA   zContextTypes.DEFAULT_TYPErB   zDiscussionManager | NonerC   zConversationMemory | NonereturnNone)r_   r`   )$__doc__
__future__r   logging	bot_utilsr   r   r   r   conversation_memoryr   r	   discussion_managerr
   engine_v2.bot_apir   telegramr   telegram.constantsr   telegram.extr   r   r   r   configr   r   r   basicConfigINFO	getLogger__name__r=   rQ   r\    r]   rP   <module>rq      s    #  d d @ 0 )  ) K K F F   A
,, 
		8	$ $((,	__&_ 	!_ &	_
 
_D zF r]   