diff --git a/database.py b/database.py index 2c62c64..8c4ec3d 100644 --- a/database.py +++ b/database.py @@ -77,7 +77,8 @@ def initialcheck(): team_name text NOT NULL, teams_beaten_list text, current_opponent_pool text, - obl_points int DEFAULT 0 + obl_points int DEFAULT 0, + rival_name text );""" if conn is not None: @@ -393,15 +394,15 @@ def save_obl_results(winning_team, losing_team): conn.close() return -def get_obl_stats(team, beaten = False): +def get_obl_stats(team, full = False): conn = create_connection() if conn is not None: c=conn.cursor() opponents_string = None while opponents_string is None: - c.execute("SELECT teams_beaten_list, current_opponent_pool FROM one_big_league WHERE team_name = ?", (team.name,)) + c.execute("SELECT teams_beaten_list, current_opponent_pool, rival_name FROM one_big_league WHERE team_name = ?", (team.name,)) try: - beaten_string, opponents_string = c.fetchone() + beaten_string, opponents_string, rival_name = c.fetchone() except TypeError: #add team to OBL add_team_obl(team) @@ -411,10 +412,10 @@ def get_obl_stats(team, beaten = False): teams_list = [name for name, points in obl_leaderboards()] rank = teams_list.index(team.name) + 1 - if not beaten: + if not full: return (obl_points, opponent_teams, rank) else: - return (obl_points, beaten_teams, rank) + return (obl_points, beaten_teams, opponent_teams, rank, rival_name) conn.close() return (None, None) @@ -429,6 +430,15 @@ def obl_leaderboards(): conn.close() return False +def set_obl_rival(base_team, rival): + conn = create_connectio() + if conn is not None: + c=conn.cursor() + + c.execute("UPDATE one_big_league SET rival_name = ? WHERE team_name = ?", (rival.name, base_team.name)) + conn.commit() + conn.close() + def list_to_newline_string(list): string = "" for element in list: diff --git a/the_prestige.py b/the_prestige.py index 8fdc493..94a4c04 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -1273,20 +1273,44 @@ class OBLTeamCommand(Command): await msg.channel.send("Sorry boss, we can't find that team.") return - points, opponents_string, rank = db.get_obl_stats(team) + rival_team = None + points, beaten_teams_list, opponents_string, rank, rival_name = db.get_obl_stats(team, full=True) opponents_list = db.newline_string_to_list(opponents_string) for index in range(0, len(opponents_list)): oppteam = get_team_fuzzy_search(opponents_list[index]) opplist = db.get_obl_stats(oppteam)[1] if team.name in opplist: opponents_list[index] = opponents_list[index] + " 🤼" + if rival_name is not None: + rival_team = games.get_team(rival_name) embed = discord.Embed(color=discord.Color.red(), title=f"{team.name} in the One Big League") embed.add_field(name="OBL Points", value=points) embed.add_field(name="Rank", value=rank) embed.add_field(name="Opponent Pool", value=opponents_string, inline=False) + if rival_team is not None: + embed.add_field(name="Rival", value=f"{rival_team.name}\n{rival_team.slogan}") await msg.channel.send(embed=embed) +class OBLSetRivalCommand(Command): + name = "oblteam" + template = "m;oblrival\n[your team name]\n[rival team name]" + description = "Sets your team's OBL rival. Can be changed at any time. Requires ownership." + + async def execute(self, msg, command): + team_i = get_team_fuzzy_search(command.split("\n")[1].strip()) + team_r = get_team_fuzzy_search(command.split("\n")[2].strip()) + team, owner_id = games.get_team_and_owner(team_i.name) + if team is None or team_r is None: + await msg.channel.send("Can't find one of those teams, boss. Typo?") + return + elif owner_id != msg.author.id and msg.author.id not in config()["owners"]: + await msg.channel.send("You're not authorized to mess with this team. Sorry, boss.") + return + try: + db.set_obl_rival(team, team_r) + await msg.channel.send("One pair of mortal enemies, coming right up. Unless you're more of the 'enemies to lovers' type. We can manage that too, don't worry.") + class OBLConqueredCommand(Command): name = "oblwins" template = "m;oblwins [team name]" @@ -1298,7 +1322,7 @@ class OBLConqueredCommand(Command): await msg.channel.send("Sorry boss, we can't find that team.") return - points, teams, rank = db.get_obl_stats(team, beaten=True) + points, teams, oppTeams, rank, rivalName = db.get_obl_stats(team, full=True) pages = [] page_max = math.ceil(len(teams)/25)