Add plugin data
This commit is contained in:
parent
32992fe67f
commit
d6bc5867dc
28
plugin.py
28
plugin.py
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue