package tgapi import "context" // SendRichMessage uploads files referenced by attach:// names in params.RichMessage // and sends the rich message. // // Since: Bot API 10.2 func (u *Uploader) SendRichMessage(params SendRichMessage, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendRichMessage", params, params.ChatID, files...) return req.Do(u) } // SendRichMessageWithContext uploads files referenced by attach:// names in params.RichMessage // and sends the rich message using ctx for cancellation and deadlines. // // Since: Bot API 10.2 func (u *Uploader) SendRichMessageWithContext(ctx context.Context, params SendRichMessage, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendRichMessage", params, params.ChatID, files...) return req.DoWithContext(ctx, u) } // SendRichMessageDraft streams a rich-message draft without direct file uploads. // It returns ErrRichMessageDraftUploadUnsupported when files is non-empty. // // Since: Bot API 10.2 func (u *Uploader) SendRichMessageDraft(params SendRichMessageDraft, files ...UploaderFile) (bool, error) { if len(files) > 0 { return false, ErrRichMessageDraftUploadUnsupported } return u.api.SendRichMessageDraft(params) } // SendRichMessageDraftWithContext is the context-aware variant of SendRichMessageDraft. // // Since: Bot API 10.2 func (u *Uploader) SendRichMessageDraftWithContext(ctx context.Context, params SendRichMessageDraft, files ...UploaderFile) (bool, error) { if len(files) > 0 { return false, ErrRichMessageDraftUploadUnsupported } return u.api.SendRichMessageDraftWithContext(ctx, params) } // UploadPhoto holds parameters for uploading a photo using the Uploader. // Since: Bot API 1.0 // See https://core.telegram.org/bots/api#sendphoto type UploadPhoto struct { // BusinessConnectionID Optional. Unique identifier of the business connection on behalf of which the // message will be sent BusinessConnectionID string `json:"business_connection_id,omitempty"` // ChatID Required. Unique identifier for the target chat or username of the target bot, supergroup or // channel in the format @username ChatID int64 `json:"chat_id"` // MessageThreadID Optional. Unique identifier for the target message thread (topic) of a forum; for forum // supergroups and private chats of bots with forum topic mode enabled only MessageThreadID int `json:"message_thread_id,omitempty"` // DirectMessagesTopicID Optional. Identifier of the direct messages topic to which the message will be // sent; required if the message is sent to a direct messages chat DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"` // ReceiverUserID identifies the user who can see the ephemeral message. ReceiverUserID int64 `json:"receiver_user_id,omitempty"` // Since: Bot API 10.2 // CallbackQueryID identifies the callback query that triggered an ephemeral response. CallbackQueryID string `json:"callback_query_id,omitempty"` // Since: Bot API 10.2 // Caption Optional. Photo caption (may also be used when resending photos by file_id), 0-1024 characters // after entities parsing Caption string `json:"caption,omitempty"` // ParseMode Optional. Mode for parsing entities in the photo caption. See formatting options for more // details. ParseMode ParseMode `json:"parse_mode,omitempty"` // CaptionEntities Optional. A JSON-serialized list of special entities that appear in the caption, which // can be specified instead of parse_mode CaptionEntities []MessageEntity `json:"caption_entities,omitempty"` // ShowCaptionAboveMedia Optional. Pass True if the caption must be shown above the message media ShowCaptionAboveMedia bool `json:"show_caption_above_media,omitempty"` // HasSpoiler Optional. Pass True if the photo needs to be covered with a spoiler animation HasSpoiler bool `json:"has_spoiler,omitempty"` // DisableNotification Optional. Sends the message silently. Users will receive a notification with no // sound. DisableNotification bool `json:"disable_notification,omitempty"` // ProtectContent Optional. Protects the contents of the sent message from forwarding and saving ProtectContent bool `json:"protect_content,omitempty"` // AllowPaidBroadcast Optional. Pass True to allow up to 1000 messages per second, ignoring broadcasting // limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's // balance. AllowPaidBroadcast bool `json:"allow_paid_broadcast,omitempty"` // MessageEffectID Optional. Unique identifier of the message effect to be added to the message; for private // chats only MessageEffectID string `json:"message_effect_id,omitempty"` // SuggestedPostParameters Optional. A JSON-serialized object containing the parameters of the suggested // post to send; for direct messages chats only. If the message is sent as a reply to another suggested // post, then that suggested post is automatically declined. SuggestedPostParameters *SuggestedPostParameters `json:"suggested_post_parameters,omitempty"` // ReplyParameters Optional. Description of the message to reply to ReplyParameters *ReplyParameters `json:"reply_parameters,omitempty"` // ReplyMarkup Optional. Additional interface options. A JSON-serialized object for an inline keyboard, // custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user. ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"` } // SendPhoto uploads a photo via multipart and sends it as a message. // Since: Bot API 1.0 // file is the photo file to upload. // See https://core.telegram.org/bots/api#sendphoto func (u *Uploader) SendPhoto(params UploadPhoto, file UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendPhoto", params, params.ChatID, file) return req.Do(u) } // SendPhotoWithContext is the context-aware variant of SendPhoto. // Since: Bot API 1.0 // It executes the same request but uses ctx for cancellation and deadlines. // See https://core.telegram.org/bots/api#sendphoto func (u *Uploader) SendPhotoWithContext(ctx context.Context, params UploadPhoto, file UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendPhoto", params, params.ChatID, file) return req.DoWithContext(ctx, u) } // UploadAudio holds parameters for uploading an audio file using the Uploader. // Since: Bot API 1.2 // See https://core.telegram.org/bots/api#sendaudio type UploadAudio struct { // BusinessConnectionID Optional. Unique identifier of the business connection on behalf of which the // message will be sent BusinessConnectionID string `json:"business_connection_id,omitempty"` // ChatID Required. Unique identifier for the target chat or username of the target bot, supergroup or // channel in the format @username ChatID int64 `json:"chat_id"` // MessageThreadID Optional. Unique identifier for the target message thread (topic) of a forum; for forum // supergroups and private chats of bots with forum topic mode enabled only MessageThreadID int `json:"message_thread_id,omitempty"` // DirectMessagesTopicID Optional. Identifier of the direct messages topic to which the message will be // sent; required if the message is sent to a direct messages chat DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"` // ReceiverUserID identifies the user who can see the ephemeral message. ReceiverUserID int64 `json:"receiver_user_id,omitempty"` // Since: Bot API 10.2 // CallbackQueryID identifies the callback query that triggered an ephemeral response. CallbackQueryID string `json:"callback_query_id,omitempty"` // Since: Bot API 10.2 // Caption Optional. Audio caption, 0-1024 characters after entities parsing Caption string `json:"caption,omitempty"` // ParseMode Optional. Mode for parsing entities in the audio caption. See formatting options for more // details. ParseMode ParseMode `json:"parse_mode,omitempty"` // CaptionEntities Optional. A JSON-serialized list of special entities that appear in the caption, which // can be specified instead of parse_mode CaptionEntities []MessageEntity `json:"caption_entities,omitempty"` // Duration Optional. Duration of the audio in seconds Duration int `json:"duration,omitempty"` // Performer Optional. Performer Performer string `json:"performer,omitempty"` // Title Optional. Track name Title string `json:"title,omitempty"` // DisableNotification Optional. Sends the message silently. Users will receive a notification with no // sound. DisableNotification bool `json:"disable_notification,omitempty"` // ProtectContent Optional. Protects the contents of the sent message from forwarding and saving ProtectContent bool `json:"protect_content,omitempty"` // AllowPaidBroadcast Optional. Pass True to allow up to 1000 messages per second, ignoring broadcasting // limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's // balance. AllowPaidBroadcast bool `json:"allow_paid_broadcast,omitempty"` // MessageEffectID Optional. Unique identifier of the message effect to be added to the message; for private // chats only MessageEffectID string `json:"message_effect_id,omitempty"` // SuggestedPostParameters Optional. A JSON-serialized object containing the parameters of the suggested // post to send; for direct messages chats only. If the message is sent as a reply to another suggested // post, then that suggested post is automatically declined. SuggestedPostParameters *SuggestedPostParameters `json:"suggested_post_parameters,omitempty"` // ReplyParameters Optional. Description of the message to reply to ReplyParameters *ReplyParameters `json:"reply_parameters,omitempty"` // ReplyMarkup Optional. Additional interface options. A JSON-serialized object for an inline keyboard, // custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user. ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"` } // SendAudio uploads an audio file via multipart and sends it as a message. // Since: Bot API 1.2 // files are the audio file(s) to upload (typically one file). // See https://core.telegram.org/bots/api#sendaudio func (u *Uploader) SendAudio(params UploadAudio, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendAudio", params, params.ChatID, files...) return req.Do(u) } // SendAudioWithContext is the context-aware variant of SendAudio. // Since: Bot API 1.2 // It executes the same request but uses ctx for cancellation and deadlines. // See https://core.telegram.org/bots/api#sendaudio func (u *Uploader) SendAudioWithContext(ctx context.Context, params UploadAudio, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendAudio", params, params.ChatID, files...) return req.DoWithContext(ctx, u) } // UploadDocument holds parameters for uploading a document using the Uploader. // Since: Bot API 1.0 // See https://core.telegram.org/bots/api#senddocument type UploadDocument struct { // BusinessConnectionID Optional. Unique identifier of the business connection on behalf of which the // message will be sent BusinessConnectionID string `json:"business_connection_id,omitempty"` // ChatID Required. Unique identifier for the target chat or username of the target bot, supergroup or // channel in the format @username ChatID int64 `json:"chat_id"` // MessageThreadID Optional. Unique identifier for the target message thread (topic) of a forum; for forum // supergroups and private chats of bots with forum topic mode enabled only MessageThreadID int `json:"message_thread_id,omitempty"` // DirectMessagesTopicID Optional. Identifier of the direct messages topic to which the message will be // sent; required if the message is sent to a direct messages chat DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"` // ReceiverUserID identifies the user who can see the ephemeral message. ReceiverUserID int64 `json:"receiver_user_id,omitempty"` // Since: Bot API 10.2 // CallbackQueryID identifies the callback query that triggered an ephemeral response. CallbackQueryID string `json:"callback_query_id,omitempty"` // Since: Bot API 10.2 // Caption Optional. Document caption (may also be used when resending documents by file_id), 0-1024 // characters after entities parsing Caption string `json:"caption,omitempty"` // ParseMode Optional. Mode for parsing entities in the document caption. See formatting options for more // details. ParseMode ParseMode `json:"parse_mode,omitempty"` // CaptionEntities Optional. A JSON-serialized list of special entities that appear in the caption, which // can be specified instead of parse_mode CaptionEntities []MessageEntity `json:"caption_entities,omitempty"` // DisableContentTypeDetection Optional. Disables automatic server-side content type detection for files // uploaded using multipart/form-data DisableContentTypeDetection bool `json:"disable_content_type_detection,omitempty"` // DisableNotification Optional. Sends the message silently. Users will receive a notification with no // sound. DisableNotification bool `json:"disable_notification,omitempty"` // ProtectContent Optional. Protects the contents of the sent message from forwarding and saving ProtectContent bool `json:"protect_content,omitempty"` // AllowPaidBroadcast Optional. Pass True to allow up to 1000 messages per second, ignoring broadcasting // limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's // balance. AllowPaidBroadcast bool `json:"allow_paid_broadcast,omitempty"` // MessageEffectID Optional. Unique identifier of the message effect to be added to the message; for private // chats only MessageEffectID string `json:"message_effect_id,omitempty"` // SuggestedPostParameters Optional. A JSON-serialized object containing the parameters of the suggested // post to send; for direct messages chats only. If the message is sent as a reply to another suggested // post, then that suggested post is automatically declined. SuggestedPostParameters *SuggestedPostParameters `json:"suggested_post_parameters,omitempty"` // ReplyParameters Optional. Description of the message to reply to ReplyParameters *ReplyParameters `json:"reply_parameters,omitempty"` // ReplyMarkup Optional. Additional interface options. A JSON-serialized object for an inline keyboard, // custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user. ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"` } // SendDocument uploads a document via multipart and sends it as a message. // Since: Bot API 1.0 // files are the document file(s) to upload (typically one file). // See https://core.telegram.org/bots/api#senddocument func (u *Uploader) SendDocument(params UploadDocument, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendDocument", params, params.ChatID, files...) return req.Do(u) } // SendDocumentWithContext is the context-aware variant of SendDocument. // Since: Bot API 1.0 // It executes the same request but uses ctx for cancellation and deadlines. // See https://core.telegram.org/bots/api#senddocument func (u *Uploader) SendDocumentWithContext(ctx context.Context, params UploadDocument, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendDocument", params, params.ChatID, files...) return req.DoWithContext(ctx, u) } // UploadVideo holds parameters for uploading a video using the Uploader. // Since: Bot API 1.0 // See https://core.telegram.org/bots/api#sendvideo type UploadVideo struct { // BusinessConnectionID Optional. Unique identifier of the business connection on behalf of which the // message will be sent BusinessConnectionID string `json:"business_connection_id,omitempty"` // ChatID Required. Unique identifier for the target chat or username of the target bot, supergroup or // channel in the format @username ChatID int64 `json:"chat_id"` // MessageThreadID Optional. Unique identifier for the target message thread (topic) of a forum; for forum // supergroups and private chats of bots with forum topic mode enabled only MessageThreadID int `json:"message_thread_id,omitempty"` // DirectMessagesTopicID Optional. Identifier of the direct messages topic to which the message will be // sent; required if the message is sent to a direct messages chat DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"` // ReceiverUserID identifies the user who can see the ephemeral message. ReceiverUserID int64 `json:"receiver_user_id,omitempty"` // Since: Bot API 10.2 // CallbackQueryID identifies the callback query that triggered an ephemeral response. CallbackQueryID string `json:"callback_query_id,omitempty"` // Since: Bot API 10.2 // Duration Optional. Duration of sent video in seconds Duration int `json:"duration,omitempty"` // Width Optional. Video width Width int `json:"width,omitempty"` // Height Optional. Video height Height int `json:"height,omitempty"` // StartTimestamp Optional. Start timestamp for the video in the message StartTimestamp int64 `json:"start_timestamp,omitempty"` // Caption Optional. Video caption (may also be used when resending videos by file_id), 0-1024 characters // after entities parsing Caption string `json:"caption,omitempty"` // ParseMode Optional. Mode for parsing entities in the video caption. See formatting options for more // details. ParseMode ParseMode `json:"parse_mode,omitempty"` // CaptionEntities Optional. A JSON-serialized list of special entities that appear in the caption, which // can be specified instead of parse_mode CaptionEntities []MessageEntity `json:"caption_entities,omitempty"` // ShowCaptionAboveMedia Optional. Pass True if the caption must be shown above the message media ShowCaptionAboveMedia bool `json:"show_caption_above_media,omitempty"` // HasSpoiler Optional. Pass True if the video needs to be covered with a spoiler animation HasSpoiler bool `json:"has_spoiler,omitempty"` // SupportsStreaming Optional. Pass True if the uploaded video is suitable for streaming SupportsStreaming bool `json:"supports_streaming,omitempty"` // DisableNotification Optional. Sends the message silently. Users will receive a notification with no // sound. DisableNotification bool `json:"disable_notification,omitempty"` // ProtectContent Optional. Protects the contents of the sent message from forwarding and saving ProtectContent bool `json:"protect_content,omitempty"` // AllowPaidBroadcast Optional. Pass True to allow up to 1000 messages per second, ignoring broadcasting // limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's // balance. AllowPaidBroadcast bool `json:"allow_paid_broadcast,omitempty"` // MessageEffectID Optional. Unique identifier of the message effect to be added to the message; for private // chats only MessageEffectID string `json:"message_effect_id,omitempty"` // SuggestedPostParameters Optional. A JSON-serialized object containing the parameters of the suggested // post to send; for direct messages chats only. If the message is sent as a reply to another suggested // post, then that suggested post is automatically declined. SuggestedPostParameters *SuggestedPostParameters `json:"suggested_post_parameters,omitempty"` // ReplyParameters Optional. Description of the message to reply to ReplyParameters *ReplyParameters `json:"reply_parameters,omitempty"` // ReplyMarkup Optional. Additional interface options. A JSON-serialized object for an inline keyboard, // custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user. ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"` } // SendVideo uploads a video via multipart and sends it as a message. // Since: Bot API 1.0 // files are the video file(s) to upload (typically one file). // See https://core.telegram.org/bots/api#sendvideo func (u *Uploader) SendVideo(params UploadVideo, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendVideo", params, params.ChatID, files...) return req.Do(u) } // SendVideoWithContext is the context-aware variant of SendVideo. // Since: Bot API 1.0 // It executes the same request but uses ctx for cancellation and deadlines. // See https://core.telegram.org/bots/api#sendvideo func (u *Uploader) SendVideoWithContext(ctx context.Context, params UploadVideo, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendVideo", params, params.ChatID, files...) return req.DoWithContext(ctx, u) } // UploadAnimation holds parameters for uploading an animation using the Uploader. // Since: Bot API 4.0 // See https://core.telegram.org/bots/api#sendanimation type UploadAnimation struct { // BusinessConnectionID Optional. Unique identifier of the business connection on behalf of which the // message will be sent BusinessConnectionID string `json:"business_connection_id,omitempty"` // ChatID Required. Unique identifier for the target chat or username of the target bot, supergroup or // channel in the format @username ChatID int64 `json:"chat_id"` // MessageThreadID Optional. Unique identifier for the target message thread (topic) of a forum; for forum // supergroups and private chats of bots with forum topic mode enabled only MessageThreadID int `json:"message_thread_id,omitempty"` // DirectMessagesTopicID Optional. Identifier of the direct messages topic to which the message will be // sent; required if the message is sent to a direct messages chat DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"` // ReceiverUserID identifies the user who can see the ephemeral message. ReceiverUserID int64 `json:"receiver_user_id,omitempty"` // Since: Bot API 10.2 // CallbackQueryID identifies the callback query that triggered an ephemeral response. CallbackQueryID string `json:"callback_query_id,omitempty"` // Since: Bot API 10.2 // Duration Optional. Duration of sent animation in seconds Duration int `json:"duration,omitempty"` // Width Optional. Animation width Width int `json:"width,omitempty"` // Height Optional. Animation height Height int `json:"height,omitempty"` // Caption Optional. Animation caption (may also be used when resending animation by file_id), 0-1024 // characters after entities parsing Caption string `json:"caption,omitempty"` // ParseMode Optional. Mode for parsing entities in the animation caption. See formatting options for more // details. ParseMode ParseMode `json:"parse_mode,omitempty"` // CaptionEntities Optional. A JSON-serialized list of special entities that appear in the caption, which // can be specified instead of parse_mode CaptionEntities []MessageEntity `json:"caption_entities,omitempty"` // ShowCaptionAboveMedia Optional. Pass True if the caption must be shown above the message media ShowCaptionAboveMedia bool `json:"show_caption_above_media,omitempty"` // HasSpoiler Optional. Pass True if the animation needs to be covered with a spoiler animation HasSpoiler bool `json:"has_spoiler,omitempty"` // DisableNotification Optional. Sends the message silently. Users will receive a notification with no // sound. DisableNotification bool `json:"disable_notification,omitempty"` // ProtectContent Optional. Protects the contents of the sent message from forwarding and saving ProtectContent bool `json:"protect_content,omitempty"` // AllowPaidBroadcast Optional. Pass True to allow up to 1000 messages per second, ignoring broadcasting // limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's // balance. AllowPaidBroadcast bool `json:"allow_paid_broadcast,omitempty"` // MessageEffectID Optional. Unique identifier of the message effect to be added to the message; for private // chats only MessageEffectID string `json:"message_effect_id,omitempty"` // SuggestedPostParameters Optional. A JSON-serialized object containing the parameters of the suggested // post to send; for direct messages chats only. If the message is sent as a reply to another suggested // post, then that suggested post is automatically declined. SuggestedPostParameters *SuggestedPostParameters `json:"suggested_post_parameters,omitempty"` // ReplyParameters Optional. Description of the message to reply to ReplyParameters *ReplyParameters `json:"reply_parameters,omitempty"` // ReplyMarkup Optional. Additional interface options. A JSON-serialized object for an inline keyboard, // custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user. ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"` } // SendAnimation uploads an animation via multipart and sends it as a message. // Since: Bot API 4.0 // files are the animation file(s) to upload (typically one file). // See https://core.telegram.org/bots/api#sendanimation func (u *Uploader) SendAnimation(params UploadAnimation, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendAnimation", params, params.ChatID, files...) return req.Do(u) } // SendAnimationWithContext is the context-aware variant of SendAnimation. // Since: Bot API 4.0 // It executes the same request but uses ctx for cancellation and deadlines. // See https://core.telegram.org/bots/api#sendanimation func (u *Uploader) SendAnimationWithContext(ctx context.Context, params UploadAnimation, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendAnimation", params, params.ChatID, files...) return req.DoWithContext(ctx, u) } // UploadVoice holds parameters for uploading a voice note using the Uploader. // Since: Bot API 1.2 // See https://core.telegram.org/bots/api#sendvoice type UploadVoice struct { // BusinessConnectionID Optional. Unique identifier of the business connection on behalf of which the // message will be sent BusinessConnectionID string `json:"business_connection_id,omitempty"` // ChatID Required. Unique identifier for the target chat or username of the target bot, supergroup or // channel in the format @username ChatID int64 `json:"chat_id"` // MessageThreadID Optional. Unique identifier for the target message thread (topic) of a forum; for forum // supergroups and private chats of bots with forum topic mode enabled only MessageThreadID int `json:"message_thread_id,omitempty"` // DirectMessagesTopicID Optional. Identifier of the direct messages topic to which the message will be // sent; required if the message is sent to a direct messages chat DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"` // ReceiverUserID identifies the user who can see the ephemeral message. ReceiverUserID int64 `json:"receiver_user_id,omitempty"` // Since: Bot API 10.2 // CallbackQueryID identifies the callback query that triggered an ephemeral response. CallbackQueryID string `json:"callback_query_id,omitempty"` // Since: Bot API 10.2 // Caption Optional. Voice message caption, 0-1024 characters after entities parsing Caption string `json:"caption,omitempty"` // ParseMode Optional. Mode for parsing entities in the voice message caption. See formatting options for // more details. ParseMode ParseMode `json:"parse_mode,omitempty"` // CaptionEntities Optional. A JSON-serialized list of special entities that appear in the caption, which // can be specified instead of parse_mode CaptionEntities []MessageEntity `json:"caption_entities,omitempty"` // Duration Optional. Duration of the voice message in seconds Duration int `json:"duration,omitempty"` // DisableNotification Optional. Sends the message silently. Users will receive a notification with no // sound. DisableNotification bool `json:"disable_notification,omitempty"` // ProtectContent Optional. Protects the contents of the sent message from forwarding and saving ProtectContent bool `json:"protect_content,omitempty"` // AllowPaidBroadcast Optional. Pass True to allow up to 1000 messages per second, ignoring broadcasting // limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's // balance. AllowPaidBroadcast bool `json:"allow_paid_broadcast,omitempty"` // MessageEffectID Optional. Unique identifier of the message effect to be added to the message; for private // chats only MessageEffectID string `json:"message_effect_id,omitempty"` // SuggestedPostParameters Optional. A JSON-serialized object containing the parameters of the suggested // post to send; for direct messages chats only. If the message is sent as a reply to another suggested // post, then that suggested post is automatically declined. SuggestedPostParameters *SuggestedPostParameters `json:"suggested_post_parameters,omitempty"` // ReplyParameters Optional. Description of the message to reply to ReplyParameters *ReplyParameters `json:"reply_parameters,omitempty"` // ReplyMarkup Optional. Additional interface options. A JSON-serialized object for an inline keyboard, // custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user. ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"` } // SendVoice uploads a voice note via multipart and sends it as a message. // Since: Bot API 1.2 // files are the voice file(s) to upload (typically one file). // See https://core.telegram.org/bots/api#sendvoice func (u *Uploader) SendVoice(params UploadVoice, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendVoice", params, params.ChatID, files...) return req.Do(u) } // SendVoiceWithContext is the context-aware variant of SendVoice. // Since: Bot API 1.2 // It executes the same request but uses ctx for cancellation and deadlines. // See https://core.telegram.org/bots/api#sendvoice func (u *Uploader) SendVoiceWithContext(ctx context.Context, params UploadVoice, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendVoice", params, params.ChatID, files...) return req.DoWithContext(ctx, u) } // UploadVideoNote holds parameters for uploading a video note (rounded video) using the Uploader. // Since: Bot API 3.0 // See https://core.telegram.org/bots/api#sendvideonote type UploadVideoNote struct { // BusinessConnectionID Optional. Unique identifier of the business connection on behalf of which the // message will be sent BusinessConnectionID string `json:"business_connection_id,omitempty"` // ChatID Required. Unique identifier for the target chat or username of the target bot, supergroup or // channel in the format @username ChatID int64 `json:"chat_id"` // MessageThreadID Optional. Unique identifier for the target message thread (topic) of a forum; for forum // supergroups and private chats of bots with forum topic mode enabled only MessageThreadID int `json:"message_thread_id,omitempty"` // DirectMessagesTopicID Optional. Identifier of the direct messages topic to which the message will be // sent; required if the message is sent to a direct messages chat DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"` // ReceiverUserID identifies the user who can see the ephemeral message. ReceiverUserID int64 `json:"receiver_user_id,omitempty"` // Since: Bot API 10.2 // CallbackQueryID identifies the callback query that triggered an ephemeral response. CallbackQueryID string `json:"callback_query_id,omitempty"` // Since: Bot API 10.2 // Duration Optional. Duration of sent video in seconds Duration int `json:"duration,omitempty"` // Length Optional. Video width and height, i.e. diameter of the video message Length int `json:"length,omitempty"` // DisableNotification Optional. Sends the message silently. Users will receive a notification with no // sound. DisableNotification bool `json:"disable_notification,omitempty"` // ProtectContent Optional. Protects the contents of the sent message from forwarding and saving ProtectContent bool `json:"protect_content,omitempty"` // AllowPaidBroadcast Optional. Pass True to allow up to 1000 messages per second, ignoring broadcasting // limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's // balance. AllowPaidBroadcast bool `json:"allow_paid_broadcast,omitempty"` // MessageEffectID Optional. Unique identifier of the message effect to be added to the message; for private // chats only MessageEffectID string `json:"message_effect_id,omitempty"` // SuggestedPostParameters Optional. A JSON-serialized object containing the parameters of the suggested // post to send; for direct messages chats only. If the message is sent as a reply to another suggested // post, then that suggested post is automatically declined. SuggestedPostParameters *SuggestedPostParameters `json:"suggested_post_parameters,omitempty"` // ReplyParameters Optional. Description of the message to reply to ReplyParameters *ReplyParameters `json:"reply_parameters,omitempty"` // ReplyMarkup Optional. Additional interface options. A JSON-serialized object for an inline keyboard, // custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user. ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"` } // SendVideoNote uploads a video note via multipart and sends it as a message. // Since: Bot API 3.0 // files are the video note file(s) to upload (typically one file). // See https://core.telegram.org/bots/api#sendvideonote func (u *Uploader) SendVideoNote(params UploadVideoNote, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendVideoNote", params, params.ChatID, files...) return req.Do(u) } // SendVideoNoteWithContext is the context-aware variant of SendVideoNote. // Since: Bot API 3.0 // It executes the same request but uses ctx for cancellation and deadlines. // See https://core.telegram.org/bots/api#sendvideonote func (u *Uploader) SendVideoNoteWithContext(ctx context.Context, params UploadVideoNote, files ...UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]("sendVideoNote", params, params.ChatID, files...) return req.DoWithContext(ctx, u) } // UploadChatPhoto holds parameters for uploading a chat photo using the Uploader. // Since: Bot API 3.1 // See https://core.telegram.org/bots/api#setchatphoto type UploadChatPhoto struct { // ChatID Required. Unique identifier for the target chat or username of the target channel in the format // @username ChatID int64 `json:"chat_id"` } // SetChatPhoto uploads a new chat photo. // Since: Bot API 3.1 // photo is the photo file to upload. // See https://core.telegram.org/bots/api#setchatphoto func (u *Uploader) SetChatPhoto(params UploadChatPhoto, photo UploaderFile) (bool, error) { req := NewUploaderRequestWithChatID[bool]("setChatPhoto", params, params.ChatID, photo) return req.Do(u) } // SetChatPhotoWithContext is the context-aware variant of SetChatPhoto. // Since: Bot API 3.1 // It executes the same request but uses ctx for cancellation and deadlines. // See https://core.telegram.org/bots/api#setchatphoto func (u *Uploader) SetChatPhotoWithContext(ctx context.Context, params UploadChatPhoto, photo UploaderFile) (bool, error) { req := NewUploaderRequestWithChatID[bool]("setChatPhoto", params, params.ChatID, photo) return req.DoWithContext(ctx, u) } // UploadSetWebhook holds multipart parameters for the setWebhook method. // Since: Bot API 1.0 // Use this type when uploading a self-signed certificate file. // See https://core.telegram.org/bots/api#setwebhook type UploadSetWebhook struct { // URL Required. HTTPS URL to send updates to. Use an empty string to remove webhook integration. URL string `json:"url"` // IPAddress Optional. The fixed IP address which will be used to send webhook requests instead of the IP // address resolved through DNS IPAddress string `json:"ip_address,omitempty"` // MaxConnections Optional. The maximum allowed number of simultaneous HTTPS connections to the webhook for // update delivery, 1-100. Defaults to 40. Use lower values to limit the load on your bot's server, and // higher values to increase your bot's throughput. MaxConnections int8 `json:"max_connections,omitempty"` // AllowedUpdates Optional. A JSON-serialized list of the update types you want your bot to receive. For // example, specify ["message", "edited_channel_post", "callback_query"] to only receive updates of these // types. See Update for a complete list of available update types. Specify an empty list to receive all // update types except chat_member, message_reaction, and message_reaction_count (default). If not // specified, the previous setting will be used. Please note that this parameter doesn't affect updates // created before the call to the setWebhook, so unwanted updates may be received for a short period of // time. AllowedUpdates []UpdateType `json:"allowed_updates,omitempty"` // DropPendingUpdates Optional. Pass True to drop all pending updates DropPendingUpdates bool `json:"drop_pending_updates,omitempty"` // SecretToken Optional. A secret token to be sent in a header “X-Telegram-Bot-Api-Secret-Token” in // every webhook request, 1-256 characters. Only characters A-Z, a-z, 0-9, _ and - are allowed. The header // is useful to ensure that the request comes from a webhook set by you. SecretToken string `json:"secret_token,omitempty"` } // SetWebhook uploads a certificate and sets a webhook URL. // Since: Bot API 1.0 // certificate maps to the multipart field "certificate". // See https://core.telegram.org/bots/api#setwebhook func (u *Uploader) SetWebhook(params UploadSetWebhook, certificate UploaderFile) (bool, error) { req := NewUploaderRequest[bool]("setWebhook", params, certificate.SetType(UploaderCertificateType)) return req.Do(u) } // SetWebhookWithContext is the context-aware variant of SetWebhook. // Since: Bot API 1.0 // It executes the same request but uses ctx for cancellation and deadlines. // See https://core.telegram.org/bots/api#setwebhook func (u *Uploader) SetWebhookWithContext(ctx context.Context, params UploadSetWebhook, certificate UploaderFile) (bool, error) { req := NewUploaderRequest[bool]("setWebhook", params, certificate.SetType(UploaderCertificateType)) return req.DoWithContext(ctx, u) } // UploadLivePhoto holds parameters for uploading a live photo using the Uploader. // Since: Bot API 10.0 // See https://core.telegram.org/bots/api#sendlivephoto type UploadLivePhoto struct { // BusinessConnectionID Optional. Unique identifier of the business connection on behalf of which the // message will be sent BusinessConnectionID string `json:"business_connection_id,omitempty"` // ChatID Required. Unique identifier for the target chat or username of the target channel (in the format // @channelusername) ChatID int64 `json:"chat_id"` // MessageThreadID Optional. Unique identifier for the target message thread (topic) of a forum; for forum // supergroups and private chats of bots with forum topic mode enabled only MessageThreadID int `json:"message_thread_id,omitempty"` // DirectMessagesTopicID Optional. Identifier of the direct messages topic to which the message will be // sent; required if the message is sent to a direct messages chat DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"` // ReceiverUserID identifies the user who can see the ephemeral message. ReceiverUserID int64 `json:"receiver_user_id,omitempty"` // Since: Bot API 10.2 // CallbackQueryID identifies the callback query that triggered an ephemeral response. CallbackQueryID string `json:"callback_query_id,omitempty"` // Since: Bot API 10.2 // Caption Optional. Video caption (may also be used when resending videos by file_id), 0-1024 characters // after entities parsing Caption string `json:"caption,omitempty"` // ParseMode Optional. Mode for parsing entities in the video caption. See formatting options for more // details. ParseMode ParseMode `json:"parse_mode,omitempty"` // CaptionEntities Optional. A JSON-serialized list of special entities that appear in the caption, which // can be specified instead of parse_mode CaptionEntities []MessageEntity `json:"caption_entities,omitempty"` // ShowCaptionAboveMedia Optional. Pass True if the caption must be shown above the message media ShowCaptionAboveMedia bool `json:"show_caption_above_media,omitempty"` // HasSpoiler Optional. Pass True if the video needs to be covered with a spoiler animation HasSpoiler bool `json:"has_spoiler,omitempty"` // DisableNotification Optional. Sends the message silently. Users will receive a notification with no // sound. DisableNotification bool `json:"disable_notification,omitempty"` // ProtectContent Optional. Protects the contents of the sent message from forwarding and saving ProtectContent bool `json:"protect_content,omitempty"` // AllowPaidBroadcast Optional. Pass True to allow up to 1000 messages per second, ignoring broadcasting // limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's // balance. AllowPaidBroadcast bool `json:"allow_paid_broadcast,omitempty"` // MessageEffectID Optional. Unique identifier of the message effect to be added to the message; for private // chats only MessageEffectID string `json:"message_effect_id,omitempty"` // SuggestedPostParameters Optional. A JSON-serialized object containing the parameters of the suggested // post to send; for direct messages chats only. If the message is sent as a reply to another suggested // post, then that suggested post is automatically declined. SuggestedPostParameters *SuggestedPostParameters `json:"suggested_post_parameters,omitempty"` // ReplyParameters Optional. Description of the message to reply to ReplyParameters *ReplyParameters `json:"reply_parameters,omitempty"` // ReplyMarkup Optional. Additional interface options. A JSON-serialized object for an inline keyboard, // custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user. ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"` } // SendLivePhoto uploads a live-photo video and its static image via multipart. // livePhoto is sent in the live_photo field and photo in the photo field. // Since: Bot API 10.0 // See https://core.telegram.org/bots/api#sendlivephoto func (u *Uploader) SendLivePhoto(params UploadLivePhoto, livePhoto, photo UploaderFile) (Message, error) { req := NewUploaderRequestWithChatID[Message]( "sendLivePhoto", params, params.ChatID, livePhoto.SetType(UploaderLivePhotoType), photo.SetType(UploaderPhotoType), ) return req.Do(u) } // SendLivePhotoWithContext uploads a live-photo video and its static image via // multipart using ctx for cancellation and deadlines. // Since: Bot API 10.0 // See https://core.telegram.org/bots/api#sendlivephoto func (u *Uploader) SendLivePhotoWithContext( ctx context.Context, params UploadLivePhoto, livePhoto, photo UploaderFile, ) (Message, error) { req := NewUploaderRequestWithChatID[Message]( "sendLivePhoto", params, params.ChatID, livePhoto.SetType(UploaderLivePhotoType), photo.SetType(UploaderPhotoType), ) return req.DoWithContext(ctx, u) }