Fix ban logic, add logs to tracking+ban events
This commit is contained in:
@@ -190,6 +190,8 @@ sub __on_msg {
|
||||
|
||||
# Remember user id, to check it later, in next event.
|
||||
SetSlackGreetRememberId ($member->id);
|
||||
$log->info("New chat member $member_str ($member->id)");
|
||||
|
||||
push @members, sprintf '[%s](tg://user?id=%s)', $member_str, $member->id;
|
||||
}
|
||||
|
||||
@@ -234,17 +236,21 @@ sub __on_msg {
|
||||
sleep 2;
|
||||
|
||||
# Can be racy, but hope for best.
|
||||
unless (SetSlackGreetRememberId($msg->new_chat_member->user->id)) {
|
||||
unless (GetSlackGreetRememberId($msg->new_chat_member->user->id)) {
|
||||
$log->info ("$vis_a_vi entered to chat without prior notice event");
|
||||
|
||||
# if earlier we did not get new chat member event, it looks like we have spammer here. Ban it.
|
||||
my $send_args = undef;
|
||||
$send_args->{chat_id} = 0 + $chatid;
|
||||
$send_args->{user_id} = 0 + $msg->new_chat_member->user->id;
|
||||
|
||||
# I think formal ban for 10 seconds will be enough for start.
|
||||
$send_args->{until_date} = 10 + time ();
|
||||
|
||||
my $result = $self->banChatMember ($send_args);
|
||||
|
||||
if ((ref ($result) eq 'JSON::PP::Boolean') && ($result == JSON::PP::true)) {
|
||||
$log->info ("$vis_a_vi banned");
|
||||
return;
|
||||
} else {
|
||||
$log->error ("Unable to ban user: " . Dumper ($result));
|
||||
@@ -272,7 +278,7 @@ sub __on_msg {
|
||||
my $member = $msg->left_chat_member;
|
||||
my $member_str = '';
|
||||
|
||||
# avoid naming people by spacing symbols, or empty names
|
||||
# Avoid naming people by spacing symbols, or empty names.
|
||||
if ($member->can ('first_name') && defined ($member->first_name) && $member->first_name !~ /^\s+$/ui) {
|
||||
$member_str .= $member->first_name;
|
||||
|
||||
@@ -285,7 +291,7 @@ sub __on_msg {
|
||||
# username must be uniq and should contain only english letters and numbers, so...
|
||||
} elsif ($member->can ('username') && defined ($member->username)) {
|
||||
$member_str .= '@' . $member->username;
|
||||
# fallback to id if uose trying to be smartass and use only spacing chars in it's firstname and/or lastname
|
||||
# Fallback to id if user trying to be smartass and use only spacing chars in it's firstname and/or lastname.
|
||||
} else {
|
||||
$member_str .= $member->id;
|
||||
}
|
||||
@@ -315,6 +321,7 @@ sub __on_msg {
|
||||
|
||||
my $text = $msg->text;
|
||||
$log->debug (sprintf ('[DEBUG] Private chat %s say to bot: %s', $vis_a_vi, $text));
|
||||
|
||||
# Ответ по-умолчанию
|
||||
my $reply = 'Давайте ещё пообщаемся, а то я ещё не научилась от вас плохому.';
|
||||
|
||||
@@ -325,6 +332,7 @@ sub __on_msg {
|
||||
my $rmsg = clone ($redismsg);
|
||||
$rmsg->{mode} = 'private';
|
||||
$rmsg->{message} = "$text";
|
||||
|
||||
# Set it to strings, explicitly
|
||||
$rmsg->{userid} = "$userid";
|
||||
$rmsg->{chatid} = "$userid";
|
||||
|
||||
Reference in New Issue
Block a user