From 305550f6cf5a156e7b1c8f9f02d25064b5955b96 Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 10 Apr 2022 00:35:38 +0300 Subject: [PATCH] Set json types in more obvious fashion --- lib/BotLib.pm | 16 ++++++++-------- lib/RedisLib.pm | 2 +- lib/TelegramBot.pm | 36 +++++++++++++++++++----------------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/lib/BotLib.pm b/lib/BotLib.pm index b5bc606..b9fcef5 100644 --- a/lib/BotLib.pm +++ b/lib/BotLib.pm @@ -28,7 +28,7 @@ my $csign = $c->{telegrambot}->{csign}; my $redismsg->{from} = 'telegram'; $redismsg->{plugin} = 'telegram'; $redismsg->{misc}->{answer} = 1; -$redismsg->{misc}->{csign} = $c->{telegrambot}->{csign}; +$redismsg->{misc}->{csign} = "$c->{telegrambot}->{csign}"; $redismsg->{misc}->{msg_format} = 0; $redismsg->{misc}->{fwd_cnt} = 1; @@ -42,8 +42,8 @@ sub Command { my ($userid, $username, $fullname, $highlight, $visavi) = Highlight ($msg); my $rmsg = clone ($redismsg); - $rmsg->{userid} = 0 + $userid; - $rmsg->{chatid} = 0 + $chatid; + $rmsg->{userid} = "$userid"; + $rmsg->{chatid} = "$chatid"; $rmsg->{misc}->{answer} = 1; if ($chatid >= 0) { @@ -100,7 +100,7 @@ sub Command { # Если команда найдена... if ($bingo) { - $rmsg->{message} = $text; + $rmsg->{message} = "$text"; $self->log->debug ('[DEBUG] Sending message to redis ' . Dumper ($rmsg)); # Для некоторых команд мы хотим получать форматированный вывод @@ -123,7 +123,7 @@ sub Command { while (my $check = pop @cmds) { if ($cmd eq $check) { $rmsg->{misc}->{msg_format} = 1; - $rmsg->{misc}->{username} = $highlight; + $rmsg->{misc}->{username} = "$highlight"; last; } } @@ -181,11 +181,11 @@ ${csign}karma фраза | ${csign}карма фраза - посмотреть Но на самом деле я бот больше для общения, чем для исполнения команд. Поговоришь со мной? MYHELP - $msg->replyMd ($reply); + $msg->replyMd ("$reply"); return; # Если команда не найдена, но это команда admin } elsif ($cmd =~ /^(admin|админ)$/u) { - my $member = $self->getChatMember ({ 'chat_id' => $msg->chat->id, 'user_id' => $msg->from->id }); + my $member = $self->getChatMember ({ 'chat_id' => 0 + $msg->chat->id, 'user_id' => 0 + $msg->from->id }); # Это должно показываться только админам чата if (($member->status eq 'administrator') || ($member->status eq 'creator')) { @@ -220,7 +220,7 @@ MYADMIN return; # Если строка не найдена, но это команда admin с параметрами } elsif ($cmd =~ /^admin\s+.+$/u || $cmd =~ /^админ\s+.+$/u) { - my $member = $self->getChatMember ({ 'chat_id' => $msg->chat->id, 'user_id' => $msg->from->id }); + my $member = $self->getChatMember ({ 'chat_id' => 0 + $msg->chat->id, 'user_id' => 0 + $msg->from->id }); # Это должно показываться только админам чата if (($member->status eq 'administrator') || ($member->status eq 'creator')) { diff --git a/lib/RedisLib.pm b/lib/RedisLib.pm index 98e7252..091b546 100644 --- a/lib/RedisLib.pm +++ b/lib/RedisLib.pm @@ -38,7 +38,7 @@ sub redis_parse_message { } $message->{chat_id} = 0 + $m->{chatid}; - $message->{text} = $m->{message}; + $message->{text} = "$m->{message}"; my $can_talk = Teapot::Bot::Object::ChatPermissions->canTalk ($main::TGM, 0 + $m->{chatid}); diff --git a/lib/TelegramBot.pm b/lib/TelegramBot.pm index 1517845..2a023db 100644 --- a/lib/TelegramBot.pm +++ b/lib/TelegramBot.pm @@ -42,7 +42,7 @@ my @introduce_greet = ( my $redismsg->{from} = 'telegram'; $redismsg->{plugin} = 'telegram'; $redismsg->{misc}->{answer} = 1; -$redismsg->{misc}->{csign} = $c->{telegrambot}->{csign}; +$redismsg->{misc}->{csign} = "$c->{telegrambot}->{csign}"; $redismsg->{misc}->{msg_format} = 0; $redismsg->{misc}->{fwd_cnt} = 1; @@ -70,9 +70,9 @@ sub __cron { if ($hour == 8 && ($min >= 0 && $min <= 14)) { foreach my $enabledfortunechat (FortuneToggleList ()) { - # Set it to number, explicitly, maybe it will help to avoid stringification values in output json - $rmsg->{userid} = 0 + $enabledfortunechat; - $rmsg->{chatid} = 0 + $enabledfortunechat; + # Set it to strings, explicitly + $rmsg->{userid} = "$enabledfortunechat"; + $rmsg->{chatid} = "$enabledfortunechat"; $pubsub->json ($c->{'redis_router_channel'})->notify ( $c->{'redis_router_channel'} => $rmsg, @@ -250,9 +250,10 @@ sub __on_msg { } else { my $rmsg = clone ($redismsg); $rmsg->{mode} = 'private'; - $rmsg->{message} = $text; - $rmsg->{userid} = 0 + $userid; - $rmsg->{chatid} = 0 + $userid; + $rmsg->{message} = "$text"; + # Set it to strings, explicitly + $rmsg->{userid} = "$userid"; + $rmsg->{chatid} = "$userid"; $rmsg->{misc}->{answer} = 1; my $pubsub = $main::REDIS->pubsub; @@ -336,9 +337,10 @@ sub __on_msg { # Попробуем сгенерить ответ my $rmsg = clone ($redismsg); $rmsg->{mode} = 'public'; - $rmsg->{message} = $phrase; - $rmsg->{userid} = 0 + $userid; - $rmsg->{chatid} = 0 + $chatid; + $rmsg->{message} = "$phrase"; + # Set it to strings, explicitly + $rmsg->{userid} = "$userid"; + $rmsg->{chatid} = "$chatid"; $rmsg->{misc}->{answer} = 1; my $pubsub = $main::REDIS->pubsub; @@ -367,26 +369,26 @@ sub __on_msg { my $rmsg = clone ($redismsg); $rmsg->{mode} = 'public'; - $rmsg->{userid} = 0 + $userid; - $rmsg->{chatid} = 0 + $chatid; + # Set it to strings, explicitly + $rmsg->{userid} = "$userid"; + $rmsg->{chatid} = "$chatid"; $rmsg->{misc}->{answer} = 1; # Сообщение обращено к боту if ((lc ($text) =~ /^${qname}[\,|\:]? (.+)/) or (lc ($text) =~ /^${qtname}[\,|\:]? (.+)/)){ $phrase = $1; - $rmsg->{message} = $phrase; + $rmsg->{message} = "$phrase"; # Бота упомянули по имени } elsif ((lc ($text) =~ /.+ ${qname}[\,|\!|\?|\.| ]/) or (lc ($text) =~ / $qname$/)) { $phrase = $text; - $rmsg->{message} = $phrase; + $rmsg->{message} = "$phrase"; # Бота упомянули по телеграммному имени } elsif ((lc ($text) =~ /.+ ${qtname}[\,|\!|\?|\.| ]/) or (lc ($text) =~ / $qtname$/)) { $phrase = $text; - $rmsg->{message} = $phrase; - + $rmsg->{message} = "$phrase"; } else { - $rmsg->{message} = $text; + $rmsg->{message} = "$text"; $rmsg->{misc}->{answer} = 0; }