From cfefa1d6274563148badaab58dca05f695980c57 Mon Sep 17 00:00:00 2001 From: Mark Veidemanis Date: Sun, 7 Oct 2018 20:48:39 +0100 Subject: [PATCH] Implement a command to get the channels common to one or more users --- commands/chans.py | 22 ++++++++++++++++++++++ modules/userinfo.py | 15 +++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 commands/chans.py diff --git a/commands/chans.py b/commands/chans.py new file mode 100644 index 0000000..b3579a7 --- /dev/null +++ b/commands/chans.py @@ -0,0 +1,22 @@ +import main +import modules.userinfo as userinfo + +class Chans: + def __init__(self, register): + register("chans", self.chans) + + def chans(self, addr, authed, data, obj, spl, success, failure, info, incUsage, length): + if authed: + result = userinfo.getChans(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/modules/userinfo.py b/modules/userinfo.py index 053edb4..e3ad7f0 100644 --- a/modules/userinfo.py +++ b/modules/userinfo.py @@ -16,6 +16,21 @@ 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) + if len(result) == 0: + return None + return [i.decode() for i in result] + +def getChans(query): + result = {} + for i in main.pool.keys(): + f = getChansSingle(i, query) + if f: + result[i] = f + return result + def getNumWhoEntries(name): return main.r.scard("live.who."+name)