Use td_api::getStickerSetName instead of td_api::getStickerSet.

This commit is contained in:
levlam 2024-08-28 11:54:13 +03:00
parent 240eb7b4a9
commit c571a9ee5b
2 changed files with 65 additions and 47 deletions

View File

@ -5182,10 +5182,10 @@ class Client::TdOnGetStickerSetCallback final : public TdQueryCallback {
nullptr); nullptr);
} }
CHECK(result->get_id() == td_api::stickerSet::ID); CHECK(result->get_id() == td_api::text::ID);
client_->on_get_sticker_set(set_id_, new_callback_query_user_id_, new_message_chat_id_, client_->on_get_sticker_set(set_id_, new_callback_query_user_id_, new_message_chat_id_,
new_message_business_connection_id_, new_business_callback_query_user_id_, new_message_business_connection_id_, new_business_callback_query_user_id_,
move_object_as<td_api::stickerSet>(result)); move_object_as<td_api::text>(result));
} }
private: private:
@ -5199,9 +5199,13 @@ class Client::TdOnGetStickerSetCallback final : public TdQueryCallback {
class Client::TdOnGetChatCustomEmojiStickerSetCallback final : public TdQueryCallback { class Client::TdOnGetChatCustomEmojiStickerSetCallback final : public TdQueryCallback {
public: public:
TdOnGetChatCustomEmojiStickerSetCallback(Client *client, int64 chat_id, int64 pinned_message_id, TdOnGetChatCustomEmojiStickerSetCallback(Client *client, int64 sticker_set_id, int64 chat_id, int64 pinned_message_id,
PromisedQueryPtr query) PromisedQueryPtr query)
: client_(client), chat_id_(chat_id), pinned_message_id_(pinned_message_id), query_(std::move(query)) { : client_(client)
, sticker_set_id_(sticker_set_id)
, chat_id_(chat_id)
, pinned_message_id_(pinned_message_id)
, query_(std::move(query)) {
} }
void on_result(object_ptr<td_api::Object> result) final { void on_result(object_ptr<td_api::Object> result) final {
@ -5212,9 +5216,9 @@ class Client::TdOnGetChatCustomEmojiStickerSetCallback final : public TdQueryCal
if (result->get_id() == td_api::error::ID) { if (result->get_id() == td_api::error::ID) {
supergroup_info->custom_emoji_sticker_set_id = 0; supergroup_info->custom_emoji_sticker_set_id = 0;
} else { } else {
CHECK(result->get_id() == td_api::stickerSet::ID); CHECK(result->get_id() == td_api::text::ID);
auto sticker_set = move_object_as<td_api::stickerSet>(result); auto sticker_set_name = move_object_as<td_api::text>(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->text_);
} }
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_));
@ -5222,6 +5226,7 @@ class Client::TdOnGetChatCustomEmojiStickerSetCallback final : public TdQueryCal
private: private:
Client *client_; Client *client_;
int64 sticker_set_id_;
int64 chat_id_; int64 chat_id_;
int64 pinned_message_id_; int64 pinned_message_id_;
PromisedQueryPtr query_; PromisedQueryPtr query_;
@ -5229,9 +5234,13 @@ class Client::TdOnGetChatCustomEmojiStickerSetCallback final : public TdQueryCal
class Client::TdOnGetChatBusinessStartPageStickerSetCallback final : public TdQueryCallback { class Client::TdOnGetChatBusinessStartPageStickerSetCallback final : public TdQueryCallback {
public: public:
TdOnGetChatBusinessStartPageStickerSetCallback(Client *client, int64 chat_id, int64 pinned_message_id, TdOnGetChatBusinessStartPageStickerSetCallback(Client *client, int64 sticker_set_id, int64 chat_id,
PromisedQueryPtr query) int64 pinned_message_id, PromisedQueryPtr query)
: client_(client), chat_id_(chat_id), pinned_message_id_(pinned_message_id), query_(std::move(query)) { : client_(client)
, sticker_set_id_(sticker_set_id)
, chat_id_(chat_id)
, pinned_message_id_(pinned_message_id)
, query_(std::move(query)) {
} }
void on_result(object_ptr<td_api::Object> result) final { void on_result(object_ptr<td_api::Object> result) final {
@ -5245,9 +5254,9 @@ class Client::TdOnGetChatBusinessStartPageStickerSetCallback final : public TdQu
user_info->business_info->start_page_->sticker_->set_id_ = 0; user_info->business_info->start_page_->sticker_->set_id_ = 0;
} }
} else { } else {
CHECK(result->get_id() == td_api::stickerSet::ID); CHECK(result->get_id() == td_api::text::ID);
auto sticker_set = move_object_as<td_api::stickerSet>(result); auto sticker_set_name = move_object_as<td_api::text>(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->text_);
} }
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_));
@ -5255,6 +5264,7 @@ class Client::TdOnGetChatBusinessStartPageStickerSetCallback final : public TdQu
private: private:
Client *client_; Client *client_;
int64 sticker_set_id_;
int64 chat_id_; int64 chat_id_;
int64 pinned_message_id_; int64 pinned_message_id_;
PromisedQueryPtr query_; PromisedQueryPtr query_;
@ -5262,8 +5272,13 @@ class Client::TdOnGetChatBusinessStartPageStickerSetCallback final : public TdQu
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 sticker_set_id, int64 chat_id, int64 pinned_message_id,
: client_(client), chat_id_(chat_id), pinned_message_id_(pinned_message_id), query_(std::move(query)) { PromisedQueryPtr query)
: client_(client)
, sticker_set_id_(sticker_set_id)
, chat_id_(chat_id)
, pinned_message_id_(pinned_message_id)
, query_(std::move(query)) {
} }
void on_result(object_ptr<td_api::Object> result) final { void on_result(object_ptr<td_api::Object> result) final {
@ -5274,16 +5289,16 @@ class Client::TdOnGetChatStickerSetCallback final : public TdQueryCallback {
if (result->get_id() == td_api::error::ID) { if (result->get_id() == td_api::error::ID) {
supergroup_info->sticker_set_id = 0; supergroup_info->sticker_set_id = 0;
} else { } else {
CHECK(result->get_id() == td_api::stickerSet::ID); CHECK(result->get_id() == td_api::text::ID);
auto sticker_set = move_object_as<td_api::stickerSet>(result); auto sticker_set_name = move_object_as<td_api::text>(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->text_);
} }
auto sticker_set_id = supergroup_info->custom_emoji_sticker_set_id; 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()) { 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), return client_->send_request(make_object<td_api::getStickerSetName>(sticker_set_id),
td::make_unique<TdOnGetChatCustomEmojiStickerSetCallback>( td::make_unique<TdOnGetChatCustomEmojiStickerSetCallback>(
client_, chat_id_, pinned_message_id_, std::move(query_))); client_, sticker_set_id, 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_));
@ -5291,6 +5306,7 @@ class Client::TdOnGetChatStickerSetCallback final : public TdQueryCallback {
private: private:
Client *client_; Client *client_;
int64 sticker_set_id_;
int64 chat_id_; int64 chat_id_;
int64 pinned_message_id_; int64 pinned_message_id_;
PromisedQueryPtr query_; PromisedQueryPtr query_;
@ -5327,16 +5343,16 @@ class Client::TdOnGetChatPinnedMessageCallback final : public TdQueryCallback {
auto sticker_set_id = supergroup_info->sticker_set_id; auto sticker_set_id = supergroup_info->sticker_set_id;
if (sticker_set_id != 0 && client_->get_sticker_set_name(sticker_set_id).empty()) { if (sticker_set_id != 0 && client_->get_sticker_set_name(sticker_set_id).empty()) {
return client_->send_request( return client_->send_request(make_object<td_api::getStickerSetName>(sticker_set_id),
make_object<td_api::getStickerSet>(sticker_set_id), td::make_unique<TdOnGetChatStickerSetCallback>(
td::make_unique<TdOnGetChatStickerSetCallback>(client_, chat_id_, pinned_message_id, std::move(query_))); client_, sticker_set_id, chat_id_, pinned_message_id, std::move(query_)));
} }
sticker_set_id = supergroup_info->custom_emoji_sticker_set_id; sticker_set_id = supergroup_info->custom_emoji_sticker_set_id;
if (sticker_set_id != 0 && client_->get_sticker_set_name(sticker_set_id).empty()) { 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), return client_->send_request(make_object<td_api::getStickerSetName>(sticker_set_id),
td::make_unique<TdOnGetChatCustomEmojiStickerSetCallback>( td::make_unique<TdOnGetChatCustomEmojiStickerSetCallback>(
client_, chat_id_, pinned_message_id, std::move(query_))); client_, sticker_set_id, chat_id_, pinned_message_id, std::move(query_)));
} }
} else if (chat_info->type == ChatInfo::Type::Private) { } else if (chat_info->type == ChatInfo::Type::Private) {
auto user_info = client_->get_user_info(chat_info->user_id); auto user_info = client_->get_user_info(chat_info->user_id);
@ -5347,9 +5363,9 @@ class Client::TdOnGetChatPinnedMessageCallback final : public TdQueryCallback {
if (sticker != nullptr) { if (sticker != nullptr) {
auto sticker_set_id = sticker->set_id_; auto sticker_set_id = sticker->set_id_;
if (sticker_set_id != 0 && client_->get_sticker_set_name(sticker_set_id).empty()) { 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), return client_->send_request(make_object<td_api::getStickerSetName>(sticker_set_id),
td::make_unique<TdOnGetChatBusinessStartPageStickerSetCallback>( td::make_unique<TdOnGetChatBusinessStartPageStickerSetCallback>(
client_, chat_id_, pinned_message_id, std::move(query_))); client_, sticker_set_id, chat_id_, pinned_message_id, std::move(query_)));
} }
} }
} }
@ -5825,8 +5841,8 @@ class Client::TdOnReturnStickerSetCallback final : public TdQueryCallback {
class Client::TdOnGetStickerSetPromiseCallback final : public TdQueryCallback { class Client::TdOnGetStickerSetPromiseCallback final : public TdQueryCallback {
public: public:
TdOnGetStickerSetPromiseCallback(Client *client, td::Promise<td::Unit> &&promise) TdOnGetStickerSetPromiseCallback(Client *client, int64 sticker_set_id, td::Promise<td::Unit> &&promise)
: client_(client), promise_(std::move(promise)) { : client_(client), sticker_set_id_(sticker_set_id), promise_(std::move(promise)) {
} }
void on_result(object_ptr<td_api::Object> result) final { void on_result(object_ptr<td_api::Object> result) final {
@ -5835,14 +5851,15 @@ class Client::TdOnGetStickerSetPromiseCallback final : public TdQueryCallback {
return promise_.set_error(td::Status::Error(error->code_, error->message_)); return promise_.set_error(td::Status::Error(error->code_, error->message_));
} }
CHECK(result->get_id() == td_api::stickerSet::ID); CHECK(result->get_id() == td_api::text::ID);
auto sticker_set = move_object_as<td_api::stickerSet>(result); auto sticker_set_name = move_object_as<td_api::text>(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->text_);
promise_.set_value(td::Unit()); promise_.set_value(td::Unit());
} }
private: private:
Client *client_; Client *client_;
int64 sticker_set_id_;
td::Promise<td::Unit> promise_; td::Promise<td::Unit> promise_;
}; };
@ -5874,8 +5891,9 @@ class Client::TdOnGetStickersCallback final : public TdQueryCallback {
auto lock = mpas.get_promise(); auto lock = mpas.get_promise();
for (auto sticker_set_id : sticker_set_ids) { for (auto sticker_set_id : sticker_set_ids) {
client_->send_request(make_object<td_api::getStickerSet>(sticker_set_id), client_->send_request(
td::make_unique<TdOnGetStickerSetPromiseCallback>(client_, mpas.get_promise())); make_object<td_api::getStickerSetName>(sticker_set_id),
td::make_unique<TdOnGetStickerSetPromiseCallback>(client_, sticker_set_id, mpas.get_promise()));
} }
lock.set_value(td::Unit()); lock.set_value(td::Unit());
} }
@ -6145,7 +6163,7 @@ void Client::on_get_callback_query_message(object_ptr<td_api::message> message,
void Client::on_get_sticker_set(int64 set_id, int64 new_callback_query_user_id, int64 new_message_chat_id, void Client::on_get_sticker_set(int64 set_id, int64 new_callback_query_user_id, int64 new_message_chat_id,
const td::string &new_message_business_connection_id, const td::string &new_message_business_connection_id,
int64 new_business_callback_query_user_id, object_ptr<td_api::stickerSet> sticker_set) { int64 new_business_callback_query_user_id, object_ptr<td_api::text> sticker_set_name) {
if (new_callback_query_user_id != 0) { if (new_callback_query_user_id != 0) {
auto &queue = new_callback_query_queues_[new_callback_query_user_id]; auto &queue = new_callback_query_queues_[new_callback_query_user_id];
CHECK(queue.has_active_request_); CHECK(queue.has_active_request_);
@ -6178,8 +6196,8 @@ void Client::on_get_sticker_set(int64 set_id, int64 new_callback_query_user_id,
CHECK(set_id != 0); CHECK(set_id != 0);
if (set_id != GREAT_MINDS_SET_ID) { if (set_id != GREAT_MINDS_SET_ID) {
td::string &set_name = sticker_set_names_[set_id]; td::string &set_name = sticker_set_names_[set_id];
if (sticker_set != nullptr) { if (sticker_set_name != nullptr) {
set_name = std::move(sticker_set->name_); set_name = std::move(sticker_set_name->text_);
} }
} }
@ -13517,7 +13535,7 @@ void Client::process_new_callback_query_queue(int64 user_id, int state) {
if (!have_sticker_set_name(message_sticker_set_id)) { if (!have_sticker_set_name(message_sticker_set_id)) {
queue.has_active_request_ = true; queue.has_active_request_ = true;
return send_request( return send_request(
make_object<td_api::getStickerSet>(message_sticker_set_id), make_object<td_api::getStickerSetName>(message_sticker_set_id),
td::make_unique<TdOnGetStickerSetCallback>(this, message_sticker_set_id, user_id, 0, td::string(), 0)); td::make_unique<TdOnGetStickerSetCallback>(this, message_sticker_set_id, user_id, 0, td::string(), 0));
} }
auto reply_to_message_id = get_same_chat_reply_to_message_id(message_info); auto reply_to_message_id = get_same_chat_reply_to_message_id(message_info);
@ -13528,7 +13546,7 @@ void Client::process_new_callback_query_queue(int64 user_id, int state) {
if (!have_sticker_set_name(reply_sticker_set_id)) { if (!have_sticker_set_name(reply_sticker_set_id)) {
queue.has_active_request_ = true; queue.has_active_request_ = true;
return send_request( return send_request(
make_object<td_api::getStickerSet>(reply_sticker_set_id), make_object<td_api::getStickerSetName>(reply_sticker_set_id),
td::make_unique<TdOnGetStickerSetCallback>(this, reply_sticker_set_id, user_id, 0, td::string(), 0)); td::make_unique<TdOnGetStickerSetCallback>(this, reply_sticker_set_id, user_id, 0, td::string(), 0));
} }
} }
@ -13579,7 +13597,7 @@ void Client::process_new_business_callback_query_queue(int64 user_id) {
if (!have_sticker_set_name(message_sticker_set_id)) { if (!have_sticker_set_name(message_sticker_set_id)) {
queue.has_active_request_ = true; queue.has_active_request_ = true;
return send_request( return send_request(
make_object<td_api::getStickerSet>(message_sticker_set_id), make_object<td_api::getStickerSetName>(message_sticker_set_id),
td::make_unique<TdOnGetStickerSetCallback>(this, message_sticker_set_id, 0, 0, td::string(), user_id)); td::make_unique<TdOnGetStickerSetCallback>(this, message_sticker_set_id, 0, 0, td::string(), user_id));
} }
if (message_ref->reply_to_message_ != nullptr) { if (message_ref->reply_to_message_ != nullptr) {
@ -13588,7 +13606,7 @@ void Client::process_new_business_callback_query_queue(int64 user_id) {
if (!have_sticker_set_name(reply_sticker_set_id)) { if (!have_sticker_set_name(reply_sticker_set_id)) {
queue.has_active_request_ = true; queue.has_active_request_ = true;
return send_request( return send_request(
make_object<td_api::getStickerSet>(reply_sticker_set_id), make_object<td_api::getStickerSetName>(reply_sticker_set_id),
td::make_unique<TdOnGetStickerSetCallback>(this, reply_sticker_set_id, 0, 0, td::string(), user_id)); td::make_unique<TdOnGetStickerSetCallback>(this, reply_sticker_set_id, 0, 0, td::string(), user_id));
} }
} }
@ -14163,7 +14181,7 @@ void Client::process_new_message_queue(int64 chat_id, int state) {
if (!have_sticker_set_name(message_sticker_set_id)) { if (!have_sticker_set_name(message_sticker_set_id)) {
queue.has_active_request_ = true; queue.has_active_request_ = true;
return send_request( return send_request(
make_object<td_api::getStickerSet>(message_sticker_set_id), make_object<td_api::getStickerSetName>(message_sticker_set_id),
td::make_unique<TdOnGetStickerSetCallback>(this, message_sticker_set_id, 0, chat_id, td::string(), 0)); td::make_unique<TdOnGetStickerSetCallback>(this, message_sticker_set_id, 0, chat_id, td::string(), 0));
} }
if (reply_to_message_id > 0) { if (reply_to_message_id > 0) {
@ -14173,7 +14191,7 @@ void Client::process_new_message_queue(int64 chat_id, int state) {
if (!have_sticker_set_name(reply_sticker_set_id)) { if (!have_sticker_set_name(reply_sticker_set_id)) {
queue.has_active_request_ = true; queue.has_active_request_ = true;
return send_request( return send_request(
make_object<td_api::getStickerSet>(reply_sticker_set_id), make_object<td_api::getStickerSetName>(reply_sticker_set_id),
td::make_unique<TdOnGetStickerSetCallback>(this, reply_sticker_set_id, 0, chat_id, td::string(), 0)); td::make_unique<TdOnGetStickerSetCallback>(this, reply_sticker_set_id, 0, chat_id, td::string(), 0));
} }
} }
@ -14263,7 +14281,7 @@ void Client::process_new_business_message_queue(const td::string &connection_id)
if (!have_sticker_set_name(message_sticker_set_id)) { if (!have_sticker_set_name(message_sticker_set_id)) {
queue.has_active_request_ = true; queue.has_active_request_ = true;
return send_request( return send_request(
make_object<td_api::getStickerSet>(message_sticker_set_id), make_object<td_api::getStickerSetName>(message_sticker_set_id),
td::make_unique<TdOnGetStickerSetCallback>(this, message_sticker_set_id, 0, 0, connection_id, 0)); td::make_unique<TdOnGetStickerSetCallback>(this, message_sticker_set_id, 0, 0, connection_id, 0));
} }
if (message_ref->reply_to_message_ != nullptr) { if (message_ref->reply_to_message_ != nullptr) {
@ -14272,7 +14290,7 @@ void Client::process_new_business_message_queue(const td::string &connection_id)
if (!have_sticker_set_name(reply_sticker_set_id)) { if (!have_sticker_set_name(reply_sticker_set_id)) {
queue.has_active_request_ = true; queue.has_active_request_ = true;
return send_request( return send_request(
make_object<td_api::getStickerSet>(reply_sticker_set_id), make_object<td_api::getStickerSetName>(reply_sticker_set_id),
td::make_unique<TdOnGetStickerSetCallback>(this, reply_sticker_set_id, 0, 0, connection_id, 0)); td::make_unique<TdOnGetStickerSetCallback>(this, reply_sticker_set_id, 0, 0, connection_id, 0));
} }
} }
@ -14426,7 +14444,7 @@ void Client::init_message(MessageInfo *message_info, object_ptr<td_api::message>
auto sticker_set_id = get_sticker_set_id(message_info->content); auto sticker_set_id = get_sticker_set_id(message_info->content);
if (!have_sticker_set_name(sticker_set_id)) { if (!have_sticker_set_name(sticker_set_id)) {
send_request(make_object<td_api::getStickerSet>(sticker_set_id), send_request(make_object<td_api::getStickerSetName>(sticker_set_id),
td::make_unique<TdOnGetStickerSetCallback>(this, sticker_set_id, 0, 0, td::string(), 0)); td::make_unique<TdOnGetStickerSetCallback>(this, sticker_set_id, 0, 0, td::string(), 0));
} }
} else if (message->content_->get_id() == td_api::messagePoll::ID) { } else if (message->content_->get_id() == td_api::messagePoll::ID) {

View File

@ -266,7 +266,7 @@ class Client final : public WebhookActor::Callback {
void on_get_sticker_set(int64 set_id, int64 new_callback_query_user_id, int64 new_message_chat_id, void on_get_sticker_set(int64 set_id, int64 new_callback_query_user_id, int64 new_message_chat_id,
const td::string &new_message_business_connection_id, const td::string &new_message_business_connection_id,
int64 new_business_callback_query_user_id, object_ptr<td_api::stickerSet> sticker_set); int64 new_business_callback_query_user_id, object_ptr<td_api::text> sticker_set_name);
void on_get_sticker_set_name(int64 set_id, const td::string &name); void on_get_sticker_set_name(int64 set_id, const td::string &name);