import resources.Environment as Env from src.model.enums.devil_fruit.DevilFruitCategory import DevilFruitCategory class Timer: """ This class is used to create a timer """ def __init__( self, name: str, cron_expression: str, is_active: bool, should_log: bool, should_run_on_startup: bool, info: str = None, ): """ Initialize the timer :param name: The name of the timer :param cron_expression: The cron expression :param is_active: Is the timer active :param should_log: Should the timer log :param should_run_on_startup: Should the timer run once on startup """ self.name = name self.cron_expression = cron_expression self.is_enabled = is_active self.should_log = should_log self.should_run_on_startup = should_run_on_startup self.info = info if self.should_run_on_startup and not self.is_enabled: self.is_enabled = True TIMERS: list[Timer] = [] TEMP_DIR_CLEANUP = Timer( "temp_dir_cleanup", Env.CRON_TEMP_DIR_CLEANUP.get(), Env.ENABLE_TIMER_TEMP_DIR_CLEANUP.get_bool(), Env.SHOULD_LOG_TIMER_TEMP_DIR_CLEANUP.get_bool(), Env.SHOULD_RUN_ON_STARTUP_TEMP_DIR_CLEANUP.get_bool(), ) TIMERS.append(TEMP_DIR_CLEANUP) REDDIT_POST_ONE_PIECE = Timer( "reddit_post_one_piece", Env.CRON_REDDIT_POST_ONE_PIECE.get(), Env.ENABLE_TIMER_REDDIT_POST_ONE_PIECE.get_bool() and Env.ENABLE_REDDIT_POSTS.get_bool(), Env.SHOULD_LOG_TIMER_REDDIT_POST_ONE_PIECE.get_bool(), Env.SHOULD_RUN_ON_STARTUP_REDDIT_POST_ONE_PIECE.get_bool(), info=Env.REDDIT_ONE_PIECE_SUBREDDIT.get(), ) TIMERS.append(REDDIT_POST_ONE_PIECE) REDDIT_POST_MEME_PIECE = Timer( "reddit_post_meme_piece", Env.CRON_REDDIT_POST_MEME_PIECE.get(), Env.ENABLE_TIMER_REDDIT_POST_MEME_PIECE.get_bool() and Env.ENABLE_REDDIT_POSTS.get_bool(), Env.SHOULD_LOG_TIMER_REDDIT_POST_MEME_PIECE.get_bool(), Env.SHOULD_RUN_ON_STARTUP_REDDIT_POST_MEME_PIECE.get_bool(), info=Env.REDDIT_MEME_PIECE_SUBREDDIT.get(), ) TIMERS.append(REDDIT_POST_MEME_PIECE) TIMER_SEND_LEADERBOARD = Timer( "timer_send_leaderboard", Env.CRON_SEND_LEADERBOARD.get(), Env.ENABLE_TIMER_SEND_LEADERBOARD.get_bool(), Env.SHOULD_LOG_TIMER_SEND_LEADERBOARD.get_bool(), Env.SHOULD_RUN_ON_STARTUP_SEND_LEADERBOARD.get_bool(), ) TIMERS.append(TIMER_SEND_LEADERBOARD) RESET_BOUNTY_POSTER_LIMIT = Timer( "reset_bounty_poster_limit", Env.CRON_RESET_BOUNTY_POSTER_LIMIT.get(), Env.ENABLE_TIMER_RESET_BOUNTY_POSTER_LIMIT.get_bool(), Env.SHOULD_LOG_TIMER_RESET_BOUNTY_POSTER_LIMIT.get_bool(), Env.SHOULD_RUN_ON_STARTUP_RESET_BOUNTY_POSTER_LIMIT.get_bool(), ) TIMERS.append(RESET_BOUNTY_POSTER_LIMIT) RESET_CAN_CHANGE_REGION = Timer( "reset_can_change_region", Env.CRON_RESET_CAN_CHANGE_REGION.get(), Env.ENABLE_TIMER_RESET_CAN_CHANGE_REGION.get_bool(), Env.SHOULD_LOG_TIMER_RESET_CAN_CHANGE_REGION.get_bool(), Env.SHOULD_RUN_ON_STARTUP_RESET_CAN_CHANGE_REGION.get_bool(), ) TIMERS.append(RESET_CAN_CHANGE_REGION) SEND_SCHEDULED_PREDICTIONS = Timer( "send_scheduled_predictions", Env.CRON_SEND_SCHEDULED_PREDICTIONS.get(), Env.ENABLE_TIMER_SEND_SCHEDULED_PREDICTIONS.get_bool(), Env.SHOULD_LOG_TIMER_SEND_SCHEDULED_PREDICTIONS.get_bool(), Env.SHOULD_RUN_ON_STARTUP_SEND_SCHEDULED_PREDICTIONS.get_bool(), ) TIMERS.append(SEND_SCHEDULED_PREDICTIONS) CLOSE_SCHEDULED_PREDICTIONS = Timer( "close_scheduled_predictions", Env.CRON_CLOSE_SCHEDULED_PREDICTIONS.get(), Env.ENABLE_TIMER_CLOSE_SCHEDULED_PREDICTIONS.get_bool(), Env.SHOULD_LOG_TIMER_CLOSE_SCHEDULED_PREDICTIONS.get_bool(), Env.SHOULD_RUN_ON_STARTUP_CLOSE_SCHEDULED_PREDICTIONS.get_bool(), ) TIMERS.append(CLOSE_SCHEDULED_PREDICTIONS) REFRESH_ACTIVE_PREDICTIONS_GROUP_MESSAGE = Timer( "refresh_active_predictions_group_message", Env.CRON_REFRESH_ACTIVE_PREDICTIONS_GROUP_MESSAGE.get(), Env.ENABLE_TIMER_REFRESH_ACTIVE_PREDICTIONS_GROUP_MESSAGE.get_bool(), Env.SHOULD_LOG_TIMER_REFRESH_ACTIVE_PREDICTIONS_GROUP_MESSAGE.get_bool(), Env.SHOULD_RUN_ON_STARTUP_REFRESH_ACTIVE_PREDICTIONS_GROUP_MESSAGE.get_bool(), ) TIMERS.append(REFRESH_ACTIVE_PREDICTIONS_GROUP_MESSAGE) SCHEDULE_DEVIL_FRUIT_ZOAN_RELEASE = Timer( "schedule_devil_fruit_zoan_release", Env.CRON_SCHEDULE_DEVIL_FRUIT_ZOAN_RELEASE.get(), Env.ENABLE_TIMER_SCHEDULE_DEVIL_FRUIT_ZOAN_RELEASE.get_bool(), Env.SHOULD_LOG_TIMER_SCHEDULE_DEVIL_FRUIT_ZOAN_RELEASE.get_bool(), Env.SHOULD_RUN_ON_STARTUP_SCHEDULE_DEVIL_FRUIT_ZOAN_RELEASE.get_bool(), info=str(DevilFruitCategory.ZOAN), ) TIMERS.append(SCHEDULE_DEVIL_FRUIT_ZOAN_RELEASE) RESPAWN_DEVIL_FRUIT = Timer( "respawn_devil_fruit", Env.CRON_RESPAWN_DEVIL_FRUIT.get(), Env.ENABLE_TIMER_RESPAWN_DEVIL_FRUIT.get_bool(), Env.SHOULD_LOG_TIMER_RESPAWN_DEVIL_FRUIT.get_bool(), Env.SHOULD_RUN_ON_STARTUP_RESPAWN_DEVIL_FRUIT.get_bool(), ) TIMERS.append(RESPAWN_DEVIL_FRUIT) DEACTIVATE_INACTIVE_GROUP_CHATS = Timer( "deactivate_inactive_group_chats", Env.CRON_DEACTIVATE_INACTIVE_GROUP_CHATS.get(), Env.ENABLE_TIMER_DEACTIVATE_INACTIVE_GROUP_CHATS.get_bool(), Env.SHOULD_LOG_TIMER_DEACTIVATE_INACTIVE_GROUP_CHATS.get_bool(), Env.SHOULD_RUN_ON_STARTUP_DEACTIVATE_INACTIVE_GROUP_CHATS.get_bool(), ) TIMERS.append(DEACTIVATE_INACTIVE_GROUP_CHATS) # End inactive games END_INACTIVE_GAMES = Timer( "end_inactive_games", Env.CRON_END_INACTIVE_GAMES.get(), Env.ENABLE_TIMER_END_INACTIVE_GAMES.get_bool(), Env.SHOULD_LOG_TIMER_END_INACTIVE_GAMES.get_bool(), Env.SHOULD_RUN_ON_STARTUP_END_INACTIVE_GAMES.get_bool(), ) TIMERS.append(END_INACTIVE_GAMES) # Set expired bounty loans SET_EXPIRED_BOUNTY_LOANS = Timer( "set_expired_bounty_loans", Env.CRON_SET_EXPIRED_BOUNTY_LOANS.get(), Env.ENABLE_TIMER_SET_EXPIRED_BOUNTY_LOANS.get_bool(), Env.SHOULD_LOG_TIMER_SET_EXPIRED_BOUNTY_LOANS.get_bool(), Env.SHOULD_RUN_ON_STARTUP_SET_EXPIRED_BOUNTY_LOANS.get_bool(), ) TIMERS.append(SET_EXPIRED_BOUNTY_LOANS) # Minute tasks MINUTE_TASKS = Timer( "minute_tasks", Env.CRON_MINUTE_TASKS.get(), Env.ENABLE_TIMER_MINUTE_TASKS.get_bool(), Env.SHOULD_LOG_TIMER_MINUTE_TASKS.get_bool(), Env.SHOULD_RUN_ON_STARTUP_MINUTE_TASKS.get_bool(), ) TIMERS.append(MINUTE_TASKS) # Daily Reward DAILY_REWARD = Timer( "daily_reward", Env.CRON_DAILY_REWARD.get(), Env.ENABLE_TIMER_DAILY_REWARD.get_bool(), Env.SHOULD_LOG_TIMER_DAILY_REWARD.get_bool(), Env.SHOULD_RUN_ON_STARTUP_DAILY_REWARD.get_bool(), ) TIMERS.append(DAILY_REWARD) # Fight and plunder scout count decrease FIGHT_PLUNDER_SCOUT_COUNT_DECREASE = Timer( "FIGHT_PLUNDER_SCOUT_COUNT_DECREASE", Env.CRON_FIGHT_PLUNDER_SCOUT_COUNT_DECREASE.get(), Env.ENABLE_TIMER_FIGHT_PLUNDER_SCOUT_COUNT_DECREASE.get_bool(), Env.SHOULD_LOG_TIMER_FIGHT_PLUNDER_SCOUT_COUNT_DECREASE.get_bool(), Env.SHOULD_RUN_ON_STARTUP_FIGHT_PLUNDER_SCOUT_COUNT_DECREASE.get_bool(), ) TIMERS.append(FIGHT_PLUNDER_SCOUT_COUNT_DECREASE) SYNC_ADMIN_USERS = Timer( "sync_admin_users", Env.CRON_SYNC_ADMIN_USERS.get(), Env.ENABLE_TIMER_SYNC_ADMIN_USERS.get_bool(), Env.SHOULD_LOG_TIMER_SYNC_ADMIN_USERS.get_bool(), Env.SHOULD_RUN_ON_STARTUP_SYNC_ADMIN_USERS.get_bool(), ) TIMERS.append(SYNC_ADMIN_USERS)