X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/ircbot/blobdiff_plain/e6cc22dcd98951a1208d81f375f587d32c38a1d7..4fd2739ce610b22dd0aa192e51ab63a093d459e1:/bot.tcl diff --git a/bot.tcl b/bot.tcl index f3db5c1..42f0627 100755 --- a/bot.tcl +++ b/bot.tcl @@ -517,7 +517,7 @@ proc loadhelp {} { def_ucmd help { upvar #0 help_topics([irctolower [string trim $text]]) info - if {![info exists info]} { error "no help on $text, sorry." {} } + if {![info exists info]} { ucmdr "No help on $text, sorry." {} } ucmdr $info {} } @@ -533,14 +533,35 @@ proc manyset {list args} { } } -def_ucmd summon { - set target [ta_word] - ta_nomore +proc check_username {target} { if { [string length $target] > 8 || [regexp {[^-0-9a-z]} $target] || ![regexp {^[a-z]} $target] } { error "invalid username" } +} + +def_ucmd identpass { + set username [ta_word] + set passmd5 [md5sum [ta_word]] + ta_nomore + prefix_nick + upvar #0 nick_onchans($n) onchans + if {![info exists onchans] || ![llength $onchans]} { + ucmdr {} "You must be on a channel with me to identify yourself." + } + check_username $username + exec userv --timeout 3 $username << "$passmd5\n" > /dev/null \ + irc-identpass $n + upvar #0 nick_username($n) rec_username + set rec_username $username + ucmdr {} "Pleased to see you, $username." +} + +def_ucmd summon { + set target [ta_word] + ta_nomore + check_username $target prefix_nick upvar #0 lastsummon($target) ls