You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#开发Telegram Bot发送带图片消息?代码无效求助

解决Telegram Bot发送带图片消息的问题

我来帮你搞定这个问题!你的代码没法发送消息,核心是用错了方式——Telegram Bot API 不支持通过本地文件路径的链接在文本消息里显示图片,而且SendTextMessageAsync本来就不是用来发送图片的方法。

问题根源

你尝试用HTML链接本地路径D:\2.jpg,但Telegram服务器根本访问不到你电脑上的本地文件,所以这种方式完全行不通,甚至可能导致消息无法正常发送。

正确的解决方案:使用SendPhotoAsync方法

Telegram Bot API提供了专门的SendPhotoAsync方法,支持直接上传本地图片,还能同时添加带格式的文本说明。以下是修正后的代码:

string imagePath = @"D:\2.jpg";

// 先检查文件是否存在,避免报错
if (System.IO.File.Exists(imagePath))
{
    // 打开本地文件流,用于上传图片
    using (var imageStream = new System.IO.FileStream(imagePath, System.IO.FileMode.Open))
    {
        // 发送图片,同时添加带HTML格式的说明文本
        await bot.SendPhotoAsync(
            chatId: chatId,
            photo: imageStream,
            caption: "<b>Hello</b>\n<code>and a little bit code</code>",
            parseMode: ParseMode.Html
        );
    }
}
else
{
    // 如果文件不存在,发送提示消息
    await bot.SendTextMessageAsync(chatId, "指定的图片文件不存在!");
}

关键说明

  • 用对方法:SendPhotoAsync是Telegram官方推荐的发送图片的方法,它会把本地图片上传到Telegram服务器,确保对方能正常接收。
  • 文件流上传:通过本地文件流传递图片,而不是本地路径,这样Bot才能读取并上传你的图片。
  • 格式支持:caption参数支持HTML或MarkdownV2格式,你可以像之前一样添加加粗、代码块等样式。
  • 错误处理:添加文件存在检查,避免因文件路径错误导致程序崩溃。

如果你想在纯文本消息中插入图片(不是单独发送图片),那需要先把图片上传到Telegram获取FileID,再通过<img>标签在HTML中引用,但这种方式相对复杂,一般直接用SendPhotoAsync发图片带说明是更简单的选择。

内容的提问来源于stack exchange,提问作者Mahdi Yousef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:59:08