diff --git a/funcs/miscFuncs.py b/funcs/miscFuncs.py index 90fe08a..b7fbf78 100644 --- a/funcs/miscFuncs.py +++ b/funcs/miscFuncs.py @@ -13,6 +13,7 @@ logging.basicConfig(filename="gwendolyn.log", level=logging.INFO) # Capitalizes all words except some of them no_caps_list = ["of","the"] def cap(s): + # Capitalizes a strink like a movie title word_number = 0 lst = s.split() res = '' @@ -25,7 +26,7 @@ def cap(s): return res def time_in_range(start, end, x): - """Return true if x is in the range [start, end]""" + # Return true if x is in the range [start, end] if start <= end: return start <= x <= end else: @@ -134,146 +135,45 @@ def findWikiPage(search : str): logThis("Couldn't find the page (error code 1002)") return "", "Couldn't find page (error code 1002)", "" +def makeJsonFile(path,content): + # Creates json file if it doesn't exist + try: + f = open(path,"r") + except: + logThis(path.split("/")[-1]+" didn't exist. Making it now.") + with open(path,"w") as f: + json.dump(content,f,indent = 4) + finally: + f.close() + +def makeTxtFile(path,content): + # Creates txt file if it doesn't exist + try: + f = open(path,"r") + except: + logThis(path.split("/")[-1]+" didn't exist. Making it now.") + with open(path,"w") as f: + f.write(content) + finally: + f.close() + +def makeFolder(path): + if os.path.isdir(path) == False: + os.makedirs(path) + logThis("The "+path.split("/")[-1]+" directory didn't exist") + def makeFiles(): - # Creates swcharacters.json if it doesn't exist - try: - f = open("resources/starWars/swcharacters.json","r") - except: - logThis("swcharacters.json didn't exist. Making it now.") - emptyDict = {} - with open("resources/starWars/swcharacters.json","w") as f: - json.dump(emptyDict,f,indent = 4) - finally: - f.close() - - # Creates games.json if it doesn't exist - try: - f = open("resources/games/games.json","r") - except: - logThis("games.json didn't exist. Making it now.") - data = {"trivia questions":{},"blackjack games":{},"4 in a row games": {},"users":{}} - with open("resources/games/games.json","w") as f: - json.dump(data,f,indent = 4) - finally: - f.close() + with open("resources/startingFiles.json") as f: + data = json.load(f) - # Creates hexGames.json if it doesn't exist - try: - f = open("resources/games/hexGames.json","r") - except: - logThis("hexGames.json didn't exist. Making it now.") - data = {} - with open("resources/games/hexGames.json","w") as f: - json.dump(data,f,indent = 4) - finally: - f.close() - - # Creates monsters.json if it doesn't exist - try: - f = open("resources/lookup/monsters.json","r") - except: - logThis("monsters.json didn't exist. Making it now.") - with open("resources/lookup/lookupExamples.json") as f: - data = json.load(f)["monster"] - with open("resources/lookup/monsters.json","w") as f: - json.dump(data,f,indent = 4) - finally: - f.close() - - # Creates spells.json if it doesn't exist - try: - f = open("resources/lookup/spells.json","r") - except: - logThis("spells.json didn't exist. Making it now.") - with open("resources/lookup/lookupExamples.json") as f: - data = json.load(f)["spell"] - with open("resources/lookup/spells.json","w") as f: - json.dump(data,f,indent = 4) - finally: - f.close() + for path, content in data["json"].items(): + makeJsonFile(path,content) - # Creates users.json if it doesn't exist - try: - f = open("resources/users.json","r") - except: - logThis("users.json didn't exist. Making it now.") - data = {} - with open("resources/users.json","w") as f: - json.dump(data,f,indent = 4) - finally: - f.close() - - # Creates destinyPoints.txt if it doesn't exist - try: - f = open("resources/starWars/destinyPoints.txt","r") - except: - logThis("destinyPoints.txt didn't exist. Making it now.") - with open("resources/starWars/destinyPoints.txt","w") as f: - f.write("") - finally: - f.close() + for path, content in data["txt"].items(): + makeTxtFile(path,content) - # Creates movies.txt if it doesn't exist - try: - f = open("resources/movies.txt","r") - except: - logThis("movies.txt didn't exist. Making it now.") - with open("resources/movies.txt","w") as f: - f.write("The Room") - finally: - f.close() - - # Creates names.txt if it doesn't exist - try: - f = open("resources/names.txt","r") - except: - logThis("names.txt didn't exist. Making it now.") - with open("resources/names.txt","w") as f: - f.write("Gandalf") - finally: - f.close() - - # Creates token.txt if it doesn't exist - try: - f = open("token.txt","r") - except: - logThis("token.txt didn't exist. Write your bot token below, or in token.txt later.") - token = input() - with open("token.txt","w") as f: - f.write(token) - - finally: - f.close() - - # Creates the blackjacktables foulder if it doesn't exist - if os.path.isdir("resources/games/blackjackTables") == False: - os.makedirs("resources/games/blackjackTables") - logThis("The tables directory didn't exist") - - # Creates the 4InARowBoards foulder if it doesn't exist - if os.path.isdir("resources/games/4InARowBoards") == False: - os.makedirs("resources/games/4InARowBoards") - logThis("The 4 in a row boards directory didn't exist") - - # Creates the hexBoards foulder if it doesn't exist - if os.path.isdir("resources/games/hexBoards") == False: - os.makedirs("resources/games/hexBoards") - logThis("The Hex boards directory didn't exist") - - # Creates the oldImages foulder if it doesn't exist - if os.path.isdir("resources/games/oldImages") == False: - os.makedirs("resources/games/oldImages") - logThis("The old images directory didn't exist") - - # Creates the blackjackCards foulder if it doesn't exist - if os.path.isdir("resources/games/blackjackCards") == False: - os.makedirs("resources/games/blackjackCards") - logThis("The blackjack cards directory didn't exist") - - # Creates the hilo foulder if it doesn't exist - if os.path.isdir("resources/games/hilo") == False: - os.makedirs("resources/games/hilo") - logThis("The hi-lo directory didn't exist") + for path in data["folder"]: + makeFolder(path) # Replaces multiple things with the same thing def replaceMultiple(mainString, toBeReplaces, newString): diff --git a/resources/lookup/lookupExamples.json b/resources/lookup/lookupExamples.json deleted file mode 100644 index 0e6f0d4..0000000 --- a/resources/lookup/lookupExamples.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "monster" : [ - { - "name": "Bandit", - "size": "Medium", - "type": "humanoid", - "subtype": "any race", - "alignment": "any non-lawful alignment", - "armor_class": 12, - "hit_points": 11, - "hit_dice": "2d8", - "speed": "30 ft.", - "strength": 11, - "dexterity": 12, - "constitution": 12, - "intelligence": 10, - "wisdom": 10, - "charisma": 10, - "damage_vulnerabilities": "", - "damage_resistances": "", - "damage_immunities": "", - "condition_immunities": "", - "senses": "passive Perception 10", - "languages": "any one language (usually Common)", - "challenge_rating": "1/8", - "actions": [ - { - "name": "Scimitar", - "desc": "Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) slashing damage.", - "attack_bonus": 3, - "damage_dice": "1d6", - "damage_bonus": 1 - }, - { - "name": "Light Crossbow", - "desc": "Ranged Weapon Attack: +3 to hit, range 80 ft./320 ft., one target. Hit: 5 (1d8 + 1) piercing damage.", - "attack_bonus": 3, - "damage_dice": "1d8", - "damage_bonus": 1 - } - ] - } - ], - "spell": { - "Fireball" : { - "casting_time" : "1 action", - "components" : "V, S, M (a tiny ball of bat guano and sulfur)", - "description" : "A bright streak flashes from your pointing finger to a point you choose within range and then blossoms with a low roar into an explosion of flame. Each creature in a 20-foot-radius sphere centered on that point must make a Dexterity saving throw. A target takes 8d6 fire damage on a failed save, or half as much damage on a successful one. The fire spreads around corners. It ignites flammable objects in the area that aren’t being worn or carried. At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 3rd.", - "duration" : "Instantaneous", - "level" : "3rd", - "range" : "150 feet", - "school" : "Evocation", - "ritual" : false - } - } -} \ No newline at end of file diff --git a/resources/startingFiles.json b/resources/startingFiles.json new file mode 100644 index 0000000..8846a9d --- /dev/null +++ b/resources/startingFiles.json @@ -0,0 +1,80 @@ +{ + "json":{ + "resources/starWars/swcharacters.json" : {}, + "resources/games/hexGames.json": {}, + "resources/users.json" : {}, + "resources/games/games.json" : { + "trivia questions":{}, + "blackjack games":{}, + "4 in a row games": {} + }, + "resources/lookup/spells.json" : { + "Fireball" : { + "casting_time" : "1 action", + "components" : "V, S, M (a tiny ball of bat guano and sulfur)", + "description" : "A bright streak flashes from your pointing finger to a point you choose within range and then blossoms with a low roar into an explosion of flame. Each creature in a 20-foot-radius sphere centered on that point must make a Dexterity saving throw. A target takes 8d6 fire damage on a failed save, or half as much damage on a successful one. The fire spreads around corners. It ignites flammable objects in the area that aren’t being worn or carried. At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 3rd.", + "duration" : "Instantaneous", + "level" : "3rd", + "range" : "150 feet", + "school" : "Evocation", + "ritual" : false + } + }, + "resources/lookup/monsters.json" : [ + { + "name": "Bandit", + "size": "Medium", + "type": "humanoid", + "subtype": "any race", + "alignment": "any non-lawful alignment", + "armor_class": 12, + "hit_points": 11, + "hit_dice": "2d8", + "speed": "30 ft.", + "strength": 11, + "dexterity": 12, + "constitution": 12, + "intelligence": 10, + "wisdom": 10, + "charisma": 10, + "damage_vulnerabilities": "", + "damage_resistances": "", + "damage_immunities": "", + "condition_immunities": "", + "senses": "passive Perception 10", + "languages": "any one language (usually Common)", + "challenge_rating": "1/8", + "actions": [ + { + "name": "Scimitar", + "desc": "Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) slashing damage.", + "attack_bonus": 3, + "damage_dice": "1d6", + "damage_bonus": 1 + }, + { + "name": "Light Crossbow", + "desc": "Ranged Weapon Attack: +3 to hit, range 80 ft./320 ft., one target. Hit: 5 (1d8 + 1) piercing damage.", + "attack_bonus": 3, + "damage_dice": "1d8", + "damage_bonus": 1 + } + ] + } + ] + }, + "txt": { + "resources/starWars/destinyPoints.txt": "", + "resources/movies.txt": "The Room", + "resources/names.txt": "Gandalf", + "token.txt" : "Write token here" + }, + "folder" : [ + "resources/games/blackjackTables", + "resources/games/4InARowBoards", + "resources/games/hexBoards", + "resources/games/oldImages", + "resources/games/blackjackCards", + "resources/games/hilo" + ] +} \ No newline at end of file