【问题标题】:Go Telegram Bot API upload photo from local fileGo Telegram Bot API 从本地文件上传照片
【发布时间】:2021-06-28 14:22:08
【问题描述】:

我使用 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 协议

等等。

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

【问题讨论】:

    标签: go telegram telegram-bot


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 2021-08-03
      • 1970-01-01
      • 2016-12-27
      • 2017-12-05
      • 2015-09-20
      • 2015-11-24
      • 2016-07-09
      • 2018-10-09
      相关资源
      最近更新 更多