o
    kj"                     @   sd   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
 e
G dd deZd	S )
    )datetime	timedelta)utils)CommandPlugin)text)get_monday_to_monday)register_pluginc                   @   sD   e Zd ZdZdZdZdZdd Zdd Zd	d
 Z	dd Z
dd ZdS )RemedyCheckinPluginremedy_checkinu'   为用户补卡并扣除对应积分。)u   /补卡u   /補卡   /单日补卡   /單日補卡   /超级补卡   /超級補卡   c                 C   s>   | j j||}|| jkr| jtd||| j dS dS )Nu(   {}年补卡次数已达上限（{}/{}）FT)	dbmanagercheckinremedy_usedYEARLY_LIMITapisend_msgr   format)selfuser_idyearused r   </home/dore/onebot/Bot_Ero/plugins/remedy_checkin/__init__.py_check_remedy_limit   s
   
z'RemedyCheckinPlugin._check_remedy_limitc              
   C   s  | j jd krd S | jdv }| jdv r|   d S t| jdkrzt| jd dtdd }W n! t	yP } z| j
td| jd  W Y d }~d S d }~ww | j j}t| jdkra| jd }t|\}}| jj|||}d	}t|dkr|s| ||jsd S | jj|}	|	|ks|rd
}
| j
t|
|dd |dd | | jj||dd  |st| j||d  | jj|j|d d S d S | j
td|	| d S | j
td|dd |dd  d S |   d S )N)r   r   )r   r   r   %Y-%m-%d   )hours   {}格式不正确   r   u   {}-{}原来没有打卡吗？真拿你没办法……
*涂写*好了帮你补上了喵，一共消费{}点数，谢谢惠顾喵 uR   补卡当然不是免费的喵!
你现在现在点数是：{}
补卡需要{}点喵u/   上当了喵！{}-{}你已经打过卡了喵！)	bot_eventr   cmdhandle_single_day_remedylenargsr   strptimer   	Exceptionr   r   r   r   r   r   r   search_user_ranger   r   pointsgetsplitremedy_weekr   add_user_pointadd_remedy_usedfind_remedy)r   
super_modedter   startendrowscostr-   success_msgr   r   r   handle   sF   

 
.0zRemedyCheckinPlugin.handlec           	   
   C   s  | j jd krd S t| jdkr/|  }|d u r!| jtd d S | jtd|| d S zt	
| jd d}W n tyR   | jtd| jd  Y d S w |d}|tdd d}| j j}| jj|||}t|dkr| jtd	| jd  d S | ||jsd S d
}| jj|}||k r| jtd|| d S | jj|| jd  t| j||d  | jj|j|d | jtd| jd | d S )Nr   u6   今年每天都打过卡了喵，不需要单日补卡uC   找到最近漏打卡日期：{}
可使用指令：/单日补卡 {}r   r!   %Y-%m-%d 08:00:00r"   daysu$   {} 这一天你已经打过卡了喵   uR   补卡当然不是免费的喵!
你现在点数是：{}
单日补卡需要{}点喵r$   u,   {} 已补卡成功喵，一共消费{}点数)r%   r   r(   r)   find_single_day_remedyr   r   r   r   r   r*   r+   strftimer   r   r   r,   r   r   r-   r.   
remedy_dayr   r1   r2   )	r   suggest_dayday	day_startday_endr   r9   r:   r-   r   r   r   r'   D   sB   
"z,RemedyCheckinPlugin.handle_single_day_remedyc                 C   s   t  tdd }|j}|j|krB|d}|tdd d}| jj| jj	||}t
|dkr6|dS |tdd }|j|ksd S )Nr"   r>   r=   r   r   )r   todayr   r   rB   r   r   r,   r%   r   r(   )r   datecurrent_yearrF   rG   r9   r   r   r   rA   m   s   



z*RemedyCheckinPlugin.find_single_day_remedyc              
   C   s   t  }|j}	 |tdd }t|\}}t |dj|kr+| jtd	| d S | j
j| jj||}t|dkrZ| jtd	|dd |dd |dd  d S |}q)	NT   r>   z%Y-%m-%d %H:%M:%Su5   {}每一周都打了卡呢！完全不需要补卡喵r   uM   找到{}-{}这一周没有打卡喵，使用指令"/补卡 {}"确认补卡喵r#   )r   rH   r   r   r   r*   r   r   r   r   r   r   r,   r%   r   r(   r/   )r   rI   rJ   pre_date	tmp_starttmp_endr9   r   r   r   r3   z   s   8zRemedyCheckinPlugin.find_remedyN)__name__
__module____qualname__namedescriptionCOMMANDSr   r   r<   r'   rA   r3   r   r   r   r   r	      s    -)r	   N)r   r   corer   	core.baser   core.cqr   
core.utilsr   r   r	   r   r   r   r   <module>   s    