o
    xcj0                     @   sD  d dl Z d dlmZmZ d dlmZ d dlmZmZ d dlm	Z	 i ddddd	d
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
dddddd d
dd!d!d"dd#d
dd$d$d%dd&d
dd'd'd(dd)d
dd*d*d+dd,d
dd-d-d.dd/d
dd0d0d1dd2d
dd3d3d4dd5d
dd6d6d7dd8d
di d9d9d:dd8d
dd;d;d<dd8d
dd=d=d>dd8d
dd?d?d@dd8d
ddAdAdBdd8d
ddCdCdDddEd
ddFdFdGddHd
ddIdIdJddKd
ddLdLdMddNd
ddOdOdPddQd
ddRdRdSddTd
ddUdUdVddWd
ddXdXdYddWd
ddZdZd[ddWd
dd\d\d]ddWd
dd^d^d_ddWd
dd`d`daddWd
di dbdbdcdddd
ddededfddgd
ddhdhdiddjd
ddkdkdlddmd
ddndndoddpd
ddqdqdrddsd
ddtdtdudvdwd
ddxdxdydvdzd
dd{d{d|dvd}d
dd~d~ddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
ddddddd
di dddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
di ddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
di dddddd
dd d dddd
ddddddd
ddddddd
dd	d	d
ddd
ddddddd
dddddd8d
dddddd8d
dddddd8d
dddddd8d
dddddd8d
dddddd8d
dddddd8d
dddddd8d
dddd dd8d
dd!d!d"dd8d
dd#d#d$dd8d
di d%d%d&dd8d
dd'd'd(dd8d
dd)d)d*dd8d
dd+d+d,dd8d
dd-d-d.dd8d
dd/d/d0dd8d
dd1d1d2dd8d
dd3d3d4dd8d
dd5d5d6dd8d
dd7d7d8dd8d
dd9d9d:dd8d
dd;d;d<dd8d
dd=d=d>dd8d
dd?d?d@dd8d
ddAdAdBdd8d
ddCdCdDdd8d
ddEdEdFdd8d
di dGdGdHdd8d
ddIdIdJdd8d
ddKdKdLdd8d
ddMdMdNdd8d
ddOdOdPdd8d
ddQdQdRdd8d
ddSdSdTdd8d
ddUdUdVdd8d
ddWdWdXdd8d
ddYdYdZdd8d
dd[d[d\dd8d
dd]d]d^dd8d
dd_d_d`dd8d
ddadadbddcd
ddddddeddfd
ddgdgdhddid
ddjdjdkddld
di dmdmdnddod
ddpdpdqddrd
ddsdsdtddud
ddvdvdwddxd
ddydydzdd{d
dd|d|d}dd~d
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
di ddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
dddddvdd
ddddddd
ddddddd
ddddddd
ddddddd
ddĐdĐdddd
ddǐdǐdddɐdddːdːddd͐dddΐdΐdddАdddѐdѐddvdӐddi dԐdԐddvd֐dddאdאdddِdddڐdڐddvdܐdddݐdݐddvdߐdddddddddddddvdddddddvdddddddddddddddddddddddddddddddddddvddddddddddddddvdddddddd ddddddvddddddddddi ddddd	ddd
d
ddvdddddddddddddddddddddddddddddddddddvddddddddddddd dd!ddd"d"d#dd$ddd%d%d&dvd'ddd(d(d)dvd*ddd+d+d,dd-ddd.d.d/dvd0ddd1d1d2dd3ddd4d4d5dd6ddd7d7d8dd9ddi d:d:d;dvd<ddd=d=d>dvd?ddd@d@dAddBdddCdCdDdvdEdddFdFdGddHdddIdIdJddKdddLdLdMddNdddOdOdPddQdddRdRdSddTdddUdUdVdvdWdddXdXdYddZddd[d[d\dd]ddd^d^d_dd`dddadadbddcdddddddedvdfdddgdgdhddidddjdjdkddldddmdnddodddpdqdvdrdddsdtddudddvdwddxdddydzdd{ddd|Z
d}d~ Zdd ZddedededefddZddedB fddZe	G dd deZdS (      N)datetime	timedelta)Plugin)attext)register_plugin   u	   幸运星commonu$   运气不错，但这是普通称号lottery)idnameraritydescriptionunlock_type   u   凡人u	   普通人   u   狂人u'   村人没有售价，狂人入口即化   u   乌鸦u   亮闪闪！亮闪闪！   u   黑   u   白   ERROR   u   苟活u   狂人不会苟活	   u   驾崩u   君主离线了
   u   猫u   时而出现，时而消失。   u   咕u   可能稍后出现。   u   摆u   深谙放松之道。   u   摸u   难以预测。   u   不想u   单纯不想   u   上班u   真有人会单独用这个吗   u   重生u   活了   u   狂热zFrom Werwolf   u   魔女   u   狼人   u   宠物   u   猎人   u   咒杀   u	   剑术士u   剑术士的基础   u	   斧术师u   斧术师的基础   u	   枪术士u   枪术士的基础   u	   格斗家u   格斗家的基础   u	   双剑师u   双剑师的基础   u	   弓箭手u   弓箭手的基础   u   ⚀u   骰子的一个侧面   u   ⚁   u   ⚂    u   ⚃!   u   ⚄"   u   ⚅#   u   🧀u   魔法芝士的一个侧面$   u   控u   __ __ __ __ 控%   u   兔子u   兔子，兔子，兔子&   u   明日u   明日复明日'   u   方舟u   永续的方舟(   u   君主u$   至高权力之人（仅限称号）)   u   卷rareu   你似乎无法停止前进。*   u   稳u!   一切似乎都在掌控之中。+   u   光之战士u   倾听，感受，思考,   u   伟大的黑魔法师u   对，伟大的黑魔法师！-   u   永远不死u   我死不了了.   u	   享受者u   享受一切/   u   骑士u   自由骑士的誓约0   u   战士u   责任与使命1   u   暗黑骑士u   暗黑之力2   u   绝枪战士u   枪刃启程3   u   我还没有睡饱	legendaryu	   定型文4   u   重生之境z2.05   u   苍穹之禁城z3.06   u   最好的学生u   <<最好的学生>>7   u	   人人网u   你人人网8   u   母肥u   谁不喜欢母肥呢9   u   男精u   谁不喜欢男精呢:   u   龙娘u   谁不喜欢龙娘呢;   u   龙男u   谁不喜欢龙男呢<   u   白魔法师u   自然之怒=   u   学者u   失落的学问>   u   占星术士u   命运之轮?   u   贤者u   贤者之路@   u   武僧u   愤怒的拳A   u	   龙骑士u   苍穹骑士B   u   忍者u   无形的刃C   u   武士u   武士之道D   u	   钐镰客u   死神的邀约E   u   蝰蛇剑士u   双刃初啼F   u   吟游诗人u	   诗与弓G   u	   机工士u   火花与钢铁H   u   舞者u   舞动的灵魂I   u   黑魔法师u   黑魔法的传承J   u	   召唤师u   唤醒以太K   u   赤魔法师u   赤之誓言L   u   青魔法师u   非常规的魔法M   u   绘灵法师u   色彩与想象N   u	   刻木匠u   刻木匠的基础O   u	   锻铁匠u   锻铁匠的基础P   u	   铸甲匠u   铸甲匠的基础Q   u	   雕金匠u   雕金匠的基础R   u	   制革匠u   制革匠的基础S   u	   裁衣匠u   裁衣匠的基础T   u   炼金术士u   炼金术士的基础U   u	   烹调师u   烹调师的基础V   u	   采矿工u   采矿工的基础W   u	   园艺工u   园艺工的基础X   u	   捕鱼人u   捕鱼人的基础Y   u	   幻术师u   治疗之芽Z   u	   咒术师u   灾厄之芽[   u	   秘术师u   知识之芽\   u   村民]   u   村医^   u   护卫_   u   硬汉`   u	   神枪手a   u   狱卒b   u   驱魔牧师c   u	   预言家d   u	   灵视者e   u   先知学徒f   u   侦探g   u	   通灵师h   u   村长i   u   女巫j   u   野兽猎手k   u   和平主义者l   u   碎嘴婆婆m   u   总统n   u   爱神o   u   咒诅村民p   u   恋人q   u   恐怖分子r   u	   野孩子s   u   酒馆老板t   u	   老船长u   u   不死长老v   u   头狼w   u	   狼萨满x   u   狼预y   u   幼狼z   u   狼巫{   u   小丑|   u   赏金猎人}   u	   杀人魔~   u	   纵火犯   u	   炸弹客   u   教主   u   僵尸   u   教众   u	   破坏者   u   族长   u	   草方块u   万物之始   u	   苦力怕zSSssssSSss~   u	   末影人u   不要看它的眼睛   u   铁镐u   挖矿第一步   u	   史莱姆u   越大越可爱   u   溺尸u   沉在水底的麻烦   u   幻翼u   三天不睡觉就会找来   u	   工作台u   一切的开始   u   熔炉u   烧一烧更香   u   箱子u   收藏家的伴侣   TNTu   砰！   u   石头u   最朴实的方块   u   泥土u   随处可见   u   沙子u   总会往下掉   u   圆石u   挖矿人的老朋友   u   玻璃u   透明而脆弱   u	   史蒂夫u   浅蓝色衬衫的传奇   u   钻石u   挖矿的终极浪漫   u   红石u   无限的可能性   u   下界u   欢迎来到地狱   u   末地u   最终的旅程   u   附魔u   30级附魔，看天意   u	   铁傀儡u   村庄的守护者   u   凋零u   三个脑袋的灾厄   u   恶魂u   来自下界的悲鸣   u	   烈焰人u   十二点经验值   u   猪灵u   金光闪闪的东西交出来   u	   黑曜石u   坚不可摧   u	   海晶灯u   海底的明珠   u	   末影龙u   一切的终结与开始   u   鞘翅u   真正的自由   u   信标u   金字塔顶端的光芒   u   下界之星u   凋零的遗物   u   基岩u   不可破坏的底层   u   早起的鸟儿u!   在早上8点到12点完成打卡	condition   u	   下午茶u&   在下午2点到下午4点完成打卡   u   我下班了u    在下午5:30到6:30完成打卡   u   熬夜冠军u    在凌晨1点到5点完成打卡   u   压哨冲线u'   在周日23:30到周一8:00完成打卡   u   不休息的板油u   累计打卡365天   u   打卡收藏家u   累计打卡200天   u   时间管理大师u   累计打卡100天   u   规律作息u   累计打卡30天   u	   日界线u   在23:59到00:01打卡   u	   刚刚好u   在00:00打卡   u   劳动模范u   在5月1日打卡   u   愚者u   在4月1日打卡   u   小孩u   在6月1日打卡   u	   程序员u   在10月24日打卡   Nekou   在2月22日打卡   u   画画更重要u   在2月14日打卡   u   我在~u   在8月11日打卡   u	   圆周率u   在3月14日打卡   u   回响u   在A-A格式日期打卡   u   新年u   在1月1日打卡   u   搜集u   累计解锁10个称号   u	   研究员u   累计解锁20个称号   u	   造物院u   累计解锁30个称号   u   金色u   获得一个传说品质称号   u	   小金人u*   三个称号栏都装备传说品质称号   u   重复观测u   抽到1次重复称号   u   古典概型u   抽到10次重复称号   u   正态分布u   抽到100次重复称号   u   试试u   累计抽奖1次   u   玩u   累计抽奖10次   u   富有u   累计抽奖25次   u   上瘾u   累计抽奖50次   u   戒戒你好u   累计抽奖100次   u   大赚u   抽到10点积分   BUGu   连续3次什么都没抽到   u   致命错误u   连续10次什么都没抽到   u   任务达人u   累计完成5次周常任务   u   勤勉板油u   累计完成15次周常任务   u   劳模奖章u   累计完成30次周常任务   u   任务狂人u   累计完成50次周常任务   u   沉迷抽卡u   累计抽奖200次   u   倾家荡产u   累计抽奖500次   u   无底深渊u   累计抽奖1000次   u   称号收藏家u   累计解锁50个称号   u   称号大师u   累计解锁100个称号   u	   抽抽乐u   累计抽奖3次   u   抽卡成精u   累计抽奖75次   u	   攒着抽u   累计抽奖150次   u   挥金如土u   累计抽奖300次   u   抽穿卡池u   累计抽奖2000次   u   非气初现u   有过一次什么都没抽到   u	   连连看u   连续5次什么都没抽到   u   非酋认证u   连续15次什么都没抽到   u   天命之人u   连续30次什么都没抽到   u   空u   累计空抽1次  u   酋长u   累计空抽10次  u   空抽u   累计空抽50次  u   黑黑u   累计空抽100次  u   虚空行者u   累计空抽300次)r   r   r   r   r   c                 C   s
   t | S N
TITLE_DEFSget)title_id r   */home/dore/onebot/Bot_Ero/plugins/title.pyget_title_def   s   
r   c                   C   s   dd t  D S )Nc                 S   s"   g | ]\}}| d dkr|qS )r   r
   )r   ).0tiddatar   r   r   
<listcomp>  s   " z)get_lottery_title_ids.<locals>.<listcomp>)r   itemsr   r   r   r   get_lottery_title_ids  s   r  unlockedtotalwidthreturnc              
   C   sv   |dkrdd|  dS t dtdd|  | }tt||  | |}dd|  d||   d|  d	| d
|dd
S )Nr   [u   ░z] 0/0 (0.0%)g        g      Y@u   █z] /z (z.1fz%))maxminint)r  r  r  pctfilledr   r   r   _title_collection_progress  s
   0r  
checkin_dtc              
      sj  t g  fdd}|d ur|j|j}}|dks%|dkr-|dkr-|dk r-|d |dks9|dkrA|dkrA|dk rA|d	 |d
ksM|d
kr]|dkr]|dk sY|dkr]|dkr]|d |dksi|dkrq|dkrq|dk rq|d | }|dkr|dks|dkr|dks|dkr|dk r|d |j|jf}dddddddddd	}||v r|||  |j|jkr|d |dkr|dks|dkr|d v r|d! |dkr|dkr|d"  }	|	dkr|d# |	d$kr|d% |	d&kr|d' |	d(kr|d)  }
 }t	|
d* |}|dkr|d+ |d,kr|d- |d.kr(|d/ |d0kr1|d1 |d$kr:|d2 |d&krC|d3 |d4krL|d5 |d6krU|d7 |d8kr^|d9 |d:krg|d; |d<krp|d= |d>kry|d? |d@kr|dA |
dB dkr|dC |
dB d,kr|dD |
dB d$kr|dE |
dF dkr|dG |
dH d8kr|dI |
dH d,kr|dJ |
dH dkr|dK |
dH dkr|dL |
dH dMkr|dN |
dH dkr|dO |
dP dkr|dQ |
dP d,kr|dR |
dP d0kr|dS |
dP d$kr|dT |
dP d>kr'|dU  
}|dkr5|dV |dMkr>|dW |dkrG|dX |d0krP|dY  }t|}|d,krb|dZ |d[krk|d\ |dkrt|d] |d0kr}|d^ |d$kr|d_  }td`da |D r|db  }t|d8krtdcda |D r|dd S )eNc                    s6   | t v r | s |  |  d S d S d S r   )r   	has_titleunlock_titleappend)r  	dbmanagernewly_unlockeduser_idr   r   unlock  s   z*evaluate_and_unlock_titles.<locals>.unlockr   r   r   r   r   r   r   r    r-   r!   r   r   r   r   r   r&   r   r   r   r   r   r   r   r   r   r   )	)r   r   )r   r   )r   r   )r   r'   )r   r%   )r   r   )r   r   )r   r   )r   r   r   rL   )r   r   r   r   r   ru   r      r   im  r   
draw_countr   r   r   r(   r   rB   r   r   r   i  r   i  r   r   r   r\   r   r   r   i,  r   i  r   duplicate_countr   r   r   has_hit_tenr   max_zero_streakr   r   r   r   r   r   r   total_zerosr   r   r   r   r   r   r   r   r   r   r#   r   r   r   r   c                 s   &    | ]}t |i d dkV  qdS r   rD   Nr   r   tr   r   r   	<genexpr>     $ z-evaluate_and_unlock_titles.<locals>.<genexpr>r   c                 s   r!  r"  r   r#  r   r   r   r%    r&  r   )r  hourminuteweekdaymonthdayget_total_distinct_checkin_daysget_user_lottery_profileget_lottery_spentr  get_quest_completionget_user_titleslenanyget_equipped_titlesall)r  r  r  r  hmr)  mmddmapping
total_daysprofilespentr  quest_totaltitlescntequippedr   r  r   evaluate_and_unlock_titles  s    0 0 




























"r@  c                   @   sl   e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )TitlePluginmanage_titlesu*   查询、查看、装备和卸下称号。c                 C   s   |  ddrdS | ddS )N   /称号一览   /稱號一覽Tu   /称号u   /稱號)on_full_match_anyon_command_any)selfmessage_typer   r   r   match  s   zTitlePlugin.matchc              
   C   sd   t |}|sd| dS ||v rdnd}|dd}d|d  d|d	  d
|d  d| d| 
S )Nr
  u   ] 未知称号u   （已装备） r   unknownr      ] 「r      」 (r   z, )r   )rG  r   equipped_titlesr  suffixr   r   r   r   _title_line  s   
.zTitlePlugin._title_linec                 C   sJ   | j jD ]}|ddkr"|di d}|r"|dkr"t|  S qd S )Ntyper   r  qqr4  )	bot_eventmessager   r  )rG  segrS  r   r   r   _get_target_user_id_from_at  s   z'TitlePlugin._get_target_user_id_from_atc                 C   s   | j |}t| j |}|s| jt|td d S ddtt	|t	t
 dg}|D ]}|| || q.| jtd|g d S )Nu   还没有解锁任何称号喵~u   已解锁称号：u   搜集进度：rJ  
)r  r0  setr3  apisend_msgr   r   r  r1  r   r  rQ  send_forward_msgjoin)rG  r  show_to_user_id	title_idsr?  linesr  r   r   r   _show_title_list  s   zTitlePlugin._show_title_listc              
   C   s   | j |}t|dkr| jt|td d S dg}|D ]}t|ddd}|	d| d|d	  d
|d  d q| jt|td
| d S )Nr   u   你当前没有装备称号u   当前装备称号：   未知称号rK  )r   r   r
  rL  r   rM  r   rN  rX  )r  r3  r1  rZ  r[  r   r   r   r   r  r]  )rG  r  r?  r`  r  r  r   r   r   _show_current  s   ( zTitlePlugin._show_currentc              	   C   s   t |}|s| jt|td d S | j||s(| jt|td d S d|d  d|d  d|d  d	|d
  }| jt|t| d S )N   没有这个称号编号喵!   你还没有解锁这个称号喵r
  r   rL  r   u   」
稀有度：r   u
   
说明：r   )r   r   rZ  r[  r   r   r  r  )rG  r  r   r  msgr   r   r   _show_detail  s   
,zTitlePlugin._show_detailc                 C   sz   |sd S dg}|D ]#}t |dddd}|d| d|d  d	|d
  d|d   q	| jt|td| d S )Nu   解锁新称号：rb  rK  u   无)r   r   r   r
  rL  r   rM  r   z) - r   rX  )r   r   r  rZ  r[  r   r   r]  )rG  r  unlocked_idsr`  r  r  r   r   r   _send_unlocked_titles_notice  s   0 z(TitlePlugin._send_unlocked_titles_noticec                 C   s   t |}|s| jt|td d S | j||s(| jt|td d S | jj||dd\}}|sL|dkrL| jt|td|d  d d S |s_|d	kr_| jt|td
 d S t	| j|}| 
|| | jt|td|d  d d S )Nrd  re  r   	max_countalreadyu   称号已装备：「r      」full4   最多只能装备3个称号，请先 /称号 卸下u   已装备称号：「)r   r   rZ  r[  r   r   r  r  equip_titler@  ri  )rG  r  r   r  okreasonr  r   r   r   _equip  s"   
"&zTitlePlugin._equipc                 C   s>   | j | t| j |}| || | jt|td d S )Nu   已卸下所有装备称号)r  clear_equipped_titlesr@  ri  rZ  r[  r   r   )rG  r  r  r   r   r   _unequip  s   zTitlePlugin._unequipc              	   C   s   | j |}|s| jt|td d S t|}t	|ddi}| j j
||dd\}}|sI|dkrI| jt|td| d|d  d	 d S |s\|d
kr\| jt|td d S t| j |}| || | jt|td| d|d  d	 d S )Nu$   还没有可随机装备的称号喵r   rb  r   rj  rl  u   随机到了已装备称号：[rL  rm  rn  ro  u   随机装备成功：[)r  r0  rZ  r[  r   r   randomchoicer   r   rp  r@  ri  )rG  r  r_  r   r  rq  rr  r  r   r   r   _equip_random  s    
(,zTitlePlugin._equip_randomc                 C   s~  | j jd krd S | j j}| ddr| || d S dd | jD }t|dkr5| jt|t	d d S |d }|dv rD| 
| d S |dkrO| | d S |d	v rZ| | d S |d
v rt|dk sj|d  sw| jt|t	d d S | |t|d  d S |dv r|  }|d u r| jt|t	d d S | || d S | r| |t| d S | jt|t	d d S )NrC  rD  c                 S   s   g | ]
}|  d kr|qS )rJ  )strip)r   ar   r   r   r  '  s    z&TitlePlugin.handle.<locals>.<listcomp>r   u   用法：/称号 当前 | /称号 卸下 | /称号 详情 <index> | /称号 随机 | /称号 <index> | /称号 查看 @用户（最多装备3个）)u   当前u   當前u   卸下)u   随机u   隨機)u   详情u   詳情r   r   u    请使用 /称号 详情 <index>)u   查看u   檢視u    请使用 /称号 查看 @用户u   无法识别的子命令喵)rT  r  rE  ra  argsr1  rZ  r[  r   r   rc  ru  rx  isdigitrg  r  rW  rs  )rG  r  r{  subtarget_userr   r   r   handle  sP   


zTitlePlugin.handleN)__name__
__module____qualname__r   r   rI  rQ  rW  ra  rc  rg  ri  rs  ru  rx  r  r   r   r   r   rA    s    	rA  )r   r   )rv  r   r   	core.baser   core.cqr   r   
core.utilsr   r   r   r  r  strr  r@  rA  r   r   r   r   <module>   s4   	
 !"#$%&'(),-./01234589:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`cdefghijklmnopqrstuvwxyz{|}~                 	  
                                      !  "  #  $  %  &  '  (  )  *  +  ,  -  0  1  2  3  4  7  8  9  :  ;  <  =  >  ?  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n 
 w* 