Implement users command to see the mutual users of one or more channels and squash some bugs

This commit is contained in:
Mark Veidemanis 2018-10-08 20:08:10 +01:00
parent a98ed4e4d0
commit 44aa0f1727
4 changed files with 50 additions and 6 deletions

View File

@ -7,6 +7,9 @@ class Chans:
def chans(self, addr, authed, data, obj, spl, success, failure, info, incUsage, length): def chans(self, addr, authed, data, obj, spl, success, failure, info, incUsage, length):
if authed: if authed:
if len(spl) < 2:
incUsage("chans")
return
result = userinfo.getChans(spl[1:]) result = userinfo.getChans(spl[1:])
rtrn = "" rtrn = ""
for i in result.keys(): for i in result.keys():

25
commands/users.py Normal file
View File

@ -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)

View File

@ -20,5 +20,6 @@
"loadmod": "loadmod <module>", "loadmod": "loadmod <module>",
"msg": "msg <name> <target> <message...>", "msg": "msg <name> <target> <message...>",
"mon": "mon -h", "mon": "mon -h",
"chans": "chans <nick>" "chans": "chans <nick>",
"users": "users <channel>"
} }

View File

@ -16,17 +16,32 @@ def getWho(query):
result[i] = f result[i] = f
return result return result
def getChansSingle(name, query): def getChansSingle(name, nick):
query = ["live.chan."+name+"."+i for i in query] nick = ["live.chan."+name+"."+i for i in nick]
result = main.r.sinter(*query) result = main.r.sinter(*nick)
if len(result) == 0: if len(result) == 0:
return None return None
return [i.decode() for i in result] return [i.decode() for i in result]
def getChans(query): def getChans(nick):
result = {} result = {}
for i in main.pool.keys(): 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: if f:
result[i] = f result[i] = f
return result return result