Telegram MiniApp如何使用shareMessage分享媒体内容?
方法可用性前提
首先确认你的Telegram客户端版本≥9.2(shareMessage是该版本新增的Web Apps API),可通过以下代码检查方法是否存在:
console.log('shareMessage是否可用:', !!window.Telegram?.WebApp?.shareMessage);
场景1:使用公开图片URL分享
直接构造包含图片URL的消息对象,调用shareMessage即可完成分享:
async function shareWithPublicImage() { if (!window.Telegram?.WebApp?.shareMessage) return; try { const messageConfig = { text: "自定义分享文案", photo: "https://你的公开图片URL" // 替换为实际可访问的图片地址 }; await window.Telegram.WebApp.shareMessage(messageConfig); console.log("分享成功"); } catch (err) { console.error("分享失败:", err); } } // 调用方法 shareWithPublicImage();
场景2:使用Blob对象分享
如果是本地Blob格式的图片,需要先通过uploadFile上传到Telegram服务器,获取file_id后再执行分享:
async function shareWithBlobImage(imageBlob) { if (!window.Telegram?.WebApp?.shareMessage || !window.Telegram.WebApp.uploadFile) return; try { // 上传Blob到Telegram服务器 const uploadResult = await window.Telegram.WebApp.uploadFile({ file: imageBlob, fileName: "分享图片.png" // 自定义文件名 }); // 构造消息并发起分享 const messageConfig = { text: "基于Blob的图片分享", photo: uploadResult.file_id }; await window.Telegram.WebApp.shareMessage(messageConfig); console.log("分享成功"); } catch (err) { console.error("分享失败:", err); } } // 调用示例(需传入已有的Blob对象) // shareWithBlobImage(yourImageBlob);
关键注意事项
- 公开图片URL必须是Telegram能正常抓取的地址(不能是本地localhost或内网地址)
- Blob图片大小需符合Telegram限制(一般≤10MB)
shareMessage调用后会弹出Telegram的分享确认弹窗,需用户手动确认发送- 你提到的“通过msgId发送”是误解,该方法无需提前准备msgId,直接传入消息内容即可
内容的提问来源于stack exchange,提问作者hzzhyj
相关产品推荐
相关产品推荐

