o
    xcjT2                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZmZmZ d dl	mZ eG d	d
 d
eZdS )    N)datetime)utils)Plugin)attext)on_quest_trigger)get_lottery_title_idsget_title_defevaluate_and_unlock_titles)register_pluginc                   @   sX   e Zd ZdZdZdZddddZdZdd	 Zd
d Z	dd Z
dd Zdd Zdd ZdS )LotteryPluginlotteryu-   执行抽卡抽奖并发放奖励或称号。         )commonrare	legendaryu$   本次抽卡免费（今日首抽）c                 C   s&   |  dds| drdS | ddS )Nu   /抽奖u   /抽獎u   /抽卡T   /抽卡消费   /抽卡消費)on_full_match_anyon_full_matchon_command_any)selfmessage_type r   ,/home/dore/onebot/Bot_Ero/plugins/lottery.pymatch   s   zLotteryPlugin.matchc                 C   sN   | j jD ]}|ddkr"|di d}|r"|dkr"t|  S qt|S )Ntyper   dataqqall)	bot_eventmessagegetint)r   default_user_idsegr    r   r   r   _extract_target_user_id   s   z%LotteryPlugin._extract_target_user_idc                 C   s   g }t  D ]}t|pi }|d|kr|| q|s!d|dS t|}| j||rG| j|d}|dkr@t	
| j|| d|||dS | j|| d||dS )	Nrarity
title_noner   r)   r   title_duplicate)r   valuer)   rebate	title_new)r   r-   r)   )r   r	   r$   appendrandomchoice	dbmanager	has_title
DUP_REBATEr   add_user_pointunlock_title)r   user_idr)   
candidatestidr   title_idr.   r   r   r   draw_title_by_rarity"   s    



z"LotteryPlugin.draw_title_by_rarityc                 C   s   t   d }ddddfddddfddd	dfd
dddfddddfddddfddddfddddfddddfddddfg
}d}|D ] \}}||7 }||k rh|d dkr^|  S | ||d   S qHdddS )Nd   g      ?@pointsr   )r   r-   g      <@r   g      $@r   g      @r   g      @   g?   g?
   g      (@
title_rollr   r+   g      @r   g      @r   g        r   r)   )r1   r<   )r   r8   rolltable	thresholdprobrewardr   r   r   draw_reward6   s*   
zLotteryPlugin.draw_rewardc                 C   sz   |sd S dg}|D ]#}t |pdddd}|d| d|d  d	|d
  d|d   q	| jt|td| d S )Nu   解锁新称号：   未知称号unknownu   无)namer)   description[u   ] 「rK   u   」 (r)   z) - rL   
)r	   r0   apisend_msgr   r   join)r   r8   unlocked_idslinesr:   r   r   r   r   _send_unlocked_titles_noticeN   s   0 z*LotteryPlugin._send_unlocked_titles_noticec           !      C   s  | j jd krd S | j j}t| dd }|r9|d dv r9| |}| j|}| jt|t	d| d| d d S t
 d}| j||}| j||}| j||}|rYdnd	| }	||	krw| jt|t	d
||	|rpdnd d S |dk}
| j|}d}|
s| j|}|dkrt dk rd}|s|| jk r| jt|t	d| d S | j| n|| jk r| jt|t	d| d S |st| j|| j  | j|| j | j||d t| j|d}|
rdn|rdn| j}|
r| jn|rdnd}| |}| j|}|d d }|d }|d }|d }|d }|d }|d dkr|d }t| j|| |dkrQ|d7 }|d7 }||krP|}nd}|dkrZd}| j||||||| t| j|}|  || || }| j|}|
rd| j}n|rd }nd!}|dkr| jt|t	d"||| n| jt|t	d#|||| |rd$!d%d& |D }| jt|t	d'|  d S | j|}|d d(kr:d}| j||||||| t| j|}|  || |d }t"|pd)d*d+}| jt|t	d,||d- |d. || |r8d$!d/d& |D }| jt|t	d'|  d S |d d0kr|d7 }d}| j||||||| t| j|}|  || |d }t"|pld)d*d+}|#d1d} |
r}d| j}n|rd }nd!}| jt|t	d2||d- |d. | || |rd$!d3d& |D }| jt|t	d'|  d S |d d4krd}| j||||||| t| j|}|  || |
rd| j}n|rd }nd!}| jt|t	d5|d. || |rd$!d6d& |D }| jt|t	d'|  d S | jt|t	d7|d || |rJd$!d8d& |D }| jt|t	d'|  d S d S )9Nargsr   )r   r   u   用户 u    累计抽卡消费：u    积分z%Y-%m-%dr?   r   u.   今天抽卡次数已用完（{}/{}）。{}。u   你今天已打卡，可抽5次u"   今日未打卡，默认可抽2次Fg333333?Tu0   抽奖需要1点积分，你现在只有{}点喵r   r   u$   抽奖增强：本次不消耗积分u   本次消耗：1积分
draw_countduplicate_countzero_streakmax_zero_streakhas_hit_tentotal_zerosr   r>   r-   rA   z{}
u%   抽奖增强：本次不消耗积分
 u_   *摇骰子* 居然什么都没有抽到呢……
本次净变化：{}积分
{}当前积分：{}u^   *摇骰子* 居然抽到了……{}点积分！
本次净变化：{}积分
{}当前积分：{}z | c                 s   &    | ]}|d   d|d  V  qdS rK   z +rG   Nr   .0qr   r   r   	<genexpr>      $ z'LotteryPlugin.handle.<locals>.<genexpr>u   🎯 r/   rI   rJ   )rK   r)   uX   *摇骰子* 居然抽到了……解锁称号 [{}] 「{}」 ({})！
{}
当前积分：{}rK   r)   c                 s   r]   r^   r   r_   r   r   r   rb      rc   r,   r.   uo   *摇骰子* 居然抽到了……已拥有称号 [{}] 「{}」 ({})！
已返还{}积分。
{}当前积分：{}c                 s   r]   r^   r   r_   r   r   r   rb      rc   r*   uq   *摇骰子* 居然抽到了……{}称号位！
当前没有可抽取的该稀有度称号。
{}当前积分：{}c                 s   r]   r^   r   r_   r   r   r   rb     rc   u;   *摇骰子* 居然抽到了……{}！
{}
当前积分：{}c                 s   r]   r^   r   r_   r   r   r   rb     rc   )$r"   r8   getattrr(   r3   get_lottery_spentrO   rP   r   r   r   nowstrftimeget_lottery_draw_counthas_checkin_on_dateget_shop_extra_draw_bonusformatget_user_point!get_shop_lottery_waiver_remainingr1   COSTpop_shop_lottery_waiver_slotr   r6   add_lottery_spentadd_lottery_draw_countr   FREE_DRAW_HINTrH   get_user_lottery_profileupsert_user_lottery_profiler
   rT   rQ   r	   r$   )!r   r8   rU   target_user_idspenttodayrV   has_checkin_todayextra_shop_drawsmax_draw
free_dailyr>   payment_exemptrem	completed	cost_paiddraw_cost_hintresultprofilerW   rX   rY   rZ   r[   rG   unlockednet
now_pointsfree_midnamesr;   
title_datar.   r   r   r   handleW   sh  
$






	
 zLotteryPlugin.handleN)__name__
__module____qualname__rK   rL   rn   r5   rr   r   r(   r<   rH   rT   r   r   r   r   r   r      s    	r   )r1   r   corer   	core.baser   core.cqr   r   
core.utilsr   plugins.titler   r	   r
   r   r   r   r   r   r   <module>   s    