Do not save to file every time a Game instance asks for it, but instead every 10 seconds if needed
This commit is contained in:
parent
41af88bdb1
commit
6f359abeaf
|
|
@ -5,6 +5,7 @@ from pathlib import Path
|
||||||
from typing import Union, Dict, Callable, Tuple
|
from typing import Union, Dict, Callable, Tuple
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
|
from discord.ext import tasks
|
||||||
|
|
||||||
from .Game import Game
|
from .Game import Game
|
||||||
|
|
||||||
|
|
@ -60,6 +61,8 @@ class GamesFile:
|
||||||
# Verifying that attributes have been initialised properly
|
# Verifying that attributes have been initialised properly
|
||||||
assert self.file_obj is not None and self.config is not None
|
assert self.file_obj is not None and self.config is not None
|
||||||
logger.debug("Games file successfully initialised")
|
logger.debug("Games file successfully initialised")
|
||||||
|
self.save_needed = False
|
||||||
|
self.save_if_needed.start()
|
||||||
|
|
||||||
atexit.register(self.save_to_file)
|
atexit.register(self.save_to_file)
|
||||||
|
|
||||||
|
|
@ -112,6 +115,15 @@ class GamesFile:
|
||||||
self.file_obj.flush()
|
self.file_obj.flush()
|
||||||
logger.debug("Written games file to disk")
|
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:
|
def __getitem__(self, guild: discord.Guild) -> Game:
|
||||||
"""
|
"""
|
||||||
Get the game information for one guild
|
Get the game information for one guild
|
||||||
|
|
@ -120,4 +132,4 @@ class GamesFile:
|
||||||
if guild_id_str not in self.config:
|
if guild_id_str not in self.config:
|
||||||
self.config[guild_id_str] = Game.new_dict()
|
self.config[guild_id_str] = Game.new_dict()
|
||||||
self.save_to_file()
|
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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue