3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-01 01:09:22 +01:00

nefarious: implement TOPIC support

This commit is contained in:
James Lu 2016-04-16 18:46:14 -07:00
parent 68eed62f70
commit 20123c52e0

View File

@ -495,6 +495,39 @@ class P10Protocol(Protocol):
self._send(source, 'SQ %s 0 :%s' % (targetname, text)) self._send(source, 'SQ %s 0 :%s' % (targetname, text))
self.handle_squit(source, 'SQUIT', [target, text]) self.handle_squit(source, 'SQUIT', [target, text])
def topic(self, numeric, target, text):
"""Sends a TOPIC change from a PyLink client."""
# <- ABAAA T #test GL!~gl@nefarious.midnight.vpn 1460852591 1460855795 :blah
# First timestamp is channel creation time, second is current time,
if not self.irc.isInternalClient(numeric):
raise LookupError('No such PyLink client exists.')
sendername = utils.getHostmask(self.irc, numeric)
creationts = self.irc.channels[target].ts
self._send(numeric, 'T %s %s %s %s :%s' % (target, sendername, creationts,
int(time.time()), text))
self.irc.channels[target].topic = text
self.irc.channels[target].topicset = True
def topicBurst(self, numeric, target, text):
"""Sends a TOPIC change from a PyLink server."""
# <- AB T #test GL!~gl@nefarious.midnight.vpn 1460852591 1460855795 :blah
if not self.irc.isInternalServer(numeric):
raise LookupError('No such PyLink server exists.')
sendername = self.irc.servers[numeric].name
creationts = self.irc.channels[target].ts
self._send(numeric, 'T %s %s %s %s :%s' % (target, sendername, creationts,
int(time.time()), text))
self.irc.channels[target].topic = text
self.irc.channels[target].topicset = True
### HANDLERS ### HANDLERS
def connect(self): def connect(self):
@ -948,4 +981,17 @@ class P10Protocol(Protocol):
return {'target': split_server, 'users': affected_users, 'name': sname} return {'target': split_server, 'users': affected_users, 'name': sname}
def handle_topic(self, source, command, args):
"""Handles TOPIC changes."""
# <- ABAAA T #test GL!~gl@nefarious.midnight.vpn 1460852591 1460855795 :blah
channel = utils.toLower(self.irc, args[0])
topic = args[-1]
oldtopic = self.irc.channels[channel].topic
self.irc.channels[channel].topic = topic
self.irc.channels[channel].topicset = True
return {'channel': channel, 'setter': args[1], 'text': topic,
'oldtopic': oldtopic}
Class = P10Protocol Class = P10Protocol