From 3787bb30738366c98b4cec052019cb06c2ab62ce Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 20 Dec 2020 15:03:25 +0300 Subject: [PATCH] =?UTF-8?q?Implement=20!cat=20and=20!=D0=BA=D0=B8=D1=81=20?= =?UTF-8?q?commands?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/botlib.pm | 57 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/lib/botlib.pm b/lib/botlib.pm index 8c4cf45..248fc69 100644 --- a/lib/botlib.pm +++ b/lib/botlib.pm @@ -249,6 +249,8 @@ sub command { } elsif (length ($text) >= 2 && (substr ($text, 1, 2) eq 'w ' || substr ($text, 1, 2) eq 'п ')) { my $city = substr ($text, 3); $reply = weather ($city); + } elsif (substr ($text, 1) eq 'cat' || substr ($text, 1) eq 'кис') { + $reply = kitty(); } elsif (substr ($text, 1) eq 'lat' || substr ($text, 1) eq 'лат') { $reply = latAnswer (); } elsif ((length ($text) >= 6 && (substr ($text, 1, 6) eq 'karma ' || substr ($text, 1, 6) eq 'карма ')) || substr($text, 1) eq 'karma' || substr($text, 1) eq 'карма') { @@ -282,21 +284,22 @@ sub command { } elsif (substr ($text, 1) eq 'help' || substr ($text, 1) eq 'помощь') { $reply = << 'MYHELP'; ``` -!help | !помощь - список команд -!dig | !копать - заняться археологией -!f | !ф - рандомная фраза из сборника цитат fortune_mod -!fortune | !фортунка - рандомная фраза из сборника цитат fortune_mod -!f # | !ф # - где 1 - вкл, 0 - выкл фортунку с утра -!fortune # | !фортунка # - где 1 - вкл, 0 - выкл фортунку с утра -!f ? | !ф ? - показываем ли с утра фортунку для чата -!fortune ? | !фортунка ? - показываем ли с утра фортунку для чата -!friday | !пятница - а не пятница ли сегодня? -!lat | !лат - сгенерировать фразу из крылатых латинских выражений -!ping | !пинг - попинговать бота -!ver | !version | !версия - что-то про версию ПО -!w город | !п город - погода в указанном городе -!karma | !карма фраза - посмотреть карму фразы -фраза-- | фраза++ - убавить или добавить карму фразе +!help | !помощь - список команд +!cat | !кис - кошечка +!dig | !копать - заняться археологией +!f | !ф - рандомная фраза из сборника цитат fortune_mod +!fortune | !фортунка - рандомная фраза из сборника цитат fortune_mod +!f # | !ф # - где 1 - вкл, 0 - выкл фортунку с утра +!fortune # | !фортунка # - где 1 - вкл, 0 - выкл фортунку с утра +!f ? | !ф ? - показываем ли с утра фортунку для чата +!fortune ? | !фортунка ? - показываем ли с утра фортунку для чата +!friday | !пятница - а не пятница ли сегодня? +!lat | !лат - сгенерить фразу из крылатых латинских выражений +!ping | !пинг - попинговать бота +!ver | !version | !версия - что-то про версию ПО +!w город | !п город - погода в указанном городе +!karma фраза | !карма фраза - посмотреть карму фразы +фраза-- | фраза++ - убавить или добавить карму фразе ``` Но на самом деле я бот больше для общения, чем для исполнения команд. Поговоришь со мной? @@ -378,6 +381,30 @@ sub fmatch { } } +sub kitty { + my $r; + + for (1..3) { + my $http = HTTP::Tiny->new (timeout => 3); + $r = $http->get ('https://api.thecatapi.com/v1/images/search'); + last if ($r->{success}); + sleep 2; + } + + if ($r->{success}) { + my $jcat = eval { decode_json ($r->{content}) }; + + if ($jcat->[0]->{url}) { + my @cats = ('龴ↀ◡ↀ龴', '=^..^=', '≧◔◡◔≦ ','^ↀᴥↀ^' ); + return sprintf '[%s](%s)', $cats[int(rand($#cats))], $jcat->[0]->{url}; + } else { + return 'Нету кошечек, все разбежались.'; + } + } else { + return 'Нету кошечек, все разбежались.'; + } +} + 1; # vim: set ft=perl noet ai ts=4 sw=4 sts=4: