Вот сидит теперь бот на канале, всех приветствует, желающим - пива наливает, за порядком следит.
Вот мирное общение. Сидите, общаетесь... Захотелось пошутить - поговорить от имени бота. в DCC лезть не
хочется... Что делать? А вот сейчас и узнаем :)
Работаем с приватами.
Набросаем небольшой скрипт:
bind msg n !say msg:say
proc msg:say {nick uhost hand text} {
putlog "$nick!$uhost ($hand) !say $text"
set to [lindex $text 0]
set text [lreplace $text 0 0]
putserv "privmsg $to :$text"
}
Теперь поясним что и как работает (хотя итак все должно быть ясно если вы читали предыдущие статьи).
Вы в привате говорите боту !say <куда говорить> <что говорить>
<куда говорить> - ник или канал, куда бот должет сказать данную фразу. Если будет ник, то бот напишет в приват,
если канал - бот скажет на канал.
<что говорить> - тест, который бот должен сказать
Пример1:
Приват бота:
<владелец> !say Вася Привет Васек!
Приват Васи:
<Бот> Привет Васек!
Пример2:
Приват бота:
<владелец> !say #канал Всем привет!
Канал #канал:
<Бот> Всем привет!
Вообще скрипт можно написать в 2 строки :)
bind msg n !say msg:say
proc msg:say {nick uhost hand text} { putlog "$nick!$uhost ($hand) !say $text"; set to [lindex $text 0]; set text [lreplace $text 0 0]; putserv "privmsg $to :$text" }
Можно и в 1 но это будет полный изврат :)
bind msg n !say msg:say;
proc msg:say {nick uhost hand text} { putlog "$nick!$uhost ($hand) !say $text"; set to [lindex $text 0]; set text [lreplace $text 0 0]; putserv "privmsg $to :$text" }
Но так менее понятно что куда и зачем. Так стоит делать в очень редких случаях, а лучше не делать так :)
Мутим обратную связь.
Вот поболтали вы от бота, посмеялись над всеми, потомучто только глобальный владелец (global owner) (См. описание флага +n) может
пользоваться этим. Одно только неудобно - не видно что боту отвечают в приват.
Набросаем еще один скрипт посложнее:
# *!*!*!*: Для работы этого скрипта необходим EggDrop/WinDrop с опцией HANDLEN 32 и пользователь dynamicvariables_ :*!*!*!* #
bind msg n !say msg:say
proc msg:say {nick uhost hand text} {
putlog "$nick!$uhost ($hand) !say $text"
set to [lindex $text 0]
set text [lreplace $text 0 0]
putserv "privmsg $to :$text"
}
# Функция, которая будет возвращать кому редиректить. Можно было и не создавать ее но так ИМХО удобнее.
proc get:redirect:msg {nick} { return [getuser dynamicvariables_ xtra "redirmsg_from_$nick"] }
bind msgm - * msgm:redirect
proc msgm:redirect {nick uhost hand text} {
if {[tolower [lindex $text 0]]!="pass" && [tolower [lindex $text 0]]!="auth" && [tolower [lindex $text 0]]!="die" && [tolower [lindex $text 0]]!="ident"} {
set to [get:redirect:msg $nick]
if {[matchattr $to QB]} { putserv "privmsg [hand2nick $to] :<$nick> $text" }
}
}
bind msg n !redirect set:msg:redirect
proc set:msg:redirect {nick uhost hand text} {
putlog "!regirect $text from $nick!$uhost ($hand)"
set from [lindex $text 0]
set set [lindex $text 1]
if {$set=="on"} { setuser dynamicvariables_ xtra redirmsg_from_$from $hand; putserv "privmsg $nick OK, redirect privmsg from $from set to $hand" }
if {$set=="off"} { setuser dynamicvariables_ xtra redirmsg_from_$from ""; }
}
Вот так удобнее уже. Видно что отвечают боту. Можно даже общаться через него :)
|