aboutsummaryrefslogtreecommitdiff
path: root/modules/line_handler
diff options
context:
space:
mode:
authorGravatar jesopo2019-06-13 11:53:47 +0100
committerGravatar jesopo2019-06-13 11:53:47 +0100
commit795f6afbeb91d00141b21930b8c0acb717989218 (patch)
treeef7a860b1245139fe2baa7ee51903f35a336a109 /modules/line_handler
parenttypo, 'acount' -> 'count' (diff)
signature
Mode mode (and mode arg) parsing to IRCChannel.py, add IRCChannel.mode_str
Diffstat (limited to 'modules/line_handler')
-rw-r--r--modules/line_handler/channel.py5
-rw-r--r--modules/line_handler/core.py20
2 files changed, 7 insertions, 18 deletions
diff --git a/modules/line_handler/channel.py b/modules/line_handler/channel.py
index 759fdf45..716877b6 100644
--- a/modules/line_handler/channel.py
+++ b/modules/line_handler/channel.py
@@ -121,9 +121,8 @@ def handle_324(event):
if event["args"][1] in event["server"].channels:
channel = event["server"].channels.get(event["args"][1])
modes = event["args"][2]
- for mode in modes[1:]:
- if mode in event["server"].channel_modes:
- channel.add_mode(mode)
+ args = event["args"][3:]
+ channel.parse_modes(modes, args[:])
def handle_329(event):
channel = event["server"].channels.get(event["args"][1])
diff --git a/modules/line_handler/core.py b/modules/line_handler/core.py
index b85a9677..979eaa31 100644
--- a/modules/line_handler/core.py
+++ b/modules/line_handler/core.py
@@ -80,22 +80,12 @@ def mode(events, event):
is_channel = target[0] in event["server"].channel_types
if is_channel:
channel = event["server"].channels.get(target)
+ modes = event["args"][1]
args = event["args"][2:]
- _args = args[:]
- modes = RE_MODES.findall(event["args"][1])
- for chunk in modes:
- remove = chunk[0] == "-"
- for mode in chunk[1:]:
- if mode in event["server"].channel_modes:
- channel.change_mode(remove, mode)
- elif mode in event["server"].prefix_modes and len(args):
- channel.change_mode(remove, mode, args.pop(0))
- elif (mode in event["server"].channel_list_modes or
- mode in event["server"].channel_paramatered_modes):
- args.pop(0)
- elif not remove:
- args.pop(0)
- events.on("received.mode.channel").call(modes=modes, mode_args=_args,
+
+ channel.parse_modes(modes, args[:])
+
+ 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 = event["args"][1]