diff --git a/helpers.go b/helpers.go index f489a52..348ad52 100644 --- a/helpers.go +++ b/helpers.go @@ -29,127 +29,30 @@ func NewForward(chatID int, fromChatID int, messageID int) ForwardConfig { } } -// NewPhotoUpload creates a new photo uploader. +// NewFileUpload creates a new photo uploader. // This requires a file on the local filesystem to upload to Telegram. // Perhaps set a ChatAction of ChatUploadPhoto while processing. // // chatID is where to send it, filename is the path to the file. -func NewPhotoUpload(chatID int, filename string) PhotoConfig { - return PhotoConfig{ +func NewFileUpload(chatID int, filename string, fileType FileType) FileConfig { + return FileConfig{ ChatID: chatID, UseExistingPhoto: false, FilePath: filename, + FileType: fileType, } } -// NewPhotoShare shares an existing photo. +// NewFileShare shares an existing photo. // You may use this to reshare an existing photo without reuploading it. // // chatID is where to send it, fileID is the ID of the file already uploaded. -func NewPhotoShare(chatID int, fileID string) PhotoConfig { - return PhotoConfig{ +func NewPhotoShare(chatID int, fileID string, fileType FileType) FileConfig { + return FileConfig{ ChatID: chatID, UseExistingPhoto: true, FileID: fileID, - } -} - -// NewAudioUpload creates a new audio uploader. -// This requires a file on the local filesystem to upload to Telegram. -// Perhaps set a ChatAction of ChatRecordAudio or ChatUploadAudio while processing. -// -// chatID is where to send it, filename is the path to the file. -func NewAudioUpload(chatID int, filename string) AudioConfig { - return AudioConfig{ - ChatID: chatID, - UseExistingAudio: false, - FilePath: filename, - } -} - -// NewAudioShare shares an existing audio file. -// You may use this to reshare an existing audio file without reuploading it. -// -// chatID is where to send it, fileID is the ID of the audio already uploaded. -func NewAudioShare(chatID int, fileID string) AudioConfig { - return AudioConfig{ - ChatID: chatID, - UseExistingAudio: true, - FileID: fileID, - } -} - -// NewDocumentUpload creates a new document uploader. -// This requires a file on the local filesystem to upload to Telegram. -// Perhaps set a ChatAction of ChatUploadDocument while processing. -// -// chatID is where to send it, filename is the path to the file. -func NewDocumentUpload(chatID int, filename string) DocumentConfig { - return DocumentConfig{ - ChatID: chatID, - UseExistingDocument: false, - FilePath: filename, - } -} - -// NewDocumentShare shares an existing document. -// You may use this to reshare an existing document without reuploading it. -// -// chatID is where to send it, fileID is the ID of the document already uploaded. -func NewDocumentShare(chatID int, fileID string) DocumentConfig { - return DocumentConfig{ - ChatID: chatID, - UseExistingDocument: true, - FileID: fileID, - } -} - -// NewStickerUpload creates a new sticker uploader. -// This requires a file on the local filesystem to upload to Telegram. -// -// chatID is where to send it, filename is the path to the file. -func NewStickerUpload(chatID int, filename string) StickerConfig { - return StickerConfig{ - ChatID: chatID, - UseExistingSticker: false, - FilePath: filename, - } -} - -// NewStickerShare shares an existing sticker. -// You may use this to reshare an existing sticker without reuploading it. -// -// chatID is where to send it, fileID is the ID of the sticker already uploaded. -func NewStickerShare(chatID int, fileID string) StickerConfig { - return StickerConfig{ - ChatID: chatID, - UseExistingSticker: true, - FileID: fileID, - } -} - -// NewVideoUpload creates a new video uploader. -// This requires a file on the local filesystem to upload to Telegram. -// Perhaps set a ChatAction of ChatRecordVideo or ChatUploadVideo while processing. -// -// chatID is where to send it, filename is the path to the file. -func NewVideoUpload(chatID int, filename string) VideoConfig { - return VideoConfig{ - ChatID: chatID, - UseExistingVideo: false, - FilePath: filename, - } -} - -// NewVideoShare shares an existing video. -// You may use this to reshare an existing video without reuploading it. -// -// chatID is where to send it, fileID is the ID of the video already uploaded. -func NewVideoShare(chatID int, fileID string) VideoConfig { - return VideoConfig{ - ChatID: chatID, - UseExistingVideo: true, - FileID: fileID, + FileType: fileType, } } diff --git a/methods.go b/methods.go index a3e42f0..ab2aaca 100644 --- a/methods.go +++ b/methods.go @@ -195,7 +195,7 @@ func (bot *BotAPI) SendFile(config FileConfig) (Message, error) { if config.UseExistingPhoto { v := url.Values{} v.Add("chat_id", strconv.Itoa(config.ChatID)) - v.Add(config.FileType, config.FileID) + v.Add(config.FileType.String(), config.FileID) if config.FileType == "photo" && config.Caption != "" { v.Add("caption", config.Caption) } diff --git a/types.go b/types.go index 47eefd3..a662f54 100644 --- a/types.go +++ b/types.go @@ -2,6 +2,7 @@ package tgbotapi import ( "encoding/json" + "net/url" ) // Constant values for ChatActions @@ -19,8 +20,8 @@ const ( // FileType type which allows us to validate file types. type FileType string -func (f *FileType) ValidFileType() bool { - switch *f { +func (f FileType) ValidFileType() bool { + switch f { case "photo", "document", "video", "sticker", "audio": return true default: @@ -28,6 +29,10 @@ func (f *FileType) ValidFileType() bool { } } +func (f FileType) String() string { + return string(f) +} + // APIResponse is a response from the Telegram API with the result stored raw. type APIResponse struct { Ok bool `json:"ok"`