]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Factoids/Core.pl
* Stop recursive is also loops
[infobot.git] / src / Factoids / Core.pl
index 241620dab721a83706bef84e8beba980f7ad5e08..e33685c91f712214a267652cb45f453f00a8f1a0 100644 (file)
@@ -37,7 +37,6 @@ sub validFactoid {
        /^learn / and last;             # teach. damn morons.
        /^tell (\S+) about / and last;  # tell.
        /\=\~/ and last;                # substituition.
-       /^\S+ to \S+ \S+/ and last;     # babelfish.
 
        /^\=/ and last;                 # botnick = heh is.
        /wants you to know/ and last;
@@ -151,19 +150,17 @@ sub FactoidStuff {
 
        # if it doesn't exist, well... it doesn't!
        if (!defined $result) {
-           &performReply("i didn't have anything called '$faqtoid'");
+           &performReply("i didn't have anything called '$faqtoid' to forget");
            return;
        }
 
-       # todo: squeeze 3 getFactInfo calls into one?
+       # TODO: squeeze 3 getFactInfo calls into one?
        my $author      = &getFactInfo($faqtoid, "created_by");
        my $count       = &getFactInfo($faqtoid, "requested_count") || 0;
        # don't delete if requested $limit times
-       my $limit       = &getChanConfDefault(
-                               "factoidPreventForgetLimit", 100, $chan);
+       my $limit       = &getChanConfDefault('factoidPreventForgetLimit', 100, $chan);
        # don't delete if older than $limitage seconds (modified by requests below)
-       my $limitage    = &getChanConfDefault(
-                               "factoidPreventForgetLimitTime", 7 * 24 * 60 * 60, $chan);
+       my $limitage    = &getChanConfDefault('factoidPreventForgetLimitTime', 7 * 24 * 60 * 60, $chan);
        my $t           = &getFactInfo($faqtoid, "created_time") || 0;
        my $age         = time() - $t;
 
@@ -171,7 +168,7 @@ sub FactoidStuff {
        $limitage       = $limitage*($count+1)/$limit if ($count < $limit);
        # isauthor and isop.
        my $isau        = (defined $author and &IsHostMatch($author) == 2) ? 1 : 0;
-       my $isop        = (&IsFlag("o") eq "o") ? 1 : 0;
+       my $isop        = (&IsFlag("o") eq "o") ? 1 : 0;
 
        if (IsFlag("r") ne "r" && !$isop) {
            &msg($who, "you don't have access to remove factoids");
@@ -199,7 +196,7 @@ sub FactoidStuff {
 
        # this may eat some memory.
        # prevent deletion if other factoids redirect to it.
-       # todo: use hash instead of array.
+       # TODO: use hash instead of array.
        my @list;
        if (&getChanConf("factoidPreventForgetRedirect")) {
            &status("Factoids/Core: forget: checking for redirect factoids");
@@ -218,7 +215,7 @@ sub FactoidStuff {
 
            $match++;
        }
-       # todo: warn for op aswell, but allow force delete.
+       # TODO: warn for op aswell, but allow force delete.
        if (!$isop and $match) {
            &msg($who, "uhm, other (redirection) factoids depend on this one.");
            return;
@@ -234,17 +231,17 @@ sub FactoidStuff {
            }
 
            # ignore.
-           # todo: make forget limit configurable.
-           # todo: make forget ignore time configurable.
+           # TODO: make forget limit configurable.
+           # TODO: make forget ignore time configurable.
            if ($cache{forget}{$h} > 5) {
                &ignoreAdd(&makeHostMask($nuh), "*", 3*24*60, "abuse of forget");
-               &msg($who, "forget: Suck it!");
+               &msg($who, "forget: Ignoring you for abuse!");
            }
        }
 
        # lets do it!
 
-       if (&IsParam("factoidDeleteDelay") or &IsChanConf("factoidDeleteDelay")) {
+       if (&IsParam("factoidDeleteDelay") or &IsChanConf("factoidDeleteDelay") > 0) {
            if (!($isop or $isau) and $faqtoid =~ / #DEL#$/) {
                &msg($who, "cannot delete it ($faqtoid).");
                return;
@@ -293,7 +290,7 @@ sub FactoidStuff {
 
        my $i = 0;
        $i++ if (&IsParam("factoidDeleteDelay"));
-       $i++ if (&IsChanConf("factoidDeleteDelay"));
+       $i++ if (&IsChanConf("factoidDeleteDelay") > 0);
        if (!$i) {
            &performReply("safe delete has been disable so what is there to undelete?");
            return;
@@ -324,7 +321,7 @@ sub FactoidStuff {
 #      &setFactInfo($faqtoid, "modified_time", 0);
 
        $check  = &getFactoid($faqtoid);
-       # todo: check if $faqtoid." #DEL#" exists?
+       # TODO: check if $faqtoid." #DEL#" exists?
        if (defined $check) {
            &performReply("Successfully recovered '$faqtoid'.  Have fun now.");
            $count{'Undelete'}++;
@@ -381,16 +378,14 @@ sub FactoidStuff {
            my ($from,$to) = (lc $1, lc $2);
 
            my $result = &getFactoid($from);
-           if (defined $result) {
-               &performReply("i didn't have anything called '$from'");
+           if (!defined $result) {
+               &performReply("i didn't have anything called '$from' to rename");
                return;
            }
 
-           my $author = &getFactInfo($from, "created_by");
-
            # who == nick!user@host.
            if (&IsFlag("m") ne "m" and $author !~ /^\Q$who\E\!/i) {
-               &msg($who, "factoid '$form' is not yours to modify.");
+               &msg($who, "factoid '$from' is not yours to modify.");
                return;
            }
 
@@ -432,11 +427,16 @@ sub FactoidStuff {
                    &performReply("that's too long");
                    return;
                }
+               # empty
+               if (length $result == 0) {
+                   &performReply("factoid would be empty. use forget?");
+                   return;
+               }
                # min length.
                my $faqauth = &getFactInfo($faqtoid, "created_by");
                if ((length $result)*2 < length $was and
                        &IsFlag("o") ne "o" and
-                       &IsHostMask($faqauth) != 2
+                       &IsHostMatch($faqauth) != 2
                ) {
                    &performReply("too drastic change of factoid.");
                }
@@ -448,7 +448,7 @@ sub FactoidStuff {
                &performReply("that doesn't contain '$op'");
            }
        } else {
-           &performReply("i didn't have anything called '$faqtoid'");
+           &performReply("i didn't have anything called '$faqtoid' to modify");
        }
 
        return;
@@ -497,8 +497,8 @@ sub FactoidStuff {
     if (defined $result and $result !~ /^0?$/) {       # question.
        &status("question: <$who> $message");
        $count{'Question'}++;
-    } elsif (&IsChanConf("perlMath") > 0 and $addressed) { # perl math.
-       &loadMyModule("perlMath");
+    } elsif (&IsChanConf('Math') > 0 and $addressed) { # perl math.
+       &loadMyModule('Math');
        my $newresult = &perlMath();
 
        if (defined $newresult and $newresult ne "") {
@@ -514,7 +514,7 @@ sub FactoidStuff {
     }
 
     # why would a friendly bot get passed here?
-    if (&IsParam("friendlyBots")) {
+    if (&IsParam('friendlyBots')) {
        return if (grep lc($_) eq lc($who), split(/\s+/, $param{'friendlyBots'}));
     }