diff --git a/cpanfile b/cpanfile index ea7e192..54d45a7 100644 --- a/cpanfile +++ b/cpanfile @@ -2,6 +2,7 @@ requires 'Carp'; requires 'Cwd::utf8'; requires 'DB_File'; requires 'SQLite_File'; +requires 'Digest::HMAC_SHA1'; requires 'Digest::MD5'; requires 'Data::Dumper'; requires 'Digest::SHA'; @@ -22,5 +23,5 @@ requires 'Mojo::Base'; requires 'Mojo::IOLoop'; requires 'Mojo::UserAgent'; requires 'Text::Fuzzy'; +requires 'URI::Encode::XS'; requires 'URI::URL'; -requires 'URI::Encode::XS'; \ No newline at end of file diff --git a/lib/botlib.pm b/lib/botlib.pm index a7c6976..bb78b7e 100644 --- a/lib/botlib.pm +++ b/lib/botlib.pm @@ -16,7 +16,7 @@ use archeologist qw (dig); use fisher qw (fish); use fortune qw (fortune); use friday qw (friday); -use image qw (kitty fox oboobs obutts rabbit); +use image qw (kitty fox oboobs obutts rabbit owl); use karma qw (karmaSet karmaGet); use lat qw (latAnswer); use util qw (trim); @@ -102,6 +102,11 @@ sub command { $reply = rabbit (); $msg->replyMd ($reply); return; + } elsif (substr ($text, 1) eq 'owl' || substr ($text, 1) eq 'сова') { + $msg->typing (); + $reply = owl (); + $msg->replyMd ($reply); + return; } elsif ( substr ($text, 1) eq 'tits' || substr ($text, 1) eq 'boobs' || @@ -155,7 +160,7 @@ sub command { $reply = << "MYHELP"; ``` ${csign}help | ${csign}помощь - список команд -${csign}bunny | ${csign}rabbit | ${csign}кролик - кролик (бета-версия) +${csign}bunny | ${csign}rabbit | ${csign}кролик - кролик ${csign}cat | ${csign}кис - кошечка ${csign}dig | ${csign}копать - заняться археологией ${csign}fish | ${csign}рыба | ${csign}рыбка - порыбачить @@ -165,6 +170,7 @@ ${csign}fortune | ${csign}фортунка - рандомная фраз ${csign}fox | ${csign}лис - лисичка ${csign}friday | ${csign}пятница - а не пятница ли сегодня? ${csign}lat | ${csign}лат - сгенерить фразу из крылатых латинских выражений +${csign}owl | ${csign}сова - сова ${csign}ping | ${csign}пинг - попинговать бота ${csign}ver | ${csign}version | ${csign}версия - что-то про версию ПО ${csign}w город | ${csign}п город - погода в указанном городе diff --git a/lib/image.pm b/lib/image.pm index 4e22c18..a335c85 100644 --- a/lib/image.pm +++ b/lib/image.pm @@ -13,10 +13,12 @@ use HTTP::Tiny; use Math::Random::Secure qw (irand); use SQLite_File; use conf qw (loadConf); +use flickr qw (flickr_by_tags); +use util qw (urlencode); use version; our $VERSION = qw (1.0); use Exporter qw (import); -our @EXPORT_OK = qw (kitty fox oboobs obutts rabbit); +our @EXPORT_OK = qw (kitty fox oboobs obutts rabbit owl); my $c = loadConf (); my $dir = $c->{image}->{dir}; @@ -301,13 +303,15 @@ sub imgur { } } -sub rabbit { +# It works but results are not particulary relevant, partially. about 20-30% miss +# So i prefer to use flickr rabbits selection :) +sub rabbit_imgur { my @terms = ( - '?q=animals%20AND%20%28%20rabbits%20OR%20bunnies%20%29', - 'year?q=animals%20AND%20%28%20rabbits%20OR%20bunnies%20%29', - 'relevance?q=animals+AND+%28+rabbits+OR+bunnies+%29', - 'relevance/year?q=animals+AND+%28+rabbits+OR+bunnies+%29', - 'score?q_not=cat%20OR%20kitten%20OR%20kittens%20OR%20dog%20OR%20cats%20OR%20dogs%20OR%20puppy%20OR%20puppies&q_tags=bunnies%2Cbunny%2Crabbits%2Crabbit' + urlencode '?q=animals AND (rabbits OR bunnies)', + urlencode 'year?q=animals AND (rabbits OR bunnies)', + urlencode 'relevance?q=animals AND (rabbits OR bunnies)', + urlencode 'relevance/year?q=animals AND (rabbits OR bunnies)', + urlencode 'score?q_not=cat OR kitten OR kittens OR dog OR cats OR dogs OR puppy OR puppies&q_tags=bunnies,bunny,rabbits,rabbit' ); my $rabbit = imgur ($terms[irand ($#terms + 1)]); @@ -321,6 +325,27 @@ sub rabbit { } } +sub rabbit { + # rabbit, but bunny + my $url = flickr_by_tags ('animal,bunny'); + + if (defined $url) { + return sprintf '[(\_/)](%s)', $url; + } else { + return 'Нету кроликов, все разбежались.'; + } +} + +sub owl { + my $url = flickr_by_tags ('bird,owl'); + + if (defined $url) { + return sprintf '[{ O v O }](%s)', $url; + } else { + return 'Нету сов, все разлетелись.'; + } +} + 1; # vim: set ft=perl noet ai ts=4 sw=4 sts=4: