+def_ucmd tell {
+ global nick_case ownmailaddr ownfullname
+
+ prefix_nick
+ set target [ta_word]
+ if {![string length $text]} { error "tell them what?" }
+
+ set ltarget [irctolower $target]
+ set ctarget $target
+ if {[info exists nick_case($ltarget)]} { set ctarget $nick_case($ltarget) }
+
+ manyset [nickdb_get $target tellsec] sec mailto mailwhy
+ switch -exact $sec {
+ insecure - secure {
+ set now [clock seconds]
+ set inbound [msgsdb_get $ltarget inbound]
+ lappend inbound $n $now $text
+ msgsdb_set $ltarget inbound $inbound
+
+ set outbound [msgsdb_get $n outbound]
+ set noutbound {}
+ set found 0
+ foreach {recip time count} $outbound {
+ if {"[irctolower $recip]" == "$ltarget"} {
+ incr count
+ set recip $ctarget
+ set found 1
+ }
+ lappend noutbound $recip $time $count
+ }
+ if {!$found} {
+ lappend noutbound $ctarget $now 1
+ }
+ msgsdb_set $n outbound $noutbound
+ if {!$found} {
+ ucmdr "OK, I'll tell $ctarget." {}
+ } else {
+ ucmdr "OK, I'll tell $ctarget that too." {}
+ }
+ }
+ mailto {
+ set fmtmsg [exec fmt << " $text"]
+ exec /usr/sbin/sendmail -odb -oi -t -oee -f $mailwhy \
+ > /dev/null << \
+ "From: $ownmailaddr ($ownfullname)
+To: $mailto
+Subject: IRC tell from $n
+
+$n asked me[expr {[ischan $dest] ? " on $dest" : ""}] to tell you:
+[exec fmt << " $text"]
+
+(This message was for your nick $ctarget; your account $mailwhy
+ arranged for it to be forwarded to $mailto.)
+"
+ ucmdr \
+ "I've mailed $ctarget at $mailto, which is what they prefer." \
+ {}
+ }
+ refuse {
+ usererror "Sorry, $ctarget does not want me to take messages."
+ }
+ default {
+ error "bad tellsec $sec"
+ }
+ }
+}
+