Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # ------------------------------------------------------
- # OUTsider's Complex & Advanced RelayScript v1.0
- # ------------------------------------------------------
- # - Make sure you set the same relayid for all
- # channels on all networks you want to link together
- # - Enable the relay by setting the channel +relay
- # - You can link chans on the same net or crossnet
- # or whatever combination you want
- setudef flag relay
- setudef flag relay_mode
- setudef int relayid
- bind bot - RELAY relay:bot
- proc relay:bot {from trigger args} {
- global server network
- set args [lindex $args 0]
- set cmd [lindex $args 0]
- set rid [lindex $args 1]
- set rnetwork [lindex $args 2]
- set rnick [lindex $args 3]
- set rargs [lrange $args 4 e]
- switch -- $cmd {
- "PUB" { set msg "\[$rnick@$rnetwork\] $rargs" }
- "ACT" { set msg "* \[$rnick@$rnetwork\] $rargs" }
- "JOIN" { set msg "*** \[$rnetwork\] $rnick ($rargs) has joined" }
- "QUIT" { set msg "*** \[$rnetwork\] $rnick has signed off ($rargs)" }
- "PART" { set msg "*** \[$rnetwork\] $rnick has left the channel ($rargs)" }
- "KICK" { set msg "*** \[$rnetwork\] $rnick has been kicked by [lindex $rargs 0] ([lrange $rargs 1 e])" }
- "MODE" { set msg "*** \[$rnetwork\] $rnick sets mode $rargs" }
- "NICK" { set msg "*** \[$rnetwork\] $rnick changed nick to $rargs" }
- "LIST" {
- set repl ""
- foreach lchan [channels] {
- if {[channel get $lchan relayid] == $rid} {
- set modes ""
- if {[botisop $lchan]} { lappend modes "@" }
- if {[botishalfop $lchan]} { lappend modes "%" }
- if {[botisvoice $lchan]} { lappend modes "+" }
- lappend repl "[join $modes]$lchan ([llength [chanlist $lchan]])"
- }
- }
- if {$repl != ""} {
- putbot $from "RELAY REPL $rid $network $rnick $network ($server): $repl"
- }
- return
- }
- "REPL" {
- putnotc $rnick [join $rargs]
- return
- }
- "RMODE" {
- if {[string tolower [lindex $rargs 0]] != [string tolower $network]} { return }
- foreach lchan [channels] {
- if {[channel get $lchan relayid] == $rid} {
- putserv "MODE $lchan [lrange $rargs 1 e]"
- }
- }
- return
- }
- "RKICK" {
- set target [lindex [split [lindex $rargs 0] @] 0]
- set rnet [lindex [split [lindex $rargs 0] @] 1]
- set reason "LinkKick by $rnick@$rnetwork: [lrange $rargs 1 e]"
- if {[string tolower $rnet] != [string tolower $network]} { return }
- set found 0
- foreach lchan [channels] {
- if {[channel get $lchan relayid] == $rid && [onchan $target $lchan]} {
- putkick $lchan $target $reason
- incr found
- }
- }
- if {$found==0} {
- putbot $from "RELAY REPL $rid $network $rnick User $target not found in any of the relaychannels on $network"
- }
- return
- }
- "RWHOM" {
- if {[string tolower $rargs] != [string tolower $network]} { return }
- foreach lchan [channels] {
- if {[channel get $lchan relayid] == $rid} {
- putbot $from "RELAY REPL $rid $network $rnick User on $lchan@$network:"
- foreach user [chanlist $lchan] {
- set modes ""
- if {[isop $user $lchan]} { lappend modes "@" }
- if {[ishalfop $user $lchan]} { lappend modes "%" }
- if {[isvoice $user $lchan]} { lappend modes "+" }
- putbot $from "RELAY REPL $rid $network $rnick [join $modes]$user ([getchanhost $user]) Idle: [duration [getchanidle $user $lchan]]"
- }
- }
- }
- putbot $from "RELAY REPL $rid $network $rnick End of LinkWhom"
- return
- }
- "RMSG" {
- set target [lindex [split [lindex $rargs 0] @] 0]
- set rnet [lindex [split [lindex $rargs 0] @] 1]
- if {[string tolower $rnet] != [string tolower $network]} { return }
- foreach chan [channels] {
- if {[channel get $chan relayid] == $rid} { break }
- }
- putmsg $target "\[$rnick@$rnetwork\] [lrange $rargs 1 e]"
- putmsg $target "To reply to this remote message please join $chan"
- return
- }
- }
- if {[info exists msg]} {
- foreach lchan [channels] {
- if {[channel get $lchan relayid] == $rid} {
- putmsg $lchan $msg
- }
- }
- }
- }
- proc relay:dopost {rid exceptchan msg} {
- foreach lchan [channels] {
- if {[channel get $lchan relay] && [channel get $lchan relayid] == $rid && $lchan != $exceptchan} {
- putmsg $lchan $msg
- }
- }
- }
- bind pubm - * relay:pubm
- proc relay:pubm {nick host hand chan args} {
- global network
- if {![channel get $chan relay] || [channel get $chan relayid] == 0} { return }
- set args [lindex $args 0]
- if {[binds [lindex $args 0]] != ""} { return }
- putallbots "RELAY PUB [channel get $chan relayid] $network $nick $args"
- relay:dopost [channel get $chan relayid] $chan "\[$nick@$network\] $args"
- }
- bind ctcp - * relay:ctcp
- proc relay:ctcp {nick host hand chan keyword args} {
- global network
- set args [lindex $args 0]
- if {![validchan $chan] || ![channel get $chan relay] || [channel get $chan relayid] == 0} { return }
- if {$keyword == "ACTION"} {
- putallbots "RELAY ACT [channel get $chan relayid] $network $nick $args"
- relay:dopost [channel get $chan relayid] $chan "* \[$nick@$network\] $args"
- }
- }
- bind join - * relay:join
- proc relay:join {nick host hand chan} {
- global network
- if {![channel get $chan relay] || [isbotnick $nick] || [channel get $chan relayid] == 0} { return }
- putallbots "RELAY JOIN [channel get $chan relayid] $network $nick $host"
- relay:dopost [channel get $chan relayid] $chan "*** \[$network\] $nick ($host) has joined the channel"
- }
- bind sign - * relay:sign
- proc relay:sign {nick host hand chan args} {
- global network
- set args [lindex $args 0]
- if {![channel get $chan relay] || [isbotnick $nick] || [channel get $chan relayid] == 0} { return }
- putallbots "RELAY QUIT [channel get $chan relayid] $network $nick $args"
- relay:dopost [channel get $chan relayid] $chan "*** \[$network\] $nick has signed off ($args)"
- }
- bind part - * relay:part
- proc relay:part {nick host hand chan args} {
- global network
- set args [lindex $args 0]
- if {![channel get $chan relay] || [isbotnick $nick] || [channel get $chan relayid] == 0} { return }
- putallbots "RELAY PART [channel get $chan relayid] $network $nick $args"
- relay:dopost [channel get $chan relayid] $chan "*** \[$network\] $nick left the channel ($args)"
- }
- bind nick - * relay:nick
- proc relay:nick {nick host hand chan args} {
- global network
- set args [lindex $args 0]
- if {![channel get $chan relay] || [isbotnick $nick] || [channel get $chan relayid] == 0} { return }
- putallbots "RELAY NICK [channel get $chan relayid] $network $nick $args"
- relay:dopost [channel get $chan relayid] $chan "*** \[$network\] $nick changed nick to $args"
- }
- bind kick - * relay:kick
- proc relay:kick {nick host hand chan target reason} {
- global network
- if {![channel get $chan relay] || [channel get $chan relayid] == 0} { return }
- putallbots "RELAY KICK [channel get $chan relayid] $network $target $nick $reason"
- relay:dopost [channel get $chan relayid] $chan "*** \[$network\] $target has been kicked by $nick ($reason)"
- }
- bind mode - * relay:mode
- proc relay:mode {nick host hand chan mode target} {
- global network
- if {![channel get $chan relay] || [channel get $chan relayid] == 0 || ![channel get $chan relay_mode]} { return }
- if {$nick == ""} { set nick "SERVER" }
- putallbots "RELAY MODE [channel get $chan relayid] $network $nick $mode $target"
- relay:dopost [channel get $chan relayid] $chan "*** \[$network\] $nick sets mode $mode $target"
- }
- bind pub - !linklist relay:pub:linklist
- proc relay:pub:linklist {nick host hand chan args} {
- global network server
- putallbots "RELAY LIST [channel get $chan relayid] $network $nick"
- set repl ""
- foreach lchan [channels] {
- if {[channel get $lchan relayid] == [channel get $chan relayid]} {
- set modes ""
- if {[botisop $lchan]} { lappend modes "@" }
- if {[botishalfop $lchan]} { lappend modes "%" }
- if {[botisvoice $lchan]} { lappend modes "+" }
- lappend repl "[join $modes]$lchan ([llength [chanlist $lchan]])"
- }
- }
- putlog $repl
- putnotc $nick "Links covered by this relay:"
- if {$repl != ""} {
- putnotc $nick "$network ($server): [join $repl]"
- }
- return 1
- }
- bind pub o|o !linkmode relay:pub:linkmode
- proc relay:pub:linkmode {nick host hand chan args} {
- global network
- set args [lindex $args 0]
- set rnet [lindex $args 0]
- set modes [lrange $args 1 e]
- if {$modes == ""} {
- putnotc $nick "Usage: !linkmode <network> <modes>"
- return 0
- }
- if {[string tolower $rnet] == [string tolower $network]} {
- foreach lchan [channels] {
- if {[channel get $lchan relayid] == [channel get $chan relayid]} {
- putserv "MODE $lchan $rmodes"
- }
- }
- } else {
- putallbots "RELAY RMODE [channel get $chan relayid] $network $nick $args"
- }
- return 1
- }
- bind pub o|o !linkkick relay:pub:linkkick
- proc relay:pub:linkkick {nick host hand chan args} {
- global network
- set args [lindex $args 0]
- set rusr [lindex $args 0]
- set reas [lrange $args 1 e]
- if {$args == ""} {
- putnotc $nick "Usage: !linkkick <nick>@<network> \[reason\]"
- return 0
- }
- if {![string match *@* $rusr]} {
- putnotc $nick "Remote user has to be specified as <nick>@<network>"
- return 0
- }
- set rnet [lindex [split [lindex $rusr 0] @] 1]
- if {[string tolower $rnet] == [string tolower $network]} {
- set target [lindex [split [lindex $rusr 0] @] 0]
- set reason "LinkKick by $nick@$network: $reas"
- set found 0
- foreach lchan [channels] {
- if {[channel get $lchan relayid] == [channel get $chan relayid] && [onchan $target $lchan]} {
- putkick $lchan $target $reason
- incr found
- }
- }
- if {$found == 0} {
- putnotc $nick "User $target not found in any of the relaychannels on $network"
- }
- } else {
- putallbots "RELAY RKICK [channel get $chan relayid] $network $nick $args"
- }
- return 1
- }
- bind pub o|o !linkwhom relay:pub:linkwhom
- proc relay:pub:linkwhom {nick host hand chan args} {
- global network
- set args [lindex $args 0]
- set rnet [lindex $args 0]
- if {$rnet == ""} {
- putnotc $nick "Usage: !linkwhom <network>"
- return 0
- }
- putallbots "RELAY RWHOM [channel get $chan relayid] $network $nick $rnet"
- return 1
- }
- bind pub o|o !linkmsg relay:pub:linkmsg
- proc relay:pub:linkmsg {nick host hand chan args} {
- global network
- set args [lindex $args 0]
- set rusr [lindex $args 0]
- set rmsg [lrange $args 1 e]
- if {$args == ""} {
- putnotc $nick "Usage: !linkmsg <nick>@<network> <message>"
- return 0
- }
- if {![string match *@* $rusr]} {
- putnotc $nick "Remote user has to be specified as <nick>@<network>"
- return 0
- }
- set dest [lindex [split $rusr @] 0]
- set rnet [lindex [split $rusr @] 1]
- if {[string tolower $rnet] == [string tolower $network]} {
- putmsg $dest "\[$nick@$network\] $reas"
- putmsg $dest "To reply to this remote message please join $chan"
- } else {
- putallbots "RELAY RMSG [channel get $chan relayid] $network $nick $args"
- }
- return 1
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement