commit 5720da41f70fef5581ee1a9149046d73c6ec6e5f from: noodle date: Sat Jan 3 11:20:32 2026 UTC change numerical uppercase variables to use "constant" and change $NVERSE hash to NBIBLE and NQURAN commit - dbcfa451afea4a8bf56933462988cf943d663490 commit + 5720da41f70fef5581ee1a9149046d73c6ec6e5f blob - 734a85eefab6b29d75ab92eba7bd36311a6cd2fc blob + 20db9c983f3f79b5db558594473acce4e35dc021 --- mata_bot.pl +++ mata_bot.pl @@ -10,37 +10,34 @@ use constant { LOG_ERROR => 0, LOG_WARN => 1, LOG_DEBUG => 2, + CONNECT_TIMEOUT => 60, + DEFAULT_PORT => 6667, + DEFAULT_TLS => 0, + IRCMAX => 512, + LAG_CHECK_TIME => 120, + MAX_LAG => 300, + NBIBLE => 31102, + NQURAN => 6348, + RECONN_SLEEP => 60, + SOCK_TIMEOUT => 10, }; +my $DEFAULT_CHAN = '#testmatabot'; +my $DEFAULT_HOST = 'localhost'; +my $DEFAULT_PATH_BALL = '/usr/local/share/matabot/ball'; +my $DEFAULT_PATH_HELO = '/usr/local/share/matabot/hellos'; +my $DEFAULT_PATH_QUOT = '/usr/local/share/matabot/quotes'; +my $FCUTE = '[>.<]'; +my $FDEAD = '[x~x]'; +my $FFLIP = 't[-_-t]'; +my $FGLAD = '[^_^]'; +my $FNORM = '[._.]'; +my $FSING = '[^=^]'; +my $MOM = 'noodle'; +my $MYNICK = 'mata_bot'; +my $MYREAL = 'death to technomage!!'; +my $MYUSER = 'mata_bot_beta4'; +my $NICKRE = qr/mata_?bo[ity]+/i; -my $CONNECT_TIMEOUT = 60; -my $DEFAULT_CHAN = '#testmatabot'; -my $DEFAULT_HOST = 'localhost'; -my $DEFAULT_PATH_BALL = '/usr/local/share/matabot/ball'; -my $DEFAULT_PATH_HELO = '/usr/local/share/matabot/hellos'; -my $DEFAULT_PATH_QUOT = '/usr/local/share/matabot/quotes'; -my $DEFAULT_PORT = 6667; -my $DEFAULT_TLS = 0; -my $FCUTE = '[>.<]'; -my $FDEAD = '[x~x]'; -my $FFLIP = 't[-_-t]'; -my $FGLAD = '[^_^]'; -my $FNORM = '[._.]'; -my $FSING = '[^=^]'; -my $IRCMAX = 512; -my $LAG_CHECK_TIME = 120; -my $MAX_LAG = 300; -my $MOM = 'noodle'; -my $MYNICK = 'mata_bot'; -my $MYREAL = 'death to technomage!!'; -my $MYUSER = 'mata_bot_beta4'; -my $NICKRE = qr/mata_?bo[ity]+/i; -my $RECONN_SLEEP = 60; -my $SOCK_TIMEOUT = 10; -my %NVERSE = ( - 'bible' => 31102, - 'quran' => 6348, -); - sub randint { my($min, $max) = @_; @@ -123,7 +120,7 @@ sub replycmd { my ($book, $n, $r); $book = $& =~ /^a/ ? 'quran' : 'bible'; - $n = randint(1, $NVERSE{$book}); + $n = randint(1, $book eq 'quran' ? NQURAN : NBIBLE); $r = HTTP::Tiny->new->get("https://triapul.cz/files/${book}/${n}"); if ($r->{success}) { $reply = strip($r->{content}); @@ -250,7 +247,7 @@ sub sendmsg { my $sock; $! = 0; - unless (($sock) = $s->can_write($SOCK_TIMEOUT)) { + unless (($sock) = $s->can_write(SOCK_TIMEOUT)) { if ($!) { logger(LOG_ERROR, $!) } else { logger(LOG_WARN, "sock not ready to write") } return 0; @@ -279,7 +276,7 @@ sub recvmsg { } # read a line $! = 0; - unless (($sock) = $s->can_read($SOCK_TIMEOUT)) { + unless (($sock) = $s->can_read(SOCK_TIMEOUT)) { if ($!) { logger(LOG_ERROR, $!); return undef; @@ -312,7 +309,7 @@ sub evasdrop { $checkping = 1; } elsif (/^:[^ ]+ 352 [^ ]+ [^ ]+ [^ ]+ ([^ ]+)/) { # the extra 2 bytes account for \r\n - $msgmax = $IRCMAX - length($1) - length($priv) - 2; + $msgmax = IRCMAX - length($1) - length($priv) - 2; } elsif (/^:([^ !#&][^ !]*)![^ \@]+\@[^ ]+ ${priv}(.+)$/) { # respond to chan message my $r; @@ -324,11 +321,11 @@ sub evasdrop { $r = respond($1, $2, @$lists); sendmsg($s, $priv . substr($r,0,$msgmax)) if length($r); } - if ($checkping and time-$pingtime > $LAG_CHECK_TIME) { + if ($checkping and time-$pingtime > LAG_CHECK_TIME) { # ping server every once in a while and wait for pong sendmsg($s, "PING :${host}"); $checkping = 0; - } elsif (not $checkping and time-$pongtime > $MAX_LAG) { + } elsif (not $checkping and time-$pongtime > MAX_LAG) { # we're leaving if we don't get ponged back on time logger(LOG_WARN, 'server PONG response timed out'); return; @@ -374,8 +371,8 @@ sub init { return { chan => $chan || $DEFAULT_CHAN, host => $host || $DEFAULT_HOST, - port => $port || $DEFAULT_PORT, - tls => $tls || $DEFAULT_TLS, + port => $port || DEFAULT_PORT, + tls => $tls || DEFAULT_TLS, }, [ \@ball, @@ -392,10 +389,10 @@ while (1) { $addr = "$opts->{'host'}:$opts->{'port'}"; if ($opts->{'tls'}) { $sock = IO::Socket::SSL->new(PeerAddr => $addr, - Timeout => $CONNECT_TIMEOUT); + Timeout => CONNECT_TIMEOUT); } else { $sock = IO::Socket::INET->new(PeerAddr => $addr, - Timeout => $CONNECT_TIMEOUT); + Timeout => CONNECT_TIMEOUT); } if ($sock) { my $s; @@ -411,6 +408,6 @@ while (1) { } else { logger(LOG_ERROR, "cannot make socket: ${IO::Socket::errstr}"); } - logger(LOG_WARN, "reconnecting in ${RECONN_SLEEP} seconds..."); - sleep $RECONN_SLEEP; + logger(LOG_WARN, "reconnecting in ".RECONN_SLEEP." seconds..."); + sleep RECONN_SLEEP; }