]> jfr.im git - erebus.git/blobdiff - modules/basic_socket.py
some socket fixes
[erebus.git] / modules / basic_socket.py
index bfd6b72cd12ecca2cef85cb8cf3418d2b7adebc0..03f7323e6c848c69183887f3d93a824f952b0185 100644 (file)
@@ -8,7 +8,7 @@ modinfo = {
        'license': 'public domain',
        'compatible': [0],
        'depends': [],
-       'softdeps': ['help'],
+       'softdeps': [],
 }
 
 # preamble
@@ -43,7 +43,7 @@ class BasicServer(object):
 
        def getdata(self):
                recvd = self.sock.recv(8192)
-               if recvd == b"":
+               if recvd == b"": # EOF
                        if len(self.buffer) != 0:
                                # Process what's left in the buffer. We'll get called again after.
                                remaining_buf = self.buffer.decode('utf-8', 'backslashreplace')
@@ -67,10 +67,13 @@ class BasicServer(object):
                peer = self.sock.getpeername()
                bot = lib.parent.randbot()
                maxlen = bot.maxmsglen() - len("PRIVMSG  :") - len(self.chan)
-               bot.msg(self.chan, "%s:%d says:" % peer)
+               lib.parent.log(str(self), 'I', line)
                while len(line) > maxlen:
-                       bot.msg(self.chan, line[0:maxlen])
-                       line = line[maxlen:]
+                       cutat = line.rfind(' ', 0, maxlen)
+                       if cutat == -1:
+                               cutat = maxlen
+                       bot.msg(self.chan, line[0:cutat])
+                       line = line[cutat:].strip()
                bot.msg(self.chan, line)
 
        def send(self, line):
@@ -81,3 +84,8 @@ class BasicServer(object):
                        return self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
                except:
                        return None
+
+       def __str__(self):
+               return '%s#%d' % (__name__, self.sock.fileno())
+       def __repr__(self):
+               return '<%s #%d %s:%d>' % ((__name__, self.sock.fileno())+self.sock.getpeername())