mirror of
https://github.com/ncoevoet/ChanTracker.git
synced 2025-04-26 04:51:07 -05:00
some changes related to users tracking and default op status
This commit is contained in:
parent
b341a7c46f
commit
91388d9ad9
42
README.md
42
README.md
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
This supybot plugin keeps records of channel mode changes in a sqlite database and permits management of them over time. It stores affected users, enabling deep searching through them, reviewing actives, editing duration, showing logs, marking/annotating them, etc
|
This supybot plugin keeps records of channel mode changes in a sqlite database and permits management of them over time. It stores affected users, enabling deep searching through them, reviewing actives, editing duration, showing logs, marking/annotating them, etc
|
||||||
|
|
||||||
The plugin is used in various and large channels on freenode ( #bitcoin, #bitcoin-otc, #bitcoin-pricetalk, #defocus, #wrongplanet, + 40 french channels and )
|
The plugin is used in various and large channels on freenode ( #bitcoin, #bitcoin-otc, #bitcoin-pricetalk, #defocus, #wrongplanet, #ubuntu-fr*, + 40 french channels)
|
||||||
|
|
||||||
## Commands ##
|
## Commands ##
|
||||||
|
|
||||||
@ -58,33 +58,50 @@ ChanTracker also allows you to work out which users would be affected by a ban b
|
|||||||
/msg bigbadbot match #myChannel ian <-- will return
|
/msg bigbadbot match #myChannel ian <-- will return
|
||||||
<bigbadbot> [#21 +b ian!*@* by me!~me@example.net expires at 2014-04-13 15:20:03 GMT] "even angrier"
|
<bigbadbot> [#21 +b ian!*@* by me!~me@example.net expires at 2014-04-13 15:20:03 GMT] "even angrier"
|
||||||
|
|
||||||
|
|
||||||
## Settings ##
|
## Settings ##
|
||||||
|
|
||||||
You should increase the ping interval because when the bot joins a channel, it requests lots of data and sometimes the server takes time to answer
|
If you want the bot to manage its own op status, you can change the config value :
|
||||||
|
|
||||||
|
!config supybot.plugins.ChanTracker.doNothingAboutOwnOpStatus False
|
||||||
|
!config channel #myChannel supybot.plugins.ChanTracker.doNothingAboutOwnOpStatus True
|
||||||
|
|
||||||
|
After the 'doNothingAboutOwnOpStatus' changed to False, bot will deop in each channel is in ( if opped ) so take a look at :
|
||||||
|
|
||||||
|
!config supybot.plugins.ChanTracker.keepOp False
|
||||||
|
!config channel #myChannel supybot.plugins.ChanTracker.keepOp True
|
||||||
|
|
||||||
|
You should increase the ping interval because when the bot joins a channel because it requests lots of data and sometimes the server takes time to answer
|
||||||
|
|
||||||
!config supybot.protocols.irc.ping.interval 3600
|
!config supybot.protocols.irc.ping.interval 3600
|
||||||
|
|
||||||
By default, **bot will not stay opped**, but you can configure that globally or per channel:
|
Here list of data requested by the bot at join :
|
||||||
|
|
||||||
!config supybot.plugins.ChanTracker.keepOp False
|
JOIN :#channel
|
||||||
!config channel #myChannel supybot.plugins.ChanTracker.keepOp True
|
MODE :#channel
|
||||||
|
MODE :#channel b
|
||||||
|
MODE :#channel q
|
||||||
|
WHO :#channel
|
||||||
|
WHO #CHANNEL %tnuhiar,42
|
||||||
|
|
||||||
If you don't want the bot to manage its own op status, you can change the config value :
|
and if opped or at first op:
|
||||||
|
|
||||||
!config supybot.plugins.ChanTracker.doNothingAboutOwnOpStatus True
|
|
||||||
!config channel #myChannel supybot.plugins.ChanTracker.doNothingAboutOwnOpStatus False
|
|
||||||
|
|
||||||
|
MODE :#channel e
|
||||||
|
MODE :#channel I
|
||||||
|
|
||||||
The channel modes that will be tracked are currently defined here (qb, and eI if opped -- only ops can see the e and I lists for a channel):
|
The channel modes that will be tracked are currently defined here (qb, and eI if opped -- only ops can see the e and I lists for a channel):
|
||||||
|
|
||||||
!config supybot.plugins.ChanTracker.modesToAsk
|
!config supybot.plugins.ChanTracker.modesToAsk
|
||||||
!config supybot.plugins.ChanTracker.modesToAskWhenOpped
|
!config supybot.plugins.ChanTracker.modesToAskWhenOpped
|
||||||
|
!config channel #myChannel supybot.plugins.ChanTracker.modesToAsk b
|
||||||
|
!config channel #myChannel supybot.plugins.ChanTracker.modesToAskWhenOpped e
|
||||||
|
|
||||||
The command used by the bot to op itself is editable here:
|
The command used by the bot to op itself is editable here:
|
||||||
|
|
||||||
!config supybot.plugins.ChanTracker.opCommand by default it's "CS OP $channel $nick"
|
!config supybot.plugins.ChanTracker.opCommand by default it's "CS OP $channel $nick"
|
||||||
|
|
||||||
where $channel and $nick will be replaced by targeted channel and bot's nick at runtime
|
Where $channel and $nick will be replaced by targeted channel and bot's nick at runtime, so you could replace it with :
|
||||||
|
|
||||||
|
!config supybot.plugins.ChanTracker.opCommand "PRIVMSG ChanServ :OP $channel $nick"
|
||||||
|
|
||||||
For more readable date information in output, you should change this:
|
For more readable date information in output, you should change this:
|
||||||
|
|
||||||
@ -132,7 +149,6 @@ By default, if the bot is asked to set a ban (+b), it will also kick affected us
|
|||||||
|
|
||||||
The bot will remove exception modes (that is exempt e, or invite exempt I) for people banned if 'doActionAgainstAffected' for given channel is True.
|
The bot will remove exception modes (that is exempt e, or invite exempt I) for people banned if 'doActionAgainstAffected' for given channel is True.
|
||||||
|
|
||||||
|
|
||||||
## Channel Protection ##
|
## Channel Protection ##
|
||||||
|
|
||||||
The plugin has a lot of built-in channel protection features that can be enabled either individually and per channel, or globally:
|
The plugin has a lot of built-in channel protection features that can be enabled either individually and per channel, or globally:
|
||||||
@ -182,7 +198,7 @@ Example: not flooding: catch a wave of bots which sends the same message from di
|
|||||||
Example: a user repeating the same thing: (use repeat detection rather than massRepeat for this):
|
Example: a user repeating the same thing: (use repeat detection rather than massRepeat for this):
|
||||||
|
|
||||||
!config channel #channel supybot.plugins.ChanTracker.repeatPermit 3 <-- triggered after 3 similar message
|
!config channel #channel supybot.plugins.ChanTracker.repeatPermit 3 <-- triggered after 3 similar message
|
||||||
!config channel #channel supybot.plugins.ChanTracker.repeatLife 40 <-- keep previous messages during 60 seconds
|
!config channel #channel supybot.plugins.ChanTracker.repeatLife 40 <-- keep previous messages during 40 seconds
|
||||||
!config channel #channel supybot.plugins.ChanTracker.repeatPercent 0.88 <-- 1.00 for identical message, don't go too lower, you will get false positive
|
!config channel #channel supybot.plugins.ChanTracker.repeatPercent 0.88 <-- 1.00 for identical message, don't go too lower, you will get false positive
|
||||||
!config channel #channel supybot.plugins.ChanTracker.repeatMode q <-- quiet
|
!config channel #channel supybot.plugins.ChanTracker.repeatMode q <-- quiet
|
||||||
!config channel #channel supybot.plugins.ChanTracker.repeatDuration 180 <-- for 3 minutes
|
!config channel #channel supybot.plugins.ChanTracker.repeatDuration 180 <-- for 3 minutes
|
||||||
|
13
config.py
13
config.py
@ -43,7 +43,7 @@ def configure(advanced):
|
|||||||
ChanTracker = conf.registerPlugin('ChanTracker')
|
ChanTracker = conf.registerPlugin('ChanTracker')
|
||||||
|
|
||||||
conf.registerGlobalValue(ChanTracker, 'pool',
|
conf.registerGlobalValue(ChanTracker, 'pool',
|
||||||
registry.Integer(60, """delay between two checks about mode removal, in seconds. Note, check is also based on irc activity, so removal may be delayed a bit"""))
|
registry.Integer(60, """delay between two checks about mode removal, in seconds. Note, check is also based on irc activity, so removal may be delayed a bit, -1 to disable delay"""))
|
||||||
|
|
||||||
conf.registerGlobalValue(ChanTracker, 'CAPS',
|
conf.registerGlobalValue(ChanTracker, 'CAPS',
|
||||||
registry.CommaSeparatedListOfStrings(['account-notify','extended-join'], """CAP asked of ircd that permits tracking username and account changes"""))
|
registry.CommaSeparatedListOfStrings(['account-notify','extended-join'], """CAP asked of ircd that permits tracking username and account changes"""))
|
||||||
@ -87,7 +87,7 @@ conf.registerChannelValue(ChanTracker, 'announceWithNotice',
|
|||||||
registry.Boolean(False,"""use NOTICE instead of PRIVMSG to logChannel"""))
|
registry.Boolean(False,"""use NOTICE instead of PRIVMSG to logChannel"""))
|
||||||
|
|
||||||
conf.registerChannelValue(ChanTracker, 'announceModes',
|
conf.registerChannelValue(ChanTracker, 'announceModes',
|
||||||
registry.CommaSeparatedListOfStrings(['b','q','e','I','r','l','v','o','h','k','n','t','F','i','t'],"""announce modes listed to logChannel"""))
|
registry.CommaSeparatedListOfStrings(['b','q','e','I','r','l','v','o','h','k','n','t','F','i','t','s','n','c','C'],"""announce modes listed to logChannel"""))
|
||||||
|
|
||||||
conf.registerChannelValue(ChanTracker, 'announceModeSync',
|
conf.registerChannelValue(ChanTracker, 'announceModeSync',
|
||||||
registry.Boolean(False,"""announce to logChannel that synchronisation of channel modes to tracking database has completed"""))
|
registry.Boolean(False,"""announce to logChannel that synchronisation of channel modes to tracking database has completed"""))
|
||||||
@ -125,7 +125,7 @@ conf.registerChannelValue(ChanTracker, 'announceCtcp',
|
|||||||
# others settings
|
# others settings
|
||||||
|
|
||||||
conf.registerChannelValue(ChanTracker, 'doNothingAboutOwnOpStatus',
|
conf.registerChannelValue(ChanTracker, 'doNothingAboutOwnOpStatus',
|
||||||
registry.Boolean(False, """bot will never try to change his own op status"""))
|
registry.Boolean(True, """bot will never try to change his own op status"""))
|
||||||
|
|
||||||
conf.registerChannelValue(ChanTracker, 'keepOp',
|
conf.registerChannelValue(ChanTracker, 'keepOp',
|
||||||
registry.Boolean(False, """bot stays opped"""))
|
registry.Boolean(False, """bot stays opped"""))
|
||||||
@ -137,11 +137,14 @@ conf.registerChannelValue(ChanTracker, 'kickMode',
|
|||||||
conf.registerChannelValue(ChanTracker, 'kickMessage',
|
conf.registerChannelValue(ChanTracker, 'kickMessage',
|
||||||
registry.String("You are banned from this channel", """bot kick reason"""))
|
registry.String("You are banned from this channel", """bot kick reason"""))
|
||||||
|
|
||||||
|
conf.registerChannelValue(ChanTracker, 'trackAffected',
|
||||||
|
registry.Boolean(True, """bot tracks affected users by mode change, if you encounters 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"""))
|
||||||
|
|
||||||
conf.registerChannelValue(ChanTracker, 'doActionAgainstAffected',
|
conf.registerChannelValue(ChanTracker, 'doActionAgainstAffected',
|
||||||
registry.Boolean(True, """devoice, deop, dehalfop user affected by a mode change"""))
|
registry.Boolean(True, """devoice, deop, dehalfop user affected by a mode change"""))
|
||||||
|
|
||||||
conf.registerChannelValue(ChanTracker, 'useChannelBansForPermanentBan',
|
conf.registerChannelValue(ChanTracker, 'useChannelBansForPermanentBan',
|
||||||
registry.Boolean(True, """when users join the channel, check if the match a permanent ban"""))
|
registry.Boolean(True, """when users join the channel, check if user matchs a permanent ban setted in Channel plugin"""))
|
||||||
|
|
||||||
conf.registerChannelValue(ChanTracker, 'addKickMessageInComment',
|
conf.registerChannelValue(ChanTracker, 'addKickMessageInComment',
|
||||||
registry.Boolean(False, """add kick message to mode comment in tracking database"""))
|
registry.Boolean(False, """add kick message to mode comment in tracking database"""))
|
||||||
@ -150,7 +153,7 @@ conf.registerChannelValue(ChanTracker, 'askOpAboutMode',
|
|||||||
registry.Boolean(False,"""In a private message, ask the op who added a mode about the duration of the ban and a comment on why it was set"""))
|
registry.Boolean(False,"""In a private message, ask the op who added a mode about the duration of the ban and a comment on why it was set"""))
|
||||||
|
|
||||||
conf.registerChannelValue(ChanTracker, 'checkEvade',
|
conf.registerChannelValue(ChanTracker, 'checkEvade',
|
||||||
registry.Boolean(True,"""bot will apply same duration and mode than the ban evaded, currently only work when someone identify to an account, and has ip computed"""))
|
registry.Boolean(True,"""bot will apply same duration and mode than the ban evaded, currently only work when someone identify to an account, and the account is banned $a:account, and has ip computed"""))
|
||||||
|
|
||||||
conf.registerChannelValue(ChanTracker, 'useChanServForQuiets',
|
conf.registerChannelValue(ChanTracker, 'useChanServForQuiets',
|
||||||
registry.Boolean(False,"""if bot is not opped, use services for quiet / unquiets"""))
|
registry.Boolean(False,"""if bot is not opped, use services for quiet / unquiets"""))
|
||||||
|
@ -2691,7 +2691,7 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
item = None
|
item = None
|
||||||
if '+' in mode:
|
if '+' in mode:
|
||||||
if m in self.registryValue('modesToAskWhenOpped',channel=channel) or m in self.registryValue('modesToAsk',channel=channel):
|
if m in self.registryValue('modesToAskWhenOpped',channel=channel) or m in self.registryValue('modesToAsk',channel=channel):
|
||||||
item = chan.addItem(m,value,msg.prefix,now,self.getDb(irc.network))
|
item = chan.addItem(m,value,msg.prefix,now,self.getDb(irc.network),self.registryValue('trackAffected',channel=channel))
|
||||||
if msg.nick != irc.nick and self.registryValue('askOpAboutMode',channel=channel) and ircdb.checkCapability(msg.prefix, '%s,op' % channel):
|
if msg.nick != irc.nick and self.registryValue('askOpAboutMode',channel=channel) and ircdb.checkCapability(msg.prefix, '%s,op' % channel):
|
||||||
data = [item.uid,m,value,channel,msg.prefix,'For [#%s +%s %s in %s - %s user(s)] type <duration> <reason>, you have 3 minutes' % (item.uid,m,value,channel,len(item.affects)),False]
|
data = [item.uid,m,value,channel,msg.prefix,'For [#%s +%s %s in %s - %s user(s)] type <duration> <reason>, you have 3 minutes' % (item.uid,m,value,channel,len(item.affects)),False]
|
||||||
self.addToAsked (irc,msg.prefix,data,msg.nick)
|
self.addToAsked (irc,msg.prefix,data,msg.nick)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user