Convert Whereis module to V3

This commit is contained in:
Némunaire 2012-06-16 22:50:04 +02:00
parent 320b7703c5
commit b23f631e36

View File

@ -15,9 +15,6 @@ from module_state import ModuleState
nemubotversion = 3.0 nemubotversion = 3.0
NS_SERVER = 'ns-server.epita.fr'
NS_PORT = 4242
THREAD = None THREAD = None
search = list() search = list()
@ -27,13 +24,19 @@ class UpdatedStorage:
CONF.getNode("server").getInt("port")) CONF.getNode("server").getInt("port"))
self.users = dict() self.users = dict()
if sock != None: if sock != None:
for l in list_users(sock): users = list_users(sock)
u = User(l) if users is not None:
if u.login not in self.users: for l in users:
self.users[u.login] = list() u = User(l)
self.users[u.login].append(u) if u.login not in self.users:
self.users[u.login] = list()
self.users[u.login].append(u)
self.lastUpdate = datetime.now ()
else:
self.users = None
sock.close() sock.close()
self.lastUpdate = datetime.now () else:
self.users = None
def update(self): def update(self):
if datetime.now () - self.lastUpdate < timedelta(minutes=10): if datetime.now () - self.lastUpdate < timedelta(minutes=10):
@ -87,6 +90,7 @@ def connect_to_ns(server, port):
return s return s
def list_users(sock): def list_users(sock):
try:
sock.send('list_users\n'.encode()) sock.send('list_users\n'.encode())
buf = '' buf = ''
while True: while True:
@ -95,6 +99,8 @@ def list_users(sock):
if '\nrep 002' in tmp or tmp == '': if '\nrep 002' in tmp or tmp == '':
break break
return buf.split('\n')[:-2] return buf.split('\n')[:-2]
except socket.error:
return None
def help_tiny (): def help_tiny ():
@ -112,7 +118,7 @@ def startWhereis(msg):
datas = datas.update () datas = datas.update ()
if datas is None: if datas is None:
datas = UpdatedStorage() datas = UpdatedStorage()
if datas is None: if datas is None or datas.users is None:
msg.send_chn("Hmm c'est embarassant, serait-ce la fin du monde ou juste netsoul qui est mort ?") msg.send_chn("Hmm c'est embarassant, serait-ce la fin du monde ou juste netsoul qui est mort ?")
return return
@ -268,7 +274,10 @@ def parseask (msg):
if part is None: if part is None:
continue continue
for d in DELAYED.keys(): for d in DELAYED.keys():
nKeys = list()
for n in DELAYED[d].names.keys(): for n in DELAYED[d].names.keys():
nKeys.append(n)
for n in nKeys:
if DELAYED[d].names[n] is None and part.find(n) >= 0: if DELAYED[d].names[n] is None and part.find(n) >= 0:
result = re.match(".* est (.*[^.])\.?", part) result = re.match(".* est (.*[^.])\.?", part)
if result is not None: if result is not None:
@ -276,6 +285,3 @@ def parseask (msg):
delayEvnt.set() delayEvnt.set()
return treat return treat
return False return False
def parselisten (msg):
return False