iLeague_Bot/APICommands/Command.py
2022-03-17 14:34:30 +01:00

92 lines
2.5 KiB
Python

import json
from abc import abstractmethod, ABCMeta
from datetime import datetime
import discord
import requests
import riotwatcher
def championIdToName(id, championsText):
champions = json.loads(championsText)['data']
for j in dict(champions):
if id == int(champions[j]["key"]):
return j
def getChampionsJSON():
return requests.get("http://ddragon.leagueoflegends.com/cdn/11.19.1/data/en_US/champion.json").text
def intTryParse(value):
try:
return int(value), True
except ValueError:
return value, False
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 = []
pref = ""
api: riotwatcher.LolWatcher
commandName = ""
region = ""
def __init__(self, pref, api: riotwatcher.LolWatcher, region: str, additionalKeywords: list):
for i in additionalKeywords:
self.keywords.append(i)
self.pref = pref
self.api = api
self.region = region
@abstractmethod
async def execute(self, message: discord.Message):
pass
@abstractmethod
async def info(self, message: discord.Message):
pass
@abstractmethod
async def usage(self, message: discord.Message):
pass
def isCalled(self, message: discord.Message):
for i in self.keywords:
if message.content.startswith(self.pref + i):
return True
return False
def log(self, message: discord.Message):
logMSG = (self.commandName + " request sent:\n\t-in: " + str(message.channel.name) + "\n\t- at: " + str(
datetime.now())[:-7] + "\n\t- by: " + str(message.author) + "\n\t- content: '" + str(
message.content) + "'\n")
print(logMSG)
with open("requests.log", "a") as f:
f.write(logMSG)
async def checkSumname(self, sumname, message: discord.Message):
try:
self.api.summoner.by_name(self.region, sumname)["id"]
return True
except requests.exceptions.HTTPError:
await message.channel.send("No matching player found with name **" + sumname + "**")
return False
def getEncryptedSummonerID(self, name):
return self.api.summoner.by_name(self.region, name)["id"]