Add plugin data

This commit is contained in:
minerobber 2019-01-31 02:39:38 +00:00
parent 32992fe67f
commit d6bc5867dc
1 changed files with 28 additions and 0 deletions

View File

@ -1,3 +1,4 @@
import json, traceback
cmds = {}
help = {}
listeners = {}
@ -22,6 +23,33 @@ class CommandGroup:
else:
return self.subcmds[self.default](bot,channel,nick,subcmd,*args)
class Data:
"""A class for plugin data."""
def __init__(self,value):
self.value = value
def serialize(self):
return self.value
def deserialize(self,value):
self.value = value
def save(self,filename):
with open(filename,"w") as f:
f.write(self.serialize())
def load(self,filename):
try:
with open(filename) as f:
self.deserialize(f.read())
except:
print("Error loading data from {!r}:".format(filename))
traceback.print_exc()
pass # You should've initialized this with a sane default, so just keep the default on error
class JSONData(Data):
"""Data, but can be serialized to JSON (and should be)."""
def serialize(self):
return json.dumps(self.value)
def deserialize(self,value):
self.value = json.loads(value)
def clear():
cmds.clear()
help.clear()