]> jfr.im git - erebus.git/blobdiff - modules/userinfo.py
userinfo - remove _ from keys/has/get/set/delete
[erebus.git] / modules / userinfo.py
index d907b088ff5209e40e02bbdf74876f8dd324b228..65580f8690fa671b9dfaa08a85387e39a4f44d7e 100644 (file)
@@ -1,4 +1,5 @@
 # Erebus IRC bot - Author: Erebus Team
+# vim: fileencoding=utf-8
 # userinfo module
 # This file is released into the public domain; see http://unlicense.org/
 
@@ -6,7 +7,7 @@
 modinfo = {
        'author': 'Erebus Team',
        'license': 'public domain',
-       'compatible': [2],
+       'compatible': [0],
        'depends': [],
        'softdeps': ['help'],
 }
@@ -20,7 +21,7 @@ def modstart(parent_arg, *args, **kwargs):
        gotParent()
        return lib.modstart(parent, *args, **kwargs)
 def modstop(*args, **kwargs):
-       closeshop()
+       savedb()
        return lib.modstop(*args, **kwargs)
 
 # module code
@@ -34,12 +35,12 @@ def gotParent():
                db = json.load(open(jsonfile, "r"))
        except:
                db = {}
-def closeshop():
+def savedb():
        if json is not None and json.dump is not None and db != {}:
                json.dump(db, open(jsonfile, "w"))#, indent=4, separators=(',', ': '))
 
 #functions
-def getauth(thing):
+def _getauth(thing):
        if isinstance(thing, parent.User):
                if thing.auth is not None:
                        return "#"+thing.auth
@@ -47,35 +48,36 @@ def getauth(thing):
                if thing.startswith("#"):
                        return thing
                else:
-                       if parent.user(thing).auth is not None:
+                       u = parent.user(thing, create=False)
+                       if u is not None and u.auth is not None:
                                return "#"+parent.user(thing).auth
        return None
 
-def _keys(user):
-       return list(set(db.get(getauth(user), {}).keys() + db.get(str(user).lower(), {}).keys())) #list-to-set-to-list to remove duplicates
-def _has(user, key):
+def keys(user):
+       return list(set(db.get(_getauth(user), {}).keys() + db.get(str(user).lower(), {}).keys())) #list-to-set-to-list to remove duplicates
+def has(user, key):
        key = key.lower()
        return (
-               key in db.get(getauth(user), {}) or
+               key in db.get(_getauth(user), {}) or
                key in db.get(str(user).lower(), {})
        )
-def _get(user, key, default=None):
+def get(user, key, default=None):
        key = key.lower()
        return (
-               db.get(getauth(user), {}). #try to get the auth
+               db.get(_getauth(user), {}). #try to get the auth
                        get(key, #try to get the info-key by auth
                        db.get(str(user).lower(), {}). #fallback to using the nick
                                get(key, #and try to get the info-key from that
                                default #otherwise throw out whatever default
        )))
-def _set(user, key, value):
+def set(user, key, value):
        key = key.lower()
-       if getauth(user) is not None:
-               db.setdefault(getauth(user), {})[key] = value #use auth if we can
+       if _getauth(user) is not None:
+               db.setdefault(_getauth(user), {})[key] = value #use auth if we can
        db.setdefault(str(user).lower(), {})[key] = value #but set nick too
-def _del(user, key):
+def delete(user, key):
        key = key.lower()
-       auth = getauth(user)
+       auth = _getauth(user)
        if auth is not None and auth in db and key in db[auth]:
                del db[auth][key]
        target = str(user).lower()
@@ -94,7 +96,7 @@ def getitems(bot, user, chan, realtarget, *args):
        else:
                target = user
 
-       bot.msg(replyto, "%(user)s: %(target)s has the following info items: %(items)s" % {'user':user,'target':target,'items':(', '.join(_keys(target)))})
+       bot.msg(replyto, "%(user)s: %(target)s has the following info items: %(items)s" % {'user':user,'target':target,'items':(', '.join(keys(target)))})
 
 @lib.hook(needchan=False, wantchan=True)
 @lib.help("[<target>] <item>", "gets an info item about someone", "<target> may be a nick, or an auth in format '#auth'", "it defaults to yourself")
@@ -110,7 +112,7 @@ def getinfo(bot, user, chan, realtarget, *args):
                target = user
                item = args[0]
 
-       value = _get(target, item, None)
+       value = get(target, item, None)
        if value is None:
                bot.msg(replyto, "%(user)s: %(item)s on %(target)s is not set." % {'user':user,'item':item,'target':target})
        else:
@@ -120,30 +122,30 @@ def getinfo(bot, user, chan, realtarget, *args):
 @lib.help("<item> <value>", "sets an info item about you")
 @lib.argsGE(2)
 def setinfo(bot, user, chan, realtarget, *args):
-       _set(user, args[0], ' '.join(args[1:]))
-       closeshop()
+       set(user, args[0], ' '.join(args[1:]))
+       savedb()
        bot.msg(user, "Done.")
 
 @lib.hook(needchan=False)
 @lib.help("<item>", "deletes an info item about you")
 @lib.argsEQ(1)
 def delinfo(bot, user, chan, realtarget, *args):
-       _del(user, args[0])
-       closeshop()
+       delete(user, args[0])
+       savedb()
        bot.msg(user, "Done.")
 
 @lib.hook(glevel=lib.ADMIN, needchan=False)
 @lib.help("<target> <item> <value>", "sets an info item about someone else", "<target> may be a nick, or an auth in format '#auth'")
 @lib.argsGE(3)
 def osetinfo(bot, user, chan, realtarget, *args):
-       _set(args[0], args[1], ' '.join(args[2:]))
-       closeshop()
+       set(args[0], args[1], ' '.join(args[2:]))
+       savedb()
        bot.msg(user, "Done.")
 
 @lib.hook(glevel=lib.STAFF, needchan=False)
 @lib.help("<target> <item>", "deletes an info item about someone else", "<target> may be a nick, or an auth in format '#auth'")
 @lib.argsEQ(2)
 def odelinfo(bot, user, chan, realtarget, *args):
-       _del(args[0], args[1])
-       closeshop()
+       delete(args[0], args[1])
+       savedb()
        bot.msg(user, "Done.")