o
    |^i                     @   s\   d dl mZ d dlmZ d dlmZ dedefddZdefdd	Z	eG d
d deZ
dS )    )context)Plugin)register_plugingroup_idreturnc              
   C   s  t | tr	|  S t | tsdS g }| D ]}t |tsq|d}|dp'i }|dkr8|t|dd q|dkrB|d q|dkrV|dd}|d	| d
 q|dkr`|d q|dkrd}|d}|durzt|t	|}	|	dur|	j
}W n ttfy   Y nw |s|d}
t |
tr|
 }n
|
durt|
 }|d| d
 q|dkr|d q|dv r|d q|dv r|d| d
 q|r|d| d
 qd| S )uO   将 OneBot 11 message 数组转为可读文本（非文本段用占位符）。 typedatatextimageu   [图片]atqqz[@]faceu   [表情]replyidNz[reply: forwardu   [转发消息])jsonxmlu   [卡片消息])recordvideovoice[)
isinstancestrstriplistdictgetappendr   lookup_qq_msgintcontent	TypeError
ValueErrorjoin)messager   partssegseg_typer	   r   
reply_textridreft r.   9/home/dore/onebot/Bot_Ero/plugins/message_activity_log.py_flatten_message_content   s`   







r0   c                 C   sn   | j }t|tr*|d}|d}|rt| ndp%|r$t| nd}|r*|S | j}|d ur5t|S dS )Ncardnicknamer   )senderr   r   r   r   r   user_id)	bot_eventr3   r1   nicknameuidr.   r.   r/   _sender_display_name9   s   


(r9   c                   @   s(   e Zd ZdZdZdZdd Zdd ZdS )	MessageActivityLogPluginuN   每条消息触发：仅群聊写入内存缓冲并累计发言次数入库。message_activity_logui   记录群聊最近消息（含正文摘要）与用户群环境累计发言次数（无指令触发）。c                 C   s   |dkrdS | j jdkS )Nr&   F)r5   	post_type)selfmessage_typer.   r.   r/   matchL   s   zMessageActivityLogPlugin.matchc                 C   s&  | j jsd S | j j}| j j}|d u s|d u rd S t|}t|}| j j}|d ur,t|nd}t| j p6t|}t| j j	|}| j j
}	|	d urJt|	nd}
tj| }|jd urpt||jkrp| }|j
dkrptj||j
fd  tj|
||||d}|| |
dkr|tj||
f< | j|d d S )Nr   )
message_idr4   	timestampusernamer"      )r5   is_groupr4   r   r!   timer9   r   r0   r&   rA   r   group_qq_message_historymaxlenlenpopleftqq_msg_by_group_message_idpopQQMsgr   	dbmanager"increment_user_total_message_count)r=   r4   r   r8   gidtsts_intrC   bodyraw_midmiddqoldmsgr.   r.   r/   handleQ   s<   


zMessageActivityLogPlugin.handleN)__name__
__module____qualname____doc__r7   descriptionr?   rY   r.   r.   r.   r/   r:   E   s    r:   N)corer   	core.baser   
core.utilsr   r!   r   r0   r9   r:   r.   r.   r.   r/   <module>   s    3