将图像链接发送到没有显示图像URL的电报

时间:2016-09-19 22:39:42

标签: image telegram telegram-bot

我需要发送图片网址到电报,没有显示图片网址和隐藏网址。我看到一个电报机器人,它做得非常好并发送带有图像的长信息我附上这个机器人结果图像看到它。 现在如何在我的自定义机器人中做到这一点?它有可能是MARKDOWN风格或任何方式的隐藏网址吗?我想在我的文本中隐藏图像网址,但电报显示我的图像。看我的示例附加图像。 谢谢

enter image description here

7 个答案:

答案 0 :(得分:9)

他们中的大多数都使用点(或像这个字符这样的东西)进行链接描述,你认为没有链接。

您可以输入以下行并选择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>

答案 1 :(得分:5)

您可以将&#160;字符用作隐藏字符。

答案 2 :(得分:5)

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

HTML模式:

<a href="https://t.me/something">&#8204;</a>

MARKDOWN模式:

[]中插入字符U + 200C。 如果您使用带有标准波斯语键盘的linux或mac OS,只需按 Shift+Space 即可插入。在Windows操作系统中,您可以通过在波斯语键盘中按 Ctrl+Shift+2 来插入它。

[‌‌](https://t.me/something)
  

关于来自wikipedia的ZWNJ的注意事项:零宽度非连接器(ZWNJ)   是一种用于写作计算机化的非打印字符   使用连字的系统。 ZWNJ以Unicode编码   U + 200C ZERO WIDTH NON-JOINER(HTML &#8204; )。

答案 3 :(得分:1)

根据Telegram API,您似乎将disable_web_page_preview设置为true,您应该得到想要的结果。

最终消息应如下所示:

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

修改 我似乎误解了这个问题,你实际上希望图像本身而不是网址本身出现。

同样,根据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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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 :(得分:0)

要在不显示任何参考链接的情况下正确发送托管在网站上的图像,您必须使用“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>'