From 44aa0f1727add2439bcb586c6743a1c192865f89 Mon Sep 17 00:00:00 2001 From: Mark Veidemanis Date: Mon, 8 Oct 2018 20:08:10 +0100 Subject: [PATCH] Implement users command to see the mutual users of one or more channels and squash some bugs --- commands/chans.py | 3 +++ commands/users.py | 25 +++++++++++++++++++++++++ conf/help.json | 3 ++- modules/userinfo.py | 25 ++++++++++++++++++++----- 4 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 commands/users.py diff --git a/commands/chans.py b/commands/chans.py index b3579a7..851b9e8 100644 --- a/commands/chans.py +++ b/commands/chans.py @@ -7,6 +7,9 @@ class Chans: def chans(self, addr, authed, data, obj, spl, success, failure, info, incUsage, length): if authed: + if len(spl) < 2: + incUsage("chans") + return result = userinfo.getChans(spl[1:]) rtrn = "" for i in result.keys(): diff --git a/commands/users.py b/commands/users.py new file mode 100644 index 0000000..a76e20e --- /dev/null +++ b/commands/users.py @@ -0,0 +1,25 @@ +import main +import modules.userinfo as userinfo + +class Users: + def __init__(self, register): + register("users", self.users) + + def users(self, addr, authed, data, obj, spl, success, failure, info, incUsage, length): + if authed: + if len(spl) < 2: + incUsage("users") + return + result = userinfo.getUsers(spl[1:]) + rtrn = "" + for i in result.keys(): + rtrn += "Matches from: %s" % i + rtrn += "\n" + for x in result[i]: + rtrn += (x) + rtrn += "\n" + rtrn += "\n" + info(rtrn) + return + else: + incUsage(None) diff --git a/conf/help.json b/conf/help.json index 7d75d40..47a0ff3 100644 --- a/conf/help.json +++ b/conf/help.json @@ -20,5 +20,6 @@ "loadmod": "loadmod ", "msg": "msg ", "mon": "mon -h", - "chans": "chans " + "chans": "chans ", + "users": "users " } diff --git a/modules/userinfo.py b/modules/userinfo.py index e3ad7f0..b6f8da9 100644 --- a/modules/userinfo.py +++ b/modules/userinfo.py @@ -16,17 +16,32 @@ def getWho(query): result[i] = f return result -def getChansSingle(name, query): - query = ["live.chan."+name+"."+i for i in query] - result = main.r.sinter(*query) +def getChansSingle(name, nick): + nick = ["live.chan."+name+"."+i for i in nick] + result = main.r.sinter(*nick) if len(result) == 0: return None return [i.decode() for i in result] -def getChans(query): +def getChans(nick): result = {} for i in main.pool.keys(): - f = getChansSingle(i, query) + f = getChansSingle(i, nick) + if f: + result[i] = f + return result + +def getUsersSingle(name, nick): + nick = ["live.who."+name+"."+i for i in nick] + result = main.r.sinter(*nick) + if len(result) == 0: + return None + return [i.decode() for i in result] + +def getUsers(nick): + result = {} + for i in main.pool.keys(): + f = getUsersSingle(i, nick) if f: result[i] = f return result