Code: Select all
# Set here, the channel you want the bot to listen for messages on
set mchan "#FootballScores"
# Set here, the channel you want the messages to be relayed to.
set rchan "#EPL"
# Add a word for relay
bind pub n|o !addword addword
# View a list of your relays
bind pub o|o !relays relays
# Clear all relays from words.txt
bind pub o|o !relayclr msgclear
# This is what searches for and relays lines
bind pubm * * relay_to_chan
# Delete a relay word from file
bind pub n|o !delword delword
proc addword {nick host hand chan text} {
global mchan
if {[string equal -nocase $chan $mchan]} {
set mfs "words.txt"
set word [join [lindex [split $text] 0]]
if {![file exists $mfs]} {
close [open $mfs w]
}
set fs [open $mfs]
set data [read -nonewline $fs]
close $fs
if {![string length $data]} {
set fs [open $mfs w]
} else {
set fs [open $mfs a]
}
puts $fs "$word"
close $fs
putserv "NOTICE $nick :Relay added: $word"
}
return
}
proc relays {nick host hand chan text} {
set fs [open "words.txt"]
set data [read -nonewline $fs]
close $fs
if {![string length $data]} {
putserv "NOTICE $nick :I don't currently have any messages to relay."
return 0
}
putserv "NOTICE $nick :My list of relay messages is as follows:"
set fs [open "words.txt"]
seek $fs 0 start
while {[gets $fs line] >= 0} {
puthelp "NOTICE $nick :$line"
}
close $fs
}
proc msgclear {nick host hand chan text} {
close [open "words.txt" w]
}
proc relay_to_chan {nick host hand chan text} {
global mchan rchan
if {[string equal -nocase $chan $mchan]} {
set fs [open "words.txt"]
seek $fs 0 start
while {[gets $fs line] >= 0} {
if {[regexp -nocase ".*$line.*" [join [lrange [split $text] 0 end]] match]} {
putserv "PRIVMSG $rchan :$match"
}
}
close $fs
return
}
return
}
proc delword {nick host hand chan text} {
global mchan
if {[string equal -nocase $chan $mchan]} {
set word [lindex [split $text] 0]
set fs [open "words.txt"]
set words [split [read -nonewline $fs] \n]
close $fs
set match [lsearch -exact $words $word]
set fs [open "words.txt" w]
set newwords [lreplace $words $match $match]
puts $fs [join $newwords "\n"]
close $fs
putserv "NOTICE $nick :Relay deleted: $word."
}
return
}