
    Ri                    F   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Z"	 	 d	 	 	 	 	 	 	 	 	 ddZ#ddZ$e dk(  r e$        yy)uu   Claude 텔레그램 봇.

python-telegram-bot v20+ (async) 기반.
환경변수 CLAUDE_BOT_TOKEN을 사용합니다.
    )annotationsN)replace_thinking_messagesend_responsesend_thinking_messageshould_respond)BOT_PERSONASConversationMemory)DiscussionManager)call_claude)Update)
ChatAction)ApplicationContextTypesMessageHandlerfilters)CLAUDE_BOT_TOKENMAX_MESSAGE_LENGTHOWNER_USER_IDz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)formatlevelu~  [코드 분석 모드] 사용자가 코드/파일 분석을 요청했습니다.
Read, Grep, Glob 도구를 사용하여 관련 파일을 읽고 분석하세요.
분석 결과를 다른 참여자(잼민이, 코덱스)가 이해할 수 있도록 핵심 내용을 정리하여 공유하세요.
프로젝트 경로: /home/jay/workspace/ (시스템), /home/jay/projects/ (프로젝트)

c                  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'                  |||
      }|duxr |j)                  |      }|r	t*        |z   }t-        ||       d{   }t/        |j                  |||       d{    t1        j2                  |i       j3                  d|      }|j#                  |||d	       n| j4                  }|=|j                  j7                  |j
                  t8        j:                         d{    |duxr |j)                  |      }|r	t*        |z   n|}t-        ||       d{   }t=        | ||t>               d{    ||jA                  |      ss|jC                  |      }|rNddl"}|jG                  |d       |jH                  j3                  d      }|,|jK                   |||||             y|jM                          yyyy7 7 7 7 q7 7 7 # tN        $ r_}tP        jS                  d|d       	 | j                   jU                  d|        d{  7   n# tN        $ r Y nw xY wY d}~yY d}~yd}~ww xY ww)uF   수신 메시지를 처리하고 Claude CLI 결과를 반환합니다.N Tz--deepu   🔬 심층 분석 모드)chat_idtextu   제이회장님F)is_bot)current_message)code_analysis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_contextis_code_analysis_modeCODE_ANALYSIS_PROMPT_PREFIXr   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is_code_moderesultbot_namer'   promptnext_botr:   
trigger_fnes                         S/home/jay/workspace/.worktrees/task-2117-dev1/services/multimodel-bot/claude_bot.pyhandle_messagerV   #   s     ~~;;''-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6$9'++w$OOO#227LZc2dNT>Ob.F.Fw.OL!<~!M&~\RRF*7;;RXYYY $''b9==flSHw&F ((Dkk22 GG%,, 3    T>Ob.F.Fw.OLBN1I=T]F&v\JJFASTTT >""5"5g">)),7H$$Wd3$--112MN
)''"$#"(	 ""$ * #?>G ^ P SY KT,  0!dC	..++.PQRPS,TUUU 		 Vs   EOMO*M* MA
M* MM* 0M!1BM* 7M$88M* 0M&1M* M(A7M* OM* OM* M* !M* $M* &M* (M* *	O3O!N4-N0.N43O4	O =O?O  O
OOOc                 6   t        j                         j                  t              j	                         } | j                  t        t        j                  t        j                   z  t                     t        j                  d       | j                          y )Nu   Claude 봇 시작 중...)r   buildertokenr   buildadd_handlerr   r   TEXTCOMMANDrV   r@   inforun_polling)applications    rU   mainra      sc    %%'--.>?EEGKN7<<7??:J+JN[\
KK*+    __main__)NN)
rC   r   rD   zContextTypes.DEFAULT_TYPErE   zDiscussionManager | NonerF   zConversationMemory | NonereturnNone)rd   re   )%__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@   r3   rV   ra    rb   rU   <module>rv      s    #  d d @ 0 )  ) K K F F   A
,, 
		8	$  $((,	dd&d 	!d &	d
 
dN zF rb   