]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Process.pl
IRC/IrcHooks.pl
[infobot.git] / src / Process.pl
index 69711c011c636e7c1c08a72b63aab37acf8203ba..259fcdb422db7b75d064ab825a3ec5c2ebc89c56 100644 (file)
@@ -186,6 +186,15 @@ sub process {
        }
     }
 
+    # override msgType.
+    if ($msgType =~ /public/ and $message =~ s/^\+//) {
+       &status("found '+' flag; setting msgType to public.");
+       $force_public_reply++;
+       $msgType = 'public';
+       $who     = $chan;       # major hack to fix &msg().
+       &DEBUG("addressed => $addressed.");
+    }
+
     # User Processing, for all users.
     if ($addressed) {
        my $retval;
@@ -262,13 +271,6 @@ sub process {
     ### bot commands...
     ###
 
-    # override msgType.
-    if ($msgType =~ /public/ and $message =~ s/^\+//) {
-       &status("found '+' flag; setting msgType to public.");
-       $force_public_reply++;
-       $msgType = 'public';
-    }
-
     if ($message =~ s/^literal\s+//i) {
        &status("literal ask of '$message'.");
        $literal = 1;
@@ -377,7 +379,6 @@ sub FactoidStuff {
        }
     }
 
-
     # factoid forget.
     if ($message =~ s/^forget\s+//i) {
        return 'forget: no addr' unless ($addressed);
@@ -401,14 +402,22 @@ sub FactoidStuff {
            return 'locked factoid' if (&IsLocked($faqtoid) == 1);
 
            if (&IsParam("factoidDeleteDelay")) {
+               if ($faqtoid =~ /#DEL#/ and !&IsFlag("o")) {
+                   &msg($who, "cannot delete it ($faqtoid).");
+                   return;
+               }
                &status("forgot (safe delete): <$who> '$faqtoid' =is=> '$result'");
                ### TODO: check if the "backup" exists and overwrite it
                my $check = &getFactoid("$faqtoid #DEL#");
                if (!$check) {
-                   &setFactInfo($faqtoid, "factoid_key", $faqtoid." #DEL#");
-
-                   &setFactInfo($faqtoid, "modified_by", $who);
-                   &setFactInfo($faqtoid, "modified_time", time());
+                   if ($faqtoid !~ /#DEL#/) {
+                       &setFactInfo($faqtoid, "factoid_key", $faqtoid." #DEL#");
+
+                       &setFactInfo($faqtoid, "modified_by", $who);
+                       &setFactInfo($faqtoid, "modified_time", time());
+                   } else {
+                       &status("not backing up $faqtoid.");
+                   }
                } else {
                    &status("forget: not overwriting backup!");
                }
@@ -518,7 +527,8 @@ sub FactoidStuff {
            my $result = &getFactoid($from);
            if (defined $result) {
                my $author = &getFactInfo($from, "created_by");
-               if (&IsFlag("m") and $author =~ /^\Q$who\E\!/i) {
+
+               if (&IsFlag("m") or $author =~ /^\Q$who\E\!/i) {
                    &msg($who, "It's not yours to modify.");
                    return;
                }
@@ -576,11 +586,12 @@ sub FactoidStuff {
        return;
     }
 
-
     # Fix up $message for question.
-    for ($message) {
+    my $question = $message;
+    for ($question) {
        # fix the string.
        s/^hey([, ]+)where/where/i;
+       s/\s+\?$/?/;
        s/whois/who is/ig;
        s/where can i find/where is/i;
        s/how about/where is/i;
@@ -610,7 +621,7 @@ sub FactoidStuff {
        $correction_plausible = 0;
     }
 
-    my $result = &doQuestion($message);
+    my $result = &doQuestion($question);
     if (!defined $result or $result eq $noreply) {
        return 'result from doQ undef.';
     }