iLeague_Bot/APICommands/SummonerRankCommand.py
2022-03-17 11:50:48 +01:00

50 lines
1.8 KiB
Python

from abc import ABC
import discord
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"]
def __init__(self, pref, api: riotwatcher.LolWatcher, region: str, additionalKeywords=None):
if additionalKeywords is None:
additionalKeywords = []
super().__init__(pref, api, region, additionalKeywords)
async def execute(self, message: discord.Message):
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):
await message.channel.send("Wrong usage of " + self.commandName + ".\n"
"Usage: " + self.pref + "rank [Summonername]")