chiark / gitweb /
telling_event done? see fixmes
[ircbot] / bot.tcl
diff --git a/bot.tcl b/bot.tcl
index 98a3e613c9c12dbef9a3c622b011456bae8569e9..25c7b5136912ecfd7a5db272a3d4148acdf6873f 100755 (executable)
--- 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} {