obl rivals initial version

This commit is contained in:
Sakimori 2021-02-22 18:35:40 -05:00
parent 4e18b62e2a
commit de0288a1bf
2 changed files with 42 additions and 8 deletions

View file

@ -77,7 +77,8 @@ def initialcheck():
team_name text NOT NULL, team_name text NOT NULL,
teams_beaten_list text, teams_beaten_list text,
current_opponent_pool text, current_opponent_pool text,
obl_points int DEFAULT 0 obl_points int DEFAULT 0,
rival_name text
);""" );"""
if conn is not None: if conn is not None:
@ -393,15 +394,15 @@ def save_obl_results(winning_team, losing_team):
conn.close() conn.close()
return return
def get_obl_stats(team, beaten = False): def get_obl_stats(team, full = False):
conn = create_connection() conn = create_connection()
if conn is not None: if conn is not None:
c=conn.cursor() c=conn.cursor()
opponents_string = None opponents_string = None
while opponents_string is 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: try:
beaten_string, opponents_string = c.fetchone() beaten_string, opponents_string, rival_name = c.fetchone()
except TypeError: #add team to OBL except TypeError: #add team to OBL
add_team_obl(team) add_team_obl(team)
@ -411,10 +412,10 @@ def get_obl_stats(team, beaten = False):
teams_list = [name for name, points in obl_leaderboards()] teams_list = [name for name, points in obl_leaderboards()]
rank = teams_list.index(team.name) + 1 rank = teams_list.index(team.name) + 1
if not beaten: if not full:
return (obl_points, opponent_teams, rank) return (obl_points, opponent_teams, rank)
else: else:
return (obl_points, beaten_teams, rank) return (obl_points, beaten_teams, opponent_teams, rank, rival_name)
conn.close() conn.close()
return (None, None) return (None, None)
@ -429,6 +430,15 @@ def obl_leaderboards():
conn.close() conn.close()
return False 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): def list_to_newline_string(list):
string = "" string = ""
for element in list: for element in list:

View file

@ -1273,20 +1273,44 @@ class OBLTeamCommand(Command):
await msg.channel.send("Sorry boss, we can't find that team.") await msg.channel.send("Sorry boss, we can't find that team.")
return 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) opponents_list = db.newline_string_to_list(opponents_string)
for index in range(0, len(opponents_list)): for index in range(0, len(opponents_list)):
oppteam = get_team_fuzzy_search(opponents_list[index]) oppteam = get_team_fuzzy_search(opponents_list[index])
opplist = db.get_obl_stats(oppteam)[1] opplist = db.get_obl_stats(oppteam)[1]
if team.name in opplist: if team.name in opplist:
opponents_list[index] = opponents_list[index] + " 🤼" 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 = 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="OBL Points", value=points)
embed.add_field(name="Rank", value=rank) embed.add_field(name="Rank", value=rank)
embed.add_field(name="Opponent Pool", value=opponents_string, inline=False) 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) 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): class OBLConqueredCommand(Command):
name = "oblwins" name = "oblwins"
template = "m;oblwins [team name]" template = "m;oblwins [team name]"
@ -1298,7 +1322,7 @@ class OBLConqueredCommand(Command):
await msg.channel.send("Sorry boss, we can't find that team.") await msg.channel.send("Sorry boss, we can't find that team.")
return return
points, teams, rank = db.get_obl_stats(team, beaten=True) points, teams, oppTeams, rank, rivalName = db.get_obl_stats(team, full=True)
pages = [] pages = []
page_max = math.ceil(len(teams)/25) page_max = math.ceil(len(teams)/25)