(:bot!user@host PRIVMSG target :\r\n)
Вот процедура которая подгоняет длинные сообщения под необходимый размер и отсылает их по частям.
proc msg {dest data} {
set len [expr {512-[string len ":$::botname PRIVMSG $dest :\r\n"]}]
foreach line [wordwrap $data $len] {
puthelp "PRIVMSG $dest :$line"
}
}
# Процедура wordwrap proc получающая строку и необходимый размер
# (пустые строки будут удаляться так как передать их нет возможности)
proc wordwrap {data len} {
set out {}
foreach line [split [string trim $data] \n] {
set curr {}
set i 0
foreach word [split [string trim $line]] {
if {[incr i [string len $word]]>$len} {
lappend out [join $curr]
set curr [list $word]
set i [string len $word]
} {
lappend curr $word
}
incr i
}
if {[llength $curr]} {
lappend out [join $curr]
}
}
set out
}
set len [expr {512-[string len ":$::botname PRIVMSG $dest :\r\n"]}]
foreach line [wordwrap $data $len] {
puthelp "PRIVMSG $dest :$line"
}
}
# Процедура wordwrap proc получающая строку и необходимый размер
# (пустые строки будут удаляться так как передать их нет возможности)
proc wordwrap {data len} {
set out {}
foreach line [split [string trim $data] \n] {
set curr {}
set i 0
foreach word [split [string trim $line]] {
if {[incr i [string len $word]]>$len} {
lappend out [join $curr]
set curr [list $word]
set i [string len $word]
} {
lappend curr $word
}
incr i
}
if {[llength $curr]} {
lappend out [join $curr]
}
}
set out
}
(Для работы этой процедуры необходимо, чтобы $botname содержала в себе маску вашего бота, что не всегда возможно в сетях скрывающих реальные хосты - если вы находитесь в такой сети вам придется указывать размер переменной $::botname напрямую)
Вольный перевод поста с egghelp.org