From 8dc46a6319b5bf56e436bd7bd4f50f4a3791b40d Mon Sep 17 00:00:00 2001 From: iiLarsH Date: Mon, 8 May 2023 19:20:51 +0200 Subject: [PATCH] Overall fixes to unexpected/unwanted behavior --- cogs/leaderboard.py | 30 +++++++++++++++++------------- cogs/stats.py | 28 ++++++++++++++++++---------- slashcogs/slashleaderboard.py | 15 ++++++++++----- slashcogs/slashstats.py | 11 ++++++++--- 4 files changed, 53 insertions(+), 31 deletions(-) diff --git a/cogs/leaderboard.py b/cogs/leaderboard.py index 90315c4..6f92437 100644 --- a/cogs/leaderboard.py +++ b/cogs/leaderboard.py @@ -46,14 +46,15 @@ class Leaderboard(commands.Cog): botmessage = botmessage + i + "\n" await ctx.send(botmessage) - if(len(servers) != 0): - if(len(servers) > 1): - for i in servers: - if(i in " ".join(message)): - server = i - break - else: - server = servers[0] + servers.append(self.getserver("", " ".join(message))) + server = "" + if(len(servers) > 1): + for i in servers: + if(i.lower() in " ".join(message).lower()): + server = i + break + else: + server = servers[0] botmessage = self.getleaderboard(weaponid=weaponid, weaponname=weaponname, server=server, board=board) @@ -137,7 +138,7 @@ class Leaderboard(commands.Cog): return weaponid, weaponname - def getserver(self, snippet): + def getserver(self, snippet, fullmessage = ""): server = "" response = requests.get('https://tone.sleepycat.date/v2/client/servers').json() servers = response.keys() @@ -145,6 +146,8 @@ class Leaderboard(commands.Cog): for i in servers: if(snippet.lower() in i.lower()): server = i + if(i.lower() in fullmessage.lower()): + server = i break return server @@ -164,7 +167,6 @@ class Leaderboard(commands.Cog): easyfilter = True else: hardfilter = True - top10 = {} while(len(top10)<10): current = 0 @@ -175,10 +177,12 @@ class Leaderboard(commands.Cog): checked = stats[str(board)] if(hardfilter): if(board.lower() == "kd"): - if (stats['deaths'] == 0): - deaths = 1 + if(weaponid != ""): + deaths = stats['deaths_while_equipped'] else: deaths = stats['deaths'] + if(deaths == 0): + deaths = deaths + 1 checked = round(stats["kills"] / deaths, 2) if(board.lower() == "avgd"): if(stats["kills"] == 0): @@ -212,7 +216,7 @@ class Leaderboard(commands.Cog): stat = str("{:0.2f}".format(j)) if(easyfilter): stat = str(j) - botmessage = botmessage + str(f"{str(counter):<2}"+ " - " + f"{i :<15}" + " : "+ f"{stat:<8}" + "\n") + botmessage = botmessage + str(f"{str(counter):<2}"+ " - " + f"{i :<20}" + " : "+ f"{stat:<8}" + "\n") counter= counter+1 return botmessage diff --git a/cogs/stats.py b/cogs/stats.py index 2130f37..0efc8fb 100644 --- a/cogs/stats.py +++ b/cogs/stats.py @@ -14,7 +14,7 @@ class Stats(commands.Cog): @commands.command(aliases=["compare"]) async def stats(self, ctx, *message): error = False - players = [] + players = {} servers = [] server = "" weaponid= "" @@ -28,17 +28,21 @@ class Stats(commands.Cog): item = i.replace(",", "") function_dict = self.message_handler(item) if(function_dict['player'] != None): - players.append(function_dict['player']) + players[item] = self.getplayerid(item) if(function_dict['weapon'] != None): weaponname = function_dict["weapon"][1] weaponid= function_dict['weapon'][0] if(function_dict['server'] != None): servers.append(function_dict['server']) - if(len(servers) != 0): - if(len(servers) > 1): + servers.append(self.getserver("", " ".join(message))) + + if(len(servers) != 0 and len(message) != 1): + if(len(message) == 2 and weaponid != ""): + server = "" + elif(len(servers) > 1): for i in servers: - if(i in " ".join(message)): + if(i.lower() in " ".join(message).lower()): server = i break else: @@ -49,9 +53,10 @@ class Stats(commands.Cog): await ctx.send("```No existing player found, check if the name is correct or has changed```") list_of_stats = [] - for i in players: - stats = self.getstats(playerid=i,weaponid=weaponid, weaponname=weaponname, server=server) - list_of_stats.append(stats) + for i in players.keys(): + if(i.lower() not in server.lower()): + stats = self.getstats(playerid=players[i],weaponid=weaponid, weaponname=weaponname, server=server) + list_of_stats.append(stats) if ("".join(list_of_stats) != ""): if(server != ""): @@ -156,7 +161,7 @@ class Stats(commands.Cog): return weaponid, weaponname - def getserver(self, snippet): + def getserver(self, snippet, fullmessage = ""): server = "" response = requests.get('https://tone.sleepycat.date/v2/client/servers').json() servers = response.keys() @@ -164,6 +169,8 @@ class Stats(commands.Cog): for i in servers: if(snippet.lower() in i.lower()): server = i + if(i.lower() in fullmessage.lower()): + server = i break return server @@ -185,7 +192,8 @@ class Stats(commands.Cog): deaths=killstats['deaths_while_equipped'] if(deaths == 0): deaths = 1; - botmessage += str("Deaths : " + str(killstats['deaths_while_equipped'])) + '\n' + str("Weapon : " + weaponname) + '\n' + str(str("weapon KD : " + str("{:0.2f}".format(killstats['kills']/deaths)))) + botmessage += str(str("Deaths : " + str(killstats['deaths_while_equipped'])) + '\n' + str("Weapon : " + weaponname) + '\n' + + str(str("weapon KD : " + str("{:0.2f}".format(killstats['kills']/deaths)))+ '\n' + str("Deaths to : " + str(killstats['deaths'])))) else: deaths=killstats['deaths'] if(deaths == 0): diff --git a/slashcogs/slashleaderboard.py b/slashcogs/slashleaderboard.py index 1555954..c262672 100644 --- a/slashcogs/slashleaderboard.py +++ b/slashcogs/slashleaderboard.py @@ -97,8 +97,11 @@ class SlashLeaderboard(commands.Cog): for i in servers: if(snippet.lower() in i.lower()): - server = i - break + if(snippet.lower()== i.lower()): + server = i + break + else: + server = i return server @@ -128,10 +131,12 @@ class SlashLeaderboard(commands.Cog): checked = stats[str(board)] if(hardfilter): if(board.lower() == "kd"): - if (stats['deaths'] == 0): - deaths = 1 + if(weaponid != ""): + deaths = stats['deaths_while_equipped'] else: deaths = stats['deaths'] + if(deaths == 0): + deaths = deaths + 1 checked = round(stats["kills"] / deaths, 2) if(board.lower() == "avgd"): if(stats["kills"] == 0): @@ -165,7 +170,7 @@ class SlashLeaderboard(commands.Cog): stat = str("{:0.2f}".format(j)) if(easyfilter): stat = str(j) - botmessage = botmessage + str(f"{str(counter):<2}"+ " - " + f"{i :<15}" + " : "+ f"{stat:<8}" + "\n") + botmessage = botmessage + str(f"{str(counter):<2}"+ " - " + f"{i :<20}" + " : "+ f"{stat:<8}" + "\n") counter= counter+1 return botmessage diff --git a/slashcogs/slashstats.py b/slashcogs/slashstats.py index 56bffd8..4f1bbcb 100644 --- a/slashcogs/slashstats.py +++ b/slashcogs/slashstats.py @@ -129,8 +129,11 @@ class SlashStats(commands.Cog): for i in servers: if(snippet.lower() in i.lower()): - server = i - break + if(snippet.lower()== i.lower()): + server = i + break + else: + server = i return server @@ -151,7 +154,9 @@ class SlashStats(commands.Cog): deaths=killstats['deaths_while_equipped'] if(deaths == 0): deaths = 1; - botmessage += str("Deaths : " + str(killstats['deaths_while_equipped'])) + '\n' + str("Weapon : " + weaponname) + '\n' + str(str("weapon KD : " + str("{:0.2f}".format(killstats['kills']/deaths)))) + botmessage += str(str("Deaths : " + str(killstats['deaths_while_equipped'])) + '\n' + str("Weapon : " + weaponname) + + '\n' + str(str("weapon KD : " + str("{:0.2f}".format(killstats['kills']/deaths)))) + '\n' + str("Deaths to : " + str(killstats['deaths']))) + else: deaths=killstats['deaths'] if(deaths == 0):