o
    ÁÎãiM  ã                   @   sP   d dl mZmZmZ d dlmZmZ d dlmZ d dl	m
Z
 G dd„ deƒZdS )é    )ÚBOT_QQÚNICKNAMEÚPlugin)ÚreplyÚtext)Úchat_assistant_reply)Úregister_pluginc                   @   sR   e Zd ZdZdZdefdd„Zdefdd„Zdedefd	d
„Z	dd„ Z
dd„ ZdS )ÚLLMChatPluginÚllm_chatu)   åœ¨è¢«æåŠæ—¶è°ƒç”¨ LLM ç”Ÿæˆå›žå¤ã€‚Úreturnc                 C   sN   g }| j  dg ¡D ]}| d¡dkr| | di ¡ dd¡¡ q	d |¡ ¡ S )NÚmessageÚtyper   ÚdataÚ )ÚcontextÚgetÚappendÚjoinÚstrip)ÚselfÚpartsÚseg© r   ú-/home/dore/onebot/Bot_Ero/plugins/llm_chat.pyÚ_extract_text   s   €zLLMChatPlugin._extract_textc                 C   sR   t tƒ}| j dg ¡D ]}| d¡dkr&| di ¡ d¡}t |ƒ|kr& dS qdS )Nr   r   Úatr   ÚqqTF)Ústrr   r   r   )r   Úbotr   r   r   r   r   Ú_has_at_bot   s   €zLLMChatPlugin._has_at_botÚmsgc                 C   s,   |   ¡ rdS trt|v rdS d|v rdS dS )NTu   å°åŸƒF)r   r   )r   r    r   r   r   Ú_should_reply   s   zLLMChatPlugin._should_replyc                 C   s,   |dkrdS |   ¡ }|  |¡sdS || _dS )Nr   FT)r   r!   Ú
_user_text)r   Úmessage_typer    r   r   r   Úmatch%   s   
zLLMChatPlugin.matchc                 C   sŠ   t | dd ƒpd ¡ }|s|  ¡ rd}t|ƒ}| j d¡}|d ur&t|ƒ ¡ nd}|r;|dkr;| j t	|ƒt
|ƒ¡ d S | j t
|ƒ¡ d S )Nr"   r   u   ä½ å¥½Ú
message_idÚ0)Úgetattrr   r   r   r   r   r   ÚapiÚsend_msgr   r   )r   Úuser_contentÚanswerÚmsg_idÚ
msg_id_strr   r   r   Úhandle.   s   zLLMChatPlugin.handleN)Ú__name__Ú
__module__Ú__qualname__ÚnameÚdescriptionr   r   Úboolr   r!   r$   r.   r   r   r   r   r	      s    			r	   N)Ú	core.baser   r   r   Úcore.cqr   r   Úcore.llm.llmr   Ú
core.utilsr   r	   r   r   r   r   Ú<module>   s
    