DeeJay utility functions to Util.pm
This commit is contained in:
@@ -18,11 +18,11 @@ use BotLib::Admin qw (@ForbiddenMessageTypes GetForbiddenTypes AddForbiddenType
|
|||||||
DelForbiddenType ListForbidden FortuneToggle FortuneStatus
|
DelForbiddenType ListForbidden FortuneToggle FortuneStatus
|
||||||
PluginToggle PluginStatus PluginEnabled ChanMsgToggle ChanMsgStatus
|
PluginToggle PluginStatus PluginEnabled ChanMsgToggle ChanMsgStatus
|
||||||
GreetMsgToggle GreetMsgStatus GoodbyeMsgToggle GoodbyeMsgStatus);
|
GreetMsgToggle GreetMsgStatus GoodbyeMsgToggle GoodbyeMsgStatus);
|
||||||
use BotLib::Util qw (trim);
|
use BotLib::Util qw (trim Highlight);
|
||||||
|
|
||||||
use version; our $VERSION = qw (1.1);
|
use version; our $VERSION = qw (1.1);
|
||||||
use Exporter qw (import);
|
use Exporter qw (import);
|
||||||
our @EXPORT_OK = qw (Command Highlight BotSleep IsCensored);
|
our @EXPORT_OK = qw (Command);
|
||||||
|
|
||||||
my $c = LoadConf ();
|
my $c = LoadConf ();
|
||||||
my $csign = $c->{telegrambot}->{csign};
|
my $csign = $c->{telegrambot}->{csign};
|
||||||
@@ -447,85 +447,6 @@ MYADMIN
|
|||||||
return $reply;
|
return $reply;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub Highlight {
|
|
||||||
my $msg = shift;
|
|
||||||
|
|
||||||
my $fullname;
|
|
||||||
my $highlight;
|
|
||||||
my $username;
|
|
||||||
my $visavi = '';
|
|
||||||
my $userid = $msg->from->id;
|
|
||||||
|
|
||||||
if ($msg->from->can ('username') && defined $msg->from->username ) {
|
|
||||||
$username = $msg->from->username;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($msg->from->can ('first_name') && defined $msg->from->first_name) {
|
|
||||||
$fullname = $msg->from->first_name;
|
|
||||||
|
|
||||||
if ($msg->from->can ('last_name') && defined $msg->from->last_name) {
|
|
||||||
$fullname .= ' ' . $msg->from->last_name;
|
|
||||||
}
|
|
||||||
} elsif ($msg->from->can ('last_name') && defined $msg->from->last_name) {
|
|
||||||
$fullname .= $msg->from->last_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (defined $username) {
|
|
||||||
$visavi .= '@' . $username;
|
|
||||||
|
|
||||||
if (defined $fullname) {
|
|
||||||
$highlight = "[$fullname](tg://user?id=$userid)";
|
|
||||||
$visavi .= ', ' . $fullname;
|
|
||||||
} else {
|
|
||||||
$highlight = "[$username](tg://user?id=$userid)";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$highlight = "[$fullname](tg://user?id=$userid)";
|
|
||||||
$visavi .= $fullname;
|
|
||||||
}
|
|
||||||
|
|
||||||
$visavi .= " ($userid)";
|
|
||||||
|
|
||||||
return ($userid, $username, $fullname, $highlight, $visavi);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub BotSleep {
|
|
||||||
# TODO: Parametrise this with fuzzy sleep time in seconds
|
|
||||||
my $msg = shift;
|
|
||||||
# let's emulate real human and delay answer
|
|
||||||
sleep (irand (2) + 1);
|
|
||||||
|
|
||||||
for (0..(4 + irand (3))) {
|
|
||||||
$msg->typing ();
|
|
||||||
sleep 3;
|
|
||||||
sleep 3 unless ($_);
|
|
||||||
}
|
|
||||||
|
|
||||||
sleep ( 3 + irand (2));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub IsCensored {
|
|
||||||
my $msg = shift;
|
|
||||||
|
|
||||||
my $forbidden = GetForbiddenTypes ($msg->chat->id);
|
|
||||||
|
|
||||||
# voice messages are special
|
|
||||||
if (defined ($msg->voice) && defined ($msg->voice->duration) && ($msg->voice->duration > 0)) {
|
|
||||||
if ($forbidden->{'voice'}) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (keys %{$forbidden}) {
|
|
||||||
if ($forbidden->{$_} && (defined $msg->{$_})) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
# vim: set ft=perl noet ai ts=4 sw=4 sts=4:
|
# vim: set ft=perl noet ai ts=4 sw=4 sts=4:
|
||||||
|
|||||||
@@ -8,13 +8,14 @@ use open qw (:std :utf8);
|
|||||||
use English qw ( -no_match_vars );
|
use English qw ( -no_match_vars );
|
||||||
use Digest::SHA qw (sha1_base64);
|
use Digest::SHA qw (sha1_base64);
|
||||||
use Encode qw (encode_utf8);
|
use Encode qw (encode_utf8);
|
||||||
|
use Math::Random::Secure qw (irand);
|
||||||
use MIME::Base64 qw (encode_base64);
|
use MIME::Base64 qw (encode_base64);
|
||||||
use Text::Fuzzy qw (distance_edits);
|
use Text::Fuzzy qw (distance_edits);
|
||||||
use URI::URL qw (url);
|
use URI::URL qw (url);
|
||||||
|
|
||||||
use version; our $VERSION = qw (1.0);
|
use version; our $VERSION = qw (1.0);
|
||||||
use Exporter qw (import);
|
use Exporter qw (import);
|
||||||
our @EXPORT_OK = qw (trim urlencode fmatch utf2b64 utf2sha1);
|
our @EXPORT_OK = qw (trim urlencode fmatch utf2b64 utf2sha1 BotSleep Highlight IsCensored RandomCommonPhrase);
|
||||||
|
|
||||||
sub trim {
|
sub trim {
|
||||||
my $str = shift;
|
my $str = shift;
|
||||||
@@ -72,6 +73,103 @@ sub utf2sha1 {
|
|||||||
return sha1_base64 $bytes;
|
return sha1_base64 $bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub Highlight {
|
||||||
|
my $msg = shift;
|
||||||
|
|
||||||
|
my $fullname;
|
||||||
|
my $highlight;
|
||||||
|
my $username;
|
||||||
|
my $visavi = '';
|
||||||
|
my $userid = $msg->from->id;
|
||||||
|
|
||||||
|
if ($msg->from->can ('username') && defined $msg->from->username ) {
|
||||||
|
$username = $msg->from->username;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($msg->from->can ('first_name') && defined $msg->from->first_name) {
|
||||||
|
$fullname = $msg->from->first_name;
|
||||||
|
|
||||||
|
if ($msg->from->can ('last_name') && defined $msg->from->last_name) {
|
||||||
|
$fullname .= ' ' . $msg->from->last_name;
|
||||||
|
}
|
||||||
|
} elsif ($msg->from->can ('last_name') && defined $msg->from->last_name) {
|
||||||
|
$fullname .= $msg->from->last_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined $username) {
|
||||||
|
$visavi .= '@' . $username;
|
||||||
|
|
||||||
|
if (defined $fullname) {
|
||||||
|
$highlight = "[$fullname](tg://user?id=$userid)";
|
||||||
|
$visavi .= ', ' . $fullname;
|
||||||
|
} else {
|
||||||
|
$highlight = "[$username](tg://user?id=$userid)";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$highlight = "[$fullname](tg://user?id=$userid)";
|
||||||
|
$visavi .= $fullname;
|
||||||
|
}
|
||||||
|
|
||||||
|
$visavi .= " ($userid)";
|
||||||
|
|
||||||
|
return ($userid, $username, $fullname, $highlight, $visavi);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub IsCensored {
|
||||||
|
my $msg = shift;
|
||||||
|
|
||||||
|
my $forbidden = GetForbiddenTypes ($msg->chat->id);
|
||||||
|
|
||||||
|
# voice messages are special
|
||||||
|
if (defined ($msg->voice) && defined ($msg->voice->duration) && ($msg->voice->duration > 0)) {
|
||||||
|
if ($forbidden->{'voice'}) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (keys %{$forbidden}) {
|
||||||
|
if ($forbidden->{$_} && (defined $msg->{$_})) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub RandomCommonPhrase {
|
||||||
|
my @myphrase = (
|
||||||
|
'Так, блядь...',
|
||||||
|
'*Закатывает рукава* И ради этого ты меня позвал?',
|
||||||
|
'Ну чего ты начинаешь, нормально же общались',
|
||||||
|
'Повтори свой вопрос, не поняла',
|
||||||
|
'Выйди и зайди нормально',
|
||||||
|
'Я подумаю',
|
||||||
|
'Даже не знаю, что на это ответить',
|
||||||
|
'Ты упал такие вопросы девочке задавать?',
|
||||||
|
'Можно и так, но не уверена',
|
||||||
|
'А как ты думаешь?',
|
||||||
|
'А ви, таки, почему интересуетесь?',
|
||||||
|
);
|
||||||
|
|
||||||
|
return $myphrase[irand ($#myphrase + 1)];
|
||||||
|
}
|
||||||
|
|
||||||
|
sub BotSleep {
|
||||||
|
# TODO: Parametrise this with fuzzy sleep time in seconds
|
||||||
|
my $msg = shift;
|
||||||
|
# let's emulate real human and delay answer
|
||||||
|
sleep (irand (2) + 1);
|
||||||
|
|
||||||
|
for (0..(4 + irand (3))) {
|
||||||
|
$msg->typing ();
|
||||||
|
sleep 3;
|
||||||
|
sleep 3 unless ($_);
|
||||||
|
}
|
||||||
|
|
||||||
|
sleep ( 3 + irand (2));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
# vim: set ft=perl noet ai ts=4 sw=4 sts=4:
|
# vim: set ft=perl noet ai ts=4 sw=4 sts=4:
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ use Math::Random::Secure qw (irand);
|
|||||||
use Mojo::Base 'Teapot::Bot::Brain';
|
use Mojo::Base 'Teapot::Bot::Brain';
|
||||||
|
|
||||||
use BotLib::Admin qw (FortuneToggleList ChanMsgEnabled GreetMsgEnabled GoodbyeMsgEnabled);
|
use BotLib::Admin qw (FortuneToggleList ChanMsgEnabled GreetMsgEnabled GoodbyeMsgEnabled);
|
||||||
use BotLib qw (Command Highlight BotSleep IsCensored);
|
use BotLib qw (Command);
|
||||||
use BotLib::Conf qw (LoadConf);
|
use BotLib::Conf qw (LoadConf);
|
||||||
use BotLib::Util qw (trim fmatch);
|
use BotLib::Util qw (trim fmatch BotSleep Highlight IsCensored RandomCommonPhrase);
|
||||||
use RedisLib qw (redis_events_listener);
|
use RedisLib qw (redis_events_listener);
|
||||||
|
|
||||||
use version; our $VERSION = qw (1.0);
|
use version; our $VERSION = qw (1.0);
|
||||||
@@ -497,23 +497,6 @@ sub __on_msg {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub RandomCommonPhrase {
|
|
||||||
my @myphrase = (
|
|
||||||
'Так, блядь...',
|
|
||||||
'*Закатывает рукава* И ради этого ты меня позвал?',
|
|
||||||
'Ну чего ты начинаешь, нормально же общались',
|
|
||||||
'Повтори свой вопрос, не поняла',
|
|
||||||
'Выйди и зайди нормально',
|
|
||||||
'Я подумаю',
|
|
||||||
'Даже не знаю, что на это ответить',
|
|
||||||
'Ты упал такие вопросы девочке задавать?',
|
|
||||||
'Можно и так, но не уверена',
|
|
||||||
'А как ты думаешь?',
|
|
||||||
'А ви, таки, почему интересуетесь?',
|
|
||||||
);
|
|
||||||
|
|
||||||
return $myphrase[irand ($#myphrase + 1)];
|
|
||||||
}
|
|
||||||
|
|
||||||
# setup our bot
|
# setup our bot
|
||||||
sub init {
|
sub init {
|
||||||
|
|||||||
Reference in New Issue
Block a user