mirror of
https://github.com/tdlight-team/tdlight-telegram-bot-api.git
synced 2025-02-17 06:26:48 +01:00
Merge version 7.1
This commit is contained in:
commit
345fe067e4
@ -6,7 +6,7 @@ if (POLICY CMP0065)
|
|||||||
cmake_policy(SET CMP0065 NEW)
|
cmake_policy(SET CMP0065 NEW)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
project(TelegramBotApi VERSION 7.0 LANGUAGES CXX)
|
project(TelegramBotApi VERSION 7.1 LANGUAGES CXX)
|
||||||
|
|
||||||
if (POLICY CMP0069)
|
if (POLICY CMP0069)
|
||||||
option(TELEGRAM_BOT_API_ENABLE_LTO "Use \"ON\" to enable Link Time Optimization.")
|
option(TELEGRAM_BOT_API_ENABLE_LTO "Use \"ON\" to enable Link Time Optimization.")
|
||||||
|
2
td
2
td
@ -1 +1 @@
|
|||||||
Subproject commit 27c3eaeb4964bd5f18d8488e354abde1a4383e49
|
Subproject commit d93a99e3351db82573d765ce4f5e84714c277518
|
@ -264,6 +264,10 @@ paths:
|
|||||||
last_name:
|
last_name:
|
||||||
description: The last name of the user; 0-64 characters.
|
description: The last name of the user; 0-64 characters.
|
||||||
type: string
|
type: string
|
||||||
|
disable_notification:
|
||||||
|
description: Disables "user joined Telegram" notification for other users that have the contact in their contact list.
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- first_name
|
- first_name
|
||||||
multipart/form-data:
|
multipart/form-data:
|
||||||
@ -276,6 +280,10 @@ paths:
|
|||||||
last_name:
|
last_name:
|
||||||
description: The last name of the user; 0-64 characters.
|
description: The last name of the user; 0-64 characters.
|
||||||
type: string
|
type: string
|
||||||
|
disable_notification:
|
||||||
|
description: Disables "user joined Telegram" notification for other users that have the contact in their contact list.
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- first_name
|
- first_name
|
||||||
application/json:
|
application/json:
|
||||||
@ -288,6 +296,10 @@ paths:
|
|||||||
last_name:
|
last_name:
|
||||||
description: The last name of the user; 0-64 characters.
|
description: The last name of the user; 0-64 characters.
|
||||||
type: string
|
type: string
|
||||||
|
disable_notification:
|
||||||
|
description: Disables "user joined Telegram" notification for other users that have the contact in their contact list.
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- first_name
|
- first_name
|
||||||
required: true
|
required: true
|
||||||
|
@ -929,6 +929,14 @@ class Client::JsonChat final : public td::Jsonable {
|
|||||||
LOG(ERROR) << "Not found chat sticker set " << supergroup_info->sticker_set_id;
|
LOG(ERROR) << "Not found chat sticker set " << supergroup_info->sticker_set_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (supergroup_info->custom_emoji_sticker_set_id != 0) {
|
||||||
|
auto sticker_set_name = client_->get_sticker_set_name(supergroup_info->custom_emoji_sticker_set_id);
|
||||||
|
if (!sticker_set_name.empty()) {
|
||||||
|
object("custom_emoji_sticker_set_name", sticker_set_name);
|
||||||
|
} else {
|
||||||
|
LOG(ERROR) << "Not found chat custom emoji sticker set " << supergroup_info->custom_emoji_sticker_set_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (supergroup_info->can_set_sticker_set) {
|
if (supergroup_info->can_set_sticker_set) {
|
||||||
object("can_set_sticker_set", td::JsonTrue());
|
object("can_set_sticker_set", td::JsonTrue());
|
||||||
}
|
}
|
||||||
@ -953,6 +961,9 @@ class Client::JsonChat final : public td::Jsonable {
|
|||||||
if (supergroup_info->slow_mode_delay != 0) {
|
if (supergroup_info->slow_mode_delay != 0) {
|
||||||
object("slow_mode_delay", supergroup_info->slow_mode_delay);
|
object("slow_mode_delay", supergroup_info->slow_mode_delay);
|
||||||
}
|
}
|
||||||
|
if (supergroup_info->unrestrict_boost_count != 0) {
|
||||||
|
object("unrestrict_boost_count", supergroup_info->unrestrict_boost_count);
|
||||||
|
}
|
||||||
if (supergroup_info->linked_chat_id != 0) {
|
if (supergroup_info->linked_chat_id != 0) {
|
||||||
object("linked_chat_id", supergroup_info->linked_chat_id);
|
object("linked_chat_id", supergroup_info->linked_chat_id);
|
||||||
}
|
}
|
||||||
@ -1703,6 +1714,23 @@ class Client::JsonPollAnswer final : public td::Jsonable {
|
|||||||
const Client *client_;
|
const Client *client_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Client::JsonStory final : public td::Jsonable {
|
||||||
|
public:
|
||||||
|
JsonStory(int64 chat_id, int32 story_id, const Client *client)
|
||||||
|
: chat_id_(chat_id), story_id_(story_id), client_(client) {
|
||||||
|
}
|
||||||
|
void store(td::JsonValueScope *scope) const {
|
||||||
|
auto object = scope->enter_object();
|
||||||
|
object("chat", JsonChat(chat_id_, client_));
|
||||||
|
object("id", story_id_);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
int64 chat_id_;
|
||||||
|
int32 story_id_;
|
||||||
|
const Client *client_;
|
||||||
|
};
|
||||||
|
|
||||||
class Client::JsonForumTopicCreated final : public td::Jsonable {
|
class Client::JsonForumTopicCreated final : public td::Jsonable {
|
||||||
public:
|
public:
|
||||||
explicit JsonForumTopicCreated(const td_api::messageForumTopicCreated *forum_topic_created)
|
explicit JsonForumTopicCreated(const td_api::messageForumTopicCreated *forum_topic_created)
|
||||||
@ -2193,6 +2221,19 @@ class Client::JsonGiveawayCompleted final : public td::Jsonable {
|
|||||||
const Client *client_;
|
const Client *client_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Client::JsonChatBoostAdded final : public td::Jsonable {
|
||||||
|
public:
|
||||||
|
JsonChatBoostAdded(const td_api::messageChatBoost *chat_boost) : chat_boost_(chat_boost) {
|
||||||
|
}
|
||||||
|
void store(td::JsonValueScope *scope) const {
|
||||||
|
auto object = scope->enter_object();
|
||||||
|
object("boost_count", chat_boost_->boost_count_);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
const td_api::messageChatBoost *chat_boost_;
|
||||||
|
};
|
||||||
|
|
||||||
class Client::JsonWebAppInfo final : public td::Jsonable {
|
class Client::JsonWebAppInfo final : public td::Jsonable {
|
||||||
public:
|
public:
|
||||||
explicit JsonWebAppInfo(const td::string &url) : url_(url) {
|
explicit JsonWebAppInfo(const td::string &url) : url_(url) {
|
||||||
@ -2488,6 +2529,9 @@ void Client::JsonMessage::store(td::JsonValueScope *scope) const {
|
|||||||
if (!message_->author_signature.empty()) {
|
if (!message_->author_signature.empty()) {
|
||||||
object("author_signature", message_->author_signature);
|
object("author_signature", message_->author_signature);
|
||||||
}
|
}
|
||||||
|
if (message_->sender_boost_count != 0) {
|
||||||
|
object("sender_boost_count", message_->sender_boost_count);
|
||||||
|
}
|
||||||
if (message_->sender_chat_id != 0) {
|
if (message_->sender_chat_id != 0) {
|
||||||
object("sender_chat", JsonChat(message_->sender_chat_id, client_));
|
object("sender_chat", JsonChat(message_->sender_chat_id, client_));
|
||||||
}
|
}
|
||||||
@ -2572,6 +2616,10 @@ void Client::JsonMessage::store(td::JsonValueScope *scope) const {
|
|||||||
if (message_->reply_to_message != nullptr && message_->reply_to_message->quote_ != nullptr) {
|
if (message_->reply_to_message != nullptr && message_->reply_to_message->quote_ != nullptr) {
|
||||||
object("quote", JsonTextQuote(message_->reply_to_message->quote_.get(), client_));
|
object("quote", JsonTextQuote(message_->reply_to_message->quote_.get(), client_));
|
||||||
}
|
}
|
||||||
|
if (message_->reply_to_story != nullptr) {
|
||||||
|
object("reply_to_story",
|
||||||
|
JsonStory(message_->reply_to_story->story_sender_chat_id_, message_->reply_to_story->story_id_, client_));
|
||||||
|
}
|
||||||
if (message_->media_album_id != 0) {
|
if (message_->media_album_id != 0) {
|
||||||
object("media_group_id", td::to_string(message_->media_album_id));
|
object("media_group_id", td::to_string(message_->media_album_id));
|
||||||
}
|
}
|
||||||
@ -2822,6 +2870,10 @@ void Client::JsonMessage::store(td::JsonValueScope *scope) const {
|
|||||||
break;
|
break;
|
||||||
case td_api::messageExpiredVideo::ID:
|
case td_api::messageExpiredVideo::ID:
|
||||||
break;
|
break;
|
||||||
|
case td_api::messageExpiredVideoNote::ID:
|
||||||
|
break;
|
||||||
|
case td_api::messageExpiredVoiceNote::ID:
|
||||||
|
break;
|
||||||
case td_api::messageCustomServiceAction::ID:
|
case td_api::messageCustomServiceAction::ID:
|
||||||
break;
|
break;
|
||||||
case td_api::messageChatSetTheme::ID:
|
case td_api::messageChatSetTheme::ID:
|
||||||
@ -2903,9 +2955,11 @@ void Client::JsonMessage::store(td::JsonValueScope *scope) const {
|
|||||||
object("chat_shared", JsonChatShared(content));
|
object("chat_shared", JsonChatShared(content));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case td_api::messageStory::ID:
|
case td_api::messageStory::ID: {
|
||||||
object("story", JsonEmptyObject());
|
auto content = static_cast<const td_api::messageStory *>(message_->content.get());
|
||||||
|
object("story", JsonStory(content->story_sender_chat_id_, content->story_id_, client_));
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case td_api::messageChatSetBackground::ID:
|
case td_api::messageChatSetBackground::ID:
|
||||||
break;
|
break;
|
||||||
case td_api::messagePremiumGiftCode::ID:
|
case td_api::messagePremiumGiftCode::ID:
|
||||||
@ -2928,6 +2982,11 @@ void Client::JsonMessage::store(td::JsonValueScope *scope) const {
|
|||||||
object("giveaway_completed", JsonGiveawayCompleted(content, message_->chat_id, client_));
|
object("giveaway_completed", JsonGiveawayCompleted(content, message_->chat_id, client_));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case td_api::messageChatBoost::ID: {
|
||||||
|
auto content = static_cast<const td_api::messageChatBoost *>(message_->content.get());
|
||||||
|
object("boost_added", JsonChatBoostAdded(content));
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
}
|
}
|
||||||
@ -4807,6 +4866,36 @@ class Client::TdOnGetStickerSetCallback final : public TdQueryCallback {
|
|||||||
int64 new_message_chat_id_;
|
int64 new_message_chat_id_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Client::TdOnGetChatCustomEmojiStickerSetCallback final : public TdQueryCallback {
|
||||||
|
public:
|
||||||
|
TdOnGetChatCustomEmojiStickerSetCallback(Client *client, int64 chat_id, int64 pinned_message_id,
|
||||||
|
PromisedQueryPtr query)
|
||||||
|
: client_(client), chat_id_(chat_id), pinned_message_id_(pinned_message_id), query_(std::move(query)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void on_result(object_ptr<td_api::Object> result) final {
|
||||||
|
auto chat_info = client_->get_chat(chat_id_);
|
||||||
|
CHECK(chat_info != nullptr);
|
||||||
|
CHECK(chat_info->type == ChatInfo::Type::Supergroup);
|
||||||
|
auto supergroup_info = client_->add_supergroup_info(chat_info->supergroup_id);
|
||||||
|
if (result->get_id() == td_api::error::ID) {
|
||||||
|
supergroup_info->custom_emoji_sticker_set_id = 0;
|
||||||
|
} else {
|
||||||
|
CHECK(result->get_id() == td_api::stickerSet::ID);
|
||||||
|
auto sticker_set = move_object_as<td_api::stickerSet>(result);
|
||||||
|
client_->on_get_sticker_set_name(sticker_set->id_, sticker_set->name_);
|
||||||
|
}
|
||||||
|
|
||||||
|
answer_query(JsonChat(chat_id_, client_, true, pinned_message_id_), std::move(query_));
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Client *client_;
|
||||||
|
int64 chat_id_;
|
||||||
|
int64 pinned_message_id_;
|
||||||
|
PromisedQueryPtr query_;
|
||||||
|
};
|
||||||
|
|
||||||
class Client::TdOnGetChatStickerSetCallback final : public TdQueryCallback {
|
class Client::TdOnGetChatStickerSetCallback final : public TdQueryCallback {
|
||||||
public:
|
public:
|
||||||
TdOnGetChatStickerSetCallback(Client *client, int64 chat_id, int64 pinned_message_id, PromisedQueryPtr query)
|
TdOnGetChatStickerSetCallback(Client *client, int64 chat_id, int64 pinned_message_id, PromisedQueryPtr query)
|
||||||
@ -4814,17 +4903,25 @@ class Client::TdOnGetChatStickerSetCallback final : public TdQueryCallback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_result(object_ptr<td_api::Object> result) final {
|
void on_result(object_ptr<td_api::Object> result) final {
|
||||||
|
auto chat_info = client_->get_chat(chat_id_);
|
||||||
|
CHECK(chat_info != nullptr);
|
||||||
|
CHECK(chat_info->type == ChatInfo::Type::Supergroup);
|
||||||
|
auto supergroup_info = client_->add_supergroup_info(chat_info->supergroup_id);
|
||||||
if (result->get_id() == td_api::error::ID) {
|
if (result->get_id() == td_api::error::ID) {
|
||||||
auto chat_info = client_->get_chat(chat_id_);
|
supergroup_info->sticker_set_id = 0;
|
||||||
CHECK(chat_info != nullptr);
|
|
||||||
CHECK(chat_info->type == ChatInfo::Type::Supergroup);
|
|
||||||
client_->add_supergroup_info(chat_info->supergroup_id)->sticker_set_id = 0;
|
|
||||||
} else {
|
} else {
|
||||||
CHECK(result->get_id() == td_api::stickerSet::ID);
|
CHECK(result->get_id() == td_api::stickerSet::ID);
|
||||||
auto sticker_set = move_object_as<td_api::stickerSet>(result);
|
auto sticker_set = move_object_as<td_api::stickerSet>(result);
|
||||||
client_->on_get_sticker_set_name(sticker_set->id_, sticker_set->name_);
|
client_->on_get_sticker_set_name(sticker_set->id_, sticker_set->name_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto sticker_set_id = supergroup_info->custom_emoji_sticker_set_id;
|
||||||
|
if (sticker_set_id != 0 && client_->get_sticker_set_name(sticker_set_id).empty()) {
|
||||||
|
return client_->send_request(make_object<td_api::getStickerSet>(sticker_set_id),
|
||||||
|
td::make_unique<TdOnGetChatCustomEmojiStickerSetCallback>(
|
||||||
|
client_, chat_id_, pinned_message_id_, std::move(query_)));
|
||||||
|
}
|
||||||
|
|
||||||
answer_query(JsonChat(chat_id_, client_, true, pinned_message_id_), std::move(query_));
|
answer_query(JsonChat(chat_id_, client_, true, pinned_message_id_), std::move(query_));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4870,6 +4967,13 @@ class Client::TdOnGetChatPinnedMessageCallback final : public TdQueryCallback {
|
|||||||
make_object<td_api::getStickerSet>(sticker_set_id),
|
make_object<td_api::getStickerSet>(sticker_set_id),
|
||||||
td::make_unique<TdOnGetChatStickerSetCallback>(client_, chat_id_, pinned_message_id, std::move(query_)));
|
td::make_unique<TdOnGetChatStickerSetCallback>(client_, chat_id_, pinned_message_id, std::move(query_)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sticker_set_id = supergroup_info->custom_emoji_sticker_set_id;
|
||||||
|
if (sticker_set_id != 0 && client_->get_sticker_set_name(sticker_set_id).empty()) {
|
||||||
|
return client_->send_request(make_object<td_api::getStickerSet>(sticker_set_id),
|
||||||
|
td::make_unique<TdOnGetChatCustomEmojiStickerSetCallback>(
|
||||||
|
client_, chat_id_, pinned_message_id, std::move(query_)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
answer_query(JsonChat(chat_id_, client_, true, pinned_message_id), std::move(query_));
|
answer_query(JsonChat(chat_id_, client_, true, pinned_message_id), std::move(query_));
|
||||||
@ -5703,6 +5807,7 @@ ServerBotInfo Client::get_bot_info() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Client::start_up() {
|
void Client::start_up() {
|
||||||
|
CHECK(start_time_ < 1e-10);
|
||||||
start_time_ = td::Time::now();
|
start_time_ = td::Time::now();
|
||||||
next_bot_updates_warning_time_ = start_time_ + 600;
|
next_bot_updates_warning_time_ = start_time_ + 600;
|
||||||
webhook_set_time_ = start_time_;
|
webhook_set_time_ = start_time_;
|
||||||
@ -6435,39 +6540,6 @@ void Client::on_update_authorization_state() {
|
|||||||
CHECK(authorization_state_ != nullptr);
|
CHECK(authorization_state_ != nullptr);
|
||||||
switch (authorization_state_->get_id()) {
|
switch (authorization_state_->get_id()) {
|
||||||
case td_api::authorizationStateWaitTdlibParameters::ID: {
|
case td_api::authorizationStateWaitTdlibParameters::ID: {
|
||||||
send_request(
|
|
||||||
make_object<td_api::setOption>("ignore_inline_thumbnails", make_object<td_api::optionValueBoolean>(true)),
|
|
||||||
td::make_unique<TdOnOkCallback>());
|
|
||||||
send_request(make_object<td_api::setOption>("reuse_uploaded_photos_by_hash",
|
|
||||||
make_object<td_api::optionValueBoolean>(true)),
|
|
||||||
td::make_unique<TdOnOkCallback>());
|
|
||||||
send_request(
|
|
||||||
make_object<td_api::setOption>("disable_network_statistics", make_object<td_api::optionValueBoolean>(true)),
|
|
||||||
td::make_unique<TdOnOkCallback>());
|
|
||||||
send_request(make_object<td_api::setOption>("disable_time_adjustment_protection",
|
|
||||||
make_object<td_api::optionValueBoolean>(true)),
|
|
||||||
td::make_unique<TdOnOkCallback>());
|
|
||||||
send_request(
|
|
||||||
make_object<td_api::setOption>("disable_minithumbnails", make_object<td_api::optionValueBoolean>(true)),
|
|
||||||
td::make_unique<TdOnOkCallback>());
|
|
||||||
send_request(
|
|
||||||
make_object<td_api::setOption>("disable_document_filenames", make_object<td_api::optionValueBoolean>(true)),
|
|
||||||
td::make_unique<TdOnOkCallback>());
|
|
||||||
send_request(
|
|
||||||
make_object<td_api::setOption>("disable_notifications", make_object<td_api::optionValueBoolean>(true)),
|
|
||||||
td::make_unique<TdOnOkCallback>());
|
|
||||||
send_request(make_object<td_api::setOption>("ignore_update_chat_last_message",
|
|
||||||
make_object<td_api::optionValueBoolean>(true)),
|
|
||||||
td::make_unique<TdOnOkCallback>());
|
|
||||||
send_request(make_object<td_api::setOption>("ignore_update_chat_read_inbox",
|
|
||||||
make_object<td_api::optionValueBoolean>(true)),
|
|
||||||
td::make_unique<TdOnOkCallback>());
|
|
||||||
send_request(make_object<td_api::setOption>("ignore_update_user_chat_action",
|
|
||||||
make_object<td_api::optionValueBoolean>(true)),
|
|
||||||
td::make_unique<TdOnOkCallback>());
|
|
||||||
send_request(make_object<td_api::setOption>("ignore_server_deletes_and_reads",
|
|
||||||
make_object<td_api::optionValueBoolean>(true)),
|
|
||||||
td::make_unique<TdOnOkCallback>());
|
|
||||||
send_request(make_object<td_api::setOption>("delete_chat_reference_after_seconds",
|
send_request(make_object<td_api::setOption>("delete_chat_reference_after_seconds",
|
||||||
make_object<td_api::optionValueInteger>(3600)),
|
make_object<td_api::optionValueInteger>(3600)),
|
||||||
td::make_unique<TdOnOkCallback>());
|
td::make_unique<TdOnOkCallback>());
|
||||||
@ -6479,6 +6551,15 @@ void Client::on_update_authorization_state() {
|
|||||||
parameters_->file_expiration_timeout_seconds_)),
|
parameters_->file_expiration_timeout_seconds_)),
|
||||||
td::make_unique<TdOnOkCallback>());
|
td::make_unique<TdOnOkCallback>());
|
||||||
|
|
||||||
|
for (td::string option : {"disable_network_statistics", "disable_time_adjustment_protection", "ignore_file_names",
|
||||||
|
"disable_minithumbnails", "disable_document_filenames", "disable_notifications",
|
||||||
|
"ignore_update_chat_last_message", "ignore_update_chat_read_inbox",
|
||||||
|
"ignore_update_user_chat_action", "ignore_server_deletes_and_reads",
|
||||||
|
"ignore_inline_thumbnails", "reuse_uploaded_photos_by_hash", "use_storage_optimizer"}) {
|
||||||
|
send_request(make_object<td_api::setOption>(option, make_object<td_api::optionValueBoolean>(true)),
|
||||||
|
td::make_unique<TdOnOkCallback>());
|
||||||
|
}
|
||||||
|
|
||||||
auto request = make_object<td_api::setTdlibParameters>();
|
auto request = make_object<td_api::setTdlibParameters>();
|
||||||
request->use_test_dc_ = is_test_dc_;
|
request->use_test_dc_ = is_test_dc_;
|
||||||
request->database_directory_ = dir_;
|
request->database_directory_ = dir_;
|
||||||
@ -6491,8 +6572,6 @@ void Client::on_update_authorization_state() {
|
|||||||
request->system_language_code_ = "en";
|
request->system_language_code_ = "en";
|
||||||
request->device_model_ = "server";
|
request->device_model_ = "server";
|
||||||
request->application_version_ = parameters_->version_;
|
request->application_version_ = parameters_->version_;
|
||||||
request->enable_storage_optimizer_ = true;
|
|
||||||
request->ignore_file_names_ = true;
|
|
||||||
|
|
||||||
return send_request(std::move(request), td::make_unique<TdOnInitCallback>(this));
|
return send_request(std::move(request), td::make_unique<TdOnInitCallback>(this));
|
||||||
}
|
}
|
||||||
@ -6811,7 +6890,8 @@ void Client::on_update(object_ptr<td_api::Object> result) {
|
|||||||
auto group_info = add_group_info(group_id);
|
auto group_info = add_group_info(group_id);
|
||||||
group_info->photo = std::move(full_info->photo_);
|
group_info->photo = std::move(full_info->photo_);
|
||||||
group_info->description = std::move(full_info->description_);
|
group_info->description = std::move(full_info->description_);
|
||||||
group_info->invite_link = full_info->invite_link_ != nullptr ? std::move(full_info->invite_link_->invite_link_) : td::string();
|
group_info->invite_link = std::move(
|
||||||
|
full_info->invite_link_ != nullptr ? std::move(full_info->invite_link_->invite_link_) : td::string());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case td_api::updateSupergroup::ID: {
|
case td_api::updateSupergroup::ID: {
|
||||||
@ -6827,11 +6907,14 @@ void Client::on_update(object_ptr<td_api::Object> result) {
|
|||||||
auto supergroup_info = add_supergroup_info(supergroup_id);
|
auto supergroup_info = add_supergroup_info(supergroup_id);
|
||||||
supergroup_info->photo = std::move(full_info->photo_);
|
supergroup_info->photo = std::move(full_info->photo_);
|
||||||
supergroup_info->description = std::move(full_info->description_);
|
supergroup_info->description = std::move(full_info->description_);
|
||||||
supergroup_info->invite_link = full_info->invite_link_ != nullptr ? std::move(full_info->invite_link_->invite_link_) : td::string();
|
supergroup_info->invite_link = std::move(
|
||||||
|
full_info->invite_link_ != nullptr ? std::move(full_info->invite_link_->invite_link_) : td::string());
|
||||||
supergroup_info->sticker_set_id = full_info->sticker_set_id_;
|
supergroup_info->sticker_set_id = full_info->sticker_set_id_;
|
||||||
|
supergroup_info->custom_emoji_sticker_set_id = full_info->custom_emoji_sticker_set_id_;
|
||||||
supergroup_info->can_set_sticker_set = full_info->can_set_sticker_set_;
|
supergroup_info->can_set_sticker_set = full_info->can_set_sticker_set_;
|
||||||
supergroup_info->is_all_history_available = full_info->is_all_history_available_;
|
supergroup_info->is_all_history_available = full_info->is_all_history_available_;
|
||||||
supergroup_info->slow_mode_delay = full_info->slow_mode_delay_;
|
supergroup_info->slow_mode_delay = full_info->slow_mode_delay_;
|
||||||
|
supergroup_info->unrestrict_boost_count = full_info->unrestrict_boost_count_;
|
||||||
supergroup_info->linked_chat_id = full_info->linked_chat_id_;
|
supergroup_info->linked_chat_id = full_info->linked_chat_id_;
|
||||||
supergroup_info->location = std::move(full_info->location_);
|
supergroup_info->location = std::move(full_info->location_);
|
||||||
supergroup_info->has_hidden_members = full_info->has_hidden_members_;
|
supergroup_info->has_hidden_members = full_info->has_hidden_members_;
|
||||||
@ -7058,9 +7141,9 @@ void Client::finish_closing() {
|
|||||||
|
|
||||||
auto timeout = [&] {
|
auto timeout = [&] {
|
||||||
if (next_authorization_time_ <= 0.0) {
|
if (next_authorization_time_ <= 0.0) {
|
||||||
return 600.0;
|
return was_authorized_ && authorization_date_ < get_unix_time() - 1800 ? 1.0 : 1800.0;
|
||||||
}
|
}
|
||||||
return td::min(next_authorization_time_ - td::Time::now(), 600.0);
|
return td::min(next_authorization_time_ - td::Time::now(), 1800.0);
|
||||||
}();
|
}();
|
||||||
set_timeout_in(timeout);
|
set_timeout_in(timeout);
|
||||||
LOG(INFO) << "Keep client opened for " << timeout << " seconds";
|
LOG(INFO) << "Keep client opened for " << timeout << " seconds";
|
||||||
@ -7121,6 +7204,9 @@ td::Result<Client::InputReplyParameters> Client::get_reply_parameters(td::JsonVa
|
|||||||
return td::Status::Error(400, "Object expected as reply parameters");
|
return td::Status::Error(400, "Object expected as reply parameters");
|
||||||
}
|
}
|
||||||
auto &object = value.get_object();
|
auto &object = value.get_object();
|
||||||
|
if (object.field_count() == 0) {
|
||||||
|
return InputReplyParameters();
|
||||||
|
}
|
||||||
TRY_RESULT(chat_id, object.get_optional_string_field("chat_id"));
|
TRY_RESULT(chat_id, object.get_optional_string_field("chat_id"));
|
||||||
TRY_RESULT(message_id, object.get_required_int_field("message_id"));
|
TRY_RESULT(message_id, object.get_required_int_field("message_id"));
|
||||||
TRY_RESULT(allow_sending_without_reply, object.get_optional_bool_field("allow_sending_without_reply"));
|
TRY_RESULT(allow_sending_without_reply, object.get_optional_bool_field("allow_sending_without_reply"));
|
||||||
@ -8180,8 +8266,8 @@ td::Result<td_api::object_ptr<td_api::InputInlineQueryResult>> Client::get_inlin
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (input_message_content == nullptr) {
|
if (input_message_content == nullptr) {
|
||||||
input_message_content = make_object<td_api::inputMessageVoiceNote>(nullptr, voice_note_duration,
|
input_message_content = make_object<td_api::inputMessageVoiceNote>(
|
||||||
"" /* waveform */, std::move(caption));
|
nullptr, voice_note_duration, "" /* waveform */, std::move(caption), nullptr);
|
||||||
}
|
}
|
||||||
return make_object<td_api::inputInlineQueryResultVoiceNote>(
|
return make_object<td_api::inputInlineQueryResultVoiceNote>(
|
||||||
id, title, voice_note_url, voice_note_duration, std::move(reply_markup), std::move(input_message_content));
|
id, title, voice_note_url, voice_note_duration, std::move(reply_markup), std::move(input_message_content));
|
||||||
@ -10060,9 +10146,9 @@ td::Status Client::process_send_video_note_query(PromisedQueryPtr &query) {
|
|||||||
auto thumbnail = get_input_thumbnail(query.get());
|
auto thumbnail = get_input_thumbnail(query.get());
|
||||||
int32 duration = get_integer_arg(query.get(), "duration", 0, 0, MAX_DURATION);
|
int32 duration = get_integer_arg(query.get(), "duration", 0, 0, MAX_DURATION);
|
||||||
int32 length = get_integer_arg(query.get(), "length", 0, 0, MAX_LENGTH);
|
int32 length = get_integer_arg(query.get(), "length", 0, 0, MAX_LENGTH);
|
||||||
do_send_message(
|
do_send_message(make_object<td_api::inputMessageVideoNote>(std::move(video_note), std::move(thumbnail), duration,
|
||||||
make_object<td_api::inputMessageVideoNote>(std::move(video_note), std::move(thumbnail), duration, length),
|
length, nullptr),
|
||||||
std::move(query));
|
std::move(query));
|
||||||
return td::Status::OK();
|
return td::Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10073,8 +10159,9 @@ td::Status Client::process_send_voice_query(PromisedQueryPtr &query) {
|
|||||||
}
|
}
|
||||||
int32 duration = get_integer_arg(query.get(), "duration", 0, 0, MAX_DURATION);
|
int32 duration = get_integer_arg(query.get(), "duration", 0, 0, MAX_DURATION);
|
||||||
TRY_RESULT(caption, get_caption(query.get()));
|
TRY_RESULT(caption, get_caption(query.get()));
|
||||||
do_send_message(make_object<td_api::inputMessageVoiceNote>(std::move(voice_note), duration, "", std::move(caption)),
|
do_send_message(
|
||||||
std::move(query));
|
make_object<td_api::inputMessageVoiceNote>(std::move(voice_note), duration, "", std::move(caption), nullptr),
|
||||||
|
std::move(query));
|
||||||
return td::Status::OK();
|
return td::Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11350,7 +11437,7 @@ td::Status Client::process_restrict_chat_member_query(PromisedQueryPtr &query) {
|
|||||||
permissions->can_change_info_ = old_permissions->can_change_info_;
|
permissions->can_change_info_ = old_permissions->can_change_info_;
|
||||||
permissions->can_invite_users_ = old_permissions->can_invite_users_;
|
permissions->can_invite_users_ = old_permissions->can_invite_users_;
|
||||||
permissions->can_pin_messages_ = old_permissions->can_pin_messages_;
|
permissions->can_pin_messages_ = old_permissions->can_pin_messages_;
|
||||||
permissions->can_manage_topics_ = old_permissions->can_manage_topics_;
|
permissions->can_create_topics_ = old_permissions->can_create_topics_;
|
||||||
}
|
}
|
||||||
|
|
||||||
send_request(make_object<td_api::setChatMemberStatus>(
|
send_request(make_object<td_api::setChatMemberStatus>(
|
||||||
@ -12188,7 +12275,7 @@ td::Status Client::process_search_chat_messages_query(PromisedQueryPtr &query) {
|
|||||||
[this, query_, sender = std::move(sender), from_message_id, filter = std::move(filter)](
|
[this, query_, sender = std::move(sender), from_message_id, filter = std::move(filter)](
|
||||||
int64 chat_id, PromisedQueryPtr query) mutable {
|
int64 chat_id, PromisedQueryPtr query) mutable {
|
||||||
send_request(make_object<td_api::searchChatMessages>(chat_id, query_.str(), std::move(sender),
|
send_request(make_object<td_api::searchChatMessages>(chat_id, query_.str(), std::move(sender),
|
||||||
from_message_id, 0, 100, std::move(filter), 0),
|
from_message_id, 0, 100, std::move(filter), 0, 0),
|
||||||
td::make_unique<TdOnFoundMessagesCallback>(this, std::move(query)));
|
td::make_unique<TdOnFoundMessagesCallback>(this, std::move(query)));
|
||||||
});
|
});
|
||||||
return td::Status::OK();
|
return td::Status::OK();
|
||||||
@ -12296,10 +12383,11 @@ void Client::process_register_user_query(PromisedQueryPtr &query) {
|
|||||||
return fail_query(400, "Bad Request: first_name not found", std::move(query));
|
return fail_query(400, "Bad Request: first_name not found", std::move(query));
|
||||||
}
|
}
|
||||||
auto last_name = query->arg("last_name");
|
auto last_name = query->arg("last_name");
|
||||||
|
auto disable_notification = to_bool(query->arg("disable_notification"));
|
||||||
if (authorization_state_->get_id() != td_api::authorizationStateWaitRegistration::ID) {
|
if (authorization_state_->get_id() != td_api::authorizationStateWaitRegistration::ID) {
|
||||||
return fail_query(400, "Bad Request: currently not waiting for registration", std::move(query));
|
return fail_query(400, "Bad Request: currently not waiting for registration", std::move(query));
|
||||||
}
|
}
|
||||||
send_request(make_object<td_api::registerUser>(first_name.str(), last_name.str()),
|
send_request(make_object<td_api::registerUser>(first_name.str(), last_name.str(), disable_notification),
|
||||||
td::make_unique<TdOnAuthorizationQueryCallback>(this, std::move(query)));
|
td::make_unique<TdOnAuthorizationQueryCallback>(this, std::move(query)));
|
||||||
}
|
}
|
||||||
//end custom auth methods impl
|
//end custom auth methods impl
|
||||||
@ -13156,11 +13244,9 @@ void Client::json_store_administrator_rights(td::JsonObjectScope &object, const
|
|||||||
}
|
}
|
||||||
object("can_promote_members", td::JsonBool(rights->can_promote_members_));
|
object("can_promote_members", td::JsonBool(rights->can_promote_members_));
|
||||||
object("can_manage_video_chats", td::JsonBool(rights->can_manage_video_chats_));
|
object("can_manage_video_chats", td::JsonBool(rights->can_manage_video_chats_));
|
||||||
if (chat_type == ChatType::Channel) {
|
object("can_post_stories", td::JsonBool(rights->can_post_stories_));
|
||||||
object("can_post_stories", td::JsonBool(rights->can_post_stories_));
|
object("can_edit_stories", td::JsonBool(rights->can_edit_stories_));
|
||||||
object("can_edit_stories", td::JsonBool(rights->can_edit_stories_));
|
object("can_delete_stories", td::JsonBool(rights->can_delete_stories_));
|
||||||
object("can_delete_stories", td::JsonBool(rights->can_delete_stories_));
|
|
||||||
}
|
|
||||||
object("is_anonymous", td::JsonBool(rights->is_anonymous_));
|
object("is_anonymous", td::JsonBool(rights->is_anonymous_));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -13182,7 +13268,7 @@ void Client::json_store_permissions(td::JsonObjectScope &object, const td_api::c
|
|||||||
object("can_change_info", td::JsonBool(permissions->can_change_info_));
|
object("can_change_info", td::JsonBool(permissions->can_change_info_));
|
||||||
object("can_invite_users", td::JsonBool(permissions->can_invite_users_));
|
object("can_invite_users", td::JsonBool(permissions->can_invite_users_));
|
||||||
object("can_pin_messages", td::JsonBool(permissions->can_pin_messages_));
|
object("can_pin_messages", td::JsonBool(permissions->can_pin_messages_));
|
||||||
object("can_manage_topics", td::JsonBool(permissions->can_manage_topics_));
|
object("can_manage_topics", td::JsonBool(permissions->can_create_topics_));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::json_store_user_status(td::JsonObjectScope &object, const td_api::UserStatus *userStatus) {
|
void Client::json_store_user_status(td::JsonObjectScope &object, const td_api::UserStatus *userStatus) {
|
||||||
@ -13729,6 +13815,10 @@ bool Client::need_skip_update_message(int64 chat_id, const object_ptr<td_api::me
|
|||||||
return true;
|
return true;
|
||||||
case td_api::messageExpiredVideo::ID:
|
case td_api::messageExpiredVideo::ID:
|
||||||
return true;
|
return true;
|
||||||
|
case td_api::messageExpiredVideoNote::ID:
|
||||||
|
return true;
|
||||||
|
case td_api::messageExpiredVoiceNote::ID:
|
||||||
|
return true;
|
||||||
case td_api::messageCustomServiceAction::ID:
|
case td_api::messageCustomServiceAction::ID:
|
||||||
return true;
|
return true;
|
||||||
case td_api::messageChatSetTheme::ID:
|
case td_api::messageChatSetTheme::ID:
|
||||||
@ -14148,10 +14238,9 @@ Client::FullMessageId Client::add_message(object_ptr<td_api::message> &&message,
|
|||||||
message_info->initial_send_date = message->forward_info_->date_;
|
message_info->initial_send_date = message->forward_info_->date_;
|
||||||
message_info->forward_origin = std::move(message->forward_info_->origin_);
|
message_info->forward_origin = std::move(message->forward_info_->origin_);
|
||||||
|
|
||||||
auto from_chat_id = message->forward_info_->from_chat_id_;
|
message_info->is_automatic_forward = message->forward_info_->source_ != nullptr &&
|
||||||
message_info->is_automatic_forward =
|
get_chat_type(chat_id) == ChatType::Supergroup &&
|
||||||
from_chat_id != 0 && from_chat_id != chat_id && message->forward_info_->from_message_id_ != 0 &&
|
get_chat_type(message->forward_info_->source_->chat_id_) == ChatType::Channel;
|
||||||
get_chat_type(chat_id) == ChatType::Supergroup && get_chat_type(from_chat_id) == ChatType::Channel;
|
|
||||||
} else if (message->import_info_ != nullptr) {
|
} else if (message->import_info_ != nullptr) {
|
||||||
message_info->initial_send_date = message->import_info_->date_;
|
message_info->initial_send_date = message->import_info_->date_;
|
||||||
message_info->forward_origin = make_object<td_api::messageOriginHiddenUser>(message->import_info_->sender_name_);
|
message_info->forward_origin = make_object<td_api::messageOriginHiddenUser>(message->import_info_->sender_name_);
|
||||||
@ -14202,6 +14291,7 @@ Client::FullMessageId Client::add_message(object_ptr<td_api::message> &&message,
|
|||||||
message_info->can_be_saved = message->can_be_saved_;
|
message_info->can_be_saved = message->can_be_saved_;
|
||||||
message_info->is_topic_message = message->is_topic_message_;
|
message_info->is_topic_message = message->is_topic_message_;
|
||||||
message_info->author_signature = std::move(message->author_signature_);
|
message_info->author_signature = std::move(message->author_signature_);
|
||||||
|
message_info->sender_boost_count = message->sender_boost_count_;
|
||||||
|
|
||||||
drop_internal_reply_to_message_in_another_chat(message);
|
drop_internal_reply_to_message_in_another_chat(message);
|
||||||
|
|
||||||
@ -14210,6 +14300,11 @@ Client::FullMessageId Client::add_message(object_ptr<td_api::message> &&message,
|
|||||||
} else {
|
} else {
|
||||||
message_info->reply_to_message = nullptr;
|
message_info->reply_to_message = nullptr;
|
||||||
}
|
}
|
||||||
|
if (message->reply_to_ != nullptr && message->reply_to_->get_id() == td_api::messageReplyToStory::ID) {
|
||||||
|
message_info->reply_to_story = move_object_as<td_api::messageReplyToStory>(message->reply_to_);
|
||||||
|
} else {
|
||||||
|
message_info->reply_to_story = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
if (message_info->content == nullptr || force_update_content) {
|
if (message_info->content == nullptr || force_update_content) {
|
||||||
message_info->content = std::move(message->content_);
|
message_info->content = std::move(message->content_);
|
||||||
|
@ -178,6 +178,7 @@ class Client final : public WebhookActor::Callback {
|
|||||||
class JsonMessageReactionCountUpdated;
|
class JsonMessageReactionCountUpdated;
|
||||||
class JsonAddress;
|
class JsonAddress;
|
||||||
class JsonOrderInfo;
|
class JsonOrderInfo;
|
||||||
|
class JsonStory;
|
||||||
class JsonSuccessfulPaymentBot;
|
class JsonSuccessfulPaymentBot;
|
||||||
class JsonEncryptedPassportElement;
|
class JsonEncryptedPassportElement;
|
||||||
class JsonEncryptedCredentials;
|
class JsonEncryptedCredentials;
|
||||||
@ -195,6 +196,7 @@ class Client final : public WebhookActor::Callback {
|
|||||||
class JsonGiveaway;
|
class JsonGiveaway;
|
||||||
class JsonGiveawayWinners;
|
class JsonGiveawayWinners;
|
||||||
class JsonGiveawayCompleted;
|
class JsonGiveawayCompleted;
|
||||||
|
class JsonChatBoostAdded;
|
||||||
class JsonUpdateTypes;
|
class JsonUpdateTypes;
|
||||||
class JsonWebhookInfo;
|
class JsonWebhookInfo;
|
||||||
class JsonStickerSet;
|
class JsonStickerSet;
|
||||||
@ -238,6 +240,7 @@ class Client final : public WebhookActor::Callback {
|
|||||||
class TdOnGetMyShortDescriptionCallback;
|
class TdOnGetMyShortDescriptionCallback;
|
||||||
class TdOnGetChatFullInfoCallback;
|
class TdOnGetChatFullInfoCallback;
|
||||||
class TdOnGetChatStickerSetCallback;
|
class TdOnGetChatStickerSetCallback;
|
||||||
|
class TdOnGetChatCustomEmojiStickerSetCallback;
|
||||||
class TdOnGetChatPinnedMessageCallback;
|
class TdOnGetChatPinnedMessageCallback;
|
||||||
class TdOnGetChatPinnedMessageToUnpinCallback;
|
class TdOnGetChatPinnedMessageToUnpinCallback;
|
||||||
class TdOnGetGroupMembersCallback;
|
class TdOnGetGroupMembersCallback;
|
||||||
@ -918,8 +921,10 @@ class Client final : public WebhookActor::Callback {
|
|||||||
td::string description;
|
td::string description;
|
||||||
td::string invite_link;
|
td::string invite_link;
|
||||||
int64 sticker_set_id = 0;
|
int64 sticker_set_id = 0;
|
||||||
|
int64 custom_emoji_sticker_set_id = 0;
|
||||||
int32 date = 0;
|
int32 date = 0;
|
||||||
int32 slow_mode_delay = 0;
|
int32 slow_mode_delay = 0;
|
||||||
|
int32 unrestrict_boost_count = 0;
|
||||||
int64 linked_chat_id = 0;
|
int64 linked_chat_id = 0;
|
||||||
object_ptr<td_api::chatLocation> location;
|
object_ptr<td_api::chatLocation> location;
|
||||||
object_ptr<td_api::ChatMemberStatus> status;
|
object_ptr<td_api::ChatMemberStatus> status;
|
||||||
@ -981,9 +986,11 @@ class Client final : public WebhookActor::Callback {
|
|||||||
int32 date = 0;
|
int32 date = 0;
|
||||||
int32 edit_date = 0;
|
int32 edit_date = 0;
|
||||||
int32 initial_send_date = 0;
|
int32 initial_send_date = 0;
|
||||||
|
int32 sender_boost_count = 0;
|
||||||
object_ptr<td_api::MessageOrigin> forward_origin;
|
object_ptr<td_api::MessageOrigin> forward_origin;
|
||||||
td::string author_signature;
|
td::string author_signature;
|
||||||
object_ptr<td_api::messageReplyToMessage> reply_to_message;
|
object_ptr<td_api::messageReplyToMessage> reply_to_message;
|
||||||
|
object_ptr<td_api::messageReplyToStory> reply_to_story;
|
||||||
int64 media_album_id = 0;
|
int64 media_album_id = 0;
|
||||||
int64 via_bot_user_id = 0;
|
int64 via_bot_user_id = 0;
|
||||||
object_ptr<td_api::MessageContent> content;
|
object_ptr<td_api::MessageContent> content;
|
||||||
|
@ -100,6 +100,11 @@ void ClientManager::send(PromisedQueryPtr query) {
|
|||||||
|
|
||||||
auto id_it = token_to_id_.find(token);
|
auto id_it = token_to_id_.find(token);
|
||||||
if (id_it == token_to_id_.end()) {
|
if (id_it == token_to_id_.end()) {
|
||||||
|
auto method = query->method();
|
||||||
|
if (method == "close") {
|
||||||
|
return fail_query(400, "Bad Request: the bot has already been closed", std::move(query));
|
||||||
|
}
|
||||||
|
|
||||||
if (!check_flood_limits(query)) {
|
if (!check_flood_limits(query)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -116,7 +121,6 @@ void ClientManager::send(PromisedQueryPtr query) {
|
|||||||
query->token().str(), query->is_user(), query->is_test_dc(),
|
query->token().str(), query->is_user(), query->is_test_dc(),
|
||||||
tqueue_id, parameters_, client_info->stat_.actor_id(&client_info->stat_));
|
tqueue_id, parameters_, client_info->stat_.actor_id(&client_info->stat_));
|
||||||
|
|
||||||
auto method = query->method();
|
|
||||||
if (method != "deletewebhook" && method != "setwebhook") {
|
if (method != "deletewebhook" && method != "setwebhook") {
|
||||||
auto webhook_info = parameters_->shared_data_->webhook_db_->get(bot_token_with_dc);
|
auto webhook_info = parameters_->shared_data_->webhook_db_->get(bot_token_with_dc);
|
||||||
if (!webhook_info.empty()) {
|
if (!webhook_info.empty()) {
|
||||||
|
@ -103,6 +103,7 @@ static void dump_stacktrace_signal_handler(int sig) {
|
|||||||
|
|
||||||
static void fail_signal_handler(int sig) {
|
static void fail_signal_handler(int sig) {
|
||||||
has_failed = true;
|
has_failed = true;
|
||||||
|
print_log();
|
||||||
{
|
{
|
||||||
td::LogGuard log_guard;
|
td::LogGuard log_guard;
|
||||||
td::signal_safe_write_signal_number(sig);
|
td::signal_safe_write_signal_number(sig);
|
||||||
@ -110,7 +111,6 @@ static void fail_signal_handler(int sig) {
|
|||||||
options.use_gdb = true;
|
options.use_gdb = true;
|
||||||
td::Stacktrace::print_to_stderr(options);
|
td::Stacktrace::print_to_stderr(options);
|
||||||
}
|
}
|
||||||
print_log();
|
|
||||||
_Exit(EXIT_FAILURE);
|
_Exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,7 +165,7 @@ int main(int argc, char *argv[]) {
|
|||||||
auto start_time = td::Time::now();
|
auto start_time = td::Time::now();
|
||||||
auto shared_data = std::make_shared<SharedData>();
|
auto shared_data = std::make_shared<SharedData>();
|
||||||
auto parameters = std::make_unique<ClientParameters>();
|
auto parameters = std::make_unique<ClientParameters>();
|
||||||
parameters->version_ = "7.0";
|
parameters->version_ = "7.1";
|
||||||
parameters->shared_data_ = shared_data;
|
parameters->shared_data_ = shared_data;
|
||||||
parameters->start_time_ = start_time;
|
parameters->start_time_ = start_time;
|
||||||
auto net_query_stats = td::create_net_query_stats();
|
auto net_query_stats = td::create_net_query_stats();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user