diff --git a/league_storage.py b/league_storage.py index 37f840e..282b94a 100644 --- a/league_storage.py +++ b/league_storage.py @@ -79,10 +79,12 @@ def create_season_connection(league_name, season_num): #create connection, create db if doesn't exist conn = None try: - if not os.path.exists(os.path.join(data_dir, league_dir, league_name)): - + if not os.path.exists(os.path.join(data_dir, league_dir, league_name)): os.makedirs(os.path.join(data_dir, league_dir, league_name)) - conn = sql.connect(os.path.join(data_dir, league_dir, league_name, season_num, f"{league_name}.db")) + try: + conn = sql.connect(os.path.join(data_dir, league_dir, league_name, season_num, f"{league_name}.db")) + except: + raise ValueError("Season not played") # enable write-ahead log for performance and resilience conn.execute('pragma journal_mode=wal') @@ -197,8 +199,11 @@ def add_stats(league_name, player_game_stats_list): conn.commit() conn.close() -def get_stats(league_name, stat, is_batter=True, day = 10): - conn = create_connection(league_name) +def get_stats(league_name, stat, is_batter=True, day = 10, season = None): + if season is None: + conn = create_connection(league_name) + else: + conn = create_season_connection(league_name, season) stats = None if conn is not None: conn.row_factory = sql.Row diff --git a/leagues.py b/leagues.py index dbb9fc0..e8dc491 100644 --- a/leagues.py +++ b/leagues.py @@ -455,9 +455,15 @@ class league_structure(object): return tournaments - def stat_embed(self, stat_name): - this_embed = Embed(color=Color.purple(), title=f"{self.name} Season {self.season} {stat_name} Leaders") - stats = league_db.get_stats(self.name, stat_name.lower(), day = self.day) + def stat_embed(self, stat_name, season_num): + if season_num is None: + season_string = str(self.season) + day = self.day + else: + season_string = str(season_num) + day = len(self.schedule) + this_embed = Embed(color=Color.purple(), title=f"{self.name} Season {season_string} {stat_name} Leaders") + stats = league_db.get_stats(self.name, stat_name.lower(), day = day, season = season_num) if stats is None: return None else: diff --git a/the_prestige.py b/the_prestige.py index e7a3dac..4d092d2 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -1070,10 +1070,22 @@ class LeagueLeadersCommand(Command): if league_exists(command.split("\n")[0].strip()): league = leagues.load_league_file(command.split("\n")[0].strip()) stat_name = command.split("\n")[1].strip() + season_num = None + + for flag in flags: + if flag[0] == "s": + try: + season_num = int(flag[1]) + return + except ValueError: + raise CommandError("Give us a proper number, boss.") + try: - stat_embed = league.stat_embed(stat_name) + stat_embed = league.stat_embed(stat_name, season_num) except IndexError: raise CommandError("Nobody's played enough games to get meaningful stats in that category yet, chief. Try again after the next game or two.") + except ValueError: + raise CommandError("That season hasn't been played yet.") if stat_embed is None: raise CommandError("We don't know what that stat is, chief.")