From: Ian Jackson Date: Tue, 4 Dec 2001 18:50:01 +0000 (+0000) Subject: Further work on tell X-Git-Tag: merge-2001-10-09-tell~32 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/ircbot/commitdiff_plain/e06683f2aa1302c9a7a7b68a66e36cf064ce1a1b Further work on tell --- diff --git a/bot.tcl b/bot.tcl index 81583ee..3a22713 100755 --- a/bot.tcl +++ b/bot.tcl @@ -145,9 +145,12 @@ proc looking_whenwhere {when where} { return $str } -proc check_telling {nl event} { +proc check_telling_core {nl event} { # event is `talk', `act' or `come' - +FIXME - delay 750ms when you invoke this, except for `talk' + which causes `talk' now and `act' later +FIXME - make it be called with come +FIXME - set iml [msgdb_get $nl inbound] if {![llength $iml]} return @@ -171,14 +174,14 @@ proc check_telling {nl event} { # t talk # a act # c come - # current state - # n NORECORD - # m MENTIONED - # p PASSED # security level and timing # ii Insecure # ss Secure and soon (before interval) # sl Secure and late (after interval) + # current state + # n NORECORD + # m MENTIONED + # p PASSED # reliability and timing # uu Unreliable # rv Remind, very soon (before within-interval) @@ -193,15 +196,15 @@ proc check_telling {nl event} { # v Visible # h Hidden (invisible, no unique) - set evstate [string range $stt 0 0] - manyset [nickdb_get $n tellsec] sec secwhen switch -exact $sec { - insecure { append evstate ii } - secure { append evstate [expr {$ago<$secwhen ? "sl" : "ss"}] } - default { append evstate "#$sec#" } + insecure { set evstate ii } + secure { set evstate [expr {$ago<$secwhen ? "sl" : "ss"}] } + default { set evstate "#$sec#" } } + append evstate [string range $stt 0 0] + manyset [nickdb_set $n tellrel] rel relint relwithin switch -exact $rel { unreliable { append evstate uu } @@ -222,7 +225,48 @@ proc check_telling {nl event} { append evstate [expr {[info exists u] ? "v" : "h"}] switch -glob $evstate { + t??prv?v { + # consider delivered: + # (very recently passed, and the user talks) + tell_delete {} $nl + } + t??????? { + # ignore + # (any other `talk's) + } + ?iin???? - ?iip?l?? - ?ii????? - + ?s?n??iv - ?s?m??iv - ?s?p?liv { + # pass messages + # (insecure and not passed recently, or just arriving; + # secure and not passed recently) + tells_deliver $nl + } + ?ssp???? - ???p?s?? - ???p?v?? { + # ignore + # (recently mentioned or passed + # immediate `talk' thing) + } + ?s?n???? - ?slm???? - cs?????? { + # mention messages + # (secure and not mentioned recently or just arriving, + # and should not pass) + sendprivmsg $nl \ + {You have messages (so identify yourself please).}] + } + * { + error "check_telling_core nl=$nl evstate=$evstate ?" + } + } +} + + + + } + + { + } + ns???u