佩尔 | Telegram Bot 和 sendPhoto 方法

Perl | Telegram Bot and sendPhoto method

我需要有关 纯 perl(没有 WWW::Telegram::BotAPI)实现 sendPhoto BotAPI 方法的帮助

我发送的简单文本没有问题

use LWP::UserAgent;
use HTTP::Request::Common;
use JSON::MaybeXS;
....
....
   my $ua = LWP::UserAgent->new;

   utf8::decode($message);
   my $p = {
            chat_id=>$groupid,
            parse_mode=>'HTML',
            text=>$message
    };

   my $response = $ua->request(
        POST 'https://api.telegram.org/bot'.$token.'/sendMessage',
        Content_Type    => 'application/json',
        Content         => JSON::MaybeXS::encode_json($p)
        );
...

但是使用 sendPhoto (https://core.telegram.org/bots/api#sendphoto) 我遇到了问题。如果我想上传新图片,我必须将哪个 JSON 发送到服务器?

chat_id=>$groupid,
caption=>$message
photo=> { ? binary blob here ? }

我错了)

对于文件上传,我不需要 json!

错了!

my $p = [ chat_id => $groupid,
          caption => 'image caption',
          photo => ["/tmp/pdf.png"]
];

my $response = $ua->request(
POST 'https://api.telegram.org/bot'.$token.'/sendPhoto',
Content_Type    => 'form-data',
Content         => JSON::MaybeXS::encode_json($msg)
);

以下有效

my $p = [ chat_id => $groupid,
          caption => 'image caption',
          photo => ["/tmp/pdf.png"]
];

my $response = $ua->request(
POST 'https://api.telegram.org/bot'.$token.'/sendPhoto',
Content_Type    => 'form-data',
Content         => $msg
);