From b656417030283bf0f5b808ae1a0adfb71fbf27d8 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 1 Jul 2016 09:44:56 +0000 Subject: [PATCH] Revert to built-in methods for sending messages The raw messages were being ignored by Slack's IRC gateway. --- relaybot.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/relaybot.py b/relaybot.py index 9bcdf07..618c0ce 100644 --- a/relaybot.py +++ b/relaybot.py @@ -190,7 +190,14 @@ class Communicator: if identifier == protocol.identifier: continue instance = self.protocolInstances[identifier] - instance.sendLine(message) + instance.sayToChannel(message) + + def relayTopic(self, protocol, newTopic): + for identifier in self.protocolInstances.keys(): + if identifier == protocol.identifier: + continue + instance = self.protocolInstances[identifier] + instance.setChannelTopic(newTopic) #Global scope: all protocol instances will need this. communicator = Communicator() @@ -221,6 +228,9 @@ class IRCRelayer(irc.IRCClient): def relay(self, message): communicator.relay(self, message) + def relayTopic(self, newTopic): + communicator.relayTopic(self, newTopic) + def signedOn(self): log.msg("[%s] Connected to network."%self.network) self.startHeartbeat() @@ -230,6 +240,12 @@ class IRCRelayer(irc.IRCClient): log.msg("[%s] Connection lost, unregistering."%self.network) communicator.unregister(self) + def sayToChannel(self, message): + self.say(self.channel, message) + + def setChannelTopic(self, newTopic): + self.topic(self.channel, newTopic) + def joined(self, channel): log.msg("Joined channel %s, registering."%channel) communicator.register(self) @@ -245,9 +261,9 @@ class IRCRelayer(irc.IRCClient): def privmsg(self, user, channel, message): if self.mode != "RelayByCommand": - self.relay(":%s PRIVMSG %s :%s %s"%(user, channel, self.formatNick(user), message)) + self.relay("%s %s"%(self.formatNick(user), message)) elif message.startswith(self.nickname + ':'): - self.relay(":%s PRIVMSG %s :%s %s"%(user, channel, self.formatNick(user), self.formatMessage(message))) + self.relay("%s %s"%(self.formatNick(user), self.formatMessage(message))) def kickedFrom(self, channel, kicker, message): log.msg("Kicked by %s. Message \"%s\""%(kicker, message)) @@ -255,7 +271,7 @@ class IRCRelayer(irc.IRCClient): def action(self, user, channel, message): if self.mode != "RelayByCommand": - self.relay(":%s PRIVMSG %s :%s %s"%(user, channel, self.formatNick(user), message)) + self.relay("%s %s"%(self.formatNick(user), message)) def topicUpdated(self, user, channel, newTopic): if self.mode != "RelayByCommand": @@ -263,7 +279,7 @@ class IRCRelayer(irc.IRCClient): def topic(self, user, channel, newTopic): if self.topicsync == "True": - self.relay(":%s TOPIC %s :%s" %(user, channel, newTopic)) + self.relayTopic(newTopic) class RelayFactory(ReconnectingClientFactory): protocol = IRCRelayer