首页 > 解决方案 > Go Telegram Bot API 从本地文件上传照片

问题描述

我使用 github.com/go-telegram-bot-api/telegram-bot-api 处理电报后来我使用外部链接上传了照片: 简化代码是这样的:

url := `http://path-to-image/img.jpg`
msg := tgbotapi.NewPhotoUpload(groupID, nil)
msg.FileID = url
msg.Caption = "New photo"
bot.Send(msg)

但是现在,我的照片只能在封闭的本地网络中使用。http://example.loc/img.jpg之类的链接显然不起作用。所以,我下载了一个文件,然后尝试从磁盘或内存上传它。这里有很多例子https://github.com/go-telegram-bot-api/telegram-bot-api/blob/master/bot_test.go 但是没有人工作。我尝试了所有示例甚至更多示例,但总是遇到各种错误:

等等。

有谁知道如何从磁盘或内存上传照片(甚至更好)。提前致谢。

标签: gotelegramtelegram-bot

解决方案


从本地磁盘上传图片的一种方法是读取文件,然后将字节数组传递给FileBytes,用像PhotoConfig这样的Chattable包装它并通过以下方式发送bot.send

photoBytes, err := ioutil.ReadFile("/your/local/path/to/picture.png")
if err != nil {
    panic(err)
}
photoFileBytes := tgbotapi.FileBytes{
    Name:  "picture",
    Bytes: photoBytes,
}
chatID := 12345678
message, err := bot.Send(tgbotapi.NewPhotoUpload(int64(chatID), photoFileBytes))

这里tgbotapi.NewPhotoUpload()为我们创建了一个 PhotoConfig。


推荐阅读