summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/tgbot/Api.h29
-rw-r--r--include/tgbot/TgTypeParser.h8
-rw-r--r--include/tgbot/types/InlineQuery.h25
-rw-r--r--include/tgbot/types/InputInvoiceMessageContent.h140
-rw-r--r--include/tgbot/types/Message.h6
-rw-r--r--include/tgbot/types/VoiceChatScheduled.h26
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