takeRevengeOnOps.

This commit is contained in:
Jeremy Fincher 2004-04-05 10:15:05 +00:00
parent 4697f61be2
commit 8979bc8c3d
2 changed files with 15 additions and 2 deletions

View File

@ -1,3 +1,9 @@
* Added supybot.plugins.Enforcer.takeRevengeOnOps, which makes
the bot even take revenge on #channel,ops who try to violate the
channel configuration. Of course, such people can change the
channel configuration to their bidding, but it's a decent
protection against errant botscripts or something.
* Added supybot.plugins.Channels.alwaysRejoin, to make the bot * Added supybot.plugins.Channels.alwaysRejoin, to make the bot
always rejoin when it's kicked. always rejoin when it's kicked.

View File

@ -82,6 +82,10 @@ conf.registerChannelValue(conf.supybot.plugins.Enforcer, 'takeRevenge',
registry.Boolean(False, """Determines whether the bot will take revenge on registry.Boolean(False, """Determines whether the bot will take revenge on
people who do things it doesn't like (somewhat like 'bitch mode' in other people who do things it doesn't like (somewhat like 'bitch mode' in other
IRC bots).""")) IRC bots)."""))
conf.registerChannelValue(conf.supybot.plugins.Enforcer, 'takeRevengeOnOps',
registry.Boolean(False, """Determines whether the bot will even take
revenge on ops (people with the #channel,op capability) who violate the
channel configuration."""))
conf.registerChannelValue(conf.supybot.plugins.Enforcer, 'cycleToGetOps', conf.registerChannelValue(conf.supybot.plugins.Enforcer, 'cycleToGetOps',
registry.Boolean(True, """Determines whether the bot will cycle the channel registry.Boolean(True, """Determines whether the bot will cycle the channel
if it doesn't have ops and there's no one else in the channel.""")) if it doesn't have ops and there's no one else in the channel."""))
@ -165,7 +169,8 @@ class Enforcer(callbacks.Privmsg):
channel = msg.args[0] channel = msg.args[0]
kicked = msg.args[1].split(',') kicked = msg.args[1].split(',')
deop = False deop = False
if not self._isPowerful(irc, msg): if not self._isPowerful(irc, msg) or \
self.registryValue('takeRevengeOnOps', channel):
for nick in kicked: for nick in kicked:
hostmask = irc.state.nickToHostmask(nick) hostmask = irc.state.nickToHostmask(nick)
if nick == irc.nick: if nick == irc.nick:
@ -185,7 +190,9 @@ class Enforcer(callbacks.Privmsg):
def doMode(self, irc, msg): def doMode(self, irc, msg):
channel = msg.args[0] channel = msg.args[0]
chanserv = self.registryValue('ChanServ', channel) chanserv = self.registryValue('ChanServ', channel)
if not ircutils.isChannel(channel) or self._isPowerful(irc, msg): if not ircutils.isChannel(channel) or \
(self._isPowerful(irc, msg) and \
not self.registryValue('takeRevengeOnOps', channel):
return return
for (mode, value) in ircutils.separateModes(msg.args[1:]): for (mode, value) in ircutils.separateModes(msg.args[1:]):
if value == msg.nick: if value == msg.nick: