TCL Eggdrop ping

Eggdrop ping

### eggping.tcl v1.0.1, 1 April 2002
### by Graeme Donaldson
###  - !ping or !pingme on a channel, or
###  - /msg bot ping or /msg bot pingme

# Public triggers, seperated by spaces.
set pingpubwords "!ping !pingme"

# /msg triggers, seperated by spaces.
set pingmsgwords "ping pingme"

# If there are channels where you don't want the bot to listen for !ping
# requests, set them here, seperated by spaces, e.g. "#lame #lamer #lamest"
set pingdisabled ""


### YOU SHOULDN'T NEED TO EDIT ANYTHING BEYOND THIS POINT! ###
set pingver "1.0.1"
set pingnver "100001"
putlog "Loading eggping.tcl $pingver by Souperman..."
if {[info tclversion]<8.3} {
	set pingmethod 0
	putlog " eggping.tcl: Tcl [info patchlevel] detected; using normal ping."
} else {
	set pingmethod 1
	putlog " eggping.tcl: Tcl [info patchlevel] detected; using millisecond ping."
}
foreach trigger [split $pingpubwords] { bind pub - $trigger pingnick }
foreach trigger [split $pingmsgwords] { bind msg - $trigger pingnick }
bind ctcr - PING pingreply
proc pingnick {nick host hand chan {arg ""}} {
	global pingmethod pingdisabled
	foreach channel [split $pingdisabled] {
		if {[string tolower $channel] == [string tolower $chan]} {
			return
		}
	}
	if {$pingmethod==0} {
		putquick "PRIVMSG $nick :\001PING [unixtime]\001"
	} else {
		putquick "PRIVMSG $nick :\001PING [clock clicks]\001"
	}
	return 1
}
proc pingreply {nick host hand dest key args} {
	global pingmethod server
	set pingnum [lindex $args 0]
	set pingserver [lindex [split $server :] 0]
	if {![regexp -- {[^0-9]} $pingnum]} {
		if {$pingmethod==0} {
			puthelp "NOTICE $nick :Ping reply from $pingserver: [duration [expr [unixtime] - $pingnum]]"
		} else {
			puthelp "NOTICE $nick :Ping reply from $pingserver: [expr [expr [clock clicks] - $pingnum] / 1000.000] seconds"
		}
		return 0
	}
}
putlog " Visit http://www.eggdrop.za.net/ for updates and other Tcl scripts."
putlog "Successfully loaded eggping.tcl $pingver by Souperman!"