在电报API文档中,我看到:"您可以将 file_id 作为字符串传递给重新发送已经在Telegram服务器上的照片"但我可以'找到获取上传文件的file_id的方法。我怎么能得到它?
答案 0 :(得分:3)
它取决于你的content_types,例如:
视频:
message.video.file_id
音频:
message.audio.file_id
照片:
message.photo[2].file_id
有关详情,请参阅this链接。
答案 1 :(得分:2)
根据您选择发送文件的方法(文件类型),在将文件发送到Telegram后,将返回响应。例如,如果使用sendAudio
方法将MP3文件发送到Telegram,则Telegram会返回包含文件ID的Audio
对象。
资料来源:https://core.telegram.org/bots/api#audio
答案 2 :(得分:1)
假设您收到Message
数组为PhotoSize
file_id
https://core.telegram.org/bots/api#photosize
如您所见,有一个sendPhoto
,您可以使用它通过Update
发送照片。
如果我们假设Message
是一个对象,其中包含一个Chat
对象,该对象又提供一个id
对象,其中包含PhotoSize
个聊天对象最初的消息来自于$update->message->photo
的数组(请原谅我在这里使用PHP,但那是我的主要语言......)
file_id
是您访问阵列的方法。
使用某种For循环来迭代项目,或者如果数组不大于1,则只访问第一项。
之后,您可以使用结果提取string
并通过sendPhoto
的{{1}}参数和聊天ID将其作为photo
发送通过chat_id
参数。
我希望这有帮助!
P.S。 Here是我当前API实现的图表,我希望它能为您带来一些清晰度!
答案 3 :(得分:1)
这是我发现的最简单的方法。
将文件上传到任何聊天室,并将消息转发到@RawDataBot。它将返回如下内容:
<?php
$values = array(1, 2, 3, 4, 5);
$weights = array(5, 5, 5, 70, 15);
$res = weighted_random($values, $weights);
echo $res; die;
function weighted_random($values, $weights){
$count = count($values);
$i = 0;
$n = 0;
if (array_sum($weights) <= 0 ) { return $values[$i] . ' - ' . $weights[$i]; }
$num = mt_rand(1, array_sum($weights));
while($i < $count){
$n += $weights[$i];
if($n >= $num){
break;
}
$i++;
}
return "Number: " . $num . " Value: " . $values[$i] . ' Weight: ' . $weights[$i];
}
?>
您需要的是{
"update_id": 754677603,
"message": {
"message_id": 403656,
"from": {
"id": xxx,
"is_bot": false,
"first_name": "xxx",
"username": "xxx",
"language_code": "en"
},
"chat": {
"id": xxx,
"first_name": "xxx",
"username": "xxx",
"type": "private"
},
"date": 1589342513,
"forward_from": {
"id": xxx,
"is_bot": false,
"first_name": "xxx",
"username": "xxx",
"language_code": "en"
},
"forward_date": 1589342184,
"document": {
"file_name": "filename.pdf",
"mime_type": "application/pdf",
"file_id": "This_Is_The_Thing_You_Need",
"file_unique_id": "notthis",
"file_size": 123605
}
}
}
下的字符串。复制完该代码后,您只需执行以下代码即可发送消息。
file_id
答案 4 :(得分:0)
除了上述答案外,您还可以记录来自https://api.telegram.org/bot'.BOT_TOKEN.'/getUpdates
上的bot的更新,或引发应用程序中的更新。在那里,您会发现一个Json
属性,如下所示:
{
"update_id" = 1111111,
"message" =
{
"message_id" = 1111111,
"from" =
{
"id" = 111111,
...
}
"chat" =
{
"id" = 111111,
...
}
"date" = 111111,
"photo" =
{
{
"file_id" = HERE IS YOU FILE ID 1,
"file_size" => XXXX,
"width" => XX,
"height" => XX,
}
}
}
}
答案 5 :(得分:0)
如果您使用PHP:
您可以将这行写成完整尺寸:
def retrieve_and_log(data, context):
...
此行为拇指:
$file_id = $updates['message']['photo'][1]['file_id'];