aboutsummaryrefslogtreecommitdiffhomepage
path: root/td/telegram/MessagesManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'td/telegram/MessagesManager.cpp')
-rw-r--r--td/telegram/MessagesManager.cpp45
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");