summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorllnulldisk <48621230+llnulldisk@users.noreply.github.com>2022-08-30 20:06:06 +0200
committerllnulldisk <48621230+llnulldisk@users.noreply.github.com>2022-08-30 20:06:06 +0200
commite1651b15f37f194436fd4c8a30b9a6d5c9775232 (patch)
tree78a3193074de8fbc837af82dc12f67eca7fed500 /src
parent4aa6af3180aef70f9a4320a2f6d818f68f5bb669 (diff)
Update to API 4.8
Diffstat (limited to 'src')
-rw-r--r--src/Api.cpp30
-rw-r--r--src/TgTypeParser.cpp10
2 files changed, 33 insertions, 7 deletions
diff --git a/src/Api.cpp b/src/Api.cpp
index def9243..24ae56f 100644
--- a/src/Api.cpp
+++ b/src/Api.cpp
@@ -533,10 +533,11 @@ Message::Ptr Api::sendContact(std::int64_t chatId, const string& phoneNumber, co
Message::Ptr Api::sendPoll(std::int64_t chatId, const std::string& question, const std::vector<std::string>& options,
bool isAnonymous, const std::string& type, bool allowsMultipleAnswers,
- std::int32_t correctOptionId, bool isClosed, bool disableNotification,
- std::int32_t replyToMessageId, GenericReply::Ptr replyMarkup) const {
+ std::int32_t correctOptionId, const std::string& explanation, const std::string& explanationParseMode,
+ std::int32_t openPeriod, std::int64_t closeDate, bool isClosed,
+ bool disableNotification, std::int32_t replyToMessageId, GenericReply::Ptr replyMarkup) const {
vector<HttpReqArg> args;
- args.reserve(11);
+ args.reserve(15);
args.emplace_back("chat_id", chatId);
args.emplace_back("question", question);
@@ -555,6 +556,18 @@ Message::Ptr Api::sendPoll(std::int64_t chatId, const std::string& question, con
if (correctOptionId != 0) {
args.emplace_back("correct_option_id", correctOptionId);
}
+ if (!explanation.empty()) {
+ args.emplace_back("explanation", explanation);
+ }
+ if (!explanationParseMode.empty()) {
+ args.emplace_back("explanation_parse_mode", explanationParseMode);
+ }
+ if (openPeriod != 0) {
+ args.emplace_back("open_period", openPeriod);
+ }
+ if (closeDate != 0) {
+ args.emplace_back("close_date", closeDate);
+ }
if (isClosed) {
args.emplace_back("is_closed", isClosed);
}
@@ -574,18 +587,21 @@ Message::Ptr Api::sendPoll(std::int64_t chatId, const std::string& question, con
Message::Ptr Api::sendPoll(std::int64_t chatId, const std::string& question, const std::vector<std::string>& options,
bool disableNotification, std::int32_t replyToMessageId, GenericReply::Ptr replyMarkup) const {
- return sendPoll(chatId, question, options, true, "", false, 0, false, disableNotification, replyToMessageId, replyMarkup);
+ return sendPoll(chatId, question, options, true, "", false, 0, "", "", 0, 0, false, false, 0);
}
-Message::Ptr Api::sendDice(std::int64_t chatId, bool disableNotification, std::int32_t replyToMessageId,
- GenericReply::Ptr replyMarkup) const {
+Message::Ptr Api::sendDice(std::int64_t chatId, const std::string& emoji, bool disableNotification,
+ std::int32_t replyToMessageId, GenericReply::Ptr replyMarkup) const {
vector<HttpReqArg> args;
- args.reserve(4);
+ args.reserve(5);
args.emplace_back("chat_id", chatId);
if (disableNotification) {
args.emplace_back("disable_notification", disableNotification);
}
+ if (!emoji.empty()) {
+ args.emplace_back("emoji", emoji);
+ }
if (replyToMessageId != 0) {
args.emplace_back("reply_to_message_id", replyToMessageId);
}
diff --git a/src/TgTypeParser.cpp b/src/TgTypeParser.cpp
index 41cf642..d1d0ecb 100644
--- a/src/TgTypeParser.cpp
+++ b/src/TgTypeParser.cpp
@@ -430,6 +430,10 @@ Poll::Ptr TgTypeParser::parseJsonAndGetPoll(const ptree& data) const {
result->type = data.get<string>("type", "");
result->allowsMultipleAnswers = data.get<bool>("allows_multiple_answers", false);
result->correctOptionId = data.get<int32_t>("correct_option_id", 0);
+ result->explanation = data.get<string>("explanation", "");
+ result->explanationEntities = parseJsonAndGetArray<MessageEntity>(&TgTypeParser::parseJsonAndGetMessageEntity, data, "explanation_entities");
+ result->openPeriod = data.get<int32_t>("open_period", 0);
+ result->closeDate = data.get<int64_t>("close_date", 0);
return result;
}
@@ -448,6 +452,10 @@ string TgTypeParser::parsePoll(const Poll::Ptr& object) const {
appendToJson(result, "type", object->type);
appendToJson(result, "allows_multiple_answers", object->allowsMultipleAnswers);
appendToJson(result, "correct_option_id", object->correctOptionId);
+ appendToJson(result, "explanation", object->correctOptionId);
+ appendToJson(result, "explanation_entities", parseArray(&TgTypeParser::parseMessageEntity, object->explanationEntities));
+ appendToJson(result, "open_period", object->openPeriod);
+ appendToJson(result, "close_date", object->closeDate);
removeLastComma(result);
result += '}';
return result;
@@ -455,6 +463,7 @@ string TgTypeParser::parsePoll(const Poll::Ptr& object) const {
Dice::Ptr TgTypeParser::parseJsonAndGetDice(const ptree& data) const {
auto result(make_shared<Dice>());
+ result->emoji = data.get<string>("emoji", "");
result->value = data.get<int8_t>("value", 0);
return result;
}
@@ -465,6 +474,7 @@ string TgTypeParser::parseDice(const Dice::Ptr& object) const {
}
string result;
result += '{';
+ appendToJson(result, "emoji", object->emoji);
appendToJson(result, "value", object->value);
removeLastComma(result);
result += '}';