Go Telegram Bot API从本地文件上传照片

laik7k3q  于 2023-11-14  发布在  Go
关注(0)|答案(2)|浏览(106)

我用电报使用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但没有一个作品.我尝试了所有的例子,甚至更多,但我总是得到各种错误:

  • 错误请求:请求中没有照片
  • 错误请求:主机无效
  • 错误请求:URL主机为空
  • 错误请求:不支持的URL协议


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

jv4diomz

jv4diomz1#

从本地磁盘上传图片的一种方法是读取文件,然后将字节数组传递给FileConfig,用像PhotoConfig这样的Chattable Package 它并通过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。

ffscu2ro

ffscu2ro2#

bot, err := tgbotapi.NewBotAPI(telegram_bot_token)
if err != nil {
    fmt.Println(err)
}
file, _ := os.Open("image.jpg")
reader := tgbotapi.FileReader{Name: "image.jpg", Reader: file}

photo := tgbotapi.NewPhoto(telegram_group_id, reader)
photo.Caption = "test caption"

_, err = bot.Send(photo)
if err != nil {
    fmt.Println(err)
}

相关问题