Skip to content

Commit 6d742f6

Browse files
committed
Implement IRCv3's draft/rename
1 parent 9fe7815 commit 6d742f6

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

modules/line_handler.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
CAPABILITIES = {"multi-prefix", "chghost", "invite-notify", "account-tag",
1212
"account-notify", "extended-join", "away-notify", "userhost-in-names",
1313
"draft/message-tags-0.2", "server-time", "cap-notify",
14-
"batch", "draft/labeled-response"}
14+
"batch", "draft/labeled-response", "draft/rename"}
1515

1616
class Module(ModuleManager.BaseModule):
1717
def _handle(self, server, line):
@@ -566,3 +566,15 @@ def kick(self, event):
566566
else:
567567
self.events.on("self.kick").call(channel=channel,
568568
reason=reason, user=user, server=event["server"])
569+
570+
# a channel has been renamed
571+
@utils.hook("raw.rename")
572+
def rename(self, event):
573+
old_name = event["args"][0]
574+
new_name = event["args"][1]
575+
channel = event["server"].get_channel(old_name)
576+
577+
event["server"].rename_channel(old_name, new_name)
578+
self.events.on("received.rename").call(channel=channel,
579+
old_name=old_name, new_name=new_name,
580+
reason=event["arbitrary"] or events["args"][2]))

src/IRCServer.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,11 @@ def remove_channel(self, channel: IRCChannel.Channel):
214214
for user in channel.users:
215215
user.part_channel(channel)
216216
del self.channels[channel.name]
217+
def rename_channel(self, old_name, new_name):
218+
channel = self.channels.pop(old_name.lower())
219+
channel.name = new_name.lower()
220+
self.channels[channel.name] = channel
221+
217222
def parse_data(self, line: str):
218223
if not line:
219224
return

0 commit comments

Comments
 (0)