From b34ae6e882366f4784e26c02fe774804c970ab8c Mon Sep 17 00:00:00 2001 From: s-prechtl Date: Thu, 17 Mar 2022 11:50:48 +0100 Subject: [PATCH] RankCommand done --- .gitignore | 1 + APICommands/Command.py | 25 ++++++++-------- APICommands/SummonerLevelCommand.py | 2 +- APICommands/SummonerRankCommand.py | 30 +++++++++++++++++-- iLeague.py | 45 +++++------------------------ 5 files changed, 50 insertions(+), 53 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..319fce8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/requests.log diff --git a/APICommands/Command.py b/APICommands/Command.py index 3e20182..152383e 100644 --- a/APICommands/Command.py +++ b/APICommands/Command.py @@ -6,6 +6,19 @@ import requests import riotwatcher +def getSummonerNameFromMessage(message: discord.Message, argumentstart=1): + ret = "" + inp = message.content.split(" ") + if len(inp) > argumentstart + 1: + for i in inp[argumentstart:]: + ret += " " + i + + ret = ret[1:] + else: + ret = inp[argumentstart] + return ret + + class Command: __metaclass__ = ABCMeta keywords = [] @@ -47,18 +60,6 @@ class Command: with open("requests.log", "a") as f: f.write(logMSG) - def getSummonerNameFromMessage(self, message: discord.Message, argumentstart=1): - ret = "" - inp = message.content.split(" ") - if len(inp) > argumentstart + 1: - for i in inp[argumentstart:]: - ret += " " + i - - ret = ret[1:] - else: - ret = inp[argumentstart] - return ret - async def checkSumname(self, sumname, message: discord.Message): try: var = self.api.summoner.by_name(self.region, sumname)["id"] diff --git a/APICommands/SummonerLevelCommand.py b/APICommands/SummonerLevelCommand.py index c68ece2..2c26cd4 100644 --- a/APICommands/SummonerLevelCommand.py +++ b/APICommands/SummonerLevelCommand.py @@ -17,7 +17,7 @@ class SummonerLevel(APICommands.Command.Command, ABC): async def execute(self, message: discord.Message): sumname = "" try: - sumname = self.getSummonerNameFromMessage(message) + sumname = APICommands.Command.getSummonerNameFromMessage(message) except: await self.usage(message) if sumname != "": diff --git a/APICommands/SummonerRankCommand.py b/APICommands/SummonerRankCommand.py index 21c86f6..7d12697 100644 --- a/APICommands/SummonerRankCommand.py +++ b/APICommands/SummonerRankCommand.py @@ -6,6 +6,15 @@ import riotwatcher import APICommands.Command +def truncate(f, n): + """Truncates/pads a float f to n decimal places without rounding""" + s = '{}'.format(f) + if 'e' in s or 'E' in s: + return '{0:.{1}f}'.format(f, n) + i, p, d = s.partition('.') + return '.'.join([i, (d + '0' * n)[:n]]) + + class SummonerRank(APICommands.Command.Command, ABC): keywords = ["rank", "Rank", "RANK"] @@ -15,10 +24,27 @@ class SummonerRank(APICommands.Command.Command, ABC): super().__init__(pref, api, region, additionalKeywords) async def execute(self, message: discord.Message): - pass + sumname = "" + try: + sumname = APICommands.Command.getSummonerNameFromMessage(message) + except: + await self.usage(message) + + if sumname != "": + if not await self.checkSumname(sumname, message): + return + response = self.api.league.by_summoner(self.region, + self.api.summoner.by_name(self.region, sumname)["id"]) + for i in response: + if i["queueType"] == "RANKED_SOLO_5x5": + response = i + rank = str(response['tier']) + " " + str(response['rank']) + wr = str(truncate((response["wins"] / (response["wins"] + response["losses"]) * 100), 2)) + "%" + await message.channel.send(sumname + ": " + str(rank) + " | WR: " + str(wr)) async def info(self, message: discord.Message): pass async def usage(self, message: discord.Message): - pass + await message.channel.send("Wrong usage of " + self.commandName + ".\n" + "Usage: " + self.pref + "rank [Summonername]") diff --git a/iLeague.py b/iLeague.py index 4f41032..7c69778 100644 --- a/iLeague.py +++ b/iLeague.py @@ -6,7 +6,7 @@ import pickle import requests from riotwatcher import LolWatcher -from APICommands import ChampionMasteryCommand, HighestMasteryCommand, SummonerLevelCommand, PrefixCommand +from APICommands import ChampionMasteryCommand, HighestMasteryCommand, SummonerLevelCommand, PrefixCommand, SummonerRankCommand def championIdToName(id, championsText): @@ -34,6 +34,7 @@ class MyClient(discord.Client): self.commands.append(HighestMasteryCommand.HighestMastery(self.pref, self.api, self.region, [])) self.commands.append(SummonerLevelCommand.SummonerLevel(self.pref, self.api, self.region, [])) self.commands.append(PrefixCommand.Prefix(self.pref, self.api, self.region, [])) + self.commands.append(SummonerRankCommand.SummonerRank(self.pref, self.api, self.region, [])) def load(self): # Loads the prefix file if accessable try: @@ -65,17 +66,16 @@ class MyClient(discord.Client): # HUBA - if self.getContentFromMessageWithPrefixCommand(message, ["hubaa"]): + if message.content == self.pref + "huba": self.log("Huawa", message) await message.channel.send( - "Julian Huber (16) ist ein Kinderschänder, welcher in Wahrheit schwul ist und seine sexuelle " + "Julian Huber (17) ist ein Kinderschänder, welcher in Wahrheit schwul ist und seine sexuelle " "Orientierung hinter einer Beziehung mit einem weiblichen Kind versteckt.") - # LEVEL - elif self.getContentFromMessageWithPrefixCommand(message, ["level", "Level", "lvl"]): - await self.requestLevel(message) + if True: + return - # RANK + # RANK elif self.getContentFromMessageWithPrefixCommand(message, ["rank", "Rank", "RANK"]): self.log("Summoner level", message) await self.requestRank(message) @@ -106,27 +106,6 @@ class MyClient(discord.Client): await message.channel.send( "Something went wrong while changing the prefix. To change it use " + self.pref + "prefix [new Prefix]") - async def requestRank(self, message: discord.Message): - sumname = "" - try: - sumname = self.getSummonerNameFromMessage(message) - except: - await message.channel.send("Something went wrong.\n" - "Usage: " + self.pref + "rank [Summonername]") - - if sumname != "": - if not await self.checkSumname(sumname, message): - return - print("Summonerrank request sent in Channel " + str(message.channel.name)) - response = self.api.league.by_summoner(self.region, - self.api.summoner.by_name(self.region, sumname)["id"]) - for i in response: - if i["queueType"] == "RANKED_SOLO_5x5": - response = i - rank = str(response['tier']) + " " + str(response['rank']) - wr = str(truncate((response["wins"] / (response["wins"] + response["losses"]) * 100), 2)) + "%" - await message.channel.send(sumname + ": " + str(rank) + " | WR: " + str(wr)) - async def requestHighestMastery(self, message: discord.Message): sumname = "" err = "Something went wrong.\nUsage: " + self.pref + "hm [count] [Summonername]" @@ -255,16 +234,6 @@ class MyClient(discord.Client): def getChampionsJSON(self): return requests.get("http://ddragon.leagueoflegends.com/cdn/11.19.1/data/en_US/champion.json").text - -def truncate(f, n): - '''Truncates/pads a float f to n decimal places without rounding''' - s = '{}'.format(f) - if 'e' in s or 'E' in s: - return '{0:.{1}f}'.format(f, n) - i, p, d = s.partition('.') - return '.'.join([i, (d + '0' * n)[:n]]) - - def intTryParse(value): try: return int(value), True