#################################################### # WindropClan @ http://windrop.clan.su # Автор: Vladislav # Версия: 1.1 # Описание: Скрипт раздает + тем юзерам, кто произнес в канале определенное число строк. # Также снимает + с тех, кто молчит на канале в течении указанного времени. # Включение на канале: !set +activechatter #################################################### namespace eval activechatter { setudef flag [namespace tail [namespace current]] # Сколько строк нужно написать для получения +: variable lines 3 # Сколько минут можно молчать с +: variable time 15 # Список ников которым не давать +: variable avexempt {ник1 ник2} # Список ников у которых не снимать +: variable dvexempt {ник1 ник2} # Этот список должен быть пустым: variable nicks {} bind pubm - * [namespace current]::add bind cron - "*/5 * * * *" [namespace current]::del proc add {nick host hand chan text} { variable avexempt; variable nicks; variable lines if {![channel get $chan [namespace tail [namespace current]]]} {return} if {[isbotnick $nick] || [isop $nick $chan] || [ishalfop $nick $chan] || [isvoice $nick $chan] || [lsearch -exact -nocase $avexempt $nick] != "-1"} {return} set inick 0; set newnicks [list]; foreach line $nicks { if {[string equal -noc $nick [lindex $line 0]] && [string equal -noc $chan [lindex $line 1]]} {set inick [lindex $line 2]} {lappend newnicks $line} } if {[expr $inick+1] >= $lines} {set nicks $newnicks; if {[isop $::botnick $chan] || [ishalfop $::botnick $chan]} {putserv "MODE $chan +v $nick"}; return} set nicks $newnicks; lappend nicks [list $nick $chan [expr $inick+1]] } proc del {min hour day month weekday} { variable time; variable dvexempt foreach chan [channels] { if {(![isop $::botnick $chan] && ![ishalfop $::botnick $chan]) || ![channel get $chan [namespace tail [namespace current]]]} {continue} foreach nick [chanlist $chan] { if {[isvoice $nick $chan] && [getchanidle $nick $chan] >= $time && [lsearch -exact -nocase $dvexempt $nick] == "-1"} {putserv "MODE $chan -v $nick"} } } } }