【问题标题】:Send an image link to telegram without display image url将图像链接发送到电报而不显示图像 url
【发布时间】:2017-01-27 17:32:51
【问题描述】:

我需要将图像 url 发送到不显示图像 url 和隐藏 url 的电报。我看到一个电报机器人,它做得很好,并发送带有图像的长消息我附上这个机器人结果图像,看看它。 现在如何在我的自定义机器人中做到这一点? MARKDOWN样式或任何方式可能隐藏网址?我想在我的文本中隐藏图片网址,但电报显示我的图片。请参阅我的示例附加图像。 谢谢

【问题讨论】:

    标签: image telegram telegram-bot


    【解决方案1】:

    他们中的大多数使用点(或类似这个字符的一些东西)来描述链接,而你认为​​没有链接。

    您可以键入以下行并选择custom markdown

    @bold [.](http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg)
    

    如果您想在链接中添加文本,您需要创建一个机器人并在机器人中使用此方法。

    编辑:

    要使用 bot api 发送超链接,您可以简单地发送 html 标记并使用 parse_mode。见telegram documents

    要使用此模式,请在使用 sendMessage 时在 parse_mode 字段中传递 HTML。目前支持以下标签:

    <b>bold</b>, <strong>bold</strong>
    <i>italic</i>, <em>italic</em>
    <a href="http://www.example.com/">inline URL</a>
    <a href="tg://user?id=123456789">inline mention of a user</a>
    <code>inline fixed-width code</code>
    <pre>pre-formatted fixed-width code block</pre>
    

    样本:

    <a href="http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg"></a>
    

    【讨论】:

    • 谢谢你亲爱的 Naser Yousefi 我以前使用点,但我看到一个机器人没有使用点或任何字符并显示带有长消息的图像我不知道该怎么做
    • 您可以在名为@AxNegarBot 的电报中使用波斯机器人。只需向其发送图像,然后回复该图像并发送您的长文本。
    • 谢谢亲爱的 Naser Yousefi 我看到波斯机器人非常好我想创建我的自定义机器人并做到这一点我需要这段代码。你能帮帮我吗?
    【解决方案2】:

    根据Telegram API,看来如果你将disable_web_page_preview设置为true,你应该得到你想要的结果。

    最后的消息应该是这样的:

    {
        chat_id: 1235,
        message: "http://your/url",
        disable_web_page_preview: true,
    }
    

    编辑: 看来我误解了这个问题,您实际上希望图像本身而不是 url 本身出现。

    同样,根据Telegram API,您可以直接发送图像。但据我所知,您不能使用 URL 来执行此操作。您必须直接从电报服务器上传照片。您可以使用caption 属性来发送文本。

    这是一个示例,说明您如何在 python 中执行此操作。您需要将其调整为您使用的任何语言,但概念是相同的。

    import requests
    
    response = requests.post(
        "https://your.bot.url.com/sendPhoto",
        data={
            "chat_id": 1234,
            "caption": "Your extra text here"
        }
        files={
            "photo": (
                "image_name.jpg",
                "contents of image",
                "image/jpg",
                {},
            )
        }
    )
    

    caption 属性限制为 200 个字符,因此如果您想发送更多字符,则必须发送两条消息。

    You can always ask Telegram to add this type of functionality in the future

    【讨论】:

    • 谢谢,但我的问题不是 disable_web_page_preview 我需要隐藏的 url 发送例如 i.stack.imgur.com/BWjTS.png 到电报只显示图像不显示 url
    • 对,所以你只想显示图像,而不是任何文本?
    • 如果我可以发送没有显示图像 url 的图像,我需要发送带有图像的长文本我可以发送我的文本和图像。这是我的演示结果:i.stack.imgur.com/BWjTS.png
    • 图像标题非常有限我可以用 php 发送图像和标题,但我需要另一个程序如果你看到这个机器人 telegram.me/AxNegarBot 它发送的图像有 4000 个字符我需要它在我的程序中这个机器人隐藏图像url 但显示图片
    • 在这种情况下,我建议您发送两条消息 - 没有标题的图像,以及在它之前/之后的普通消息。您不能同时发送它们。
    【解决方案3】:

    答案是零宽度非连接符 (ZWNJ) 字符。 ZWNJ 在 Unicode 中编码为U+200C ZERO WIDTH NON-JOINER(HTML &amp;#8204;&amp;zwnj;)。

    HTML 模式:

    <a href="https://example.com">&#8204;</a>
    

    MARKDOWN模式:

    [‌‌](https://example.com)
    

    2021 年更新:

    答案仍然有效,但电报不再允许您发送仅包含此字符的空短信,因此您必须在整条短信中添加至少一个字符。此外,您还可以使用字符 Unicode Character 'WORD JOINER' (U+2060) 代替。

    【讨论】:

    • 这是正确答案。涵盖html和markdown模式
    • 我正在尝试在 PHP 中使用它,但无法正常工作。 POST 返回“错误请求”。
    • 括号之间有一个隐藏字符,可以复制使用。
    【解决方案4】:

    您可以使用&amp;#160; 字符作为隐藏字符。

    【讨论】:

    • 这个其实是有渲染一个空间的效果(和写&amp;nbsp一样),但是确实有效
    【解决方案5】:
    import requests
    def telegram(channel,bot,text,img):
        if(text==""):text="Refer - "
        r = requests.get('https://api.telegram.org/bot'+bot+'/sendMessage?chat_id=@'+channel+'&parse_mode=markdown&text='+"[​​​​​​​​​​​]("+img+")"+text)
    

    使用上述功能。它将完美地工作。如果没有文本只有图像,它应该会中断。所以它会显示一个“。” (点)在这些情况下。

    现在使用函数 -

    telegram(your_channel_name,your_token_here,description,image_url)
    

    【讨论】:

      【解决方案6】:

      要正确发送网站上托管的图片而不显示任何参考链接,您必须使用“html”解析模式。

      并且在要发送的内容中,例如,类似这样的内容(Python 模式):

      # We take the html address of the image.
      image_address = 'https://picsum.photos/100.jpg'
      
      # The unicode character to prevent the words from 
      # being separated, in this case, we take advantage 
      # of it so that the Telegram API accepts it and 
      # incidentally so that it does not take up space 
      # when including text in the message.
      word_joiner = '&#8288' 
      
      # This would be the final pattern.
      html_pattern = f'<a href="{image_address}">{word_joiner}</a>' 
      

      【讨论】:

        【解决方案7】:

        这可能会有所帮助:

        两者都适用:

        • 网页链接
        • 电报链接

        【讨论】:

          【解决方案8】:

          使用HTML 解析模式。在开始标签和结束标签之间保留空白。

          <a href="https://t.me/"> </a>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-03-27
            • 1970-01-01
            • 2021-08-03
            • 1970-01-01
            • 2017-02-19
            • 1970-01-01
            相关资源
            最近更新 更多