问题描述
我在一个发送消息的通道上,该消息包含一个文本,一个链接(该链接没有图像)和一个图像(来自Amazon的提示产品):
我尝试使用此代码,它类似于:
bot.telegram.sendMessage('mychannel',`Hello https:/path/to/image.jpg`)
它的工作原理类似,但仍然是链接。那我该如何用图像预览而不是链接来显示这种方式?
谢谢
解决方法
一种解决方法(技巧)是插入链接,但使用空字符unicode(例如来自https://emptycharacter.com/的字符)
这里是一个示例(我在插入photo URL时使用了空字符)
一些入门示例代码:
const Telegraf = require("telegraf");
const bot = new Telegraf(" ... ");
const CHAT_ID = ... ;
function getHiddenLink(url,parse_mode = "markdown") {
const emptyChar = ""; // copied and pasted the char from https://emptycharacter.com/
switch (parse_mode) {
case "markdown":
return `[${emptyChar}](${url})`;
case "HTML":
return `<a href="${url}">${emptyChar}</a>`;
default:
throw new Error("invalid parse_mode");
}
}
// Option 1: sending with MARKDOWN syntax
bot.telegram.sendMessage(
CHAT_ID,`
some test text in markdown
${getHiddenLink("https://i.stack.imgur.com/TPKR5.png","markdown")}
`,{
parse_mode: "markdown",}
);
// Another option: sending with HTML syntax
bot.telegram.sendMessage(
CHAT_ID,`
some test text in HTML
${getHiddenLink("https://i.stack.imgur.com/TPKR5.png","HTML")}
`,{
parse_mode: "HTML",}
);
在这里,我们只是创建一个新函数getHiddenLink()
,该函数接受URL和parse_mode(HTML或markdown),并仅制作一个以空字符作为链接文本的新URL表示形式,并返回它。
没有链接就无法发送预览。您可以尝试使用自己的电报帐户注册一些帐户,但您将发现这是不可能的。 代替预览,为照片添加一些标题。