import shelve def init_databases(teams, clear=False): with shelve.open("points.db", writeback=True) as db: for team in teams: if team not in db or clear: db[team] = {} db[team]["__total"] = 0 with shelve.open("settings.db", writeback=True) as db: if "multiplier" not in db or clear: db["multiplier"] = {} for team in teams: if team not in db["multiplier"] or clear: db["multiplier"][team] = 1 db["prompt"] = "" # def init_settings(clear=False): # with shelve.open("settings.db") as db: # if "multiplier" not in db or clear: # db["multiplier"] = 1 def increment_points(team, username, amount): with shelve.open("points.db", writeback=True) as db: if username not in db[team]: db[team][username] = 0 db[team][username] += amount db[team]["__total"] += amount return db[team][username] def get_user_points(team, username): with shelve.open("points.db") as db: if username in db[team]: return db[team][username] return 0 def get_team_points(team): return get_user_points(team, "__total") def get_leaderboard(): multipliers = None with shelve.open("settings.db") as db: multipliers = db["multiplier"] with shelve.open("points.db") as db: return { "settings": { "prompt": get_prompt(), "multiplier": multipliers } , "points": dict(db), } def get_multiplier(team): with shelve.open("settings.db") as db: return db["multiplier"][team] def set_multiplier(team, multiplier): with shelve.open("settings.db", writeback=True) as db: db["multiplier"][team] = multiplier return db["multiplier"][team] def get_prompt(): with shelve.open("settings.db") as db: return db["prompt"] def set_prompt(prompt): with shelve.open("settings.db", writeback=True) as db: db["prompt"] = prompt return db["prompt"]