diff --git a/lib/botlib.pm b/lib/botlib.pm index cc9854e..c1fd6a8 100644 --- a/lib/botlib.pm +++ b/lib/botlib.pm @@ -21,6 +21,7 @@ use karma qw (karmaSet karmaGet); use lat qw (latAnswer); use util qw (trim); use weather qw (weather); +use xkcd qw (xkcd); use version; our $VERSION = qw (1.0); use Exporter qw (import); @@ -91,6 +92,12 @@ sub command { } $reply = karmaGet ($chatid, $mytext); + } elsif (substr ($text, 1) eq 'xkcd') { + $msg->typing (); + $reply = xkcd (); + sleep (irand (2) + 1); + $msg->replyMd ($reply); + return; } elsif (substr ($text, 1) eq 'fox' || substr ($text, 1) eq 'лис') { $msg->typing (); $reply = fox (); @@ -174,6 +181,7 @@ ${csign}owl | ${csign}сова - сова ${csign}ping | ${csign}пинг - попинговать бота ${csign}ver | ${csign}version | ${csign}версия - что-то про версию ПО ${csign}w город | ${csign}п город - погода в указанном городе +${csign}xkcd - рандомный стрип с сайта xkcd.ru ${csign}karma фраза | ${csign}карма фраза - посмотреть карму фразы фраза-- | фраза++ - убавить или добавить карму фразе ``` diff --git a/lib/xkcd.pm b/lib/xkcd.pm new file mode 100644 index 0000000..7408900 --- /dev/null +++ b/lib/xkcd.pm @@ -0,0 +1,27 @@ +package xkcd; + +use 5.018; +use strict; +use warnings; +use utf8; +use open qw (:std :utf8); +use HTTP::Tiny; + +use version; our $VERSION = qw (1.0); +use Exporter qw (import); +our @EXPORT_OK = qw (xkcd); + +sub xkcd { + my $http = HTTP::Tiny->new (timeout => 5, max_redirect => 0); + my $r = $http->get ('https://xkcd.ru/random/'); + + if (defined $r->{headers} && defined $r->{headers}->{location} && $r->{headers}->{location} ne '') { + return sprintf '[xkcd.ru](https://xkcd.ru/i/%s_v1.png)', substr ($r->{headers}->{location}, 1, -1); + } + + return 'Комикс-стрип нарисовать не так-то просто :('; +} + +1; + +# vim: set ft=perl noet ai ts=4 sw=4 sts=4: