From 5c1744656812badc206cf1f6d9074d86be76bcd7 Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 22 Mar 2020 15:20:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=B5=D0=BB=D0=B5=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B1=D0=BE=D1=82:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BF=D1=80=D0=B8=D0=B2=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=B8=D1=8F=20=D0=B8=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=89=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B8=20=D1=81=D0=BE=D0=BE?= =?UTF-8?q?=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=20=D0=B8?= =?UTF-8?q?=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8E=20=D1=82=D0=BE?= =?UTF-8?q?=D0=BF=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Пытаемся реагировать на new_chat_members * Пытаемся реагировать на left_chat_member * Пытаемся реагировать на pinned_message --- lib/telegrambot.pm | 95 +++++++++++++++++++++++++++++++++------------- 1 file changed, 68 insertions(+), 27 deletions(-) diff --git a/lib/telegrambot.pm b/lib/telegrambot.pm index b14b718..7cde3fc 100644 --- a/lib/telegrambot.pm +++ b/lib/telegrambot.pm @@ -33,37 +33,78 @@ sub __on_msg { # group chat } else { - my $qname = quotemeta($c->{telegrambot}->{name}); - my $qtname = quotemeta($c->{telegrambot}->{tname}); - my $csign = quotemeta($c->{telegrambot}->{csign}); my $reply; -# simple commands - if ($text eq "${csign}ping") { - $msg->reply("pong."); - return; - } elsif ( - ($text eq $qname) or - ($text eq sprintf("%s", $qtname)) or - ($text eq sprintf("@%s_bot", $qname)) or # :( - ($text eq sprintf("%s ", $qtname)) - ) { - $msg->reply("Чего?"); - return; - } + if ($msg->chat->new_chat_members) { + my $usernick = ''; -# phrase directed to bot - if ((lc($text) =~ /^${qname}[\,|\:]? (.+)/) or (lc($text) =~ /^${qtname}[\,|\:]? (.+)/)){ - $reply = $hailo->learn_reply(decode('utf-8', $1)); -# bot mention by name - } elsif ((lc($text) =~ /.+ ${qname}[\,|\!|\?|\.| ]/) or (lc($text) =~ / $qname$/)) { - $reply = $hailo->reply(decode('utf-8', $text)); -# bot mention by teleram name - } elsif ((lc($text) =~ /.+ ${qtname}[\,|\!|\?|\.| ]/) or (lc($text) =~ / $qtname$/)) { - $reply = $hailo->reply(decode('utf-8', $text)); -# just message in chat + if (defined($msg->chat->new_chat_members->first_name) and ($msg->chat->new_chat_members->first_name ne '')) { + $usernick .= $msg->chat->new_chat_members->first_name; + } + + if (defined($msg->chat->new_chat_members->last_name) and ($msg->chat->new_chat_members->last_name ne '')) { + if ($usernick ne '') { + $usernick .= ' ' . $msg->chat->new_chat_members->first_name; + } else { + $usernick .= $msg->chat->new_chat_members->first_name; + } + } + + $usernick = $msg->chat->new_chat_members->username if ($usernick =~ /^\s+$/); + + $reply = sprintf("Добрый вечер, %s, располагайтесь, наслаждайтесь. Мы вас внимательно алё.", $usernick); + } elsif ($msg->chat->left_chat_member) { + my $usernick = ''; + + if (defined($msg->chat->left_chat_member->first_name) and ($msg->chat->left_chat_member->first_name ne '')) { + $usernick .= $msg->chat->left_chat_member->first_name; + } + + if (defined($msg->chat->left_chat_member->last_name) and ($msg->chat->left_chat_member->last_name ne '')) { + if ($usernick ne '') { + $usernick .= ' ' . $msg->chat->left_chat_member->first_name; + } else { + $usernick .= $msg->chat->left_chat_member->first_name; + } + } + + $usernick = $msg->chat->left_chat_member->username if ($usernick =~ /^\s+$/); + + $reply = sprintf("До свидания, уважаемый %s. Возвращайтесь ещё. Мы будем рады вас опять...", $usernick); + } elsif ($msg->chat->pinned_message) { + $reply = "Где мои ржавые гвозди и кувалдометр? Ща прибъём это в топик!"; } else { - $hailo->learn(decode('utf-8', $text)); + my $qname = quotemeta($c->{telegrambot}->{name}); + my $qtname = quotemeta($c->{telegrambot}->{tname}); + my $csign = quotemeta($c->{telegrambot}->{csign}); + + # simple commands + if ($text eq "${csign}ping") { + $msg->reply("pong."); + return; + } elsif ( + ($text eq $qname) or + ($text eq sprintf("%s", $qtname)) or + ($text eq sprintf("@%s_bot", $qname)) or # :( + ($text eq sprintf("%s ", $qtname)) + ) { + $msg->reply("Чего?"); + return; + } + + # phrase directed to bot + if ((lc($text) =~ /^${qname}[\,|\:]? (.+)/) or (lc($text) =~ /^${qtname}[\,|\:]? (.+)/)){ + $reply = $hailo->learn_reply(decode('utf-8', $1)); + # bot mention by name + } elsif ((lc($text) =~ /.+ ${qname}[\,|\!|\?|\.| ]/) or (lc($text) =~ / $qname$/)) { + $reply = $hailo->reply(decode('utf-8', $text)); + # bot mention by teleram name + } elsif ((lc($text) =~ /.+ ${qtname}[\,|\!|\?|\.| ]/) or (lc($text) =~ / $qtname$/)) { + $reply = $hailo->reply(decode('utf-8', $text)); + # just message in chat + } else { + $hailo->learn(decode('utf-8', $text)); + } } if (defined($reply) && $reply ne '') {