diff --git a/APICommands/ChampionMasteryCommand.py b/APICommands/ChampionMasteryCommand.py index 8a35c90..4558a3a 100644 --- a/APICommands/ChampionMasteryCommand.py +++ b/APICommands/ChampionMasteryCommand.py @@ -10,6 +10,8 @@ class ChampionMastery(APICommands.Command.Command, ABC): keywords = ["cm", "CM", "Championmastery", "championmastery"] def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords: list): + if additionalKeywords is None: + additionalKeywords = [] super().__init__(pref, api, additionalKeywords) async def execute(self, message: discord.Message): diff --git a/APICommands/Command.py b/APICommands/Command.py index f1bc8d8..fe6e90d 100644 --- a/APICommands/Command.py +++ b/APICommands/Command.py @@ -12,8 +12,8 @@ class Command: api: riotwatcher.LolWatcher commandName = "" - def __init__(self, pref, api: riotwatcher.LolWatcher, addkeywords: list): - for i in addkeywords: + def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords: list): + for i in additionalKeywords: self.keywords.append(i) self.pref = pref self.api = api @@ -37,9 +37,9 @@ class Command: return False def log(self, message: discord.Message): - logMSG = (self.commandName + " request sent in Channel " + str(message.channel.name) + "\n\t- at: " + str( + 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) \ No newline at end of file + f.write(logMSG) diff --git a/APICommands/F2PCommand.py b/APICommands/F2PCommand.py new file mode 100644 index 0000000..5f08606 --- /dev/null +++ b/APICommands/F2PCommand.py @@ -0,0 +1,24 @@ +from abc import ABC + +import discord +import riotwatcher + +import APICommands.Command + + +class Free2Play(APICommands.Command.Command, ABC): + keywords = ["f2p", "rotation", "F2P", "ROTATION"] + + def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords=None): + if additionalKeywords is None: + additionalKeywords = [] + 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 diff --git a/APICommands/HighestMasteryCommand.py b/APICommands/HighestMasteryCommand.py index 4467b68..d30203b 100644 --- a/APICommands/HighestMasteryCommand.py +++ b/APICommands/HighestMasteryCommand.py @@ -10,6 +10,8 @@ class HighestMastery(APICommands.Command.Command, ABC): keywords = ["highestmastery", "highestMastery", "HM", "hm", "Hm", "HighestMastery"] def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords: list): + if additionalKeywords is None: + additionalKeywords = [] super().__init__(pref, api, additionalKeywords) async def execute(self, message: discord.Message): diff --git a/APICommands/PrefixCommand.py b/APICommands/PrefixCommand.py index 60beda9..c71c990 100644 --- a/APICommands/PrefixCommand.py +++ b/APICommands/PrefixCommand.py @@ -1,3 +1,4 @@ +import pickle from abc import ABC import discord @@ -9,14 +10,32 @@ import APICommands.Command class Prefix(APICommands.Command.Command, ABC): keywords = ["prefix"] - def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords: list): + def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords=None): + if additionalKeywords is None: + additionalKeywords = [] super().__init__(pref, api, additionalKeywords) + self.commandName = "Prefix change" async def execute(self, message: discord.Message): - pass + if message.content == (self.pref + "prefix"): + await self.info(message) + elif message.content.split(" ").length == 2: + self.log(message) + await self.changePrefix(message) + else: + await self.usage(message) async def info(self, message: discord.Message): - pass + await message.channel.send( + "Your current prefix is: " + self.pref + ". To change it use " + self.pref + "prefix [new Prefix]") async def usage(self, message: discord.Message): - pass + await message.channel.send("Wrong usage of prefix command! Use " + self.pref + "prefix [new Prefix (optional)]") + + async def changePrefix(self, message: discord.Message): + try: + self.pref = message.content.split(" ")[1] + await message.channel.send("Prefix successfully changed to " + self.pref) + pickle.dump(self.pref, open("prefix.data", "wb")) + except: + await self.usage(message) diff --git a/APICommands/SummonerLevelCommand.py b/APICommands/SummonerLevelCommand.py index 658303b..be083d8 100644 --- a/APICommands/SummonerLevelCommand.py +++ b/APICommands/SummonerLevelCommand.py @@ -10,6 +10,8 @@ class SummonerLevel(APICommands.Command.Command, ABC): keywords = ["level", "Level", "lvl"] def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords: list): + if additionalKeywords is None: + additionalKeywords = [] super().__init__(pref, api, additionalKeywords) async def execute(self, message: discord.Message): diff --git a/APICommands/SummonerRankCommand.py b/APICommands/SummonerRankCommand.py new file mode 100644 index 0000000..e05cd0e --- /dev/null +++ b/APICommands/SummonerRankCommand.py @@ -0,0 +1,24 @@ +from abc import ABC + +import discord +import riotwatcher + +import APICommands.Command + + +class SummonerRank(APICommands.Command.Command, ABC): + keywords = ["rank", "Rank", "RANK"] + + def __init__(self, pref, api: riotwatcher.LolWatcher, additionalKeywords=None): + if additionalKeywords is None: + additionalKeywords = [] + 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 diff --git a/iLeague.py b/iLeague.py index b8e74a3..2710c21 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, F2PCommand def championIdToName(id, championsText): @@ -29,10 +29,12 @@ class MyClient(discord.Client): 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, [])) + 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)) + self.commands.append(SummonerRankCommand.SummonerRank(self.api, self.pref)) + self.commands.append(F2PCommand.Free2Play(self.api, self.pref)) def load(self): # Loads the prefix file if accessable try: @@ -55,12 +57,10 @@ class MyClient(discord.Client): message.channel.id == 843900656108437504 or message.channel.id == 673681791932170240): # Only allows channels bot testing and leaguebot await message.channel.send("Bitte #league-bot verwenden.") return - if message.content == (self.pref + "prefix"): - await message.channel.send( - "Your current prefix is: " + self.pref + ". To change it use " + self.pref + "prefix [new Prefix]") - elif self.getContentFromMessageWithPrefixCommand(message, ["prefix"]): - self.log("Prefix change", message) - await self.changePrefix(message) + + for command in commands: + if command.isCalled(message): + command.execute(message); # HUBA if self.getContentFromMessageWithPrefixCommand(message, ["hubaa"]): @@ -96,15 +96,6 @@ class MyClient(discord.Client): self.log("F2P rotation", message) await self.requestFreeChampRot(message) - async def changePrefix(self, message: discord.Message): - try: - self.pref = message.content.split(" ")[1] - await message.channel.send("Prefix successfully changed to " + self.pref) - pickle.dump(self.pref, open("prefix.data", "wb")) - except: - await message.channel.send( - "Something went wrong while changing the prefix. To change it use " + self.pref + "prefix [new Prefix]") - async def requestLevel(self, message: discord.Message): sumname = "" try: diff --git a/readme.txt b/readme.txt index 4a9fb15..d064140 100644 --- a/readme.txt +++ b/readme.txt @@ -1,6 +1,6 @@ For this bot following python packages are needed: - Discord - - APIWatcher + - RIOTWatcher Installation command for terminal: