diff --git a/lib/botlib.pm b/lib/botlib.pm index 9a0f6e4..a624a90 100644 --- a/lib/botlib.pm +++ b/lib/botlib.pm @@ -76,6 +76,12 @@ sub command { sleep (irand (2) + 1); $msg->replyMd ($reply); return; + } elsif (substr ($text, 1) eq 'monkeyuser') { + $msg->typing (); + $reply = monkeyuser (); + sleep (irand (2) + 1); + $msg->replyMd ($reply); + return; } elsif (substr ($text, 1) eq 'cat' || substr ($text, 1) eq 'кис') { $msg->typing (); $reply = kitty (); @@ -185,6 +191,7 @@ ${csign}fortune | ${csign}фортунка - рандомная фраз ${csign}fox | ${csign}лис - лисичка ${csign}friday | ${csign}пятница - а не пятница ли сегодня? ${csign}lat | ${csign}лат - сгенерить фразу из крылатых латинских выражений +${csign}monkeyuser - рандомный стрип MonkeyUser ${csign}owl | ${csign}сова - сова ${csign}ping | ${csign}пинг - попинговать бота ${csign}ver | ${csign}version | ${csign}версия - что-то про версию ПО diff --git a/lib/monkeyuser.pm b/lib/monkeyuser.pm new file mode 100644 index 0000000..7eb710f --- /dev/null +++ b/lib/monkeyuser.pm @@ -0,0 +1,62 @@ +package monkeyuser; + +use 5.018; +use strict; +use warnings; +use utf8; +use open qw (:std :utf8); +use English qw ( -no_match_vars ); +use Carp qw (cluck); +use HTTP::Tiny; +use HTML::TokeParser; +use Math::Random::Secure qw (irand); + +use version; our $VERSION = qw (1.0); +use Exporter qw (import); +our @EXPORT_OK = qw (monkeyuser); + +sub monkeyuser { + my $r; + my $ret = 'Нету Monkey User-ов, они все спрятались.'; + my @link; + + for (1..3) { + my $http = HTTP::Tiny->new (timeout => 3); + $r = $http->get ('https://www.monkeyuser.com/toc/'); + + if ($r->{success}) { + last; + } + + sleep 2; + } + + if ($r->{success}) { + my $p = HTML::TokeParser->new(\$r->{content}); + my @a; + + do { + $#a = -1; + @a = $p->get_tag("a"); + + if (defined $a[0][1]->{class} && $a[0][1]->{class} eq 'lazyload small-image') { + if (defined $a[0][1]->{"data-src"} && ($a[0][1]->{"data-src"} !~ /adlitteram/)) { + push @link, $a[0][1]->{"data-src"}; + } + } + + } while ($#{$a[0]} > 1); + + if ($#link > 0) { + $ret = sprintf '[MonkeyUser](https://www.monkeyuser.com%s)', $link [irand (1 + $#link)]; + } + } else { + cluck sprintf 'Server return status %s with message: %s', $r->{status}, $r->{reason}; + } + + return $ret; +} + +1; + +# vim: set ft=perl noet ai ts=4 sw=4 sts=4: