From 6169822349e03ded9b5f66bf8f1693b5e15f79c1 Mon Sep 17 00:00:00 2001 From: Jeremy Fincher Date: Mon, 29 Sep 2003 07:44:27 +0000 Subject: [PATCH] Guarded IrcState.doMode to work only with channels. --- src/irclib.py | 30 ++++++++++++++++-------------- test/test_irclib.py | 4 ++++ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/irclib.py b/src/irclib.py index f6aa29218..70b9c0567 100644 --- a/src/irclib.py +++ b/src/irclib.py @@ -268,20 +268,22 @@ class IrcState(IrcCommandDispatcher): self.channels[channel] = chan def doMode(self, irc, msg): - chan = self.channels[msg.args[0]] - for (mode, nick) in ircutils.separateModes(msg.args[1:]): - if mode == '-o': - chan.ops.discard(nick) - elif mode == '+o': - chan.ops.add(nick) - if mode == '-h': - chan.halfops.discard(nick) - elif mode == '+h': - chan.halfops.add(nick) - if mode == '-v': - chan.voices.discard(nick) - elif mode == '+v': - chan.voices.add(nick) + channel = msg.args[0] + if ircutils.isChannel(channel): + chan = self.channels[channel] + for (mode, nick) in ircutils.separateModes(msg.args[1:]): + if mode == '-o': + chan.ops.discard(nick) + elif mode == '+o': + chan.ops.add(nick) + if mode == '-h': + chan.halfops.discard(nick) + elif mode == '+h': + chan.halfops.add(nick) + if mode == '-v': + chan.voices.discard(nick) + elif mode == '+v': + chan.voices.add(nick) def do353(self, irc, msg): (_, _, channel, users) = msg.args diff --git a/test/test_irclib.py b/test/test_irclib.py index d6d0d23f9..eb452721f 100644 --- a/test/test_irclib.py +++ b/test/test_irclib.py @@ -212,6 +212,10 @@ class IrcStateTestCase(unittest.TestCase): st.addMsg(self.irc, ircmsgs.dehalfop('#foo', 'bar')) self.failIf('bar' in st.channels['#foo'].halfops) + def testDoModeOnlyChannels(self): + st = irclib.IrcState() + self.assert_(st.addMsg(self.irc, ircmsgs.IrcMsg('MODE foo +i')) or 1) + """ def testChannels(self): channel =