
    soj                     f   d dl Z d dlmZ d dlZd dlmZ d dlmZmZm	Z	 d dl
mc mc mZ 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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# d dl$m%Z% d dl&m'Z'm(Z(m)Z) d dl*m+Z, d dl-m.Z. d dl/m0Z0 dedej        de	fdZ1deddfdZ2dej3        ddfdZ4dS )    N)datetime)CronTrigger)ContextTypesApplicationJob)initend)DailyReward)set_expired_bounty_loans)reset_bounty_poster_limit)schedule_devil_fruit_releaserespawn_devil_fruit)decrease_scout_count)end_inactive_games)run_minute_tasks)deactivate_inactive_group_chats)send_leaderboard)reset_can_change_region)send_scheduled_predictionsclose_scheduled_predictions9send_prediction_status_change_message_or_refresh_dispatch)manage)sync_admin_users)cleanup_temp_dirapplicationtimerreturnc                    t          |j                                                  }|dvrt          d|j         d|j                   |dk    rF| j                            t          t          |j                  t          j
        |j        |          }nA| j                            t          dt          j        |j                  i|j        |          }t          j        d|j         d	|j                    |S )
z{
    Add a job to the context
    :param application: The application
    :param timer: The timer
    :return: The job
    )      z"Invalid cron expression for timer : r   )callbackintervalfirstnamedatatrigger)r"   
job_kwargsr%   r&   zNext run of "z" is )lencron_expressionsplit
ValueErrorr%   	job_queuerun_repeatingrunintr   min
run_customr   from_crontablogginginfonext_t)r   r   cron_expression_lenjobs       !/app/src/service/timer_service.pyadd_to_queuer:      s    e399;;<<&((VVVu?TVV
 
 	
 a#11.//, 2 
 
 #..!;#;E<Q#R#RS	 / 
 
 L>>>#*>>???J    c                    K   t           j        D ]Y}|j        st          j        d|j         d           't          | |          }|j        r|                    |            d{V  ZdS )zR
    Set the timers
    :param application: The application
    :return: None
    zTimer z is disabledN)	TimerTIMERS
is_enabledr4   r5   r%   r:   should_run_on_startupr/   )r   r   r8   s      r9   
set_timersrA   @   s        ' ' 	L:%*:::;;;;..& 	'''+&&&&&&&&&' 'r;   contextc                 V  K   | j         }t          |j        t          j                  st	          j        d|j         d           dS |j        }t                      }|j        rt	          j	        d|j                    |xxt          j
        k    rnxt          j        k    rn na  	 t          | |j	                   d{V  n# t          j        j        $ r*}t	          j        d|j         d|            Y d}~nsd}~ww xY wxt          j        k    r t%                       nJxt          j        k    r t)          |            d{V  n"xt          j        k    r t-                       d{V  nxt          j        k    r t1                       nxt          j        k    r t5          |            d{V  nxt          j        k    r t9          |            d{V  nxt          j        k    r t=          | d           d{V  n`xt          j        k    r tA          |            d{V  n8xt          j!        k    r tE          |            d{V  nxt          j#        k    r tI                       nxt          j%        k    r tM          |            d{V  nxt          j'        k    r tQ          |            d{V  nxt          j)        k    r tU          |            d{V  n{xt          j+        k    r tY          j-                     nVxt          j.        k    r t_                       n6t          j0        k    rtc                       n	 te          d	|j                   |j        r!t	          j	        d
| j         j                    tg          |           dS )zJ
    Run the timers
    :param context: The context
    :return: None
    zJob z context is not a TimerNzRunning timer zReddit API error running r!   T)should_refreshzUnknown timer zFinished timer )4r8   
isinstancer&   r=   r4   errorr%   r   
should_logr5   REDDIT_POST_ONE_PIECEREDDIT_POST_MEME_PIECEsend_reddit_postasyncprawcore
exceptionsAsyncPrawcoreExceptionwarningTEMP_DIR_CLEANUPr   TIMER_SEND_LEADERBOARDr   RESET_BOUNTY_POSTER_LIMITr   RESET_CAN_CHANGE_REGIONr   SEND_SCHEDULED_PREDICTIONSr   CLOSE_SCHEDULED_PREDICTIONSr   (REFRESH_ACTIVE_PREDICTIONS_GROUP_MESSAGEr   !SCHEDULE_DEVIL_FRUIT_ZOAN_RELEASEr   RESPAWN_DEVIL_FRUITr   DEACTIVATE_INACTIVE_GROUP_CHATSr   END_INACTIVE_GAMESr   SET_EXPIRED_BOUNTY_LOANSr   MINUTE_TASKSr   DAILY_REWARDr
   reset"FIGHT_PLUNDER_SCOUT_COUNT_DECREASEr   SYNC_ADMIN_USERSr   r,   r	   )rB   r8   r   dbes        r9   r/   r/   P   su      +Cch,, >SX>>>???E	B 20ch00111
G(U((((+G5+G+G+G+G+G+G+G+G	M&w
;;;;;;;;;; +B M M M  KCH K K K KLLLLLLLLM $U####)U))))"7++++++++++,U,,,,+----------*U****#%%%%-U----,W5555555555.U....-g6666666666;U;;;;K           5U4444.w7777777777&U&&&&%g..........2U2222+----%U%%%%$W----------+U++++*73333333333U"7++++++++++U5U5555 """"###:ej::;;; ;9w{'799:::GGG
Fs   )C DC??D)5r4   r   asyncprawcore.exceptionsrK   apscheduler.triggers.cronr   src.tg_compat.extr   r   r   src.model.enums.Timermodelenumsr=   src.chat.manage_messager   r	   src.model.DailyRewardr
   src.service.bounty_loan_servicer   !src.service.bounty_poster_servicer   src.service.devil_fruit_servicer   r   !src.service.fight_plunder_servicer   src.service.game_servicer   src.service.generic_servicer   src.service.group_servicer   src.service.leaderboard_servicer   src.service.location_servicer   src.service.prediction_servicer   r   r   src.service.reddit_servicer   rJ   src.service.user_servicer   src.utils.download_utilsr   r:   rA   DEFAULT_TYPEr/    r;   r9   <module>ry      sB              1 1 1 1 1 1 < < < < < < < < < < % % % % % % % % % % % % - - - - - - - - - - - - - - D D D D D D G G G G G G ] ] ] ] ] ] ] ] B B B B B B 7 7 7 7 7 7 8 8 8 8 8 8 E E E E E E < < < < < < @ @ @ @ @ @         
 B A A A A A 5 5 5 5 5 5 5 5 5 5 5 5k %+ #    D'+ '$ ' ' ' ' H|0 HT H H H H H Hr;   