# http://myftp.net.ru (TCL/TK для eggdrop/windrop)
#
###################################################################################
if { ![info exists egglib(ver)] } {
putlog "***********************************************"
putlog " egglib_pub NOT FOUND !"
putlog " Download last version of egglib_pub here:"
putlog " http://eggdrop.org.ru/scripts/egglib_pub.zip"
putlog "***********************************************"
return
}
if { ![info exists egglib(ver)] || [expr {$egglib(ver) < 1.2}] } {
putlog "***********************************************"
putlog " egglib_pub NOT FOUND OR VERSION IS TOO OLD!"
putlog " Download last version of egglib_pub here:"
putlog " http://eggdrop.org.ru/scripts/egglib_pub.zip"
putlog "***********************************************"
}
##################################UNBINDS BEGIN HERE#######$$##########################
namespace eval ar {}
foreach bind [binds "ar:*"] { catch {unbind [lindex $bind 0] [lindex $bind 1] [lindex $bind 2] [lindex $bind 4]} }
foreach cname [array names ar *] { catch {unset ar($cname) } }
##################################BINDS BEGINS HERE####################################
bind pubm - "% *" ar:check
bind CTCP - ACTION ar:check
bind raw - "322" ar:arsearch
bind msg m|m !log ar:log
##################################CONFIG BEGINS HERE###################################
# Оповещать ли нотисом о предположительной рекламе? (1-Да 2-Нет)
set ar(advnot) 1
# Оповещать ли нотисом о бане за рекламу? (1-Да 2-Нет)
set ar(bannot) 1
# Хендл(ы) кому посылать отчет нотисом (он должен быть в юзерлист бота)
set ar(handlist) "tigra"
# Ник(и) кому посылать отчет нотисом
set ar(nicklist) "tigra"
# Кому слать нотисы о предположительной рекламе (1 - только никам, 2 - только хэндлам, 3 - и тем и тем)
set ar(mlist) 2
# Официальные каналы сети
set ar(off) "#abuse #help #tigra"
# Флаг исключения с которым не банит пользователя
set ar(ff) "f"
# Путь к файлу с логом сообщений о бане за рекламу
set ar(logfile) "logs/adversting.log"
# Время выставляемого бана (в минутах)
set ar(bantime) 20160
# Причина бана
set ar(breason) "Реклама каналалов запрещена!Бан на 14 дней."
# Версия скрипта
set ar(ver) "v3.1 WeNet Edition"
# Флаг включить/выключенть скрипт
setudef flag ar
#Автор скрипта
set ar(author) "Zelik <k-lined@mail.ru>"
#########################################################################################
#спецсимволы на { }
proc ar:checkspace {t} {
regsub -all -- {\!} $t { } t; regsub -all -- {\"} $t { } t; regsub -all -- {\_} $t { } t
regsub -all -- {\.} $t { } t; regsub -all -- {\%} $t { } t; regsub -all -- {\^} $t { } t
regsub -all -- {\&} $t { } t; regsub -all -- {\*} $t { } t; regsub -all -- {\(} $t { } t
regsub -all -- {\)} $t { } t; regsub -all -- {\}} $t { } t; regsub -all -- {\{} $t { } t
regsub -all -- {\]} $t { } t; regsub -all -- {\[} $t { } t; regsub -all -- {\:} $t { } t
regsub -all -- {\;} $t { } t; regsub -all -- {\'} $t { } t; regsub -all -- {\`} $t { } t
regsub -all -- {\~} $t { } t; regsub -all -- {\+} $t { } t; regsub -all -- {\=} $t { } t
regsub -all -- {\-} $t { } t; regsub -all -- {\|} $t { } t; regsub -all -- {\\} $t { } t
regsub -all -- {\?} $t { } t; regsub -all -- {\,} $t { } t; regsub -all -- {\<} $t { } t
regsub -all -- {\>} $t { } t; regsub -all -- {\/} $t { } t; regsub -all -- {\@} $t { } t
regsub -all -- {\$} $t { } t; regsub -all -- {\*} $t { } t
return $t
}
#спецсимволы на {}
proc ar:checkvoid {t} {
regsub -all -- {\!} $t {} t; regsub -all -- {\"} $t {} t; regsub -all -- {\_} $t {} t
regsub -all -- {\.} $t {} t; regsub -all -- {\%} $t {} t; regsub -all -- {\^} $t {} t
regsub -all -- {\&} $t {} t; regsub -all -- {\*} $t {} t; regsub -all -- {\(} $t {} t
regsub -all -- {\)} $t {} t; regsub -all -- {\}} $t {} t; regsub -all -- {\{} $t {} t
regsub -all -- {\]} $t {} t; regsub -all -- {\[} $t {} t; regsub -all -- {\:} $t {} t
regsub -all -- {\;} $t {} t; regsub -all -- {\'} $t {} t; regsub -all -- {\`} $t {} t
regsub -all -- {\~} $t {} t; regsub -all -- {\+} $t {} t; regsub -all -- {\=} $t {} t
regsub -all -- {\-} $t {} t; regsub -all -- {\|} $t {} t; regsub -all -- {\\} $t {} t
regsub -all -- {\?} $t {} t; regsub -all -- {\,} $t {} t; regsub -all -- {\<} $t {} t
regsub -all -- {\>} $t {} t; regsub -all -- {\/} $t {} t; regsub -all -- {\@} $t {} t
regsub -all -- {\$} $t {} t; regsub -all -- {\*} $t {} t
return $t
}
#цвета нам ненужны
proc ad:remcolors {t} {
regsub -all -- {\003(\d){0,2}(,){0,1}(\d){0,2}} $t {} t
regsub -all -- {\037} $t {} t; regsub -all -- {\002} $t {} t
regsub -all -- {\026} $t {} t; regsub -all -- {\017} $t {} t
return $t
}
#удаляем из текста "разрешённые" каналы
proc ar:offcheck {t offchan} {
global ar
set offchan [::egglib::tolower $offchan]
set t [string tolower $t]
regsub -all -- $offchan $t {} t
foreach ch $ar(off) {
regsub -all -- $ch $t {} t
}
return $t
}
#смотрим и выделяем из текста слова с #
proc ar:chancheck {t} {
global ar
set ar(chanstring) ""
foreach ch $t {
if { $ch != "#" } {
if {[string match "#*" $ch]} {
lappend ar(chanstring) $ch
}
}
}
return $ar(chanstring)
}
#процедура исполняющаа сопсно все поисковые ф-ции
proc ar:advcheck {t} {
global ar
foreach ch $t {
set ar(cmd) "LIST $ch"
putquick "$ar(cmd)"
}
return 1;
}
#делаем маску бана
proc ar:banmask {t} {
global ar
regsub -all -- {\~} $t {} t
set splithost [split $t @]
set ip [lindex $splithost 1]
set t "*!*@$ip"
return $t
}
#процедура поиска каналов
proc ar:arsearch {from key text} {
global ar
#уже забанили, больше проверять не будем
# set ar(channel) ""
# if {$ar(banned) == 1} { return }
#сопсно ищем названия каналов и добавляем их в переменную
if { [regexp -nocase -- {[^\ ]+\ \#[^\ ]*\ [^\ ]+\ :\[.+\].*} $text] } {
if { [regexp -nocase -- {[^\ ]+\ (\#[^\ ]*)\ ([^\ ]+)\ :\[(.+)\].*} $text trash chan users mode] } {
set chan [string trim $chan]
if { $chan != "" } {
lappend ar(channel) [list $chan]
}
}
} else {
if { [regexp -nocase -- {[^\ ]+\ (\#[^\ ]*)\ ([^\ ]+)\ :.*} $text trash chan users] } {
set chan [string trim $chan]
if { $chan != "" } {
lappend ar(channel) [list $chan]
}
}
}
#ну, если мы ничего не нашли, то увы.
if { $ar(channel) == "" } { return }
#если нашли, то наказываем негодяя! шаманим с маской бана
set ar(bmask) [ar:banmask $ar(bhost)]
#а теперь баним и кикаем
newchanban $ar(bchan) $ar(bmask) "ANTIADV" $ar(breason) $ar(bantime)
putkick $ar(bchan) $ar(bnick) $ar(breason)
set reason "ban"
ar:arinfo $reason
#процедура записи бана в лог-файл
putlog "\[ANTIREKLAMA\] BAN: $ar(bnick) $ar(bmask) at $ar(bchan) for \[$ar(enntext)\]"
set logfile [open "$ar(logfile)" a+]
regsub -all -- {$ar(bchan)} {$ar(btext)} {\002\0034$ar(bchan)\0035\002} ar(btext
puts $logfile "$ar(bnick) was banned on $ar(bchan) at [ctime [unixtime]] for text: $ar(btext)"
set ar(banned) 1
close $logfile
return 1;
}
#кидаем предупреждения
proc ar:arinfo {reason} {
global ar
set ar(infolist) ""
#смотрим кому кидать нотисы
#только никам
if {$ar(mlist) == 1} {
set ar(infolist) $ar(nicklist)
}
#только хэндам
if {$ar(mlist) == 2} {
foreach hd $ar(handlist) {
set rnick [hand2nick $hd]
lappend ar(infolist) [list $rnick]
}
}
#и тем и тем
if {$ar(mlist) == 3} {
set ar(infolist) $ar(nicklist)
foreach hd $ar(handlist) {
set rnick [hand2nick $hd]
lappend ar(infolist) [list $rnick]
}
}
foreach infonick $ar(infolist) {
if {$reason == "noop"} {
putserv "NOTICE $infonick :\0034$ar(bnick)!$ar(bhost)\0033 на канале\0035\002 $ar(bchan)\002\0033 произносит подозрительную фразу: \002\0032$ar(enntext)\0033\002, но у бота нет опа на этом канале."
}
if {$reason == "friend"} {
putserv "NOTICE $infonick :\0034$ar(bnick)!$ar(bhost)\0033 на канале\0035\002 $ar(bchan)\002\0033 произносит подозрительную фразу: \002\0032$ar(enntext)\0033\002, но он является другом бота."
}
if {$reason == "op"} {
putserv "NOTICE $infonick :\0034$ar(bnick)!$ar(bhost)\0033 на канале\0035\002 $ar(bchan)\002\0033 произносит подозрительную фразу: \002\0032$ar(enntext)\0033\002, но он является опом этого канала."
}
if {$reason == "no"} {
putserv "NOTICE $infonick :\0034$ar(bnick)!$ar(bhost)\0033 на канале\0035\002 $ar(bchan)\002\0033 произносит подозрительную фразу: \002\0032$ar(enntext)."
}
if {$reason == "ban"} {
putserv "NOTICE $infonick :\0034$ar(bnick)!$ar(bhost)\0033 был забанен на канале\0035\002 $ar(bchan)\002\0033 за подозрительную фразу: \002\0032$ar(enntext)."
}
}
}
#главная процедура проверки текста
proc ar:check {nick host hand chan text {text1 ""}} {
global ar
#а текст то есть?
if {$text1 != ""} { set text $text1 }
#a есть ли флаг?
if {![channel get $chan ar]} return
#а есть ли символ #
if {![string match "*#*" $text]} { return }
set ar(enntext) $text
#удаляем цвета
set text [ad:remcolors $text]
#да символ есть будем работать со строкой
regsub -all -- {\*} $text {} text
regsub -all -- {#} $text { #} text
set text [string tolower $text]
#инфа о юзере вызвавшем триггер
set ar(banned) "0"
set ar(bchan) "$chan"
set ar(bhost) "$host"
set ar(bnick) "$nick"
set ar(bhand) "$hand"
set ar(btext) "$text"
#работаем с текстом, удаляем цвета
set worktext [string tolower $text]
set worktext [ar:offcheck $text $chan]
#после выбирания официальных каналов делаем проверку на целесообразность дальнейших действий
if {![string match "*#*" $worktext]} { return }
#бот оп на канале?
if {![botisop $chan]} {
if {$ar(advnot) == 1} {
set reason "noop"
ar:arinfo $reason
return
}
}
#а не друг ли злодей?
if { [matchattr $hand $ar(ff) ]} {
if {$ar(advnot) == 1} {
set reason "friend"
ar:arinfo $reason
return
}
}
#а не оп ли это сказал?
if { [isop $nick $chan] } {
if {$ar(advnot) == 1} {
set reason "op"
ar:arinfo $reason
return
}
}
if {$ar(advnot) == 1} {
set reason "no"
ar:arinfo $reason
}
#проблелы и прочая байда
set chtext $worktext
set chtext1 [ar:checkspace $worktext]
set chtext2 [ar:checkvoid $worktext]
#выделяем названия каналов.
set chtext [ar:chancheck $chtext]
set chtext1 [ar:chancheck $chtext1]
set chtext2 [ar:chancheck $chtext2]
#И проверяем существование
ar:advcheck $chtext
ar:advcheck $chtext1
ar:advcheck $chtext2
return 1;
}
#процедура просмотри лога
proc ar:log {nick host hand text} {
global ar
set ch [lindex $text 0]
if { $ch == "" } { putserv "PRIVMSG $nick :\0033Формат:\0034 !лог\0037 #chan" ; return 1}
putserv "PRIVMSG $nick :\0033Баны на канале \0035[lindex $text 0]..."
set log(info) [::egglib::readdata $ar(logfile)]
foreach str $log(info) {
if {[string match "*$ch*" $str]} {
putserv "PRIVMSG $nick :\0033Ник \0037[lindex $str 0]\0033 за неосторожно сказанную фразу\0035 [lrange $str 12 end]\0033 в\0034 [lrange $str 7 10]"
}
}
}
putlog "Anti-Adversting script $ar(ver) by $ar(author) loaded."
#
###################################################################################
if { ![info exists egglib(ver)] } {
putlog "***********************************************"
putlog " egglib_pub NOT FOUND !"
putlog " Download last version of egglib_pub here:"
putlog " http://eggdrop.org.ru/scripts/egglib_pub.zip"
putlog "***********************************************"
return
}
if { ![info exists egglib(ver)] || [expr {$egglib(ver) < 1.2}] } {
putlog "***********************************************"
putlog " egglib_pub NOT FOUND OR VERSION IS TOO OLD!"
putlog " Download last version of egglib_pub here:"
putlog " http://eggdrop.org.ru/scripts/egglib_pub.zip"
putlog "***********************************************"
}
##################################UNBINDS BEGIN HERE#######$$##########################
namespace eval ar {}
foreach bind [binds "ar:*"] { catch {unbind [lindex $bind 0] [lindex $bind 1] [lindex $bind 2] [lindex $bind 4]} }
foreach cname [array names ar *] { catch {unset ar($cname) } }
##################################BINDS BEGINS HERE####################################
bind pubm - "% *" ar:check
bind CTCP - ACTION ar:check
bind raw - "322" ar:arsearch
bind msg m|m !log ar:log
##################################CONFIG BEGINS HERE###################################
# Оповещать ли нотисом о предположительной рекламе? (1-Да 2-Нет)
set ar(advnot) 1
# Оповещать ли нотисом о бане за рекламу? (1-Да 2-Нет)
set ar(bannot) 1
# Хендл(ы) кому посылать отчет нотисом (он должен быть в юзерлист бота)
set ar(handlist) "tigra"
# Ник(и) кому посылать отчет нотисом
set ar(nicklist) "tigra"
# Кому слать нотисы о предположительной рекламе (1 - только никам, 2 - только хэндлам, 3 - и тем и тем)
set ar(mlist) 2
# Официальные каналы сети
set ar(off) "#abuse #help #tigra"
# Флаг исключения с которым не банит пользователя
set ar(ff) "f"
# Путь к файлу с логом сообщений о бане за рекламу
set ar(logfile) "logs/adversting.log"
# Время выставляемого бана (в минутах)
set ar(bantime) 20160
# Причина бана
set ar(breason) "Реклама каналалов запрещена!Бан на 14 дней."
# Версия скрипта
set ar(ver) "v3.1 WeNet Edition"
# Флаг включить/выключенть скрипт
setudef flag ar
#Автор скрипта
set ar(author) "Zelik <k-lined@mail.ru>"
#########################################################################################
#спецсимволы на { }
proc ar:checkspace {t} {
regsub -all -- {\!} $t { } t; regsub -all -- {\"} $t { } t; regsub -all -- {\_} $t { } t
regsub -all -- {\.} $t { } t; regsub -all -- {\%} $t { } t; regsub -all -- {\^} $t { } t
regsub -all -- {\&} $t { } t; regsub -all -- {\*} $t { } t; regsub -all -- {\(} $t { } t
regsub -all -- {\)} $t { } t; regsub -all -- {\}} $t { } t; regsub -all -- {\{} $t { } t
regsub -all -- {\]} $t { } t; regsub -all -- {\[} $t { } t; regsub -all -- {\:} $t { } t
regsub -all -- {\;} $t { } t; regsub -all -- {\'} $t { } t; regsub -all -- {\`} $t { } t
regsub -all -- {\~} $t { } t; regsub -all -- {\+} $t { } t; regsub -all -- {\=} $t { } t
regsub -all -- {\-} $t { } t; regsub -all -- {\|} $t { } t; regsub -all -- {\\} $t { } t
regsub -all -- {\?} $t { } t; regsub -all -- {\,} $t { } t; regsub -all -- {\<} $t { } t
regsub -all -- {\>} $t { } t; regsub -all -- {\/} $t { } t; regsub -all -- {\@} $t { } t
regsub -all -- {\$} $t { } t; regsub -all -- {\*} $t { } t
return $t
}
#спецсимволы на {}
proc ar:checkvoid {t} {
regsub -all -- {\!} $t {} t; regsub -all -- {\"} $t {} t; regsub -all -- {\_} $t {} t
regsub -all -- {\.} $t {} t; regsub -all -- {\%} $t {} t; regsub -all -- {\^} $t {} t
regsub -all -- {\&} $t {} t; regsub -all -- {\*} $t {} t; regsub -all -- {\(} $t {} t
regsub -all -- {\)} $t {} t; regsub -all -- {\}} $t {} t; regsub -all -- {\{} $t {} t
regsub -all -- {\]} $t {} t; regsub -all -- {\[} $t {} t; regsub -all -- {\:} $t {} t
regsub -all -- {\;} $t {} t; regsub -all -- {\'} $t {} t; regsub -all -- {\`} $t {} t
regsub -all -- {\~} $t {} t; regsub -all -- {\+} $t {} t; regsub -all -- {\=} $t {} t
regsub -all -- {\-} $t {} t; regsub -all -- {\|} $t {} t; regsub -all -- {\\} $t {} t
regsub -all -- {\?} $t {} t; regsub -all -- {\,} $t {} t; regsub -all -- {\<} $t {} t
regsub -all -- {\>} $t {} t; regsub -all -- {\/} $t {} t; regsub -all -- {\@} $t {} t
regsub -all -- {\$} $t {} t; regsub -all -- {\*} $t {} t
return $t
}
#цвета нам ненужны
proc ad:remcolors {t} {
regsub -all -- {\003(\d){0,2}(,){0,1}(\d){0,2}} $t {} t
regsub -all -- {\037} $t {} t; regsub -all -- {\002} $t {} t
regsub -all -- {\026} $t {} t; regsub -all -- {\017} $t {} t
return $t
}
#удаляем из текста "разрешённые" каналы
proc ar:offcheck {t offchan} {
global ar
set offchan [::egglib::tolower $offchan]
set t [string tolower $t]
regsub -all -- $offchan $t {} t
foreach ch $ar(off) {
regsub -all -- $ch $t {} t
}
return $t
}
#смотрим и выделяем из текста слова с #
proc ar:chancheck {t} {
global ar
set ar(chanstring) ""
foreach ch $t {
if { $ch != "#" } {
if {[string match "#*" $ch]} {
lappend ar(chanstring) $ch
}
}
}
return $ar(chanstring)
}
#процедура исполняющаа сопсно все поисковые ф-ции
proc ar:advcheck {t} {
global ar
foreach ch $t {
set ar(cmd) "LIST $ch"
putquick "$ar(cmd)"
}
return 1;
}
#делаем маску бана
proc ar:banmask {t} {
global ar
regsub -all -- {\~} $t {} t
set splithost [split $t @]
set ip [lindex $splithost 1]
set t "*!*@$ip"
return $t
}
#процедура поиска каналов
proc ar:arsearch {from key text} {
global ar
#уже забанили, больше проверять не будем
# set ar(channel) ""
# if {$ar(banned) == 1} { return }
#сопсно ищем названия каналов и добавляем их в переменную
if { [regexp -nocase -- {[^\ ]+\ \#[^\ ]*\ [^\ ]+\ :\[.+\].*} $text] } {
if { [regexp -nocase -- {[^\ ]+\ (\#[^\ ]*)\ ([^\ ]+)\ :\[(.+)\].*} $text trash chan users mode] } {
set chan [string trim $chan]
if { $chan != "" } {
lappend ar(channel) [list $chan]
}
}
} else {
if { [regexp -nocase -- {[^\ ]+\ (\#[^\ ]*)\ ([^\ ]+)\ :.*} $text trash chan users] } {
set chan [string trim $chan]
if { $chan != "" } {
lappend ar(channel) [list $chan]
}
}
}
#ну, если мы ничего не нашли, то увы.
if { $ar(channel) == "" } { return }
#если нашли, то наказываем негодяя! шаманим с маской бана
set ar(bmask) [ar:banmask $ar(bhost)]
#а теперь баним и кикаем
newchanban $ar(bchan) $ar(bmask) "ANTIADV" $ar(breason) $ar(bantime)
putkick $ar(bchan) $ar(bnick) $ar(breason)
set reason "ban"
ar:arinfo $reason
#процедура записи бана в лог-файл
putlog "\[ANTIREKLAMA\] BAN: $ar(bnick) $ar(bmask) at $ar(bchan) for \[$ar(enntext)\]"
set logfile [open "$ar(logfile)" a+]
regsub -all -- {$ar(bchan)} {$ar(btext)} {\002\0034$ar(bchan)\0035\002} ar(btext
puts $logfile "$ar(bnick) was banned on $ar(bchan) at [ctime [unixtime]] for text: $ar(btext)"
set ar(banned) 1
close $logfile
return 1;
}
#кидаем предупреждения
proc ar:arinfo {reason} {
global ar
set ar(infolist) ""
#смотрим кому кидать нотисы
#только никам
if {$ar(mlist) == 1} {
set ar(infolist) $ar(nicklist)
}
#только хэндам
if {$ar(mlist) == 2} {
foreach hd $ar(handlist) {
set rnick [hand2nick $hd]
lappend ar(infolist) [list $rnick]
}
}
#и тем и тем
if {$ar(mlist) == 3} {
set ar(infolist) $ar(nicklist)
foreach hd $ar(handlist) {
set rnick [hand2nick $hd]
lappend ar(infolist) [list $rnick]
}
}
foreach infonick $ar(infolist) {
if {$reason == "noop"} {
putserv "NOTICE $infonick :\0034$ar(bnick)!$ar(bhost)\0033 на канале\0035\002 $ar(bchan)\002\0033 произносит подозрительную фразу: \002\0032$ar(enntext)\0033\002, но у бота нет опа на этом канале."
}
if {$reason == "friend"} {
putserv "NOTICE $infonick :\0034$ar(bnick)!$ar(bhost)\0033 на канале\0035\002 $ar(bchan)\002\0033 произносит подозрительную фразу: \002\0032$ar(enntext)\0033\002, но он является другом бота."
}
if {$reason == "op"} {
putserv "NOTICE $infonick :\0034$ar(bnick)!$ar(bhost)\0033 на канале\0035\002 $ar(bchan)\002\0033 произносит подозрительную фразу: \002\0032$ar(enntext)\0033\002, но он является опом этого канала."
}
if {$reason == "no"} {
putserv "NOTICE $infonick :\0034$ar(bnick)!$ar(bhost)\0033 на канале\0035\002 $ar(bchan)\002\0033 произносит подозрительную фразу: \002\0032$ar(enntext)."
}
if {$reason == "ban"} {
putserv "NOTICE $infonick :\0034$ar(bnick)!$ar(bhost)\0033 был забанен на канале\0035\002 $ar(bchan)\002\0033 за подозрительную фразу: \002\0032$ar(enntext)."
}
}
}
#главная процедура проверки текста
proc ar:check {nick host hand chan text {text1 ""}} {
global ar
#а текст то есть?
if {$text1 != ""} { set text $text1 }
#a есть ли флаг?
if {![channel get $chan ar]} return
#а есть ли символ #
if {![string match "*#*" $text]} { return }
set ar(enntext) $text
#удаляем цвета
set text [ad:remcolors $text]
#да символ есть будем работать со строкой
regsub -all -- {\*} $text {} text
regsub -all -- {#} $text { #} text
set text [string tolower $text]
#инфа о юзере вызвавшем триггер
set ar(banned) "0"
set ar(bchan) "$chan"
set ar(bhost) "$host"
set ar(bnick) "$nick"
set ar(bhand) "$hand"
set ar(btext) "$text"
#работаем с текстом, удаляем цвета
set worktext [string tolower $text]
set worktext [ar:offcheck $text $chan]
#после выбирания официальных каналов делаем проверку на целесообразность дальнейших действий
if {![string match "*#*" $worktext]} { return }
#бот оп на канале?
if {![botisop $chan]} {
if {$ar(advnot) == 1} {
set reason "noop"
ar:arinfo $reason
return
}
}
#а не друг ли злодей?
if { [matchattr $hand $ar(ff) ]} {
if {$ar(advnot) == 1} {
set reason "friend"
ar:arinfo $reason
return
}
}
#а не оп ли это сказал?
if { [isop $nick $chan] } {
if {$ar(advnot) == 1} {
set reason "op"
ar:arinfo $reason
return
}
}
if {$ar(advnot) == 1} {
set reason "no"
ar:arinfo $reason
}
#проблелы и прочая байда
set chtext $worktext
set chtext1 [ar:checkspace $worktext]
set chtext2 [ar:checkvoid $worktext]
#выделяем названия каналов.
set chtext [ar:chancheck $chtext]
set chtext1 [ar:chancheck $chtext1]
set chtext2 [ar:chancheck $chtext2]
#И проверяем существование
ar:advcheck $chtext
ar:advcheck $chtext1
ar:advcheck $chtext2
return 1;
}
#процедура просмотри лога
proc ar:log {nick host hand text} {
global ar
set ch [lindex $text 0]
if { $ch == "" } { putserv "PRIVMSG $nick :\0033Формат:\0034 !лог\0037 #chan" ; return 1}
putserv "PRIVMSG $nick :\0033Баны на канале \0035[lindex $text 0]..."
set log(info) [::egglib::readdata $ar(logfile)]
foreach str $log(info) {
if {[string match "*$ch*" $str]} {
putserv "PRIVMSG $nick :\0033Ник \0037[lindex $str 0]\0033 за неосторожно сказанную фразу\0035 [lrange $str 12 end]\0033 в\0034 [lrange $str 7 10]"
}
}
}
putlog "Anti-Adversting script $ar(ver) by $ar(author) loaded."
Заранее благодарен за уделённое для меня время и терпение...