mirror of
https://github.com/Mikaela/Limnoria.git
synced 2025-02-17 06:00:42 +01:00
Fixed a bug and caught some interesting issues with strictRfc. Still need
to look into Channel.kban
This commit is contained in:
parent
d9d1aefac3
commit
90a0529696
@ -362,6 +362,24 @@ class Channel(callbacks.Privmsg):
|
||||
irc.replySuccess()
|
||||
unlobotomize = privmsgs.checkChannelCapability(unlobotomize, 'op')
|
||||
|
||||
def _getBanmask(self, irc, arg):
|
||||
if ircutils.isNick(arg):
|
||||
if not conf.supybot.protocols.irc.strictRfc():
|
||||
try:
|
||||
hostmask = irc.state.nickToHostmask(arg)
|
||||
banmask = ircutils.banmask(hostmask)
|
||||
except KeyError:
|
||||
if ircutils.isUserHostmask(arg):
|
||||
banmask = arg
|
||||
else:
|
||||
hostmask = irc.state.nickToHostmask(arg)
|
||||
banmask = ircutils.banmask(hostmask)
|
||||
elif ircutils.isUserHostmask(arg):
|
||||
banmask = arg
|
||||
else:
|
||||
banmask = None
|
||||
return banmask
|
||||
|
||||
def permban(self, irc, msg, args, channel):
|
||||
"""[<channel>] <nick|hostmask>
|
||||
|
||||
@ -371,11 +389,8 @@ class Channel(callbacks.Privmsg):
|
||||
necessary if the message isn't sent in the channel itself.
|
||||
"""
|
||||
arg = privmsgs.getArgs(args)
|
||||
if ircutils.isNick(arg):
|
||||
banmask = ircutils.banmask(irc.state.nickToHostmask(arg))
|
||||
elif ircutils.isUserHostmask(arg):
|
||||
banmask = arg
|
||||
else:
|
||||
banmask = self._getBanmask(irc, arg)
|
||||
if banmask is None:
|
||||
irc.error('That\'s not a valid nick or hostmask.')
|
||||
return
|
||||
c = ircdb.channels.getChannel(channel)
|
||||
@ -407,11 +422,8 @@ class Channel(callbacks.Privmsg):
|
||||
the channel itself.
|
||||
"""
|
||||
arg = privmsgs.getArgs(args)
|
||||
if ircutils.isNick(arg):
|
||||
banmask = ircutils.banmask(irc.state.nickToHostmask(arg))
|
||||
elif ircutils.isUserHostmask(arg):
|
||||
banmask = arg
|
||||
else:
|
||||
banmask = self._getBanmask(irc, arg)
|
||||
if banmask is None:
|
||||
irc.error('That\'s not a valid nick or hostmask.')
|
||||
return
|
||||
c = ircdb.channels.getChannel(channel)
|
||||
@ -541,9 +553,12 @@ class Channel(callbacks.Privmsg):
|
||||
"""
|
||||
capability = privmsgs.getArgs(args)
|
||||
c = ircdb.channels.getChannel(channel)
|
||||
c.removeCapability(capability)
|
||||
ircdb.channels.setChannel(channel, c)
|
||||
irc.replySuccess()
|
||||
try:
|
||||
c.removeCapability(capability)
|
||||
ircdb.channels.setChannel(channel, c)
|
||||
irc.replySuccess()
|
||||
except KeyError:
|
||||
irc.error('I do not know about that channel capability.')
|
||||
unsetcapability = privmsgs.checkChannelCapability(unsetcapability, 'op')
|
||||
|
||||
def capabilities(self, irc, msg, args):
|
||||
|
@ -56,6 +56,9 @@ class ChannelTestCase(ChannelPluginTestCase, PluginDocumentation):
|
||||
|
||||
def testCapabilities(self):
|
||||
self.assertNotError('channel capabilities')
|
||||
self.assertNotError('channel setcapability -foo')
|
||||
self.assertNotError('channel unsetcapability -foo')
|
||||
self.assertError('channel unsetcapability -foo')
|
||||
|
||||
def testUnban(self):
|
||||
self.assertError('unban foo!bar@baz')
|
||||
|
Loading…
x
Reference in New Issue
Block a user