From: ijackson Date: Thu, 7 Feb 2002 19:13:45 +0000 (+0000) Subject: telling_event done? see fixmes X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=cbed2a1d97c8b9cbffb7bc4b4e23c82e3050c122;p=ircbot.git telling_event done? see fixmes --- diff --git a/bot.tcl b/bot.tcl index 98a3e61..25c7b51 100755 --- a/bot.tcl +++ b/bot.tcl @@ -184,7 +184,9 @@ FIXME - document the extra param to recordlastseen if {[info exists telling]} { manyset $telling u_last stt telling_when - if {"$u_last" != "$u"} { unset telling; unset stt; unset telling_when } + if {![info exists u] || "$u_last" != "$u"} { + unset telling; unset stt; unset telling_when + } } if {![info exists stt]} { @@ -195,7 +197,7 @@ FIXME - document the extra param to recordlastseen set ago [expr {$now - $telling_when}] # Now we have the components of a telling state - # u - nick_unique + # u - nick_unique (unset if not visible) # stt - state: norecord, mentioned, passede # ago - how long ago since we did anything @@ -203,7 +205,7 @@ FIXME - document the extra param to recordlastseen # evstate is string of letters # current state - # n NORECORD + # n NORECORD (MESSAGES) # m MENTIONED # p PASSED # event @@ -261,58 +263,39 @@ FIXME - document the extra param to recordlastseen telling_delete_msgs {} $nl return } - ?t????? { + nt????? - mt????? - + pt???uu - pt???rs - pt???rl - pt???p? { # ignore (any other `talk's) - act handles these return } - ni???uu - naii?uu - nas?iuu - mi???uu { - # pass, but unreliable + ni????? - naii??? - nas?i?? - mi????? - pa????l { + # pass and then stuff telling_pass $nl - telling_delete_msgs {} $nl return } - ni????? - naii??? - nas?i?? - mi????? { - # pass, reliable - telling_pass $nl - set stt passed - } - UP TO HERE - FIXME print out state diagram and tick off traces - - - - set telling [list $u passed - - ?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).}] - set stt [list $u mentioned $now] + nas?u?? { + sendprivmsg $nl {You have messages (so identify yourself please).}] + set stt mentioned + } + masl??? { + sendprivmsg $nl {Don't forget about your messages.}] + } + pi????? { + return + } + mass??? - pa????v - pa????s { + # too soon + return } * { error "check_telling_core nl=$nl evstate=$evstate ?" } } - - # current visibility - # v Visible - # h Hidden (invisible, no unique) - go back to norecord if invisible - + if {![info exists u]} { + catch { unset telling } + } else { + set telling [list $u $stt $now] + } } proc recordlastseen_n {n how here} {