mirror of
https://github.com/ncoevoet/ChanTracker.git
synced 2025-04-25 20:41:19 -05:00
added ability when bot quiets/bot has been asked to quiet someone to send a notice or privmsg to targeted users
This commit is contained in:
parent
a59061cfde
commit
3b52169de2
12
config.py
12
config.py
@ -57,6 +57,9 @@ conf.registerGlobalValue(ChanTracker, 'quietCommand',
|
||||
conf.registerGlobalValue(ChanTracker, 'unquietCommand',
|
||||
registry.String("CS UNQUIET $channel $hostmask","""command issued to unquiet a user $channel and $hostmask will be replaced at runtime"""))
|
||||
|
||||
conf.registerGlobalValue(ChanTracker, 'announceNagInterval',
|
||||
registry.Integer(300,"""interval between two check about announceNagMode, this setting is global."""))
|
||||
|
||||
#now per channel
|
||||
|
||||
conf.registerChannelValue(ChanTracker, 'opCommand',
|
||||
@ -131,9 +134,6 @@ conf.registerChannelValue(ChanTracker, 'announceCtcp',
|
||||
conf.registerChannelValue(ChanTracker, 'announceNagMode',
|
||||
registry.CommaSeparatedListOfStrings([], """bot will announce that channel has such mode at announceNagInterval"""))
|
||||
|
||||
conf.registerGlobalValue(ChanTracker, 'announceNagInterval',
|
||||
registry.Integer(300,"""interval between two check about announceNagMode, this setting is global."""))
|
||||
|
||||
# others settings
|
||||
|
||||
conf.registerChannelValue(ChanTracker, 'doNothingAboutOwnOpStatus',
|
||||
@ -149,6 +149,12 @@ conf.registerChannelValue(ChanTracker, 'kickMode',
|
||||
conf.registerChannelValue(ChanTracker, 'kickMessage',
|
||||
registry.String("You are banned from this channel", """bot kick reason"""))
|
||||
|
||||
conf.registerChannelValue(ChanTracker, 'quietMessage',
|
||||
registry.String("", """leave empty if you don't want the bot to tell something to the user when he has been quieted ( by/via the bot ), in any case, if channel is under attack: bot will not send message"""))
|
||||
|
||||
conf.registerChannelValue(ChanTracker, 'quietNotice',
|
||||
registry.Boolean(False, """if False, private message is used, if 'quietMessage' is not empty"""))
|
||||
|
||||
conf.registerChannelValue(ChanTracker, 'trackAffected',
|
||||
registry.Boolean(True, """bot tracks affected users by mode change, if you encounter too much lags/cpu usage, you could disable this feature, but bot will never kick again affected users or remove voice/op/exempt etc of affected users"""))
|
||||
|
||||
|
13
plugin.py
13
plugin.py
@ -851,6 +851,7 @@ class Chan (object):
|
||||
self.repeatLogs = ircutils.IrcDict()
|
||||
self.nicks = ircutils.IrcDict()
|
||||
self.netsplit = False
|
||||
self.attacked = False
|
||||
|
||||
def isWrong (self,pattern):
|
||||
if 'bad' in self.spam and pattern in self.spam['bad']:
|
||||
@ -3017,6 +3018,12 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
||||
chan.queue.enqueue(('-h',nick))
|
||||
if nick in irc.state.channels[channel].voices and not nick == irc.nick:
|
||||
chan.queue.enqueue(('-v',nick))
|
||||
if m == 'q' and self.registryValue('quietMessage',channel=channel).length and not chan.attacked:
|
||||
qm = self.registryValue('quietMessage',channel=channel)
|
||||
if self.registryValue('quietNotice',channel=channel):
|
||||
irc.queueMsg(ircmsgs.notice(nick,qm))
|
||||
else:
|
||||
irc.queueMsg(ircmsgs.privmsg(nick,qm))
|
||||
if m == 'b':
|
||||
self.hasExtendedSharedBan(irc,channel,value)
|
||||
# bot just got op
|
||||
@ -3227,13 +3234,15 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
||||
def _isBad (self,irc,channel,key):
|
||||
b = self._isSomething(irc,channel,key,'bad')
|
||||
if b:
|
||||
if self._isSomething(irc,channel,channel,'attack'):
|
||||
chan = self.getChan(irc,channel)
|
||||
if self._isSomething(irc,channel,channel,'attack') and not chan.attacked:
|
||||
# if number of bad users raise the allowed limit, bot has to set channel attackmode
|
||||
chan = self.getChan(irc,channel)
|
||||
chan.attacked = True
|
||||
chan.action.enqueue(ircmsgs.IrcMsg('MODE %s %s' % (channel,self.registryValue('attackMode',channel=channel))))
|
||||
def unAttack():
|
||||
if channel in list(irc.state.channels.keys()):
|
||||
chan.action.enqueue(ircmsgs.IrcMsg('MODE %s %s' % (channel,self.registryValue('attackUnMode',channel=channel))))
|
||||
chan.attacked = False
|
||||
schedule.addEvent(unAttack,float(time.time()+self.registryValue('attackDuration',channel=channel)))
|
||||
return b
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user