diff options
Diffstat (limited to 'td/telegram/MessagesManager.cpp')
| -rw-r--r-- | td/telegram/MessagesManager.cpp | 45 |
1 files changed, 30 insertions, 15 deletions
diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 13d08374a..faf4f6f9a 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -1530,7 +1530,7 @@ class SendMediaQuery final : public Td::ResultHandler { public: void send(vector<FileUploadId> file_upload_ids, vector<FileUploadId> thumbnail_file_upload_ids, vector<FileId> cover_file_ids, int32 flags, DialogId dialog_id, - tl_object_ptr<telegram_api::InputPeer> as_input_peer, UserId receiver_user_id, + tl_object_ptr<telegram_api::InputPeer> as_input_peer, UserId receiver_user_id, int64 send_callback_query_id, const MessageInputReplyTo &input_reply_to, const MessageTopic &message_topic, int32 schedule_date, int32 schedule_repeat_period, MessageEffectId effect_id, int64 paid_message_star_count, const SuggestedPost *suggested_post, const unique_ptr<ReplyMarkup> &reply_markup, const FormattedText *text, @@ -1576,12 +1576,15 @@ class SendMediaQuery final : public Td::ResultHandler { if (input_reply_markup != nullptr) { flags |= telegram_api::ephemeral_sendMessage::REPLY_MARKUP_MASK; } + if (send_callback_query_id != 0) { + flags |= telegram_api::ephemeral_sendMessage::QUERY_ID_MASK; + } auto query = G()->net_query_creator().create( - telegram_api::ephemeral_sendMessage(flags, std::move(input_peer), r_input_user.move_as_ok(), 0, - text == nullptr ? string() : text->text, std::move(entities), - std::move(input_media.media_), std::move(input_reply_markup), - std::move(input_media.rich_message_), random_id, std::move(reply_to)), + telegram_api::ephemeral_sendMessage( + flags, std::move(input_peer), r_input_user.move_as_ok(), send_callback_query_id, + text == nullptr ? string() : text->text, std::move(entities), std::move(input_media.media_), + std::move(input_reply_markup), std::move(input_media.rich_message_), random_id, std::move(reply_to)), {{dialog_id, MessageContentType::Text}, {dialog_id, is_copy ? MessageContentType::Photo : MessageContentType::Text}}); *send_query_ref = query.get_weak(); @@ -2374,6 +2377,7 @@ void MessagesManager::Message::store(StorerT &storer) const { bool has_guest_bot_via_dialog_id = guest_bot_via_dialog_id.is_valid(); bool has_receiver_user_id = receiver_user_id.is_valid(); bool has_ephemeral_message_id = ephemeral_message_id.is_valid(); + bool has_send_callback_query_id = send_callback_query_id != 0; BEGIN_STORE_FLAGS(); STORE_FLAG(is_channel_post); STORE_FLAG(is_outgoing); @@ -2485,6 +2489,7 @@ void MessagesManager::Message::store(StorerT &storer) const { STORE_FLAG(has_guest_bot_via_dialog_id); STORE_FLAG(has_receiver_user_id); STORE_FLAG(has_ephemeral_message_id); + STORE_FLAG(has_send_callback_query_id); END_STORE_FLAGS(); } // update MessageDb::get_message_info when flags5 is added @@ -2648,6 +2653,9 @@ void MessagesManager::Message::store(StorerT &storer) const { if (has_ephemeral_message_id) { store(ephemeral_message_id, storer); } + if (has_send_callback_query_id) { + store(send_callback_query_id, storer); + } } // do not forget to resolve message dependencies @@ -2719,6 +2727,7 @@ void MessagesManager::Message::parse(ParserT &parser) { bool has_guest_bot_via_dialog_id = false; bool has_receiver_user_id = false; bool has_ephemeral_message_id = false; + bool has_send_callback_query_id = false; BEGIN_PARSE_FLAGS(); PARSE_FLAG(is_channel_post); PARSE_FLAG(is_outgoing); @@ -2830,6 +2839,7 @@ void MessagesManager::Message::parse(ParserT &parser) { PARSE_FLAG(has_guest_bot_via_dialog_id); PARSE_FLAG(has_receiver_user_id); PARSE_FLAG(has_ephemeral_message_id); + PARSE_FLAG(has_send_callback_query_id); END_PARSE_FLAGS(); } @@ -3064,6 +3074,9 @@ void MessagesManager::Message::parse(ParserT &parser) { parser.set_error("Invalid ephemeral message identifier"); } } + if (has_send_callback_query_id) { + parse(send_callback_query_id, parser); + } CHECK(content != nullptr); is_content_secret |= ttl.is_secret_message_content(content->get_type()); // repair is_content_secret for old messages @@ -22124,10 +22137,11 @@ void MessagesManager::do_send_message_media(DialogId dialog_id, const Message *m td_->create_handler<SendMediaQuery>()->send( m->file_upload_ids, m->thumbnail_file_upload_ids, get_message_content_cover_any_file_ids(td_, m->content.get()), get_message_flags(m), dialog_id, - get_send_message_as_input_peer(m), m->receiver_user_id, *get_message_input_reply_to(m), - get_send_message_topic(dialog_id, m), get_message_schedule_date(m), get_message_schedule_repeat_period(m), - m->effect_id, m->paid_message_star_count, m->suggested_post.get(), m->reply_markup, caption, - std::move(input_media), m->content->get_type(), m->is_copy, random_id, &m->send_query_ref); + get_send_message_as_input_peer(m), m->receiver_user_id, m->send_callback_query_id, + *get_message_input_reply_to(m), get_send_message_topic(dialog_id, m), get_message_schedule_date(m), + get_message_schedule_repeat_period(m), m->effect_id, m->paid_message_star_count, m->suggested_post.get(), + m->reply_markup, caption, std::move(input_media), m->content->get_type(), m->is_copy, random_id, + &m->send_query_ref); })); } @@ -22633,10 +22647,10 @@ void MessagesManager::on_text_message_ready_to_send(DialogId dialog_id, MessageI } else { td_->create_handler<SendMediaQuery>()->send( {}, {}, {}, get_message_flags(m), dialog_id, get_send_message_as_input_peer(m), m->receiver_user_id, - *get_message_input_reply_to(m), get_send_message_topic(dialog_id, m), get_message_schedule_date(m), - get_message_schedule_repeat_period(m), m->effect_id, m->paid_message_star_count, m->suggested_post.get(), - m->reply_markup, message_text, std::move(input_media), MessageContentType::Text, m->is_copy, random_id, - &m->send_query_ref); + m->send_callback_query_id, *get_message_input_reply_to(m), get_send_message_topic(dialog_id, m), + get_message_schedule_date(m), get_message_schedule_repeat_period(m), m->effect_id, m->paid_message_star_count, + m->suggested_post.get(), m->reply_markup, message_text, std::move(input_media), MessageContentType::Text, + m->is_copy, random_id, &m->send_query_ref); } } } @@ -25230,8 +25244,8 @@ void MessagesManager::process_suggested_post(MessageFullId message_full_id, bool Result<td_api::object_ptr<td_api::message>> MessagesManager::send_ephemeral_message( DialogId dialog_id, const td_api::object_ptr<td_api::MessageTopic> &topic_id, UserId receiver_user_id, - td_api::object_ptr<td_api::InputMessageReplyTo> &&reply_to, int32 sending_id, bool only_preview, - td_api::object_ptr<td_api::ReplyMarkup> &&reply_markup, + int64 callback_query_id, td_api::object_ptr<td_api::InputMessageReplyTo> &&reply_to, int32 sending_id, + bool only_preview, td_api::object_ptr<td_api::ReplyMarkup> &&reply_markup, td_api::object_ptr<td_api::InputMessageContent> &&input_message_content) { if (input_message_content == nullptr) { return Status::Error(400, "Can't send message without content"); @@ -25291,6 +25305,7 @@ Result<td_api::object_ptr<td_api::message>> MessagesManager::send_ephemeral_mess m->is_content_secret = m->ttl.is_secret_message_content(m->content->get_type()); } m->send_emoji = std::move(message_content.emoji); + m->send_callback_query_id = callback_query_id; if (only_preview) { return get_message_object(dialog_id, m, "send_ephemeral_message"); |
