diff --git a/cogs/error.py b/cogs/error.py index 121de0e..cff90db 100644 --- a/cogs/error.py +++ b/cogs/error.py @@ -23,6 +23,7 @@ class error(commands.Cog): random.shuffle(errormsg) strerror = "".join(error) print(strerror, file=sys.stderr) + await self.bot.application_info() message = f"{errormsg[0]}\n```py\n{strerror[-1800:]}\n```\n Contact <@{self.bot.owner_id}> if the error persists" try: await interaction.response.send_message(message, ephemeral=True) diff --git a/cogs/league.py b/cogs/league.py index 013f61d..45d5e16 100644 --- a/cogs/league.py +++ b/cogs/league.py @@ -8,6 +8,7 @@ import nextcord import aiosqlite as sqlite3 from nextcord.ext import commands, application_checks, tasks from nextcord import TextInputStyle, IntegrationType +import itertools leagues_dict = {} leagues_list = [] @@ -37,5 +38,46 @@ class league(commands.Cog): self.bot.leagues_list = leagues_list self.bot.leagues_dict = leagues_dict + + @nextcord.slash_command( + name="ranking", + description="Get a leaguess overall rankings", + integration_types=[ + IntegrationType.user_install, + IntegrationType.guild_install, + ], + contexts=[ + nextcord.InteractionContextType.guild, + nextcord.InteractionContextType.bot_dm, + nextcord.InteractionContextType.private_channel, + ], + force_global=True, + ) + async def leaguesranking(self, interaction: nextcord.Interaction, league: str): + if league not in leagues_dict: + await interaction.response.send_message("Invalid league!", ephemeral=True) + return + await interaction.response.defer() + leagueid = leagues_dict[league] + basedata = requests.get(f"https://mmolb.com/api/league/{leagueid}").json() + rankdata = requests.get(f"https://mmolb.com/api/league-top-teams/{leagueid}").json() + color = tuple(int(basedata["Color"][i:i+2], 16) for i in (0, 2, 4)) + embed = nextcord.Embed(title=f"Top teams for the {basedata["Name"]} League {basedata["Emoji"]}", colour = nextcord.Color.from_rgb(color[0], color[1], color[2])) + rankdata = rankdata["teams"] + for i in itertools.islice(rankdata, 0, 10): + embed.add_field(name=f"{i["Location"]} {i["Name"]} {i["Emoji"]} ", value=f"[{i["Record"]["Regular Season"]["Wins"]}-{i["Record"]["Regular Season"]["Losses"]} ({i["Record"]["Regular Season"]["RunDifferential"]})]()",inline=False) + embed.set_footer(text=leagueid) + await interaction.edit_original_message(embed=embed) + + @leaguesranking.on_autocomplete("league") + async def leaguesrankingac(self, interaction: nextcord.Interaction, league: str): + if not league: + thanksdiscord = leagues_list[:20] + await interaction.response.send_autocomplete(thanksdiscord) + return + closestteam = [name for name in leagues_list if name.lower().startswith(league.lower())] + thanksdiscord = closestteam[:20] + await interaction.response.send_autocomplete(thanksdiscord) + def setup(bot: commands.Bot): bot.add_cog(league(bot)) \ No newline at end of file diff --git a/cogs/team.py b/cogs/team.py index bca3525..f2db317 100644 --- a/cogs/team.py +++ b/cogs/team.py @@ -216,7 +216,7 @@ class TeamView(nextcord.ui.View): embed = ogmsg[0] teamid = embed.footer.text data = requests.get(f"https://mmolb.com/api/team/{teamid}").json() - history = requests.get(f"https://freecashe.ws/api/games?team={teamid}&season=0").json()["items"] + history = requests.get(f"https://freecashe.ws/api/games?team={teamid}&season=1").json()["items"] color = tuple(int(data["Color"][i:i+2], 16) for i in (0, 2, 4)) embed = nextcord.Embed(title=f"Last ten games for the {data["Location"]} {data["Name"]} {data["Emoji"]}", colour = nextcord.Color.from_rgb(color[0], color[1], color[2])) embed.set_footer(text=teamid) @@ -267,12 +267,19 @@ class team(commands.Cog): await interaction.response.defer() teamid = teams_dict[team] data = requests.get(f"https://mmolb.com/api/team/{teamid}").json() + rankdata = requests.get(f"https://mmolb.com/api/league-top-teams/{data["League"]}").json()["teams"] + ranking = 0 + for i in rankdata: + ranking += 1 + if i["_id"] == teamid: + break color = tuple(int(data["Color"][i:i+2], 16) for i in (0, 2, 4)) embed = nextcord.Embed(title=f"{data["Location"]} {data["Name"]} {data["Emoji"]}", description=f"{data["Motto"]}", colour = nextcord.Color.from_rgb(color[0], color[1], color[2])) embed.add_field(name="League", value=f"{dict((v,k) for k,v in self.bot.leagues_dict.items())[data["League"]]}", inline=True) embed.add_field(name="Wins", value=f"{data["Record"]["Regular Season"]["Wins"]}", inline=True) embed.add_field(name="Losses", value=f"{data["Record"]["Regular Season"]["Losses"]}", inline=True) embed.add_field(name="Run Differential", value=f"{data["Record"]["Regular Season"]["RunDifferential"]}", inline=True) + embed.add_field(name="Rank", value=f"{ranking}", inline=True) embed.add_field(name="Augments", value=f"{data["Augments"]}", inline=True) embed.add_field(name="Championships", value=f"{data["Championships"]}", inline=True) embed.set_footer(text=teamid) @@ -342,8 +349,8 @@ class team(commands.Cog): @nextcord.slash_command( - name="teamstats", - description="Get a teams stats", + name="players", + description="Get a team's player statistics", integration_types=[ IntegrationType.user_install, IntegrationType.guild_install,