node.js - Telegram:将照片发送到消息中,但不显示 Telegraf(NodeJs)的照片链接
问题描述
我在一个发送包含文本的消息的频道上,带有链接(该链接没有图像)和图像(来自亚马逊的提示产品):
我试过这段代码,它是相似的:
bot.telegram.sendMessage('mychannel', `Hello https:/path/to/image.jpg`)
它的工作原理类似,但它仍然是链接。那么我怎么能用图像预览而不是链接呢?
谢谢
解决方案
一种解决方法(技巧)是插入链接但使用空字符 unicode(例如来自https://emptycharacter.com/)
这是一个示例(我插入了带有空字符 的照片 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 表示并返回它。
推荐阅读
- redis - Redis 服务运行几分钟后自动停止
- python - 如何使用python解析从api返回的jsonp
- mysql - 坚持使用 MYSQL 从一张表获取价值到另一张表
- r - 设置用于在 R 中显示数字的全局格式
- git - 如何使用 git reset 来编辑旧的提交
- java - 我想在 onCreate 期间使子线性布局不可见,然后在点击按钮时使其可见
- python - 为什么我会收到“TypeError: '_gdbm.gdbm' object is not iterable”?
- javascript - 重新加载页面时如何使js计时器不重新启动?
- odoo - Odoo 13:如何解决两个冲突的 odoo 主题?
- c# - 如何修复asp.net中的滑块