Started refactoring for future use

This commit is contained in:
sprechtl 2021-10-10 01:19:31 +02:00
parent 712f64a03a
commit 5c2ff27656
6 changed files with 148 additions and 17 deletions

View file

@ -0,0 +1,22 @@
from abc import ABC
import discord
import riotwatcher
import APICommands.Command
class ChampionMastery(APICommands.Command.Command, ABC):
keywords = ["cm", "CM", "Championmastery", "championmastery"]
def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords: list):
super().__init__(pref, api, additionalKeywords)
async def execute(self, message: discord.Message):
pass
async def info(self, message: discord.Message):
pass
async def usage(self, message: discord.Message):
pass

45
APICommands/Command.py Normal file
View file

@ -0,0 +1,45 @@
from abc import abstractmethod, ABCMeta
from datetime import datetime
import discord
import riotwatcher
class Command:
__metaclass__ = ABCMeta
keywords = []
pref = ""
api: riotwatcher.LolWatcher
commandName = ""
def __init__(self, pref, api: riotwatcher.LolWatcher, addkeywords: list):
for i in addkeywords:
self.keywords.append(i)
self.pref = pref
self.api = api
@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 in Channel " + 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)

View file

@ -0,0 +1,22 @@
from abc import ABC
import discord
import riotwatcher
import APICommands.Command
class HighestMastery(APICommands.Command.Command, ABC):
keywords = ["highestmastery", "highestMastery", "HM", "hm", "Hm", "HighestMastery"]
def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords: list):
super().__init__(pref, api, additionalKeywords)
async def execute(self, message: discord.Message):
pass
async def info(self, message: discord.Message):
pass
async def usage(self, message: discord.Message):
pass

View file

@ -0,0 +1,22 @@
from abc import ABC
import discord
import riotwatcher
import APICommands.Command
class Prefix(APICommands.Command.Command, ABC):
keywords = ["prefix"]
def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords: list):
super().__init__(pref, api, additionalKeywords)
async def execute(self, message: discord.Message):
pass
async def info(self, message: discord.Message):
pass
async def usage(self, message: discord.Message):
pass

View file

@ -0,0 +1,22 @@
from abc import ABC
import discord
import riotwatcher
import APICommands.Command
class SummonerLevel(APICommands.Command.Command, ABC):
keywords = ["level", "Level", "lvl"]
def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords: list):
super().__init__(pref, api, additionalKeywords)
async def execute(self, message: discord.Message):
pass
async def info(self, message: discord.Message):
pass
async def usage(self, message: discord.Message):
pass

View file

@ -1,9 +1,12 @@
import datetime import datetime
import json import json
import discord, pickle import discord
import pickle
import requests import requests
from riotwatcher import LolWatcher, ApiError from riotwatcher import LolWatcher
from APICommands import ChampionMasteryCommand, HighestMasteryCommand, SummonerLevelCommand, PrefixCommand
def championIdToName(id, championsText): def championIdToName(id, championsText):
@ -18,12 +21,20 @@ class MyClient(discord.Client):
api: LolWatcher api: LolWatcher
region: str region: str
pref = "$" pref = "$"
commands = []
def initAPI(self, APIKey, region="EUW1"): def initAPI(self, APIKey, region="EUW1"):
self.api = LolWatcher(APIKey) self.api = LolWatcher(APIKey)
self.region = region self.region = region
def load(self): # Loads the prefix file if accesable def initCommands(self):
self.commands = []
self.commands.append(ChampionMasteryCommand.ChampionMastery(self.api, self.pref, []))
self.commands.append(HighestMasteryCommand.HighestMastery(self.api, self.pref, []))
self.commands.append(SummonerLevelCommand.SummonerLevel(self.api, self.pref, []))
self.commands.append(PrefixCommand.Prefix(self.api, self.pref, []))
def load(self): # Loads the prefix file if accessable
try: try:
self.pref = pickle.load(open("prefix.data", "rb")) self.pref = pickle.load(open("prefix.data", "rb"))
print("Prefix loaded as: " + self.pref) print("Prefix loaded as: " + self.pref)
@ -99,7 +110,7 @@ class MyClient(discord.Client):
try: try:
sumname = self.getSummonerNameFromMessage(message) sumname = self.getSummonerNameFromMessage(message)
except: except:
await message.channel.send(err) pass
if sumname != "": if sumname != "":
if not await self.checkSumname(sumname, message): if not await self.checkSumname(sumname, message):
return return
@ -241,12 +252,6 @@ class MyClient(discord.Client):
ret = inp[argumentstart] ret = inp[argumentstart]
return ret return ret
def getContentFromMessageWithPrefixCommand(self, message: discord.Message, command: list):
for i in command:
if message.content.startswith(self.pref + i):
return True
return False
def getChampionMasteryList(self, sumname, listlen): def getChampionMasteryList(self, sumname, listlen):
output = ["Der Spieler " + sumname + " hat den höchsten Mastery auf diesen " + str( output = ["Der Spieler " + sumname + " hat den höchsten Mastery auf diesen " + str(
listlen) + " Champions\n"] listlen) + " Champions\n"]
@ -266,13 +271,6 @@ class MyClient(discord.Client):
output[count] += out output[count] += out
return output return output
def log(self, requestType, message: discord.Message):
logMSG =( requestType + " request sent in Channel " + str(message.channel.name) + "\n\t- at: " + str(
datetime.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)
def getEncryptedSummonerID(self, name): def getEncryptedSummonerID(self, name):
return self.api.summoner.by_name(self.region, name)["id"] return self.api.summoner.by_name(self.region, name)["id"]