aboutsummaryrefslogtreecommitdiff
path: root/modules/line_handler
diff options
context:
space:
mode:
authorGravatar jesopo2019-06-06 11:16:47 +0100
committerGravatar jesopo2019-06-06 11:16:47 +0100
commit4c6a398f531d2bc0e6570d3a6c18ead037c646b1 (patch)
tree55de47fadc87663b335b4acf8b66e41084a5fb5a /modules/line_handler
parentmessage_tag_escape() message-tag values when .format()ing IRCLine (diff)
signature
Ask for our own modes when we get a 001
Diffstat (limited to 'modules/line_handler')
-rw-r--r--modules/line_handler/__init__.py4
-rw-r--r--modules/line_handler/core.py17
2 files changed, 16 insertions, 5 deletions
diff --git a/modules/line_handler/__init__.py b/modules/line_handler/__init__.py
index 19e1902b..15a921c2 100644
--- a/modules/line_handler/__init__.py
+++ b/modules/line_handler/__init__.py
@@ -149,6 +149,10 @@ class Module(ModuleManager.BaseModule):
@utils.hook("raw.received.mode")
def mode(self, event):
core.mode(self.events, event)
+ # server telling us our own modes
+ @utils.hook("raw.received.221")
+ def umodeis(self, event):
+ core.handle_221(event)
# someone (maybe me!) has been invited somewhere
@utils.hook("raw.received.invite")
diff --git a/modules/line_handler/core.py b/modules/line_handler/core.py
index 3d656b2f..2e9abc7d 100644
--- a/modules/line_handler/core.py
+++ b/modules/line_handler/core.py
@@ -11,6 +11,7 @@ def handle_001(event):
event["server"].name = event["source"].hostmask
event["server"].set_own_nickname(event["args"][0])
event["server"].send_whois(event["server"].nickname)
+ event["server"].send_mode(event["server"].nickname)
event["server"].connected = True
def handle_005(events, event):
@@ -64,6 +65,13 @@ def motd_start(event):
def motd_line(event):
event["server"].motd_lines.append(event["args"][1])
+def _own_modes(server, modes):
+ mode_chunks = RE_MODES.findall(modes)
+ for chunk in mode_chunks:
+ remove = chunk[0] == "-"
+ for mode in chunk[1:]:
+ server.change_own_mode(remove, mode)
+
def mode(events, event):
user = event["server"].get_user(event["source"].nickname)
target = event["args"][0]
@@ -88,14 +96,13 @@ def mode(events, event):
events.on("received.mode.channel").call(modes=modes, mode_args=_args,
channel=channel, server=event["server"], user=user)
elif event["server"].is_own_nickname(target):
- modes = RE_MODES.findall(event["args"][1])
- for chunk in modes:
- remove = chunk[0] == "-"
- for mode in chunk[1:]:
- event["server"].change_own_mode(remove, mode)
+ _own_modes(event["server"], event["args"][1])
events.on("self.mode").call(modes=modes, server=event["server"])
event["server"].send_who(event["server"].nickname)
+def handle_221(event):
+ _own_modes(event["server"], event["args"][1])
+
def invite(events, event):
target_channel = event["args"][1]
user = event["server"].get_user(event["source"].nickname)