diff options
| author | 2019-06-21 20:21:31 +0100 | |
|---|---|---|
| committer | 2019-06-21 20:21:31 +0100 | |
| commit | 8671cb370884ece03f7f04f6e9091f7e097e7832 (patch) | |
| tree | 23a6967996d6f0883999e028c3e558bcdac8e99c /modules/relay.py | |
| parent | pass ParsedLine on message and formatted.* message events (diff) | |
| signature | ||
Cache ParsedLine IDs of relay messages so we can ignore them (avoid loop)
Diffstat (limited to 'modules/relay.py')
| -rw-r--r-- | modules/relay.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/modules/relay.py b/modules/relay.py index 5920445f..7c2f768b 100644 --- a/modules/relay.py +++ b/modules/relay.py @@ -1,11 +1,17 @@ from src import ModuleManager, utils class Module(ModuleManager.BaseModule): + @utils.hook("new.server") + def new_server(self, event): + event["server"]._relay_ignore = [] + def _get_relays(self, channel): return channel.get_setting("channel-relays", []) def _relay(self, event, channel): - if "from_self" in event and event["from_self"]: + if ("parsed_line" in event and + event["parsed_line"].id in event["server"]._relay_ignore): + event["server"]._relay_ignore.remove(event["parsed_line"].id) return relays = self._get_relays(channel) @@ -28,7 +34,11 @@ class Module(ModuleManager.BaseModule): relay_message = "[relay/%s%s] %s" % (str(event["server"]), relay_prefix_channel, event["line"]) - other_channel.send_message(relay_message) + + message = utils.irc.protocol.privmsg(other_channel.name, + relay_message) + server._relay_ignore.append(message.id) + server.send(message) def _has_relay_for(self, channel, server_id, channel_name): relays = self._get_relays(channel) |
