Web Вход

 

Начинаем скриптить на TCL (EggDrop / WinDrop) [часть 3] - Автор: Bart[mdv]

Вот сидит теперь бот на канале, всех приветствует, желающим - пива наливает. Но не всегда все
бывает так мирно. Всегда найдется какой-нибудь нехороший человек.

Работаем с флагами пользователей.

Вот сидите вы спокойно и пьете пиво, тут влетает какой-то урод и начинает рекламить и флудить,
или просто всех оскорблять. Все решается просто. - !ban Ник_чела Причина
Вроде все просто, только как узнать можно ли данному пользователю использовать эту команду?
Для этого есть флаги доступа. Ознакомиться с ними можно тут .

Набросаем небольшой скрипт:


bind pub - !ban pub:ban
proc pub:ban {nick uhost hand chan text} {
if [[matchattr $hand |o $chan] || [matchattr $hand o]]
set bannednick [lindex $text 0]
set reason [lreplace $text 0 0]
newchanban $chan *![getchanhost $bannednick] $hand $reason
putserv "kick $chan $bannednick :$reason"
}
}



Теперь объясним что и зачем
Команда: matchattr
Синтаксис: matchattr <пользователь> <флаги> [канал]
Эта функция возвращает 1 если проверяемые флаги у пользователя есть и 0 - если нет.
Пример:
matchattr User |o #test - проверяем есть ли у пользователя канальный флаг +o для канала #test
matchattr User o - проверяем есть ли у пользователя глобальный флаг +o

Команда: lindex
Синтаксис: lindex "текстовая строка" <какое слово возвратить>
Функция возвращает N-ое слово из строки. Отсчет ведется с нуля и с левого края
Пример:
lindex "всякие разные слова" 0 - возвратит "всякие"
lindex "всякие разные слова" 1 - возвратит "разные"

Команда: lreplace
Синтаксис: lreplace "текстовая строка" <первый> <последний> [еще слова]
Вот несколько примеров:

.tcl lreplace "q w e r t y" 0 0
Tcl: w e r t y
.tcl lreplace "q w e r t y" 0 0 w
Tcl: w w e r t y
.tcl lreplace "q w e r t y" 0 0 a s d
Tcl: a s d w e r t y
.tcl lreplace "q w e r t y" 1 0 a s d
Tcl: q a s d w e r t y

(.tcl - ввели команду; Tcl: вернула команда)

Команда: newchanban
Синтаксис: newchanban <#канал> <маска бана> <создатель> <причина> [время жизни] [опции]
Команда создает бан на канале и кикает с причиной бана. Параметр [время жизни] указывается в секундах.
Если параметр не указан, время будет взято из переменной ban-time
В параметре [опции] можно указать "stickly" - эта опция означает что бан будет удерживаться на канале если
канеальная опция dynamicbans включена. (+dynamicbans)

Все остальное думаю ясно. Если не ясно - попробуйте перечитать предыдущие статьи.
_____________________________
(с) Bart[mdv]@WeNet 2003 год.
Выкладывание этой статьи с сохранением копирайта и без изменений текста разрешено.
Желательно поставить меня в известность.

Copyright (с) 2004-2005 by Vozotron