aboutsummaryrefslogtreecommitdiff
path: root/modules/line_handler/channel.py
diff options
context:
space:
mode:
authorGravatar jesopo2019-02-22 11:23:36 +0000
committerGravatar jesopo2019-02-22 11:23:36 +0000
commit47c2cbb0fa93e143c6add4cf1eb4012bbc37f7b2 (patch)
tree46b13e38f6f22050db75c6ba65221b3034afda84 /modules/line_handler/channel.py
parentRemove unused `threading` import in line_handler.py (diff)
signature
Split line_handler.py out in to different files for different categories
Diffstat (limited to 'modules/line_handler/channel.py')
-rw-r--r--modules/line_handler/channel.py159
1 files changed, 159 insertions, 0 deletions
diff --git a/modules/line_handler/channel.py b/modules/line_handler/channel.py
new file mode 100644
index 00000000..80f42aaa
--- /dev/null
+++ b/modules/line_handler/channel.py
@@ -0,0 +1,159 @@
+from src import utils
+
+def handle_332(events, event):
+ channel = event["server"].channels.get(event["args"][1])
+ topic = event["args"].get(2)
+ channel.set_topic(topic)
+ events.on("received.332").call(channel=channel, server=event["server"],
+ topic=topic)
+
+def topic(events, event):
+ user = event["server"].get_user(event["prefix"].nickname)
+ channel = event["server"].channels.get(event["args"][0])
+ topic = event["args"].get(1)
+ channel.set_topic(topic)
+ events.on("received.topic", channel=channel, server=event["server"],
+ topic=topic, user=user)
+
+def handle_333(events, event):
+ channel = event["server"].channels.get(event["args"][1])
+
+ topic_setter_hostmask = event["args"][2]
+ topic_setter = utils.irc.seperate_hostmask(topic_setter_hostmask)
+ topic_time = int(event["args"][3]) if event["args"][3].isdigit() else None
+
+ channel.set_topic_setter(topic_setter.nickname, topic_setter.username,
+ topic_setter.hostname)
+ channel.set_topic_time(topic_time)
+ events.on("received.333", channel=channel, setter=topic_setter.nickname,
+ set_at=topic_time, server=event["server"])
+
+def handle_353(event):
+ channel = event["server"].channels.get(event["args"][2])
+ nicknames = event["args"].get(3).split()
+ for nickname in nicknames:
+ modes = set([])
+
+ while nickname[0] in event["server"].prefix_symbols:
+ modes.add(event["server"].prefix_symbols[nickname[0]])
+ nickname = nickname[1:]
+
+ if "userhost-in-names" in event["server"].agreed_capabilities:
+ hostmask = utils.irc.seperate_hostmask(nickname)
+ nickname = hostmask.nickname
+ user = event["server"].get_user(hostmask.nickname)
+ user.username = hostmask.username
+ user.hostname = hostmask.hostname
+ else:
+ user = event["server"].get_user(nickname)
+ user.join_channel(channel)
+ channel.add_user(user)
+
+ for mode in modes:
+ channel.add_mode(mode, nickname)
+
+def handle_366(event):
+ event["server"].send_whox(event["args"][1], "n", "ahnrtu", "111")
+
+def join(events, event):
+ account = None
+ realname = None
+ channel_name = event["args"][0]
+
+ if len(event["args"]) == 3:
+ if not event["args"][1] == "*":
+ account = event["args"][1]
+ realname = event["args"][2]
+
+ if not event["server"].is_own_nickname(event["prefix"].nickname):
+ channel = event["server"].channels.get(channel_name)
+ user = event["server"].get_user(event["prefix"].nickname)
+ if not user.username and not user.hostname:
+ user.username = event["prefix"].username
+ user.hostname = event["prefix"].hostname
+
+ if account:
+ user.identified_account = account
+ user.identified_account_id = event["server"].get_user(
+ account).get_id()
+ if realname:
+ user.realname = realname
+
+ channel.add_user(user)
+ user.join_channel(channel)
+ events.on("received.join", channel=channel, user=user,
+ server=event["server"], account=account, realname=realname)
+ else:
+ channel = event["server"].channels.add(channel_name)
+ if channel.name in event["server"].attempted_join:
+ del event["server"].attempted_join[channel.name]
+ events.on("self.join").call(channel=channel, server=event["server"],
+ account=account, realname=realname)
+ channel.send_mode()
+
+def part(events, event):
+ channel = event["server"].channels.get(event["args"][0])
+ reason = event["args"].get(1)
+
+ if not event["server"].is_own_nickname(event["prefix"].nickname):
+ user = event["server"].get_user(event["prefix"].nickname)
+
+ events.on("received.part", channel=channel, reason=reason, user=user,
+ server=event["server"])
+
+ channel.remove_user(user)
+ user.part_channel(channel)
+ if not len(user.channels):
+ event["server"].remove_user(user)
+ else:
+ events.on("self.part").call(channel=channel, reason=reason,
+ server=event["server"])
+ event["server"].channels.remove(channel)
+
+def handle_324(event):
+ channel = event["server"].channels.get(event["args"][1])
+ modes = event["args"][2]
+ if modes[0] == "+" and modes[1:]:
+ for mode in modes[1:]:
+ if mode in event["server"].channel_modes:
+ channel.add_mode(mode)
+
+def handle_329(event):
+ channel = event["server"].channels.get(event["args"][1])
+ channel.creation_timestamp = int(event["args"][2])
+
+def handle_477(timers, event):
+ channel_name = event["server"].irc_lower(event["args"][1])
+ if channel_name in event["server"].channels:
+ key = event["server"].attempted_join[channel_name]
+ timers.add("rejoin", 5, channel_name=channe_name, key=key,
+ server_id=event["server"].id)
+
+def kick(events, event):
+ user = event["server"].get_user(event["prefix"].nickname)
+ target = event["args"][1]
+ channel = event["server"].channels.get(event["args"][0])
+ reason = event["args"].get(2)
+
+ if not event["server"].is_own_nickname(target):
+ target_user = event["server"].get_user(target)
+ events.on("received.kick").call(channel=channel, reason=reason,
+ target_user=target_user, user=user, server=event["server"])
+
+ channel.remove_user(target_user)
+ target_user.part_channel(channel)
+ if not len(target_user.channels):
+ event["server"].remove_user(target_user)
+ else:
+ event["server"].channels.remove(channel)
+ events.on("self.kick").call(channel=channel, reason=reason, user=user,
+ server=event["server"])
+
+def rename(events, event):
+ old_name = event["args"][0]
+ new_name = event["args"][1]
+ channel = event["server"].channels.get(old_name)
+
+ event["server"].channels.rename(old_name, new_name)
+ events.on("received.rename").call(channel=channel, old_name=old_name,
+ new_name=new_name, reason=event["args"].get(2), server=event["server"])