从电报机器人获取完整消息

时间:2020-06-22 14:08:28

标签: php telegram-bot php-telegram-bot

我想获得电报bot中该人的ID发送的完整消息,包括所有附件,例如照片,音频,图像或标题和照片...,然后将其发送给另一个人的ID 。我不希望它被转发,我想被发送! 我通过这种方式收到所有更新:

$data=json_decode(file_get_contents("php://input"));

我的代码:

    <?php
const apiKey='112';
$channels=[
    '1'=>'-1001233909561',
    '2'=>'-1001198102700',
];
const admin='668400001';
//-------------------------------------------------------- End Channels and ADMIN Info
$data=json_decode(file_get_contents("php://input"));
$json_data=json_encode($data);
file_put_contents('data.json', $json_data);
function bot($method, $datas = [])
{
    $url = "https://api.telegram.org/bot" . apiKey . "/" . $method;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($datas));
    $res = curl_exec($ch);
    if (curl_error($ch))
    {
        var_dump(curl_error($ch));
    }
    else
    {
        return json_decode($res);
    }
}

 function forwardMessage($messageId)
{

    bot('forwardMessage',[
        'chat_id'=>backupChannelId,
        'from_chat_id'=>firstChannelId,
        'message_id'=>$messageId,
    ]);
}

function sendMessage($toChannel,$message)
{

}



?>

1 个答案:

答案 0 :(得分:1)

如果我理解正确,则希望获取发送到机器人的所有消息的文本和所有附件。例如,消息的文本位于update -> message -> text中。

$text = $data['message']['text'];
$audio = $data['message']['audio'];

将完全相同的消息发送到另一个聊天的最简单方法是转发它,否则,您必须在message对象中搜索所有可能的附件,如果存在,则将它们发送给另一个聊天。相应的方法(sendPhotosendAudio等)。


提示:

使用

$data = json_decode(file_get_contents("php://input"), true);

代替

$data = json_decode(file_get_contents("php://input"));

更多详细信息here