Mercurial > hg > scripts
view teh-lol.pl @ 6:6999ba7bf22b
Don't relol while idling (2 minutes of not participating in discussion)
author | Jordi Gutiérrez Hermoso <jordigh@gmail.com> |
---|---|
date | Thu, 20 Aug 2009 14:03:31 -0500 |
parents | 8f209cd0a7b6 |
children | 65035a108782 |
line wrap: on
line source
#Copyright © 2009 Jordi Gutiérrez Hermoso # #teh-lol.pl is free software: you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation, either version 3 of the License, or #(at your option) any later version. # #This program is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. # #You should have received a copy of the GNU General Public License #along with this program. If not, see <http://www.gnu.org/licenses/>. use strict; Xchat::register('teh lol', '0.1.3', 'lols back'); Xchat::hook_print('Channel Message', \&check_lol); use Time::HiRes; my %timestamp; sub check_lol { my $chan = Xchat::get_info("channel"); my $timesince_lasttalk = time - Xchat::user_info -> {'lasttalk'}; #Two minutes of not saying anything in the channel counts as idling if ($_[0][1] =~ /\b(lo+l)\b/i and $timesince_lasttalk < 120) { my $lol = $1; my $relol; #Mimic long lols if (length $lol > 3 ) { my $numos = int rand(3); $numos += 3; $relol = "l".("o" x $numos)."l"; } else { $relol = "lol"; } if ( time - $timestamp{$chan} > 59 or undef $timestamp{$chan} ) { #Delay the response a little, for maximum annoyance. #( theoros's algorithm from #not-math ) my $delay = 0.8; if (length($relol) > 3){ $delay += ((length $relol) - 3 + rand(5)) * 0.069; } Time::HiRes::usleep($delay+2); Xchat::command("say $relol"); } $timestamp{$chan} = time; } return Xchat::EAT_NONE; }