]> git.donarmstrong.com Git - infobot.git/blobdiff - src/IRC/IrcHelpers.pl
allow per-channel addressCharacter
[infobot.git] / src / IRC / IrcHelpers.pl
index 8055c4f027d76e9a51a4d425ac0991a22c878599..13f44695b800463a2ff98383c909f2b59055f6d4 100644 (file)
@@ -83,6 +83,7 @@ sub hookMsg {
     $message   =~ s/[\cA-\c_]//ig;     # strip control characters
     $message   =~ s/^\s+//;            # initial whitespaces.
     $who       =~ tr/A-Z/a-z/;         # lowercase.
+    my $mynick = $conn->nick();
 
     &showProc();
 
@@ -90,12 +91,19 @@ sub hookMsg {
     if ($msgType =~ /private/) {
        # private messages.
        $addressed = 1;
+       if (&IsChanConf('addressCharacter')) {
+           $addressCharacter = getChanConf('addressCharacter');
+           if ($message =~ s/^\Q$addressCharacter\E//) {
+               &msg($who, "please don't use the the addressCharacter when private messaging");
+           }
+       }
     } else {
        # public messages.
        # addressing revamped by the xk.
        ### below needs to be fixed...
-       if (&IsParam("addressCharacter")) {
-           if ($message =~ s/^\Q$param{'addressCharacter'}\E//) {
+       if (&IsChanConf('addressCharacter')) {
+           $addressCharacter = getChanConf('addressCharacter');
+           if ($message =~ s/^\Q$addressCharacter\E//) {
                $addrchar  = 1;
                $addressed = 1;
            }
@@ -103,7 +111,7 @@ sub hookMsg {
 
        if ($message =~ /^($mask{nick})([\;\:\>\, ]+) */) {
            my $newmessage = $';
-           if ($1 =~ /^\Q$ident\E$/i) {
+           if ($1 =~ /^\Q$mynick\E$/i) {
                $message   = $newmessage;
                $addressed = 1;
            } else {
@@ -167,11 +175,11 @@ sub hookMsg {
        }
 
        if ($addrchar) {
-           &status("$b_cyan$who$ob is short-addressing me");
+           &status("$b_cyan$who$ob is short-addressing $mynick");
        } elsif ($msgType eq "private") {       # private.
-           &status("$b_cyan$who$ob is /msg'ing me");
+           &status("$b_cyan$who$ob is /msg'ing $mynick");
        } else {                                # public?
-           &status("$b_cyan$who$ob is addressing me");
+           &status("$b_cyan$who$ob is addressing $mynick");
        }
 
        $flood{$floodwho}{$message} = time();
@@ -233,9 +241,12 @@ sub hookMsg {
        $seencache{$who}{'msg'}  = $orig{message};
        $seencache{$who}{'msgcount'}++;
     }
-
+    if (&IsChanConf("minVolunteerLength")) {
+       # FIXME hack to treat unaddressed as if using addrchar
+       $addrchar = 1;
+    }
     return if ($skipmessage);
-    return unless (&IsParam("minVolunteerLength") or $addressed);
+    return unless ($addrchar or $addressed);
 
     foreach (@ignore) {
        s/\*/\\S*/g;
@@ -316,7 +327,7 @@ sub chanLimitVerify {
 
     &chanServCheck($chan);
 
-    ### todo: unify code with chanlimitcheck()
+    ### TODO: unify code with chanlimitcheck()
     return if ($delta > 5);
 
     &status("clc: big change in limit for $chan ($delta);".
@@ -350,7 +361,7 @@ sub chanServCheck {
     }
 
     # check for first hash then for next hash.
-    # todo: a function for &ischanop()? &isvoice()?
+    # TODO: a function for &ischanop()? &isvoice()?
     if (exists $channels{$chan} and exists $channels{$chan}{'o'}{$ident}) {
        return 0;
     }