o
    	cj
                     @   s<   d dl mZ d dlmZ d dlmZ eG dd deZdS )    )Plugin)text)register_pluginc                   @   sB   e Zd ZdZdZdZdd Zdd Zede	fd	d
Z
dd ZdS )RecallMessagePluginu   回复自己发出的某条消息后发送 /撤回，由机器人代为撤回（不校验消息年龄，由协议与权限决定成败）。recall_messageu*   撤回用户自己回复指定的消息。c                 C   s~   |dkrdS d}d}| j jD ],}|ddkrd}|ddkr:|di dd d d	}|r:|d
 dkr:d}q|o>|S )NmessageFtypereplyTr   data    r   u   /撤回)	bot_eventr   getstripsplit)selfmessage_type	has_replyhas_cmdsegparts r   3/home/dore/onebot/Bot_Ero/plugins/recall_message.pymatch   s    zRecallMessagePlugin.matchc              
   C   sl   | j jD ]/}|ddkrq|dpi }|d}|d u rqzt|W   S  ttfy3   Y  d S w d S )Nr   r	   r
   id)r   r   r   int	TypeError
ValueError)r   r   r
   msg_idr   r   r   _extract_reply_id   s   
z%RecallMessagePlugin._extract_reply_idmsg_datac                 C   s@   | sd S |  d}|d ur|S |  d}t|tr| dS d S )Nuser_idsender)r   
isinstancedict)r    uidr"   r   r   r   _sender_user_id*   s   



z#RecallMessagePlugin._sender_user_idc                 C   s   |   }|d u r| jtd d S | j|}|s$| jtd d S | |}| jj}|d u s5|d u r?| jtd d S t|t|krQ| jtd d S | j	|rYd S | jtd d S )Nu8   请先回复要撤回的那条消息，再发送 /撤回u@   获取被回复消息失败，可能太久远或已被删除喵~u1   无法确认消息发送者，撤回已取消喵~u(   只能撤回你自己发送的消息喵~u7   撤回失败，可能没有权限或由协议限制喵~)
r   apisend_msgr   get_msgr&   r   r!   str
delete_msg)r   reply_id
reply_data	sender_idoperator_idr   r   r   handle6   s&   
zRecallMessagePlugin.handleN)__name__
__module____qualname____doc__namedescriptionr   r   staticmethodr$   r&   r0   r   r   r   r   r      s    r   N)	core.baser   core.cqr   
core.utilsr   r   r   r   r   r   <module>   s
    