All pastes #717476 Raw Edit

Untitled

public text v1 · immutable
#717476 ·published 2007-09-27 17:31 UTC
rendered paste body
namespace eval ::relay {
    proc start {} {
        setudef flag relay

        ##set nicks that shouldnt be relayed here, seperated by spaces. ex: bots/annoying people/etc...
        variable blacklist "Cody MouserBot"

        bind pubm - * ::relay::receive
        bind bot - !relay ::relay::send
        bind ctcp - ACTION ::relay::raction
        bind join - * ::relay::join
        bind part - * ::relay::part

        putlog "successfully loaded p4l-relay.tcl!"
    }
    
    proc receive {nick host hand chan arg} {
        if {![channel get $chan relay]} {return}

        variable ::relay::blacklist
        variable ::network

        variable blacklisted 0

        foreach bl [split $::relay::blacklist] {
            if {$nick == $bl} {
                variable blacklisted 1
            }
        }

        if {!$blacklisted} {
            rtobot "$nick@$network: $arg"
        }
    }

    proc raction {nick uhost hand chan keyword arg} {
        if {![channel get $chan relay]} {return}

        variable ::relay::blacklist
        variable ::network

        variable blacklisted 0

        foreach bl [split $::relay::blacklist] {
            if {$nick == $bl} {
                variable blacklisted 1
            }
        }

        if {!$blacklisted} {
            rtobot "$nick@$network: $arg"
        }
    }

    proc join {nick uhost hand chan} {
        if {![channel get $chan relay]} {return}

        variable ::network

        rtobot "$nick has joined $chan on $network"
    }

   proc part {nick uhost hand chan arg} {
        if {![channel get $chan relay]} {return}

        variable ::network

        rtobot "$nick has parted $chan on $network"
    }

    proc rtobot {text} {
         foreach bot [userlist &&9] {
                putbot $bot "!relay $text"
        }
    }

    proc send {bot cmd arg} {
        putachan relay $arg
    }

    proc putachan {flag text} {
        if {$flag == "" || $text == ""} { return }

        foreach chan [channels] {
            if {[channel get $chan $flag]} {
                putquick "privmsg $chan :$text"
            }
        }
    }
    start
}