diff --git a/GameFiles/GamesFile.py b/GameFiles/GamesFile.py index ee89ac3..d24326b 100644 --- a/GameFiles/GamesFile.py +++ b/GameFiles/GamesFile.py @@ -5,6 +5,7 @@ from pathlib import Path from typing import Union, Dict, Callable, Tuple import discord +from discord.ext import tasks from .Game import Game @@ -60,6 +61,8 @@ class GamesFile: # Verifying that attributes have been initialised properly assert self.file_obj is not None and self.config is not None logger.debug("Games file successfully initialised") + self.save_needed = False + self.save_if_needed.start() atexit.register(self.save_to_file) @@ -112,6 +115,15 @@ class GamesFile: self.file_obj.flush() logger.debug("Written games file to disk") + @tasks.loop(seconds = 10) + async def save_if_needed(self): + if self.save_needed: + self.save_to_file() + self.save_needed = False + + def ask_for_save(self): + self.save_needed = True + def __getitem__(self, guild: discord.Guild) -> Game: """ Get the game information for one guild @@ -120,4 +132,4 @@ class GamesFile: if guild_id_str not in self.config: self.config[guild_id_str] = Game.new_dict() self.save_to_file() - return Game(self.config[guild_id_str], self.save_to_file, guild) + return Game(self.config[guild_id_str], self.ask_for_save, guild)