Telegram:使用 Telegraf (NodeJs) 将照片发送到消息中而不显示照片 link

Telegram: Sen photo into a message without showing the photo link with Telegraf (NodeJs)

我在发送包含文本的消息的频道上,带有 link(link 没有图像)和图像(来自亚马逊的小费产品):

我试过这段代码,它很相似:

bot.telegram.sendMessage('mychannel', `Hello https:/path/to/image.jpg`)

它的工作原理类似,但它仍然是 link。那么我怎么能用图像预览而不是 link 呢?

谢谢

没有 link 就无法发送预览。您可以尝试通过自己的电报帐户获得一些,您会发现这是不可能的。 为照片添加一些标题而不是预览。

一个解决方法(技巧)是插入 link 但使用空字符 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用空字符表示为link-text和return吧。