188 lines
5.9 KiB
Python
188 lines
5.9 KiB
Python
import json
|
|
import string
|
|
|
|
def getName(user : str):
|
|
with open("funcs/swfuncs/characters.json", "r") as f:
|
|
data = json.load(f)
|
|
|
|
if user in data:
|
|
return data[user]["Name"]
|
|
else:
|
|
return user
|
|
|
|
def setUpDict(cmd : dict):
|
|
if bool(dict):
|
|
keys = list(cmd)
|
|
values = list(cmd.values())
|
|
result = ""
|
|
if type(values[0]) is dict:
|
|
return ", ".join(values)
|
|
else:
|
|
for x in range(len(keys)):
|
|
if x%3 != 2:
|
|
result += "**" + keys[x] + "**" + ": " + str(values[x]) + " "
|
|
else:
|
|
result += "**" + keys[x] + "**" + ": " + str(values[x]) + "\n"
|
|
return result
|
|
else:
|
|
return "There doesn't seem to be anything here..."
|
|
|
|
def lookUp(data : dict, key : str, cmd : str = ""):
|
|
if cmd == " ":
|
|
cmd = ""
|
|
elif cmd != "":
|
|
while cmd[0] == " ":
|
|
cmd = cmd[1:]
|
|
if cmd == "":
|
|
break
|
|
|
|
if key in data:
|
|
if cmd == "":
|
|
if type(data[key]) is dict:
|
|
return setUpDict(data[key])
|
|
else:
|
|
return data[key]
|
|
elif cmd[0] == '+':
|
|
try:
|
|
cmd = cmd[1:]
|
|
while cmd[0] == ' ':
|
|
cmd = cmd[1:]
|
|
except:
|
|
return "Can't do that"
|
|
|
|
if type(data[key]) is int:
|
|
try:
|
|
newValue = data[key] + int(cmd)
|
|
data[key] = newValue
|
|
return data
|
|
except:
|
|
return "Can't add that"
|
|
else:
|
|
return "Can't add that"
|
|
else:
|
|
while cmd[0] == ' ':
|
|
cmd = cmd[1:]
|
|
try:
|
|
cmd = type(data[key])(cmd)
|
|
data[key] = cmd
|
|
return data
|
|
except:
|
|
return "Wrong data type"
|
|
else:
|
|
return key + " doesn't exist"
|
|
|
|
def characterSheet(character : dict):
|
|
divider = "\n----------\n"
|
|
name = character["Name"]
|
|
text1 = "Species: "+character["Species"]+"\nCareer: "+character["Career"]
|
|
text2 = setUpDict(character["Characteristics"])
|
|
text3 = setUpDict(character["Skills"])
|
|
|
|
return name, text1+"\n\n"+text2+divider+text3
|
|
|
|
def charData(user : str,cmd : str):
|
|
with open("funcs/swfuncs/characters.json", "r") as f:
|
|
data = json.load(f)
|
|
|
|
key = string.capwords(cmd.split(" ")[0])
|
|
cmd = cmd[len(key):]
|
|
if cmd == " ":
|
|
cmd = ""
|
|
elif cmd != "":
|
|
while cmd[0] == " ":
|
|
cmd = cmd[1:]
|
|
if cmd == "":
|
|
break
|
|
|
|
if user in data:
|
|
if key in data[user]:
|
|
if type(data[user][key]) is dict:
|
|
if cmd == "":
|
|
return setUpDict(data[user][key])
|
|
else:
|
|
newKey = string.capwords(cmd.split(" ")[0])
|
|
newcmd = cmd[len(newKey):]
|
|
|
|
lookUpResult = lookUp(data[user][key],newKey,newcmd)
|
|
|
|
if type(lookUpResult) is dict:
|
|
data[user][key] = lookUpResult
|
|
with open("funcs/swfuncs/characters.json", "w") as f:
|
|
json.dump(data,f,indent = 4)
|
|
return "Changed " + data[user]["Name"] + "'s " + key
|
|
else:
|
|
return lookUpResult
|
|
else:
|
|
if cmd == "":
|
|
return data[user][key]
|
|
elif cmd[0] == '+':
|
|
try:
|
|
cmd = cmd[1:]
|
|
while cmd[0] == ' ':
|
|
cmd = cmd[1:]
|
|
except:
|
|
return "Can't do that"
|
|
|
|
if type(data[user][key]) is int:
|
|
try:
|
|
data[user][key] += int(cmd)
|
|
return "Added " + cmd + " to " + user + "'s " + key
|
|
except:
|
|
return "Can't add that"
|
|
else:
|
|
return "Can't add that"
|
|
else:
|
|
data[user][key] = cmd
|
|
with open("funcs/swfuncs/characters.json", "w") as f:
|
|
json.dump(data,f,indent = 4)
|
|
return "Changed " + data[user]["Name"] + "'s " + key +" to " + cmd
|
|
else:
|
|
return "Couldn't find that data. Are you sure you spelled it correctly?"
|
|
else:
|
|
return "You don't have a character. You can make one with !swchar"
|
|
|
|
def parseChar(user : str, cmd : str):
|
|
with open("funcs/swfuncs/characters.json", "r") as f:
|
|
data = json.load(f)
|
|
|
|
if cmd == " ":
|
|
cmd = ""
|
|
elif cmd != "":
|
|
while cmd[0] == " ":
|
|
cmd = cmd[1:]
|
|
if cmd == "":
|
|
break
|
|
|
|
if cmd == "":
|
|
if user in data:
|
|
return characterSheet(data[user])
|
|
else:
|
|
with open("funcs/swfuncs/templates.json", "r") as f:
|
|
templates = json.load(f)
|
|
newChar = templates["Character"]
|
|
data[user] = newChar
|
|
with open("funcs/swfuncs/characters.json", "w") as f:
|
|
json.dump(data,f,indent = 4)
|
|
return "", "Character for " + user + " created"
|
|
else:
|
|
if cmd == "purge":
|
|
del data[user]
|
|
with open("funcs/swfuncs/characters.json", "w") as f:
|
|
json.dump(data,f,indent = 4)
|
|
return "", "Character for " + user + " deleted"
|
|
return "", charData(user,cmd)
|
|
|
|
def lightsaberChar(user : str):
|
|
with open("funcs/swfuncs/characters.json", "r") as f:
|
|
data = json.load(f)
|
|
|
|
if user in data:
|
|
return data[user]["Lightsaber Characteristic"]
|
|
|
|
def userHasChar(user : str):
|
|
with open("funcs/swfuncs/characters.json", "r") as f:
|
|
data = json.load(f)
|
|
|
|
return user in data
|
|
|