GetFile and GetFileDirectURL method to fetch url of file received from user (#63)

Bot.GetFile and Bot.GetFileDirectURL methods introduced.

* correct comment

* improve docs
pull/69/head
Illarionov Oleg 8 years ago committed by Ian Byrd
parent 41796c460e
commit ce7114afe6

@ -620,3 +620,42 @@ func (b *Bot) AnswerCallbackQuery(callback *Callback, response *CallbackResponse
return nil
}
// GetFile returns full file object including File.FilePath, which allow you to load file from Telegram
//
// Usually File objects does not contain any FilePath so you need to perform additional request
func (b *Bot) GetFile(fileID string) (File, error) {
params := map[string]string{
"file_id": fileID,
}
responseJSON, err := sendCommand("getFile", b.Token, params)
if err != nil {
return File{}, err
}
var responseRecieved struct {
Ok bool
Description string
Result File
}
err = json.Unmarshal(responseJSON, &responseRecieved)
if err != nil {
return File{}, err
}
if !responseRecieved.Ok {
return File{}, fmt.Errorf("telebot: %s", responseRecieved.Description)
}
return responseRecieved.Result, nil
}
// GetFileDirectURL returns direct url for files using FileId which you can get from File object
func (b *Bot) GetFileDirectURL(fileID string) (string, error) {
f, err := b.GetFile(fileID)
if err != nil {
return "", err
}
return "https://api.telegram.org/file/bot"+b.Token+"/"+f.FilePath, nil
}

@ -9,6 +9,7 @@ import (
type File struct {
FileID string `json:"file_id"`
FileSize int `json:"file_size"`
FilePath string `json:"file_path"`
// Local absolute path to file on local file system.
filename string

Loading…
Cancel
Save