Sending message in telegram bot with images

前端 未结 4 1723
一整个雨季
一整个雨季 2021-02-20 04:27

I have telegram-bot code on php, and reply messages sending by replyWithMessage method.

All command here:

 $this->replyWithMessage([\'te         


        
相关标签:
4条回答
  • 2021-02-20 05:09

    No, You CAN send a text that contains photo in one single message. Telegram allows you do this but that the way is kinda tricky.

    1. Using https://core.telegram.org/bots/api#sendmessage method, set option disable_web_page_preview => false
    2. In your text data put an image link with invisible character(s) inside your message text.

    Example:

    $message = <<<TEXT
    *** your content ***
    *** somewhere below (or above) a link to your image with invisible character(s) ***
    <a href="https://www.carspecs.us/photos/c8447c97e355f462368178b3518367824a757327-2000.jpg"> ‏ </a>
    TEXT;
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: multipart/form-data']);
    curl_setopt($ch, CURLOPT_URL, 'https://api.telegram.org/bot<token>/sendMessage');
    $postFields = array(
        'chat_id' => '@username',
        'text' => $message,
        'parse_mode' => 'HTML',
        'disable_web_page_preview' => false,
    );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
    if(!curl_exec($ch))
        echo curl_error($ch);
    curl_close($ch);
    
    0 讨论(0)
  • 2021-02-20 05:12

    You can't send a text message that contains both image and text. However If your text contains URL, Telegram displays a preview of the web page by default. Or you can send two message one after another or send a photo with caption.

    0 讨论(0)
  • 2021-02-20 05:14

    You can do it using markdown too:

    var axios = require('axios');
    
    axios.post('https://api.telegram.org/'+telegram_bot_id+'/sendMessage', { chat_id: _target_telegram_channel, parse_mode: 'markdown', text: '[ ‏ ](https://www.amazon.it/gp/product/B07NVCJ3V8?pf_rd_p=ba8c3f2e-eba5-4c79-9599-683af7a49dd1&pf_rd_r=XPRH5A07HN9W62DK1R84)' } )
        .then(response => {
            console.log(response);
        })
        .catch(error => {
            console.log(error);
        })
    
    0 讨论(0)
  • 2021-02-20 05:19

    You can use /sendphoto and set the captionwhich appears under an image.
    https://core.telegram.org/bots/api#sendphoto

    0 讨论(0)
提交回复
热议问题