diff options
author | llnulldisk <48621230+llnulldisk@users.noreply.github.com> | 2022-09-04 17:16:56 +0200 |
---|---|---|
committer | llnulldisk <48621230+llnulldisk@users.noreply.github.com> | 2022-09-04 17:16:56 +0200 |
commit | 38f8755a35e696c52c3bae6aceb19513b73d41af (patch) | |
tree | fefd223a3f005932f0be04bf2c459be981f00409 /include/tgbot | |
parent | b540a9cc139b0c428cd51030f8071056dfe44d79 (diff) |
Update to API 5.2
Diffstat (limited to 'include/tgbot')
-rw-r--r-- | include/tgbot/Api.h | 29 | ||||
-rw-r--r-- | include/tgbot/TgTypeParser.h | 8 | ||||
-rw-r--r-- | include/tgbot/types/InlineQuery.h | 25 | ||||
-rw-r--r-- | include/tgbot/types/InputInvoiceMessageContent.h | 140 | ||||
-rw-r--r-- | include/tgbot/types/Message.h | 6 | ||||
-rw-r--r-- | include/tgbot/types/VoiceChatScheduled.h | 26 |
6 files changed, 216 insertions, 18 deletions
diff --git a/include/tgbot/Api.h b/include/tgbot/Api.h index 53a8850..a2de0a9 100644 --- a/include/tgbot/Api.h +++ b/include/tgbot/Api.h @@ -602,15 +602,22 @@ public: bool allowSendingWithoutReply = false) const; /** - * @brief Use this method when you need to tell the user that something is happening on the bot's side. The status is set for 5 seconds or less (when a message arrives from your bot, Telegram clients clear its typing status). + * @brief Use this method when you need to tell the user that something is happening on the bot's side. + * The status is set for 5 seconds or less (when a message arrives from your bot, Telegram clients clear its typing status). * - * Example: The ImageBot needs some time to process a request and upload the image. Instead of sending a text message along the lines of “Retrieving image, please wait…”, the bot may use sendChatAction with action = upload_photo. The user will see a “sending photo” status for the bot. + * Example: The ImageBot needs some time to process a request and upload the image. + * Instead of sending a text message along the lines of “Retrieving image, please wait…”, the bot may use sendChatAction with action = upload_photo. + * The user will see a “sending photo” status for the bot. + * * We only recommend using this method when a response from the bot will take a noticeable amount of time to arrive. * - * @param chatId Unique identifier for the target chat. - * @param action Type of action to broadcast. Choose one, depending on what the user is about to receive: typing for text messages, upload_photo for photos, record_video or upload_video for videos, record_audio or upload_audio for audio files, upload_document for general files, find_location for location data. + * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername) + * @param action Type of action to broadcast. Choose one, depending on what the user is about to receive: typing for text messages, upload_photo for photos, record_video or upload_video for videos, record_voice or upload_voice for voice notes, upload_document for general files, find_location for location data, record_video_note or upload_video_note for video notes. + * + * @return True on success. */ - void sendChatAction(std::int64_t chatId, const std::string& action) const; + bool sendChatAction(std::int64_t chatId, + const std::string& action) const; /** * @brief Use this method to get a list of profile pictures for a user. @@ -1157,12 +1164,11 @@ public: /** * @brief Use this method to send invoices. * - * @param chatId Unique identifier for the target private chat + * @param chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername) * @param title Product name, 1-32 characters * @param description Product description, 1-255 characters * @param payload Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes. * @param providerToken Payments provider token, obtained via Botfather - * @param startParameter Unique deep-linking parameter that can be used to generate this invoice when used as a start parameter * @param currency Three-letter ISO 4217 currency code, see https://core.telegram.org/bots/payments#supported-currencies * @param prices Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.) * @param providerData Optional. A JSON-serialized data about the invoice, which will be shared with the payment provider. A detailed description of required fields should be provided by the payment provider. @@ -1181,6 +1187,9 @@ public: * @param replyMarkup Optional. A JSON-serialized object for an inline keyboard. If empty, one 'Pay total price' button will be shown. If not empty, the first button must be a Pay button. * @param disableNotification Optional. Sends the message silently. Users will receive a notification with no sound. * @param allowSendingWithoutReply Optional. Pass True, if the message should be sent even if the specified replied-to message is not found + * @param maxTipAmount Optional. The maximum accepted amount for tips in the smallest units of the currency (integer, not float/double). For example, for a maximum tip of US$ 1.45 pass max_tip_amount = 145. See the exp parameter in https://core.telegram.org/bots/payments/currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0 + * @param suggestedTipAmounts Optional. A JSON-serialized array of suggested amounts of tips in the smallest units of the currency (integer, not float/double). At most 4 suggested tip amounts can be specified. The suggested tip amounts must be positive, passed in a strictly increased order and must not exceed maxTipAmount. + * @param startParameter Optional. Unique deep-linking parameter. If left empty, forwarded copies of the sent message will have a Pay button, allowing multiple users to pay directly from the forwarded message, using the same invoice. If non-empty, forwarded copies of the sent message will have a URL button with a deep link to the bot (instead of a Pay button), with the value used as the start parameter * * @return On success, the sent Message is returned. */ @@ -1189,7 +1198,6 @@ public: const std::string& description, const std::string& payload, const std::string& providerToken, - const std::string& startParameter, const std::string& currency, const std::vector<LabeledPrice::Ptr>& prices, const std::string& providerData = "", @@ -1207,7 +1215,10 @@ public: std::int32_t replyToMessageId = 0, GenericReply::Ptr replyMarkup = std::make_shared<GenericReply>(), bool disableNotification = false, - bool allowSendingWithoutReply = false) const; + bool allowSendingWithoutReply = false, + std::int32_t maxTipAmount = 0, + const std::vector<std::int32_t>& suggestedTipAmounts = std::vector<std::int32_t>(), + const std::string& startParameter = "") const; /** * @brief Use this method to reply to shipping queries. diff --git a/include/tgbot/TgTypeParser.h b/include/tgbot/TgTypeParser.h index 86f3b31..a4482f7 100644 --- a/include/tgbot/TgTypeParser.h +++ b/include/tgbot/TgTypeParser.h @@ -25,6 +25,7 @@ #include "tgbot/types/Location.h" #include "tgbot/types/ProximityAlertTriggered.h" #include "tgbot/types/MessageAutoDeleteTimerChanged.h" +#include "tgbot/types/VoiceChatScheduled.h" #include "tgbot/types/VoiceChatStarted.h" #include "tgbot/types/VoiceChatEnded.h" #include "tgbot/types/VoiceChatParticipantsInvited.h" @@ -77,6 +78,7 @@ #include "tgbot/types/InputLocationMessageContent.h" #include "tgbot/types/InputVenueMessageContent.h" #include "tgbot/types/InputContactMessageContent.h" +#include "tgbot/types/InputInvoiceMessageContent.h" #include "tgbot/types/Invoice.h" #include "tgbot/types/OrderInfo.h" #include "tgbot/types/PreCheckoutQuery.h" @@ -209,6 +211,9 @@ public: MessageAutoDeleteTimerChanged::Ptr parseJsonAndGetMessageAutoDeleteTimerChanged(const boost::property_tree::ptree& data) const; std::string parseMessageAutoDeleteTimerChanged(const MessageAutoDeleteTimerChanged::Ptr& object) const; + VoiceChatScheduled::Ptr parseJsonAndGetVoiceChatScheduled(const boost::property_tree::ptree& data) const; + std::string parseVoiceChatScheduled(const VoiceChatScheduled::Ptr& object) const; + VoiceChatStarted::Ptr parseJsonAndGetVoiceChatStarted(const boost::property_tree::ptree& data) const; std::string parseVoiceChatStarted(const VoiceChatStarted::Ptr& object) const; @@ -374,6 +379,9 @@ public: InputContactMessageContent::Ptr parseJsonAndGetInputContactMessageContent(const boost::property_tree::ptree& data) const; std::string parseInputContactMessageContent(const InputContactMessageContent::Ptr& object) const; + InputInvoiceMessageContent::Ptr parseJsonAndGetInputInvoiceMessageContent(const boost::property_tree::ptree& data) const; + std::string parseInputInvoiceMessageContent(const InputInvoiceMessageContent::Ptr& object) const; + Invoice::Ptr parseJsonAndGetInvoice(const boost::property_tree::ptree& data) const; std::string parseInvoice(const Invoice::Ptr& object) const; diff --git a/include/tgbot/types/InlineQuery.h b/include/tgbot/types/InlineQuery.h index e50f6d6..ad04b8f 100644 --- a/include/tgbot/types/InlineQuery.h +++ b/include/tgbot/types/InlineQuery.h @@ -11,6 +11,7 @@ namespace TgBot { /** * @brief This object represents an incoming inline query. + * When the user sends an empty query, your bot could return some default or trending results. * * @ingroup types */ @@ -19,31 +20,37 @@ public: typedef std::shared_ptr<InlineQuery> Ptr; /** - * @brief Unique query identifier. + * @brief Unique identifier for this query */ std::string id; /** - * @brief Sender. + * @brief Sender */ User::Ptr from; /** - * @brief Optional. Sender location, only for bots that request user location + * @brief Text of the query (up to 256 characters) */ - Location::Ptr location; + std::string query; /** - * @brief Text of the query. + * @brief Offset of the results to be returned, can be controlled by the bot */ - std::string query; + std::string offset; /** - * @brief Offset of the results to be returned. + * @brief Optional. Type of the chat, from which the inline query was sent. + * Can be either “sender” for a private chat with the inline query sender, “private”, “group”, “supergroup”, or “channel”. + * The chat type should be always known for requests sent from official clients and most third-party clients, unless the request was sent from a secret chat */ - std::string offset; -}; + std::string chatType; + /** + * @brief Optional. Sender location, only for bots that request user location + */ + Location::Ptr location; +}; } #endif //TGBOT_INLINEQUERY_H diff --git a/include/tgbot/types/InputInvoiceMessageContent.h b/include/tgbot/types/InputInvoiceMessageContent.h new file mode 100644 index 0000000..36f9056 --- /dev/null +++ b/include/tgbot/types/InputInvoiceMessageContent.h @@ -0,0 +1,140 @@ +#ifndef TGBOT_INPUTINVOICEMESSAGECONTENT_H +#define TGBOT_INPUTINVOICEMESSAGECONTENT_H + +#include "tgbot/types/InputMessageContent.h" +#include "tgbot/types/LabeledPrice.h" + +#include <cstdint> +#include <memory> +#include <string> +#include <vector> + +namespace TgBot { + +/** + * @brief Represents the content of an invoice message to be sent as the result of an inline query. + * + * @ingroup types + */ +class InputInvoiceMessageContent : public InputMessageContent { +public: + static const std::string TYPE; + + typedef std::shared_ptr<InputInvoiceMessageContent> Ptr; + + InputInvoiceMessageContent() { + this->type = TYPE; + } + + /** + * @brief Product name, 1-32 characters + */ + std::string title; + + /** + * @brief Product description, 1-255 characters + */ + std::string description; + + /** + * @brief Bot-defined invoice payload, 1-128 bytes. + * This will not be displayed to the user, use for your internal processes. + */ + std::string payload; + + /** + * @brief Payment provider token, obtained via Botfather + */ + std::string providerToken; + + /** + * @brief Three-letter ISO 4217 currency code, see https://core.telegram.org/bots/payments#supported-currencies + */ + std::string currency; + + /** + * @brief Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.) + */ + std::vector<LabeledPrice::Ptr> prices; + + /** + * @brief Optional. The maximum accepted amount for tips in the smallest units of the currency (integer, not float/double). + * For example, for a maximum tip of US$ 1.45 pass max_tip_amount = 145. + * See the exp parameter in https://core.telegram.org/bots/payments/currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). + * Defaults to 0 + */ + std::int32_t maxTipAmount; + + /** + * @brief Optional. A JSON-serialized array of suggested amounts of tip in the smallest units of the currency (integer, not float/double). + * At most 4 suggested tip amounts can be specified. + * The suggested tip amounts must be positive, passed in a strictly increased order and must not exceed maxTipAmount. + */ + std::vector<std::int32_t> suggestedTipAmounts; + + /** + * @brief Optional. A JSON-serialized object for data about the invoice, which will be shared with the payment provider. + * A detailed description of the required fields should be provided by the payment provider. + */ + std::string providerData; + + /** + * @brief Optional. URL of the product photo for the invoice. + * Can be a photo of the goods or a marketing image for a service. + * People like it better when they see what they are paying for. + */ + std::string photoUrl; + + /** + * @brief Optional. Photo size + */ + std::int32_t photoSize; + + /** + * @brief Optional. Photo width + */ + std::int32_t photoWidth; + + /** + * @brief Optional. Photo height + */ + std::int32_t photoHeight; + + /** + * @brief Optional. Pass True, if you require the user's full name to complete the order + */ + bool needName; + + /** + * @brief Optional. Pass True, if you require the user's phone number to complete the order + */ + bool needPhoneNumber; + + /** + * @brief Optional. Pass True, if you require the user's email address to complete the order + */ + bool needEmail; + + /** + * @brief Optional. Pass True, if you require the user's shipping address to complete the order + */ + bool needShippingAddress; + + /** + * @brief Optional. Pass True, if user's phone number should be sent to provider + */ + bool sendPhoneNumberToProvider; + + /** + * @brief Optional. Pass True, if user's email address should be sent to provider + */ + bool sendEmailToProvider; + + /** + * @brief Optional. Pass True, if the final price depends on the shipping method + */ + bool isFlexible; +}; +} + +#endif //TGBOT_INPUTINVOICEMESSAGECONTENT_H diff --git a/include/tgbot/types/Message.h b/include/tgbot/types/Message.h index fc99873..dc65604 100644 --- a/include/tgbot/types/Message.h +++ b/include/tgbot/types/Message.h @@ -24,6 +24,7 @@ #include "tgbot/types/SuccessfulPayment.h" #include "tgbot/types/PassportData.h" #include "tgbot/types/ProximityAlertTriggered.h" +#include "tgbot/types/VoiceChatScheduled.h" #include "tgbot/types/VoiceChatStarted.h" #include "tgbot/types/VoiceChatEnded.h" #include "tgbot/types/VoiceChatParticipantsInvited.h" @@ -322,6 +323,11 @@ public: ProximityAlertTriggered::Ptr proximityAlertTriggered; /** + * @brief Optional. Service message: voice chat scheduled + */ + VoiceChatScheduled::Ptr voiceChatScheduled; + + /** * @brief Optional. Service message: voice chat started */ VoiceChatStarted::Ptr voiceChatStarted; diff --git a/include/tgbot/types/VoiceChatScheduled.h b/include/tgbot/types/VoiceChatScheduled.h new file mode 100644 index 0000000..8611d5f --- /dev/null +++ b/include/tgbot/types/VoiceChatScheduled.h @@ -0,0 +1,26 @@ +#ifndef TGBOT_CPP_VOICECHATSCHEDULED_H +#define TGBOT_CPP_VOICECHATSCHEDULED_H + +#include <cstdint> +#include <memory> + +namespace TgBot { + +/** + * @brief This object represents a service message about a voice chat scheduled in the chat. + * + * @ingroup types + */ +class VoiceChatScheduled { + +public: + typedef std::shared_ptr<VoiceChatScheduled> Ptr; + + /** + * @brief Point in time (Unix timestamp) when the voice chat is supposed to be started by a chat administrator + */ + std::int32_t startDate; +}; +} + +#endif //TGBOT_CPP_VOICECHATSCHEDULED_H |