Add replyMd() to message object, implement canTalk() check in Teapot lib, re-arrange code
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
package Teapot::Bot::Object::ChatPermissions;
|
package Teapot::Bot::Object::ChatPermissions;
|
||||||
# ABSTRACT: The base class for Telegram 'ChatPermissions' type objects
|
# ABSTRACT: The base class for Telegram 'ChatPermissions' type objects
|
||||||
|
use Carp qw(carp);
|
||||||
use Mojo::Base 'Teapot::Bot::Object::Base';
|
use Mojo::Base 'Teapot::Bot::Object::Base';
|
||||||
|
|
||||||
$Teapot::Bot::Object::ChatPermissions::VERSION = '0.022';
|
$Teapot::Bot::Object::ChatPermissions::VERSION = '0.022';
|
||||||
@@ -28,6 +28,53 @@ sub fields {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub canTalk {
|
||||||
|
my $self = shift;
|
||||||
|
my $chatid = shift;
|
||||||
|
|
||||||
|
my $can_talk = 0;
|
||||||
|
|
||||||
|
if ($chatid < 0) {
|
||||||
|
# group chat
|
||||||
|
my $chatobj = $self->_brain->getChat ({ 'chat_id' => $chatid });
|
||||||
|
|
||||||
|
# on api error, keep silence
|
||||||
|
unless ($chatobj) {
|
||||||
|
carp "Unable to get chat info for $chatid from telegram API";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $myObj = $self->_brain->getMe ();
|
||||||
|
|
||||||
|
# on api error, keep silence
|
||||||
|
unless ($chatobj) {
|
||||||
|
carp "Unable to get chat info for $chatid from telegram API";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $myid = $myObj->id;
|
||||||
|
my $me = $self->_brain->getChatMember ({ 'chat_id' => $chatid, 'user_id' => $myid });
|
||||||
|
|
||||||
|
# on api error, keep silence
|
||||||
|
unless ($me) {
|
||||||
|
carp 'Unable to get chat info for bot itself from telegram API';
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($me->{'status'} eq 'administrator') {
|
||||||
|
$can_talk = 1;
|
||||||
|
} else {
|
||||||
|
my $group_talk = int ($chatobj->{permissions}->{can_send_messages});
|
||||||
|
$can_talk = $group_talk;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# 1 on 1 chat with user
|
||||||
|
$can_talk = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $can_talk;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ use Teapot::Bot::Object::PassportData;
|
|||||||
use Teapot::Bot::Object::InlineKeyboardMarkup;
|
use Teapot::Bot::Object::InlineKeyboardMarkup;
|
||||||
|
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
|
use Carp qw(cluck);
|
||||||
|
|
||||||
$Teapot::Bot::Object::Message::VERSION = '0.022';
|
$Teapot::Bot::Object::Message::VERSION = '0.022';
|
||||||
|
|
||||||
@@ -134,12 +135,44 @@ sub arrays {
|
|||||||
sub reply {
|
sub reply {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $text = shift;
|
my $text = shift;
|
||||||
return $self->_brain->sendMessage({chat_id => $self->chat->id, text => $text});
|
|
||||||
|
my $chatid = $self->chat->id;
|
||||||
|
|
||||||
|
if (Teapot::Bot::Object::ChatPermissions::canTalk($self, $chatid)) {
|
||||||
|
return $self->_brain->sendMessage({chat_id => $chatid, text => $text});
|
||||||
|
}
|
||||||
|
|
||||||
|
return {'error' => 1};
|
||||||
|
}
|
||||||
|
|
||||||
|
sub replyMd {
|
||||||
|
my $self = shift;
|
||||||
|
my $text = shift;
|
||||||
|
|
||||||
|
my $chatid = $self->chat->id;
|
||||||
|
|
||||||
|
if (Teapot::Bot::Object::ChatPermissions::canTalk ($self, $chatid)) {
|
||||||
|
my $send_args;
|
||||||
|
$send_args->{text} = $text;
|
||||||
|
$send_args->{parse_mode} = 'Markdown';
|
||||||
|
$send_args->{chat_id} = $chatid;
|
||||||
|
|
||||||
|
return $self->_brain->sendMessage($send_args);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {'error' => 1};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub typing {
|
sub typing {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return $self->_brain->sendChatAction({chat_id => $self->chat->id});
|
|
||||||
|
my $chatid = $self->chat->id;
|
||||||
|
|
||||||
|
if (Teapot::Bot::Object::ChatPermissions::canTalk ($self, $chatid)) {
|
||||||
|
return $self->_brain->sendChatAction({chat_id => $chatid});
|
||||||
|
}
|
||||||
|
|
||||||
|
return {'error' => 1};
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ use archeologist qw (dig);
|
|||||||
|
|
||||||
use vars qw/$VERSION/;
|
use vars qw/$VERSION/;
|
||||||
use Exporter qw(import);
|
use Exporter qw(import);
|
||||||
our @EXPORT_OK = qw(weather trim randomCommonPhrase command);
|
our @EXPORT_OK = qw(weather trim randomCommonPhrase command highlight);
|
||||||
$VERSION = '1.0';
|
$VERSION = '1.0';
|
||||||
|
|
||||||
my $c = loadConf();
|
my $c = loadConf();
|
||||||
@@ -233,32 +233,7 @@ sub command {
|
|||||||
my $text = shift;
|
my $text = shift;
|
||||||
my $chatid = shift;
|
my $chatid = shift;
|
||||||
my $reply;
|
my $reply;
|
||||||
my $fullname;
|
my ($userid, $username, $fullname, $highlight, $visavi) = highlight ($msg);
|
||||||
my $highlight;
|
|
||||||
my $username;
|
|
||||||
my $userid = $msg->from->id;
|
|
||||||
$username = $msg->from->username if ($msg->from->can ('username') && defined($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)) {
|
|
||||||
if (defined ($fullname)) {
|
|
||||||
$highlight = "[$fullname](tg://user?id=$userid)";
|
|
||||||
} else {
|
|
||||||
$highlight = "[$username](tg://user?id=$userid)";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$highlight = "[$fullname](tg://user?id=$userid)";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (substr ($text, 1) eq 'ping') {
|
if (substr ($text, 1) eq 'ping') {
|
||||||
$reply = 'Pong.';
|
$reply = 'Pong.';
|
||||||
@@ -308,6 +283,44 @@ sub command {
|
|||||||
return $reply;
|
return $reply;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub highlight {
|
||||||
|
my $msg = shift;
|
||||||
|
|
||||||
|
my $fullname;
|
||||||
|
my $highlight;
|
||||||
|
my $username;
|
||||||
|
my $visavi = '';
|
||||||
|
my $userid = $msg->from->id;
|
||||||
|
$username = $msg->from->username if ($msg->from->can ('username') && defined($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);
|
||||||
|
}
|
||||||
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:
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ use File::Path qw(mkpath);
|
|||||||
use Hailo;
|
use Hailo;
|
||||||
use Mojo::Base 'Teapot::Bot::Brain';
|
use Mojo::Base 'Teapot::Bot::Brain';
|
||||||
use conf qw(loadConf);
|
use conf qw(loadConf);
|
||||||
use botlib qw(weather trim randomCommonPhrase command);
|
use botlib qw(weather trim randomCommonPhrase command highlight);
|
||||||
use karma qw(karmaSet);
|
use karma qw(karmaSet);
|
||||||
use fortune qw(fortune fortune_toggle_list);
|
use fortune qw(fortune fortune_toggle_list);
|
||||||
|
|
||||||
@@ -28,8 +28,6 @@ my $myusername;
|
|||||||
my $myfirst_name;
|
my $myfirst_name;
|
||||||
my $mylast_name;
|
my $mylast_name;
|
||||||
my $myfullname;
|
my $myfullname;
|
||||||
# guess it later
|
|
||||||
my $can_talk = 0;
|
|
||||||
|
|
||||||
has token => $c->{telegrambot}->{token};
|
has token => $c->{telegrambot}->{token};
|
||||||
|
|
||||||
@@ -57,12 +55,7 @@ sub __on_msg {
|
|||||||
my $chatid;
|
my $chatid;
|
||||||
my $chatname = 'Noname chat';
|
my $chatname = 'Noname chat';
|
||||||
# user sending message info
|
# user sending message info
|
||||||
my $userid;
|
my ($userid, $username, $fullname, $highlight, $vis_a_vi) = highlight ($msg);
|
||||||
my $username;
|
|
||||||
my $fullname;
|
|
||||||
my $vis_a_vi = 'unknown';
|
|
||||||
|
|
||||||
$can_talk = 0;
|
|
||||||
|
|
||||||
unless ($myid) {
|
unless ($myid) {
|
||||||
my $myObj = Teapot::Bot::Brain::getMe ($self);
|
my $myObj = Teapot::Bot::Brain::getMe ($self);
|
||||||
@@ -102,92 +95,25 @@ sub __on_msg {
|
|||||||
$chatname = 'Noname chat';
|
$chatname = 'Noname chat';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# because of bot api restriction there is no events about changing permissions
|
|
||||||
# in chat sent to bot so before sending any answer, we should check if we can do so
|
|
||||||
|
|
||||||
# N.B. there is situation when we do not recieve any messages from chat: if we
|
|
||||||
# are in exception list, even if it allows any kind of events for bot
|
|
||||||
|
|
||||||
# If we are just member of chat, it looks like we obey general chat restrictions,
|
|
||||||
# so we need only to query getChat in this case
|
|
||||||
# If we admin, we can get|send messages even if group by itself disallows it.
|
|
||||||
|
|
||||||
# works only for public chats, so id shoud be < 0.
|
|
||||||
if ($chatid < 0) {
|
|
||||||
my $chatobj = Teapot::Bot::Brain::getChat ($self, { 'chat_id' => $chatid });
|
|
||||||
|
|
||||||
unless ($chatobj) {
|
|
||||||
sleep 3;
|
|
||||||
$chatobj = Teapot::Bot::Brain::getChat ($self, { 'chat_id' => $chatid });
|
|
||||||
}
|
|
||||||
|
|
||||||
# actually evaluates to 1 for true and to 0 for false
|
|
||||||
$group_talk = int ($chatobj->{permissions}->{can_send_messages});
|
|
||||||
my $me = Teapot::Bot::Brain::getChatMember ($self, { 'chat_id' => $chatid, 'user_id' => $myid });
|
|
||||||
|
|
||||||
unless ($me) {
|
|
||||||
sleep 3;
|
|
||||||
$me = Teapot::Bot::Brain::getChatMember ($self, { 'chat_id' => $chatid, 'user_id' => $myid });
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($me->{'status'} eq 'administrator') {
|
|
||||||
carp "[DEBUG] I can talk in group chat $chatname ($chatid)" if $c->{debug};
|
|
||||||
$can_talk = 1;
|
|
||||||
} else {
|
|
||||||
if ($c->{debug}) {
|
|
||||||
carp "[DEBUG] I can talk in group chat $chatname ($chatid)" if ($group_talk);
|
|
||||||
carp "[DEBUG] I can not talk in group chat $chatname ($chatid)" unless ($group_talk);
|
|
||||||
}
|
|
||||||
|
|
||||||
$can_talk = $group_talk;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
# private chat, so definely bot can talk
|
|
||||||
carp "[DEBUG] I can talk in private chat $chatname ($chatid)" if $c->{debug};
|
|
||||||
$can_talk = 1;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
carp '[INFO] Unable to get chatid';
|
carp '[INFO] Unable to get chatid';
|
||||||
}
|
}
|
||||||
|
|
||||||
# according api user must have username and/or first_name and/or last_name at least one of these fields
|
|
||||||
if ($msg->can ('from') && defined ($msg->from)) {
|
|
||||||
$userid = $msg->from->id; # it must be filled, so do not check it
|
|
||||||
$username = $msg->from->username if ($msg->from->can ('username') && defined($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;
|
|
||||||
}
|
|
||||||
|
|
||||||
$vis_a_vi = visavi ($userid, $username, $fullname);
|
|
||||||
}
|
|
||||||
|
|
||||||
my $phrase = '';
|
my $phrase = '';
|
||||||
|
|
||||||
# Newcommer event, greet our new member and suggest to introduce themself.
|
# Newcommer event, greet our new member and suggest to introduce themself.
|
||||||
if ($msg->can ('new_chat_members') && defined ($msg->new_chat_members)) {
|
if ($msg->can ('new_chat_members') && defined ($msg->new_chat_members)) {
|
||||||
my $send_args;
|
|
||||||
$send_args->{parse_mode} = 'Markdown';
|
|
||||||
$send_args->{chat_id} = $chatid;
|
|
||||||
|
|
||||||
if (defined ($username)) {
|
if (defined ($username)) {
|
||||||
if (defined ($fullname)) {
|
if (defined ($fullname)) {
|
||||||
carp "[DEBUG] Newcommer in $chatname ($chatid): \@$username, $fullname ($userid)" if $c->{debug};
|
carp "[DEBUG] Newcommer in $chatname ($chatid): \@$username, $fullname ($userid)" if $c->{debug};
|
||||||
$send_args->{text} = "Дратути, [$fullname](tg://user?id=$userid). Представьтес, пожалуйста, и расскажите, что вас сюда привело.";
|
$phrase = "Дратути, [$fullname](tg://user?id=$userid). Представьтес, пожалуйста, и расскажите, что вас сюда привело.";
|
||||||
} else {
|
} else {
|
||||||
carp "[DEBUG] Newcommer in $chatname ($chatid): \@$username ($userid)" if $c->{debug};
|
carp "[DEBUG] Newcommer in $chatname ($chatid): \@$username ($userid)" if $c->{debug};
|
||||||
$send_args->{text} = "Дратути, [$username](tg://user?id=$userid). Представьтес, пожалуйста, и расскажите, что вас сюда привело.";
|
$phrase = "Дратути, [$username](tg://user?id=$userid). Представьтес, пожалуйста, и расскажите, что вас сюда привело.";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
carp "[DEBUG] Newcommer in $chatname ($chatid): $fullname ($userid)" if $c->{debug};
|
carp "[DEBUG] Newcommer in $chatname ($chatid): $fullname ($userid)" if $c->{debug};
|
||||||
$send_args->{text} = "Дратути, [$fullname](tg://user?id=$userid). Представьтес, пожалуйста, и расскажите, что вас сюда привело.";
|
$phrase = "Дратути, [$fullname](tg://user?id=$userid). Представьтес, пожалуйста, и расскажите, что вас сюда привело.";
|
||||||
}
|
}
|
||||||
|
|
||||||
# let's emulate real human and delay answer
|
# let's emulate real human and delay answer
|
||||||
@@ -201,7 +127,7 @@ sub __on_msg {
|
|||||||
|
|
||||||
sleep ( 3 + int ( rand (2)));
|
sleep ( 3 + int ( rand (2)));
|
||||||
|
|
||||||
Teapot::Bot::Brain::sendMessage ($self, $send_args);
|
$msg->replyMd ($phrase);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,8 +160,7 @@ sub __on_msg {
|
|||||||
|
|
||||||
if (substr ($text, 0, 1) eq $c->{telegrambot}->{csign}) {
|
if (substr ($text, 0, 1) eq $c->{telegrambot}->{csign}) {
|
||||||
if (substr ($text, 1) eq 'help' || substr ($text, 1) eq 'помощь') {
|
if (substr ($text, 1) eq 'help' || substr ($text, 1) eq 'помощь') {
|
||||||
my $send_args;
|
$reply = << 'MYHELP';
|
||||||
$send_args->{text} = << 'MYHELP';
|
|
||||||
```
|
```
|
||||||
!help | !помощь - список команд
|
!help | !помощь - список команд
|
||||||
!dig | !копать - заняться археологией
|
!dig | !копать - заняться археологией
|
||||||
@@ -256,9 +181,7 @@ sub __on_msg {
|
|||||||
Но на самом деле я бот больше для общения, чем для исполнения команд.
|
Но на самом деле я бот больше для общения, чем для исполнения команд.
|
||||||
Поговоришь со мной?
|
Поговоришь со мной?
|
||||||
MYHELP
|
MYHELP
|
||||||
$send_args->{parse_mode} = 'Markdown';
|
$msg->replyMd ($reply);
|
||||||
$send_args->{chat_id} = $userid;
|
|
||||||
Teapot::Bot::Brain::sendMessage ($self, $send_args);
|
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
$reply = command ($self, $msg, $text, $userid);
|
$reply = command ($self, $msg, $text, $userid);
|
||||||
@@ -281,7 +204,6 @@ MYHELP
|
|||||||
|
|
||||||
if (defined ($str) && $str ne '') {
|
if (defined ($str) && $str ne '') {
|
||||||
$reply = $str;
|
$reply = $str;
|
||||||
# TODO: move it to telegramlib.pm/botlib.pm!
|
|
||||||
$phrase = trim ($text);
|
$phrase = trim ($text);
|
||||||
|
|
||||||
while ($phrase =~ /[\.|\,|\?|\!]$/) {
|
while ($phrase =~ /[\.|\,|\?|\!]$/) {
|
||||||
@@ -368,8 +290,7 @@ MYHELP
|
|||||||
# TODO: Log commands and answers
|
# TODO: Log commands and answers
|
||||||
} elsif (substr ($text, 0, 1) eq $c->{telegrambot}->{csign}) {
|
} elsif (substr ($text, 0, 1) eq $c->{telegrambot}->{csign}) {
|
||||||
if (substr ($text, 1) eq 'help' || substr ($text, 1) eq 'помощь') {
|
if (substr ($text, 1) eq 'help' || substr ($text, 1) eq 'помощь') {
|
||||||
my $send_args;
|
$reply = << 'MYHELP';
|
||||||
$send_args->{text} = << 'MYHELP';
|
|
||||||
```
|
```
|
||||||
!help | !помощь - список команд
|
!help | !помощь - список команд
|
||||||
!dig | !копать - заняться археологией
|
!dig | !копать - заняться археологией
|
||||||
@@ -390,9 +311,7 @@ MYHELP
|
|||||||
Но на самом деле я бот больше для общения, чем для исполнения команд.
|
Но на самом деле я бот больше для общения, чем для исполнения команд.
|
||||||
Поговоришь со мной?
|
Поговоришь со мной?
|
||||||
MYHELP
|
MYHELP
|
||||||
$send_args->{parse_mode} = 'Markdown';
|
$msg->replyMd ($reply);
|
||||||
$send_args->{chat_id} = $chatid;
|
|
||||||
Teapot::Bot::Brain::sendMessage ($self, $send_args);
|
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
$reply = command ($self, $msg, $text, $chatid);
|
$reply = command ($self, $msg, $text, $chatid);
|
||||||
@@ -432,7 +351,7 @@ MYHELP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined ($reply) && $reply ne '' && $can_talk) {
|
if (defined ($reply) && $reply ne '') {
|
||||||
# work a bit more on input phrase
|
# work a bit more on input phrase
|
||||||
$phrase = trim ($phrase);
|
$phrase = trim ($phrase);
|
||||||
|
|
||||||
@@ -447,7 +366,7 @@ MYHELP
|
|||||||
} elsif (lc ($reply) eq substr ($phrase, 0, -1)) {
|
} elsif (lc ($reply) eq substr ($phrase, 0, -1)) {
|
||||||
# in case of trailing dot
|
# in case of trailing dot
|
||||||
$reply = randomCommonPhrase ();
|
$reply = randomCommonPhrase ();
|
||||||
} elsif (substr(lc ($reply), 0, -1) eq $phrase) {
|
} elsif (substr (lc ($reply), 0, -1) eq $phrase) {
|
||||||
$reply = randomCommonPhrase ();
|
$reply = randomCommonPhrase ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -456,11 +375,7 @@ MYHELP
|
|||||||
carp sprintf ('[DEBUG] In public chat %s (%s) bot reply to %s: %s', $chatname, $chatid, $vis_a_vi, $reply) if $c->{debug};
|
carp sprintf ('[DEBUG] In public chat %s (%s) bot reply to %s: %s', $chatname, $chatid, $vis_a_vi, $reply) if $c->{debug};
|
||||||
$msg->reply ($reply);
|
$msg->reply ($reply);
|
||||||
} else {
|
} else {
|
||||||
if ($can_talk) {
|
carp sprintf ('[DEBUG] In public chat %s (%s) bot is not required to reply to %s', $chatname, $chatid, $vis_a_vi) if $c->{debug};
|
||||||
carp sprintf ('[DEBUG] In public chat %s (%s) bot is not required to reply to %s', $chatname, $chatid, $vis_a_vi) if $c->{debug};
|
|
||||||
} else {
|
|
||||||
carp sprintf ('[DEBUG] In public chat %s (%s) bot can\'t talk, but reply to %s is: %s', $chatname, $chatid, $vis_a_vi, $reply) if $c->{debug};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# should be channel, so we can't talk
|
# should be channel, so we can't talk
|
||||||
@@ -493,21 +408,6 @@ sub run_telegrambot {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub visavi {
|
|
||||||
my ($userid, $username, $fullname) = @_;
|
|
||||||
my $name = '';
|
|
||||||
|
|
||||||
if (defined ($username)) {
|
|
||||||
$name .= '@' . $username;
|
|
||||||
$name .= ', ' . $fullname if (defined ($fullname));
|
|
||||||
} else {
|
|
||||||
$name .= $fullname;
|
|
||||||
}
|
|
||||||
|
|
||||||
$name .= " ($userid)";
|
|
||||||
return $name;
|
|
||||||
}
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
# vim: ft=perl noet ai ts=4 sw=4 sts=4:
|
# vim: ft=perl noet ai ts=4 sw=4 sts=4:
|
||||||
|
|||||||
Reference in New Issue
Block a user