The active chatter (+v) flag is only given if a person has said more than X (x is a number) number of lines on a channel. My script only counts channel messages and NOT channel actions or channel notices.
Furthermore, if a user is kicked from the channel, parts the channel, quits irc or any of the mention (meaning is not on the channel anymore) his stats will be set to 0.
Eg: If you type 20 lines, and part the channel and then rejoin back in the channel (and haven't said anything yet after you joined), you would have typed 0 lines in the bots record.
Furthermore, the unactive chatter (-v) flag uses getchanidle and devoices all voices who have been idle (haven't said anything in the channel) for more than X number of minutes.
This is basically the concept behind this script.
-------
For scripts kicking voiced users, you can change your scripts NOT to kick voiced users, by adding a line like this in the start of the procs.
Code: Select all
if {[isvoice $nick $chan]} { return 0 }
To normal users on IRC the bot might look intelligent like, AI (with this script) but the script has a very simple and clear concept.
*** If a voiced user is kicked and if he rejoins you can voice him again, you just need to bind on kick, check if the user was voiced, and add him to an array (remember to remove the nick from the array with a timer whenever you like). Then bind on join and check the array for the nick, if it matches, voice that user.
--------------
For the latest version of this script:
I was thinking to maybe integrate the number of X lines said, within a certain amount of time. Say voice the user if he says 30 lines in less than or equal to 60 minutes (lines:minutes --> 30:60).
But I tested it, and unfortunately if the script is activated on a large number of channels, or if some of the channels are very active (have alot of users talking), the bot would be running alot of timers --->> will slow it down and saturate alot of memory -->> which is bad.
-->> so have to think of another method to accomplish this.