[TASK] Beautify log, add __repr__ to Message, parse Nick.
This commit is contained in:
parent
b34817331e
commit
906f2a6fa5
16
bot.py
16
bot.py
|
@ -22,30 +22,30 @@ class ManagedProtocol(asyncio.Protocol):
|
||||||
self._transport = None
|
self._transport = None
|
||||||
self._config = config
|
self._config = config
|
||||||
|
|
||||||
def _log(self, msg):
|
def log(self, msg):
|
||||||
host, port = self._endpoint
|
host, port = self._endpoint
|
||||||
logger.info("[{}:{}] ".format(host, port)+str(msg))
|
logger.info("[{}:{}] ".format(host, port)+str(msg))
|
||||||
|
|
||||||
def connection_made(self, transport):
|
def connection_made(self, transport):
|
||||||
self._connection_manager.register_active_connection(self._endpoint, self)
|
self._connection_manager.register_active_connection(self._endpoint, self)
|
||||||
self._transport = transport
|
self._transport = transport
|
||||||
self._log("Connection made!")
|
self.log("Connection made!")
|
||||||
host, port = transport.get_extra_info("peername")
|
host, port = transport.get_extra_info("peername")
|
||||||
self._log("Connected to: {}:{}".format(host, port))
|
self.log("Connected to: {}:{}".format(host, port))
|
||||||
|
|
||||||
def data_received(self, data):
|
def data_received(self, data):
|
||||||
#self._log("[R] "+str(data))
|
#self.log("[R] "+str(data))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def eof_received(self):
|
def eof_received(self):
|
||||||
self._log("Eof received!")
|
self.log("Eof received!")
|
||||||
|
|
||||||
def connection_lost(self, exc):
|
def connection_lost(self, exc):
|
||||||
self._log("Connection lost! ("+str(exc)+")")
|
self.log("Connection lost! ("+str(exc)+")")
|
||||||
self._connection_manager.unregister_active_connection(self._endpoint)
|
self._connection_manager.unregister_active_connection(self._endpoint)
|
||||||
|
|
||||||
def send_data(self, data):
|
def send_data(self, data):
|
||||||
#self._log("[W] "+str(data))
|
#self.log("[W] "+str(data))
|
||||||
self._transport.write(data)
|
self._transport.write(data)
|
||||||
|
|
||||||
def destroy(self):
|
def destroy(self):
|
||||||
|
@ -95,10 +95,12 @@ class IrcProtocol(ManagedProtocol):
|
||||||
|
|
||||||
def send_msg(self, msg):
|
def send_msg(self, msg):
|
||||||
if isinstance(msg, irc.Message):
|
if isinstance(msg, irc.Message):
|
||||||
|
self.log(msg.__repr__())
|
||||||
data = self.encode(str(msg)+"\r\n")
|
data = self.encode(str(msg)+"\r\n")
|
||||||
self.send_data(data)
|
self.send_data(data)
|
||||||
|
|
||||||
def msg_received(self, msg):
|
def msg_received(self, msg):
|
||||||
|
self.log(msg.__repr__())
|
||||||
if isinstance(msg, irc.Ping):
|
if isinstance(msg, irc.Ping):
|
||||||
self.send_msg(irc.Pong(msg))
|
self.send_msg(irc.Pong(msg))
|
||||||
if isinstance(msg, irc.Message) and msg.get('command') == "376":
|
if isinstance(msg, irc.Message) and msg.get('command') == "376":
|
||||||
|
|
18
irc.py
18
irc.py
|
@ -64,6 +64,15 @@ class Message(object):
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
items = self.__dict__.copy()
|
||||||
|
e = []
|
||||||
|
for key in items:
|
||||||
|
if key == "data":
|
||||||
|
continue
|
||||||
|
e.append(key+"="+str(items[key]))
|
||||||
|
return "<" + self.__class__.__name__ + " " + ", ".join(e) + ">"
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
data = self.data
|
data = self.data
|
||||||
e = []
|
e = []
|
||||||
if data["subject"]:
|
if data["subject"]:
|
||||||
|
@ -113,6 +122,9 @@ class User(Message, metaclass=register_derivative):
|
||||||
"params": [ident, "*", "*"],
|
"params": [ident, "*", "*"],
|
||||||
"trailing": realname
|
"trailing": realname
|
||||||
})
|
})
|
||||||
|
def parse(self):
|
||||||
|
self.ident = self.get("params")[0]
|
||||||
|
self.realname = self.get("trailing")
|
||||||
|
|
||||||
class Nick(Message, metaclass=register_derivative):
|
class Nick(Message, metaclass=register_derivative):
|
||||||
def __init__(self, nick="", *args, **kwargs):
|
def __init__(self, nick="", *args, **kwargs):
|
||||||
|
@ -122,6 +134,9 @@ class Nick(Message, metaclass=register_derivative):
|
||||||
"command": "NICK",
|
"command": "NICK",
|
||||||
"trailing": nick
|
"trailing": nick
|
||||||
})
|
})
|
||||||
|
def parse(self):
|
||||||
|
self.old_nick = self.get("nick")
|
||||||
|
self.nick = self.get("trailing")
|
||||||
|
|
||||||
class Ping(Message, metaclass=register_derivative):
|
class Ping(Message, metaclass=register_derivative):
|
||||||
def parse(self):
|
def parse(self):
|
||||||
|
@ -262,13 +277,14 @@ class Topic(Message, metaclass=register_derivative):
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
buffer = b":irc.inn.at.euirc.net 001 JPT|NC :Welcome to the euIRCnet IRC Network JPT|NC!~AS@dslc-082-082-091-237.pools.arcor-ip.net\r\n:JPT|NC MODE JPT|NC :+ix\r\n:SpamScanner!service@central.euirc.net PRIVMSG JPT|NC :\x01VERSION\x01\r\n:JPT|NC!~AS@euirc-6f528752.pools.arcor-ip.net JOIN :#Tonari.\r\n:Lunlun!~l00n@euirc-e7be0d00.dip0.t-ipconnect.de JOIN :#Tonari.\r\n:ChanServ!services@euirc.net MODE #Tonari. +ao Lunlun Lunlun\r\n:Nitori!~kappa@chireiden.net PRIVMSG JPT|NC :\x01VERSION\x01\r\nPING :irc.inn.at.euirc.net\r\n:JPT|NC!~ADS@dslc-082-082-091-237.pools.arcor-ip.net JOIN #botted\r\n:JPT|NC!~ADS@dslc-082-082-091-237.pools.arcor-ip.net QUIT :Ping timeout: 272 seconds\r\nERROR :Closing Link: dslc-082-082-091-237.pools.arcor-ip.net (Ping timeout: 272 seconds)\r\n:JPT!~jpt@jpt.lu MODE #botted -h Pb42\r\n:JPT!~jpt@jpt.lu MODE #botted +v Pb42\r\n:JPT!~jpt@jpt.lu MODE #botted +o Pb42\r\n:JPT!~jpt@jpt.lu MODE #botted -vo Pb42 Pb42\r\n:JPT!~jpt@jpt.lu MODE #botted +b *illegal*!*@*\r\n:JPT!~jpt@jpt.lu MODE #botted -b *illegal*!*@*\r\n:JPT!~jpt@jpt.lu TOPIC #botted :#botted - edited\r\nPING :irc.hes.de.euirc.net\r\nPONG :irc.hes.de.euirc.net\r\n:JPT!~jpt@jpt.lu TOPIC #botted :#botted\r\n:JPT!~jpt@jpt.lu MODE #botted +i\r\n:JPT!~jpt@jpt.lu MODE #botted -i\r\n"
|
buffer = b":irc.inn.at.euirc.net 001 JPT|NC :Welcome to the euIRCnet IRC Network JPT|NC!~AS@dslc-082-082-091-237.pools.arcor-ip.net\r\n:JPT|NC MODE JPT|NC :+ix\r\n:SpamScanner!service@central.euirc.net PRIVMSG JPT|NC :\x01VERSION\x01\r\n:JPT|NC!~AS@euirc-6f528752.pools.arcor-ip.net JOIN :#Tonari.\r\n:Lunlun!~l00n@euirc-e7be0d00.dip0.t-ipconnect.de JOIN :#Tonari.\r\n:ChanServ!services@euirc.net MODE #Tonari. +ao Lunlun Lunlun\r\n:Nitori!~kappa@chireiden.net PRIVMSG JPT|NC :\x01VERSION\x01\r\nPING :irc.inn.at.euirc.net\r\n:JPT|NC!~ADS@dslc-082-082-091-237.pools.arcor-ip.net JOIN #botted\r\n:JPT|NC!~ADS@dslc-082-082-091-237.pools.arcor-ip.net QUIT :Ping timeout: 272 seconds\r\nERROR :Closing Link: dslc-082-082-091-237.pools.arcor-ip.net (Ping timeout: 272 seconds)\r\n:JPT!~jpt@jpt.lu MODE #botted -h Pb42\r\n:JPT!~jpt@jpt.lu MODE #botted +v Pb42\r\n:JPT!~jpt@jpt.lu MODE #botted +o Pb42\r\n:JPT!~jpt@jpt.lu MODE #botted -vo Pb42 Pb42\r\n:JPT!~jpt@jpt.lu MODE #botted +b *illegal*!*@*\r\n:JPT!~jpt@jpt.lu MODE #botted -b *illegal*!*@*\r\n:JPT!~jpt@jpt.lu TOPIC #botted :#botted - edited\r\nPING :irc.hes.de.euirc.net\r\nPONG :irc.hes.de.euirc.net\r\n:JPT!~jpt@jpt.lu TOPIC #botted :#botted\r\n:JPT!~jpt@jpt.lu MODE #botted +i\r\n:JPT!~jpt@jpt.lu MODE #botted -i\r\n:JPT!~jpt@jpt.lu NICK :whoops\r\n"
|
||||||
while b"\r\n" in buffer:
|
while b"\r\n" in buffer:
|
||||||
line, buffer = buffer.split(b"\r\n", 1)
|
line, buffer = buffer.split(b"\r\n", 1)
|
||||||
if line == b"":
|
if line == b"":
|
||||||
continue
|
continue
|
||||||
line = line.decode("utf-8")
|
line = line.decode("utf-8")
|
||||||
msg = Message.from_string(line)
|
msg = Message.from_string(line)
|
||||||
|
print(msg.__repr__())
|
||||||
print(str(msg))
|
print(str(msg))
|
||||||
if msg.__class__.__name__ == 'Message':
|
if msg.__class__.__name__ == 'Message':
|
||||||
print(msg.__dict__)
|
print(msg.__dict__)
|
||||||
|
|
Loading…
Reference in New Issue