o
    jj                     @  s   d Z ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
 dZee jjd d	 Zd$ddZd%ddZd&ddZd'ddZd(ddZd)ddZd)d d!Zd&d"d#ZdS )*u   网页端称号装备读写。    )annotationsN)Path)	DbManager)
TITLE_DEFS   pluginsztitle.pyuser_idstrreturnNonec                 C  s`   t jdt}|d u s|jd u rd S t j|}|j| t|dd }|r.|t |  d S d S )Nbotero_title_evalevaluate_and_unlock_titles)		importlibutilspec_from_file_location_TITLE_MODULE_PATHloadermodule_from_specexec_modulegetattrr   )r   specmodfn r   ;/home/dore/onebot/Bot_Ero/checkin_gallery/title_settings.py_evaluate_unlocks   s   r   tidintdictc                 C  s2   t | i }| |dd|dd|dddS )Nnameu   未知称号rarityunknowndescription )idr   r    r"   )r   get)r   datar   r   r   _title_brief   s   


r'   c                 C  s   t  }|j| }|j| }t|}g }t|ddD ]\}}t|}||d< || qg }	t|D ]}|t	vr:q3t|}||v |d< |	| q3d
dd |D }
|
r\d|
 d	nd
}t||	|dS )N   )startslotequipped   ·c                 s  s    | ]}|d  V  qdS )r   Nr   ).0itemr   r   r   	<genexpr>9   s    z%get_title_settings.<locals>.<genexpr>u   「u   」r#   )max_equippedr+   unlockeddisplay_prefix)r   titlesequipped_alllistset	enumerater'   appendsortedr   joinMAX_EQUIPPED)r   dbequipped_idsunlocked_idsequipped_setr+   r*   r   r.   r1   prefixr2   r   r   r   get_title_settings%   s.   rA   	title_ids	list[int]c                 C  s   t |tkrtdt dt |t t|krtdt }t|j| }g }|D ]!}t|}|tvr<td| ||vrGtd| |	| q+|S )N   最多装备 
    个称号u   不能重复装备同一称号u   无效称号编号：u   尚未解锁称号：)
lenr;   
ValueErrorr6   r   r3   r5   r   r   r8   )r   rB   r<   r1   cleanedrawr   r   r   r   _validate_title_idsD   s   rJ   c                 C  s`   t | |}t }|j|  |D ]}|jj| |td\}}|s'|dkr'tdqt|  t| S )N	max_countalreadyu   装备失败，请稍后重试)	rJ   r   r3   clear_equippedequipr;   rG   r   rA   )r   rB   orderedr<   r   okreasonr   r   r   set_equipped_titlesW   s   
rS   title_idc                 C  s   t |}|tvrtdt }|j| |std|j| }||v r(t| S t|t	kr6tdt	 d|jj
| |t	d\}}|sO|dkrOtdt	 d|sY|dkrYtd	t|  t| S )
Nu   无效称号编号u   尚未解锁该称号rD   u    个称号，请先卸下rK   fullrE   rM   u   装备失败)r   r   rG   r   r3   hasr4   rA   rF   r;   rO   r   )r   rT   r   r<   r+   rQ   rR   r   r   r   equip_titlec   s$   rW   c                   sF   t | t }|j| } |vrtd fdd|D }t| |S )Nu   当前未装备该称号c                   s   g | ]}| kr|qS r   r   )r-   tr   r   r   
<listcomp>~   s    z!unequip_title.<locals>.<listcomp>)r   r   r3   r4   rG   rS   )r   rT   r<   r+   new_idsr   rY   r   unequip_titlex   s   
r\   c                 C  s"   t  }|j|  t|  t| S )N)r   r3   rN   r   rA   )r   r<   r   r   r   clear_equipped_titles   s   r]   )r   r	   r
   r   )r   r   r
   r   )r   r	   r
   r   )r   r	   rB   rC   r
   rC   )r   r	   rB   rC   r
   r   )r   r	   rT   r   r
   r   )__doc__
__future__r   importlib.utilr   pathlibr   core.database_managerr   checkin_gallery.profile_servicer   r;   __file__resolveparentr   r   r'   rA   rJ   rS   rW   r\   r]   r   r   r   r   <module>   s     








