+def_setting tellme {
+ set secv [nickdb_get $n tellsec]
+ set ms [tellme_sec_desc $secv]
+ manyset $secv sec
+ switch -exact $sec {
+ insecure - secure {
+ set mr [tellme_rel_desc [nickdb_get $n tellrel]]
+ return "$ms $mr"
+ }
+ refuse - mailto {
+ return $ms
+ }
+ }
+} {
+ set setting [string tolower [ta_word]]
+ switch -exact $setting {
+ insecure - secure - refuse {
+ ta_nomore
+ if {"$setting" == "refuse" && [llength [msgsdb_get $n inbound]]} {
+ usererror "You must delete the messages you have, first."
+ }
+ set sr sec
+ set v $setting
+ }
+ mailto {
+ set u [nickdb_get $n username]
+ if {![string length $u]} {
+ usererror "Sorry, you must register secure to have your messages mailed (to prevent the use of this feature for spamming)."
+ }
+ set sr sec
+ set v [list mailto [ta_word] $u]
+ }
+ unreliable - pester - remind {
+ manyset [nickdb_get $n tellsec] sec
+ switch -exact $sec {
+ refuse - mailto {
+ error "can't change message delivery conditions when message disposition prevents messages from being left"
+ }
+ }
+ set sr rel
+ set v $setting
+ if {"$setting" != "unreliable"} {
+ set every [parse_interval [ta_word] 300]
+ lappend v $every
+ }
+ if {"$setting" == "remind"} {
+ if {[ta_anymore]} {
+ set within [parse_interval [ta_word] 5]
+ } else {
+ set within 30
+ }
+ if {$within > $every} {
+ error "remind interval must be at least time to respond"
+ }
+ lappend v $within
+ }
+ ta_nomore
+ }
+ default {
+ error "invalid tellme setting $setting"
+ }
+ }
+ nickdb_set $n tell$sr $v
+ ucmdr [tellme_${sr}_desc $v] {}
+}
+
+proc lnick_checktold {luser} {
+ set ml [msgsdb_get $luser outbound]
+ if {![llength $ml]} return
+ set is1 [expr {[llength $ml]==3}]
+ set m1 "FYI, I haven't yet passed on your"
+ set ol {}
+ set now [clock seconds]
+ while {[llength $ml]} {
+ manyset $ml r t n
+ set ml [lreplace $ml 0 2]
+ set td [expr {$now-$t}]
+ if {$n == 1} {
+ set iv [showinterval $td]
+ set ifo "$r, $iv"
+ set if1 "message to $r, $iv."
+ } else {
+ set iv [showintervalsecs $td 0]
+ set ifo "$r, $n messages, oldest $iv"
+ set if1 "$n messages to $r, oldest $iv."
+ }
+ if {$is1} {
+ sendprivmsg $luser "$m1 $if1"
+ return
+ } else {
+ lappend ol " to $ifo[expr {[llength $ml] ? ";" : "."}]"
+ }
+ }
+ sendprivmsg $luser "$m1 messages:"
+ msendprivmsg $luser $ol
+}
+