1
0
Fork 0

Add join and part built-ins

Nemubot kernel working
This commit is contained in:
Némunaire 2012-05-21 19:08:41 +02:00
parent 716fa5675a
commit 1bb3617049
4 changed files with 62 additions and 10 deletions

View File

@ -107,21 +107,22 @@ class Message:
else:
self.realname = self.sender
if self.cmd == 'PRIVMSG':
if len(words) > 2:
self.channel = words[2]
if self.cmd == 'PRIVMSG':
self.content = words[3]
if self.content[0] == ':':
self.content = line.split(':', 2)[2]
else:
print (line)
else:
print (line)
if self.cmd == 'PRIVMSG':
self.channel = words[2]
self.content = words[3]
if self.content[0] == ':':
self.content = line.split(':', 2)[2]
else:
print (line)
@property
def is_owner(self):
@ -167,12 +168,12 @@ class Message:
self.parsectcp ()
elif self.cmd == "PRIVMSG" and self.authorize():
self.parsemsg (mods)
elif self.cmd == "NICK":
print ("%s change de nom pour %s" % (self.sender, self.content))
elif self.cmd == "PART":
print ("%s vient de quitter %s" % (self.sender, self.channel))
elif self.cmd == "JOIN":
print ("%s arrive sur %s" % (self.sender, self.channel))
# elif self.cmd == "NICK":
# print ("%s change de nom pour %s" % (self.sender, self.content))
# elif self.cmd == "PART":
# print ("%s vient de quitter %s" % (self.sender, self.channel))
# elif self.cmd == "JOIN":
# print ("%s arrive sur %s" % (self.sender, self.channel))
def pong (self):

View File

@ -69,7 +69,7 @@ def speak(endstate):
stopSpk = 0
if lastmsg is None:
lastmsg = message.Message(None, "")
lastmsg = message.Message(None, ":Quelqun!someone@p0m.fr PRIVMSG channel nothing")
while not stopSpk and len(g_queue) > 0:
msg = g_queue.pop(0)
@ -179,6 +179,9 @@ class Server:
try:
msg = message.Message(self, line)
except:
print ("Une erreur est survenue lors du traitement du message : %s"%line)
exc_type, exc_value, exc_traceback = sys.exc_info()
traceback.print_exception(exc_type, exc_value, exc_traceback)
continue
if msg.cmd == "PING":

View File

@ -115,6 +115,12 @@ def liste(cmds, servers):
if l == "server" or l == "servers":
for srv in servers.keys():
print (" - %s ;" % srv)
elif l == "chan" or l == "channel" or l == "channels":
if selectedServer is not None:
for chn in selectedServer.channels:
print (" - %s ;" % chn)
else:
print (" Please SELECT a server before ask for channels list.")
else:
print (" Unknown list `%s'" % l)
else:
@ -133,6 +139,30 @@ def connect(cmds, servers):
else:
print (" Please SELECT a server or give its name in argument.")
def join(cmds, servers):
rd = 1
if len(cmds) <= rd:
print ("%s: not enough arguments." % cmds[0])
return
if cmds[rd] in servers:
srv = servers[cmds[rd]]
rd += 1
elif selectedServer is not None:
srv = selectedServer
else:
print (" Please SELECT a server or give its name in argument.")
return
if len(cmds) <= rd:
print ("%s: not enough arguments." % cmds[0])
return
if cmds[0] == "join":
srv.join(cmds[rd])
elif cmds[0] == "leave" or cmds[0] == "part":
srv.leave(cmds[rd])
def send(cmds, servers):
rd = 1
if len(cmds) <= rd:
@ -215,6 +245,8 @@ CAPS = {
'select': select, #Select a server
'list': liste, #Show lists
'connect': connect, #Connect to a server
'join': join, #Join a new channel
'leave': join, #Leave a channel
'send': send, #Send a message on a channel
'disconnect': disconnect, #Disconnect from a server
'zap': zap, #Reverse internal connection state without check

View File

@ -86,6 +86,22 @@ class Server(threading.Thread):
else:
return False
def join(self, channel):
if channel is not None and self.connected:
self.channels.append(channel)
self.s.send(("JOIN %s\r\n" % channel).encode ())
return True
else:
return False
def leave(self, channel):
if channel is not None and self.connected and channel in self.channels:
self.channels.remove(channel)
self.s.send(("PART %s\r\n" % channel.split()[0]).encode ())
return True
else:
return False
def launch(self, mods):
if not self.connected:
self.stop = False