Better handle channel key

This commit is contained in:
Vgr E. Barry 2016-12-19 12:35:01 -05:00
parent 898a7107ca
commit b6738f2216

View File

@ -55,7 +55,8 @@ def add(name, cli, key=""):
cls = FakeChannel
chan = _channels[lower(name)] = cls(name, cli)
chan.join(key)
chan._key = key
chan.join()
return chan
def exists(name):
@ -107,8 +108,10 @@ class Channel(IRCContext):
else:
self._pending.append((name, params, args))
def join(self, key=""):
def join(self, key=None):
if self.state in (_States.NotJoined, _States.Left):
if key is None:
key = self.key
self.state = _States.PendingJoin
self.client.send("JOIN {0} :{1}".format(self.name, key))
@ -245,6 +248,9 @@ class Channel(IRCContext):
i += 1 # -k needs a target, but we don't care about it
del self.modes[c]
if "k" in mode:
self._key = self.modes.get("k", "")
def remove_user(self, user):
self.users.remove(user)
for mode in Features["PREFIX"].values():