mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-12-23 19:22:45 +01:00
Channel: Chunk mass mode changes according to supported['MODES']
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
This commit is contained in:
parent
b644e30bb6
commit
afa49be456
@ -56,6 +56,12 @@ class Channel(callbacks.Plugin):
|
|||||||
irc.queueMsg(msg)
|
irc.queueMsg(msg)
|
||||||
irc.noReply()
|
irc.noReply()
|
||||||
|
|
||||||
|
def _sendMsgs(self, irc, nicks, f):
|
||||||
|
numModes = irc.state.supported.get('modes', 1)
|
||||||
|
for i in range(0, len(nicks), numModes):
|
||||||
|
irc.queueMsg(f(nicks[i:i + numModes]))
|
||||||
|
irc.noReply()
|
||||||
|
|
||||||
def mode(self, irc, msg, args, channel, modes):
|
def mode(self, irc, msg, args, channel, modes):
|
||||||
"""[<channel>] <mode> [<arg> ...]
|
"""[<channel>] <mode> [<arg> ...]
|
||||||
|
|
||||||
@ -126,7 +132,9 @@ class Channel(callbacks.Plugin):
|
|||||||
"""
|
"""
|
||||||
if not nicks:
|
if not nicks:
|
||||||
nicks = [msg.nick]
|
nicks = [msg.nick]
|
||||||
self._sendMsg(irc, ircmsgs.ops(channel, nicks))
|
def f(L):
|
||||||
|
return ircmsgs.ops(channel, L)
|
||||||
|
self._sendMsgs(irc, nicks, f)
|
||||||
op = wrap(op, ['op', ('haveOp', 'op someone'), any('nickInChannel')])
|
op = wrap(op, ['op', ('haveOp', 'op someone'), any('nickInChannel')])
|
||||||
|
|
||||||
def halfop(self, irc, msg, args, channel, nicks):
|
def halfop(self, irc, msg, args, channel, nicks):
|
||||||
@ -139,7 +147,9 @@ class Channel(callbacks.Plugin):
|
|||||||
"""
|
"""
|
||||||
if not nicks:
|
if not nicks:
|
||||||
nicks = [msg.nick]
|
nicks = [msg.nick]
|
||||||
self._sendMsg(irc, ircmsgs.halfops(channel, nicks))
|
def f(L):
|
||||||
|
return ircmsgs.halfops(channel, L)
|
||||||
|
self._sendMsgs(irc, nicks, f)
|
||||||
halfop = wrap(halfop, ['halfop', ('haveOp', 'halfop someone'),
|
halfop = wrap(halfop, ['halfop', ('haveOp', 'halfop someone'),
|
||||||
any('nickInChannel')])
|
any('nickInChannel')])
|
||||||
|
|
||||||
@ -161,7 +171,9 @@ class Channel(callbacks.Plugin):
|
|||||||
capability = 'voice'
|
capability = 'voice'
|
||||||
capability = ircdb.makeChannelCapability(channel, capability)
|
capability = ircdb.makeChannelCapability(channel, capability)
|
||||||
if ircdb.checkCapability(msg.prefix, capability):
|
if ircdb.checkCapability(msg.prefix, capability):
|
||||||
self._sendMsg(irc, ircmsgs.voices(channel, nicks))
|
def f(L):
|
||||||
|
return ircmsgs.voices(channel, L)
|
||||||
|
self._sendMsgs(irc, nicks, f)
|
||||||
else:
|
else:
|
||||||
irc.errorNoCapability(capability)
|
irc.errorNoCapability(capability)
|
||||||
voice = wrap(voice, ['channel', ('haveOp', 'voice someone'),
|
voice = wrap(voice, ['channel', ('haveOp', 'voice someone'),
|
||||||
@ -180,7 +192,9 @@ class Channel(callbacks.Plugin):
|
|||||||
'yourself.', Raise=True)
|
'yourself.', Raise=True)
|
||||||
if not nicks:
|
if not nicks:
|
||||||
nicks = [msg.nick]
|
nicks = [msg.nick]
|
||||||
self._sendMsg(irc, ircmsgs.deops(channel, nicks))
|
def f(L):
|
||||||
|
return ircmsgs.deops(channel, L)
|
||||||
|
self._sendMsgs(irc, nicks, f)
|
||||||
deop = wrap(deop, ['op', ('haveOp', 'deop someone'),
|
deop = wrap(deop, ['op', ('haveOp', 'deop someone'),
|
||||||
any('nickInChannel')])
|
any('nickInChannel')])
|
||||||
|
|
||||||
@ -197,12 +211,12 @@ class Channel(callbacks.Plugin):
|
|||||||
'dehalfop me yourself.', Raise=True)
|
'dehalfop me yourself.', Raise=True)
|
||||||
if not nicks:
|
if not nicks:
|
||||||
nicks = [msg.nick]
|
nicks = [msg.nick]
|
||||||
self._sendMsg(irc, ircmsgs.dehalfops(channel, nicks))
|
def f(L):
|
||||||
|
return ircmsgs.dehalfops(channel, L)
|
||||||
|
self._sendMsgs(irc, nicks, f)
|
||||||
dehalfop = wrap(dehalfop, ['halfop', ('haveOp', 'dehalfop someone'),
|
dehalfop = wrap(dehalfop, ['halfop', ('haveOp', 'dehalfop someone'),
|
||||||
any('nickInChannel')])
|
any('nickInChannel')])
|
||||||
|
|
||||||
# XXX We should respect the MODES part of an 005 here. Helper function
|
|
||||||
# material.
|
|
||||||
def devoice(self, irc, msg, args, channel, nicks):
|
def devoice(self, irc, msg, args, channel, nicks):
|
||||||
"""[<channel>] [<nick> ...]
|
"""[<channel>] [<nick> ...]
|
||||||
|
|
||||||
@ -216,7 +230,9 @@ class Channel(callbacks.Plugin):
|
|||||||
'me yourself.', Raise=True)
|
'me yourself.', Raise=True)
|
||||||
if not nicks:
|
if not nicks:
|
||||||
nicks = [msg.nick]
|
nicks = [msg.nick]
|
||||||
self._sendMsg(irc, ircmsgs.devoices(channel, nicks))
|
def f(L):
|
||||||
|
return ircmsgs.devoices(channel, L)
|
||||||
|
self._sendMsgs(irc, nicks, f)
|
||||||
devoice = wrap(devoice, ['voice', ('haveOp', 'devoice someone'),
|
devoice = wrap(devoice, ['voice', ('haveOp', 'devoice someone'),
|
||||||
any('nickInChannel')])
|
any('nickInChannel')])
|
||||||
|
|
||||||
@ -247,8 +263,8 @@ class Channel(callbacks.Plugin):
|
|||||||
kicklen = irc.state.supported.get('kicklen', sys.maxint)
|
kicklen = irc.state.supported.get('kicklen', sys.maxint)
|
||||||
if len(reason) > kicklen:
|
if len(reason) > kicklen:
|
||||||
irc.error('The reason you gave is longer than the allowed '
|
irc.error('The reason you gave is longer than the allowed '
|
||||||
'length for a KICK reason on this server.')
|
'length for a KICK reason on this server.',
|
||||||
return
|
Raise=True)
|
||||||
self._sendMsg(irc, ircmsgs.kick(channel, nick, reason))
|
self._sendMsg(irc, ircmsgs.kick(channel, nick, reason))
|
||||||
kick = wrap(kick, ['op', ('haveOp', 'kick someone'),
|
kick = wrap(kick, ['op', ('haveOp', 'kick someone'),
|
||||||
'nickInChannel', additional('text')])
|
'nickInChannel', additional('text')])
|
||||||
|
@ -116,7 +116,17 @@ class ChannelTestCase(ChannelPluginTestCase):
|
|||||||
m.args == (self.channel, '+o', 'foo'))
|
m.args == (self.channel, '+o', 'foo'))
|
||||||
m = self.getMsg('op foo bar')
|
m = self.getMsg('op foo bar')
|
||||||
self.failUnless(m.command == 'MODE' and
|
self.failUnless(m.command == 'MODE' and
|
||||||
m.args == (self.channel, '+oo', 'foo', 'bar'))
|
m.args == (self.channel, '+o', 'foo'))
|
||||||
|
m = self.irc.takeMsg()
|
||||||
|
self.failUnless(m.command == 'MODE' and
|
||||||
|
m.args == (self.channel, '+o', 'bar'))
|
||||||
|
self.irc.state.supported['MODES'] = 2
|
||||||
|
m = self.getMsg('op foo bar')
|
||||||
|
try:
|
||||||
|
self.failUnless(m.command == 'MODE' and
|
||||||
|
m.args == (self.channel, '+oo', 'foo', 'bar'))
|
||||||
|
finally:
|
||||||
|
self.irc.state.supported['MODES'] = 1
|
||||||
|
|
||||||
def testHalfOp(self):
|
def testHalfOp(self):
|
||||||
self.assertError('halfop')
|
self.assertError('halfop')
|
||||||
@ -127,7 +137,10 @@ class ChannelTestCase(ChannelPluginTestCase):
|
|||||||
m.args == (self.channel, '+h', 'foo'))
|
m.args == (self.channel, '+h', 'foo'))
|
||||||
m = self.getMsg('halfop foo bar')
|
m = self.getMsg('halfop foo bar')
|
||||||
self.failUnless(m.command == 'MODE' and
|
self.failUnless(m.command == 'MODE' and
|
||||||
m.args == (self.channel, '+hh', 'foo', 'bar'))
|
m.args == (self.channel, '+h', 'foo'))
|
||||||
|
m = self.irc.takeMsg()
|
||||||
|
self.failUnless(m.command == 'MODE' and
|
||||||
|
m.args == (self.channel, '+h', 'bar'))
|
||||||
|
|
||||||
def testVoice(self):
|
def testVoice(self):
|
||||||
self.assertError('voice')
|
self.assertError('voice')
|
||||||
@ -138,7 +151,10 @@ class ChannelTestCase(ChannelPluginTestCase):
|
|||||||
m.args == (self.channel, '+v', 'foo'))
|
m.args == (self.channel, '+v', 'foo'))
|
||||||
m = self.getMsg('voice foo bar')
|
m = self.getMsg('voice foo bar')
|
||||||
self.failUnless(m.command == 'MODE' and
|
self.failUnless(m.command == 'MODE' and
|
||||||
m.args == (self.channel, '+vv', 'foo', 'bar'))
|
m.args == (self.channel, '+v', 'foo'))
|
||||||
|
m = self.irc.takeMsg()
|
||||||
|
self.failUnless(m.command == 'MODE' and
|
||||||
|
m.args == (self.channel, '+v', 'bar'))
|
||||||
|
|
||||||
def assertBan(self, query, hostmask, **kwargs):
|
def assertBan(self, query, hostmask, **kwargs):
|
||||||
m = self.getMsg(query, **kwargs)
|
m = self.getMsg(query, **kwargs)
|
||||||
|
Loading…
Reference in New Issue
Block a user