summaryrefslogtreecommitdiff
path: root/include/tgbot
diff options
context:
space:
mode:
authorAndrea Giove <andreagiove@outlook.com>2016-04-17 22:09:52 +0200
committerAndrea Giove <andreagiove@outlook.com>2016-04-17 22:09:52 +0200
commit9ba69d7e87c9b8ff9997294b68550852ef0274b8 (patch)
tree901f2ddc98f63cb96163277a4bc55eb5812f9186 /include/tgbot
parentd134bf795a293a641655630bdd8ad44b5b70c1ae (diff)
Added new type: Venue, MessageEntity
Update Message type Added new method: sendVenue, sendContact, kickChatMember, unbanChatMember
Diffstat (limited to 'include/tgbot')
-rw-r--r--include/tgbot/Api.h45
-rw-r--r--include/tgbot/types/Message.h47
-rw-r--r--include/tgbot/types/MessageEntity.h43
-rw-r--r--include/tgbot/types/Venue.h45
-rw-r--r--include/tgbot/types/Voice.h43
5 files changed, 214 insertions, 9 deletions
diff --git a/include/tgbot/Api.h b/include/tgbot/Api.h
index d7cfc0e..b6be878 100644
--- a/include/tgbot/Api.h
+++ b/include/tgbot/Api.h
@@ -36,6 +36,7 @@
#include "tgbot/types/UserProfilePhotos.h"
#include "tgbot/types/Update.h"
#include "tgbot/types/InlineQueryResult.h"
+#include "tgbot/types/Venue.h"
namespace TgBot {
@@ -251,6 +252,36 @@ public:
const GenericReply::Ptr& replyMarkup = GenericReply::Ptr(), bool disableNotification = false) const;
/**
+ * Use this method to send information about a venue. On success, the sent Message is returned.
+ * @param chatId Unique identifier for the target chat.
+ * @param latitude Latitude of location.
+ * @param longitude Longitude of location.
+ * @param title Name of the venue.
+ * @param address Address of the venue.
+ * @param foursquare_id Foursquare identifier of the venue.
+ * @param replyToMessageId Optional. If the message is a reply, ID of the original message.
+ * @param replyMarkup Optional. Additional interface options. A object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user.
+ * @param disableNotification Optional. Sends the message silenty.
+ * @return On success, the sent message is returned.
+ */
+ Message::Ptr sendVenue(int64_t chatId, float latitude, float longitude, std::string title, std::string address, std::string foursquareId = "",
+ bool disableNotification = false, int32_t replyToMessageId = 0, const GenericReply::Ptr& replyMarkup = GenericReply::Ptr()) const;
+
+ /**
+ * Use this method to send phone contacts. On success, the sent Message is returned.
+ * @param chatId Unique identifier for the target chat.
+ * @param phoneNumber Contact's phone number.
+ * @param firstName Contact's first name.
+ * @param lastName Contact's last name.
+ * @param disableNotification Optional. Sends the message silenty.
+ * @param replyToMessageId Optional. If the message is a reply, ID of the original message.
+ * @param replyMarkup Optional. Additional interface options. A object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user.
+ * @return On success, the sent message is returned.
+ */
+ Message::Ptr sendContact(int64_t chatId, std::string phoneNumber, std::string firstName, std::string lastName = "", bool disableNotification = false,
+ int32_t replyToMessageId = 0, const GenericReply::Ptr& replyMarkup = GenericReply::Ptr()) const;
+
+ /**
* 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.
* We only recommend using this method when a response from the bot will take a noticeable amount of time to arrive.
@@ -301,6 +332,20 @@ public:
void answerInlineQuery(const std::string& inlineQueryId, const std::vector<InlineQueryResult::Ptr>& results,
int32_t cacheTime=300, bool isPersonal=false, const std::string& nextOffset="") const;
+ /**
+ * Use this method to kick a user from a group or a supergroup.
+ * @param chatId Unique identifier for the target group.
+ * @param userId Unique identifier of the target user.
+ */
+ void kickChatMember(int64_t chatId, int32_t userId) const;
+
+ /**
+ * Use this method to unban a previously kicked user in a supergroup.
+ * @param chatId Unique identifier for the target group.
+ * @param userId Unique identifier of the target user.
+ */
+ void unbanChatMember(int64_t chatId, int32_t userId) const;
+
private:
boost::property_tree::ptree sendRequest(const std::string& method, const std::vector<HttpReqArg>& args = std::vector<HttpReqArg>()) const;
diff --git a/include/tgbot/types/Message.h b/include/tgbot/types/Message.h
index ea53cf3..be1d313 100644
--- a/include/tgbot/types/Message.h
+++ b/include/tgbot/types/Message.h
@@ -37,6 +37,9 @@
#include "tgbot/types/Contact.h"
#include "tgbot/types/Location.h"
#include "tgbot/types/PhotoSize.h"
+#include "tgbot/types/MessageEntity.h"
+#include "tgbot/types/Venue.h"
+#include "tgbot/types/Voice.h"
namespace TgBot {
@@ -45,10 +48,18 @@ namespace TgBot {
* @ingroup types
*/
class Message {
-
public:
typedef std::shared_ptr<Message> Ptr;
+ Message(){
+ deleteChatPhoto = false;
+ groupChatCreated = false;
+ supergroupChatCreated = false;
+ channelChatCreated = false;
+ migrateToChatId = 0;
+ migrateFromChatId = 0;
+ }
+
/**
* Unique message identifier.
*/
@@ -90,6 +101,11 @@ public:
std::string text;
/**
+ * Optional. For text messages, special entities like usernames, URLs, bot commands, etc. that appear in the text.
+ */
+ std::vector<MessageEntity::Ptr> entities;
+
+ /**
* Optional. Message is an audio file, information about the file.
*/
Audio::Ptr audio;
@@ -114,7 +130,15 @@ public:
*/
Video::Ptr video;
- // TODO voice
+ /**
+ * Optional. Message is a voice message, information about the file.
+ */
+ Voice::Ptr voice;
+
+ /**
+ * Optional. Caption for the document, photo or video, 0-200 characters.
+ */
+ std::string caption;
/**
* Optional. Message is a shared contact, information about the contact.
@@ -127,14 +151,19 @@ public:
Location::Ptr location;
/**
+ * Optional. Message is a venue, information about the venue.
+ */
+ Venue::Ptr venue;
+
+ /**
* Optional. A new member was added to the group, information about them (this member may be bot itself).
*/
- User::Ptr newChatParticipant;
+ User::Ptr newChatMember;
/**
* Optional. A member was removed from the group, information about them (this member may be bot itself).
*/
- User::Ptr leftChatParticipant;
+ User::Ptr leftChatMember;
/**
* Optional. A group title was changed to this value.
@@ -157,11 +186,6 @@ public:
bool groupChatCreated;
/**
- * Optional. Text description of the photo or the video.
- */
- std::string caption;
-
- /**
* Optional. Service message: the supergroup has been created.
*/
bool supergroupChatCreated;
@@ -181,6 +205,11 @@ public:
*/
int64_t migrateFromChatId;
+ /**
+ * Optional. Specified message was pinned. Note that the Message object in this field will not contain further reply_to_message fields even if it is itself a reply.
+ */
+ Message::Ptr pinnedMessage;
+
};
}
diff --git a/include/tgbot/types/MessageEntity.h b/include/tgbot/types/MessageEntity.h
new file mode 100644
index 0000000..befcb3e
--- /dev/null
+++ b/include/tgbot/types/MessageEntity.h
@@ -0,0 +1,43 @@
+//
+// Created by Andrea Giove on 17/04/16.
+//
+
+#ifndef TGBOT_MESSAGEENTITY_H
+#define TGBOT_MESSAGEENTITY_H
+
+#include <memory>
+#include <string>
+
+namespace TgBot {
+
+/**
+ * This object represents one special entity in a text message. For example, hashtags, usernames, URLs, etc.
+ * @ingroup types
+ */
+class MessageEntity {
+public:
+ std::shared_ptr<MessageEntity> Ptr;
+
+ /**
+ * Type of the entity. One of mention (@username), hashtag, bot_command, url, email, bold (bold text), italic (italic text), code (monowidth string), pre (monowidth block), text_link (for clickable text URLs).
+ */
+ std::string type;
+
+ /**
+ * Offset in UTF-16 code units to the start of the entity.
+ */
+ int32_t offset;
+
+ /**
+ * Length of the entity in UTF-16 code units
+ */
+ int32_t length;
+
+ /**
+ * Optional. For “text_link” only, url that will be opened after user taps on the text
+ */
+ std::string url;
+};
+}
+
+#endif //TGBOT_MESSAGEENTITY_H
diff --git a/include/tgbot/types/Venue.h b/include/tgbot/types/Venue.h
new file mode 100644
index 0000000..5040cce
--- /dev/null
+++ b/include/tgbot/types/Venue.h
@@ -0,0 +1,45 @@
+//
+// Created by Andrea Giove on 17/04/16.
+//
+
+#ifndef TGBOT_VENUE_H
+#define TGBOT_VENUE_H
+
+#include <memory>
+#include <string>
+
+#include "tgbot/types/Location.h"
+
+namespace TgBot {
+
+/**
+ * This object represents a venue.
+ * @ingroup types
+ */
+class Venue {
+public:
+ typedef std::shared_ptr<Venue> Ptr;
+
+ /**
+ * Venue location.
+ */
+ Location::Ptr location;
+
+ /**
+ * Name of the venue.
+ */
+ std::string title;
+
+ /**
+ * Address of the venue.
+ */
+ std::string address;
+
+ /**
+ * Optional. Foursquare identifier of the venue.
+ */
+ std::string foursquare_id;
+};
+}
+
+#endif //TGBOT_VENUE_H
diff --git a/include/tgbot/types/Voice.h b/include/tgbot/types/Voice.h
new file mode 100644
index 0000000..385257d
--- /dev/null
+++ b/include/tgbot/types/Voice.h
@@ -0,0 +1,43 @@
+//
+// Created by Andrea Giove on 17/04/16.
+//
+
+#ifndef TGBOT_VOICE_H
+#define TGBOT_VOICE_H
+
+#include <memory>
+#include <string>
+
+namespace TgBot {
+
+/**
+ * This object represents a voice note.
+ * @ingroup types
+ */
+class Voice {
+public:
+ std::shared_ptr<Voice> Ptr;
+
+ /**
+ * Unique identifier for this file.
+ */
+ std::string file_id;
+
+ /**
+ * Duration of the audio in seconds as defined by sender.
+ */
+ int32_t duration;
+
+ /**
+ * Optional. MIME type of the file as defined by sender;
+ */
+ std::string mime_type;
+
+ /**
+ * Optional. File size.
+ */
+ int32_t file_size;
+};
+}
+
+#endif //TGBOT_VOICE_H