Add td_api::getCallbackQueryMessage.
GitOrigin-RevId: a5ca7eab673e00942b4e2fe7a9c6e17dfb3784f8
This commit is contained in:
parent
1a6161003c
commit
ef1b2921ae
|
@ -3599,6 +3599,9 @@ getRepliedMessage chat_id:int53 message_id:int53 = Message;
|
||||||
//@description Returns information about a newest pinned chat message @chat_id Identifier of the chat the message belongs to
|
//@description Returns information about a newest pinned chat message @chat_id Identifier of the chat the message belongs to
|
||||||
getChatPinnedMessage chat_id:int53 = Message;
|
getChatPinnedMessage chat_id:int53 = Message;
|
||||||
|
|
||||||
|
//@description Returns information about a message with the callback button that originated a callback query; for bots only @chat_id Identifier of the chat the message belongs to @message_id Message identifier @callback_query_id Identifier of the callback query
|
||||||
|
getCallbackQueryMessage chat_id:int53 message_id:int53 callback_query_id:int64 = Message;
|
||||||
|
|
||||||
//@description Returns information about messages. If a message is not found, returns null on the corresponding position of the result @chat_id Identifier of the chat the messages belong to @message_ids Identifiers of the messages to get
|
//@description Returns information about messages. If a message is not found, returns null on the corresponding position of the result @chat_id Identifier of the chat the messages belong to @message_ids Identifiers of the messages to get
|
||||||
getMessages chat_id:int53 message_ids:vector<int53> = Messages;
|
getMessages chat_id:int53 message_ids:vector<int53> = Messages;
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -889,6 +889,7 @@ account.webAuthorizations#ed56c9fc authorizations:Vector<WebAuthorization> users
|
||||||
inputMessageID#a676a322 id:int = InputMessage;
|
inputMessageID#a676a322 id:int = InputMessage;
|
||||||
inputMessageReplyTo#bad88395 id:int = InputMessage;
|
inputMessageReplyTo#bad88395 id:int = InputMessage;
|
||||||
inputMessagePinned#86872538 = InputMessage;
|
inputMessagePinned#86872538 = InputMessage;
|
||||||
|
inputMessageCallbackQuery#acfa1a7e id:int query_id:long = InputMessage;
|
||||||
|
|
||||||
inputDialogPeer#fcaafeb7 peer:InputPeer = InputDialogPeer;
|
inputDialogPeer#fcaafeb7 peer:InputPeer = InputDialogPeer;
|
||||||
inputDialogPeerFolder#64600527 folder_id:int = InputDialogPeer;
|
inputDialogPeerFolder#64600527 folder_id:int = InputDialogPeer;
|
||||||
|
|
Binary file not shown.
|
@ -5811,10 +5811,6 @@ vector<int32> MessagesManager::get_scheduled_server_message_ids(const vector<Mes
|
||||||
[](MessageId message_id) { return message_id.get_scheduled_server_message_id().get(); });
|
[](MessageId message_id) { return message_id.get_scheduled_server_message_id().get(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
tl_object_ptr<telegram_api::InputMessage> MessagesManager::get_input_message(MessageId message_id) {
|
|
||||||
return make_tl_object<telegram_api::inputMessageID>(message_id.get_server_message_id().get());
|
|
||||||
}
|
|
||||||
|
|
||||||
tl_object_ptr<telegram_api::InputPeer> MessagesManager::get_input_peer(DialogId dialog_id,
|
tl_object_ptr<telegram_api::InputPeer> MessagesManager::get_input_peer(DialogId dialog_id,
|
||||||
AccessRights access_rights) const {
|
AccessRights access_rights) const {
|
||||||
switch (dialog_id.get_type()) {
|
switch (dialog_id.get_type()) {
|
||||||
|
@ -16396,6 +16392,23 @@ MessageId MessagesManager::get_dialog_pinned_message(DialogId dialog_id, Promise
|
||||||
return d->last_pinned_message_id;
|
return d->last_pinned_message_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MessagesManager::get_callback_query_message(DialogId dialog_id, MessageId message_id, int64 callback_query_id,
|
||||||
|
Promise<Unit> &&promise) {
|
||||||
|
Dialog *d = get_dialog_force(dialog_id);
|
||||||
|
if (d == nullptr) {
|
||||||
|
return promise.set_error(Status::Error(6, "Chat not found"));
|
||||||
|
}
|
||||||
|
if (!message_id.is_valid() || !message_id.is_server()) {
|
||||||
|
return promise.set_error(Status::Error(6, "Invalid message identifier specified"));
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG(INFO) << "Get callback query " << message_id << " in " << dialog_id << " for query " << callback_query_id;
|
||||||
|
|
||||||
|
auto input_message = make_tl_object<telegram_api::inputMessageCallbackQuery>(message_id.get_server_message_id().get(),
|
||||||
|
callback_query_id);
|
||||||
|
get_message_force_from_server(d, message_id, std::move(promise), std::move(input_message));
|
||||||
|
}
|
||||||
|
|
||||||
bool MessagesManager::get_messages(DialogId dialog_id, const vector<MessageId> &message_ids, Promise<Unit> &&promise) {
|
bool MessagesManager::get_messages(DialogId dialog_id, const vector<MessageId> &message_ids, Promise<Unit> &&promise) {
|
||||||
Dialog *d = get_dialog_force(dialog_id);
|
Dialog *d = get_dialog_force(dialog_id);
|
||||||
if (d == nullptr) {
|
if (d == nullptr) {
|
||||||
|
@ -16459,15 +16472,17 @@ void MessagesManager::get_messages_from_server(vector<FullMessageId> &&message_i
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (input_message == nullptr) {
|
||||||
|
input_message = make_tl_object<telegram_api::inputMessageID>(message_id.get_server_message_id().get());
|
||||||
|
}
|
||||||
|
|
||||||
switch (dialog_id.get_type()) {
|
switch (dialog_id.get_type()) {
|
||||||
case DialogType::User:
|
case DialogType::User:
|
||||||
case DialogType::Chat:
|
case DialogType::Chat:
|
||||||
ordinary_message_ids.push_back(input_message == nullptr ? get_input_message(message_id)
|
ordinary_message_ids.push_back(std::move(input_message));
|
||||||
: std::move(input_message));
|
|
||||||
break;
|
break;
|
||||||
case DialogType::Channel:
|
case DialogType::Channel:
|
||||||
channel_message_ids[dialog_id.get_channel_id()].push_back(
|
channel_message_ids[dialog_id.get_channel_id()].push_back(std::move(input_message));
|
||||||
input_message == nullptr ? get_input_message(message_id) : std::move(input_message));
|
|
||||||
break;
|
break;
|
||||||
case DialogType::SecretChat:
|
case DialogType::SecretChat:
|
||||||
LOG(ERROR) << "Can't get secret chat message from server";
|
LOG(ERROR) << "Can't get secret chat message from server";
|
||||||
|
|
|
@ -587,6 +587,19 @@ class MessagesManager : public Actor {
|
||||||
|
|
||||||
FullMessageId get_replied_message(DialogId dialog_id, MessageId message_id, bool force, Promise<Unit> &&promise);
|
FullMessageId get_replied_message(DialogId dialog_id, MessageId message_id, bool force, Promise<Unit> &&promise);
|
||||||
|
|
||||||
|
MessageId get_dialog_pinned_message(DialogId dialog_id, Promise<Unit> &&promise);
|
||||||
|
|
||||||
|
void get_callback_query_message(DialogId dialog_id, MessageId message_id, int64 callback_query_id,
|
||||||
|
Promise<Unit> &&promise);
|
||||||
|
|
||||||
|
bool get_messages(DialogId dialog_id, const vector<MessageId> &message_ids, Promise<Unit> &&promise);
|
||||||
|
|
||||||
|
void get_message_from_server(FullMessageId full_message_id, Promise<Unit> &&promise,
|
||||||
|
tl_object_ptr<telegram_api::InputMessage> input_message = nullptr);
|
||||||
|
|
||||||
|
void get_messages_from_server(vector<FullMessageId> &&message_ids, Promise<Unit> &&promise,
|
||||||
|
tl_object_ptr<telegram_api::InputMessage> input_message = nullptr);
|
||||||
|
|
||||||
struct MessageThreadInfo {
|
struct MessageThreadInfo {
|
||||||
DialogId dialog_id;
|
DialogId dialog_id;
|
||||||
vector<MessageId> message_ids;
|
vector<MessageId> message_ids;
|
||||||
|
@ -598,16 +611,6 @@ class MessagesManager : public Actor {
|
||||||
void on_get_discussion_message(DialogId dialog_id, MessageId message_id, vector<FullMessageId> full_message_ids,
|
void on_get_discussion_message(DialogId dialog_id, MessageId message_id, vector<FullMessageId> full_message_ids,
|
||||||
Promise<MessageThreadInfo> &&promise);
|
Promise<MessageThreadInfo> &&promise);
|
||||||
|
|
||||||
MessageId get_dialog_pinned_message(DialogId dialog_id, Promise<Unit> &&promise);
|
|
||||||
|
|
||||||
bool get_messages(DialogId dialog_id, const vector<MessageId> &message_ids, Promise<Unit> &&promise);
|
|
||||||
|
|
||||||
void get_message_from_server(FullMessageId full_message_id, Promise<Unit> &&promise,
|
|
||||||
tl_object_ptr<telegram_api::InputMessage> input_message = nullptr);
|
|
||||||
|
|
||||||
void get_messages_from_server(vector<FullMessageId> &&message_ids, Promise<Unit> &&promise,
|
|
||||||
tl_object_ptr<telegram_api::InputMessage> input_message = nullptr);
|
|
||||||
|
|
||||||
bool is_message_edited_recently(FullMessageId full_message_id, int32 seconds);
|
bool is_message_edited_recently(FullMessageId full_message_id, int32 seconds);
|
||||||
|
|
||||||
Result<std::pair<string, bool>> get_message_link(FullMessageId full_message_id, bool for_group, bool for_comment);
|
Result<std::pair<string, bool>> get_message_link(FullMessageId full_message_id, bool for_group, bool for_comment);
|
||||||
|
@ -1710,8 +1713,6 @@ class MessagesManager : public Actor {
|
||||||
|
|
||||||
static int32 get_message_date(const tl_object_ptr<telegram_api::Message> &message_ptr);
|
static int32 get_message_date(const tl_object_ptr<telegram_api::Message> &message_ptr);
|
||||||
|
|
||||||
static tl_object_ptr<telegram_api::InputMessage> get_input_message(MessageId message_id);
|
|
||||||
|
|
||||||
static bool is_dialog_inited(const Dialog *d);
|
static bool is_dialog_inited(const Dialog *d);
|
||||||
|
|
||||||
int32 get_dialog_mute_until(const Dialog *d) const;
|
int32 get_dialog_mute_until(const Dialog *d) const;
|
||||||
|
|
|
@ -1102,6 +1102,29 @@ class GetChatPinnedMessageRequest : public RequestOnceActor {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class GetCallbackQueryMessageRequest : public RequestOnceActor {
|
||||||
|
DialogId dialog_id_;
|
||||||
|
MessageId message_id_;
|
||||||
|
int64 callback_query_id_;
|
||||||
|
|
||||||
|
void do_run(Promise<Unit> &&promise) override {
|
||||||
|
td->messages_manager_->get_callback_query_message(dialog_id_, message_id_, callback_query_id_, std::move(promise));
|
||||||
|
}
|
||||||
|
|
||||||
|
void do_send_result() override {
|
||||||
|
send_result(td->messages_manager_->get_message_object({dialog_id_, message_id_}));
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
GetCallbackQueryMessageRequest(ActorShared<Td> td, uint64 request_id, int64 dialog_id, int64 message_id,
|
||||||
|
int64 callback_query_id)
|
||||||
|
: RequestOnceActor(std::move(td), request_id)
|
||||||
|
, dialog_id_(dialog_id)
|
||||||
|
, message_id_(message_id)
|
||||||
|
, callback_query_id_(callback_query_id) {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class GetMessagesRequest : public RequestOnceActor {
|
class GetMessagesRequest : public RequestOnceActor {
|
||||||
DialogId dialog_id_;
|
DialogId dialog_id_;
|
||||||
vector<MessageId> message_ids_;
|
vector<MessageId> message_ids_;
|
||||||
|
@ -5157,15 +5180,20 @@ void Td::on_request(uint64 id, const td_api::getChatPinnedMessage &request) {
|
||||||
CREATE_REQUEST(GetChatPinnedMessageRequest, request.chat_id_);
|
CREATE_REQUEST(GetChatPinnedMessageRequest, request.chat_id_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, const td_api::getMessageThread &request) {
|
void Td::on_request(uint64 id, const td_api::getCallbackQueryMessage &request) {
|
||||||
CHECK_IS_USER();
|
CHECK_IS_BOT();
|
||||||
CREATE_REQUEST(GetMessageThreadRequest, request.chat_id_, request.message_id_);
|
CREATE_REQUEST(GetCallbackQueryMessageRequest, request.chat_id_, request.message_id_, request.callback_query_id_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, const td_api::getMessages &request) {
|
void Td::on_request(uint64 id, const td_api::getMessages &request) {
|
||||||
CREATE_REQUEST(GetMessagesRequest, request.chat_id_, request.message_ids_);
|
CREATE_REQUEST(GetMessagesRequest, request.chat_id_, request.message_ids_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Td::on_request(uint64 id, const td_api::getMessageThread &request) {
|
||||||
|
CHECK_IS_USER();
|
||||||
|
CREATE_REQUEST(GetMessageThreadRequest, request.chat_id_, request.message_id_);
|
||||||
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, const td_api::getMessageLink &request) {
|
void Td::on_request(uint64 id, const td_api::getMessageLink &request) {
|
||||||
auto r_message_link = messages_manager_->get_message_link(
|
auto r_message_link = messages_manager_->get_message_link(
|
||||||
{DialogId(request.chat_id_), MessageId(request.message_id_)}, request.for_album_, request.for_comment_);
|
{DialogId(request.chat_id_), MessageId(request.message_id_)}, request.for_album_, request.for_comment_);
|
||||||
|
|
|
@ -493,6 +493,8 @@ class Td final : public NetQueryCallback {
|
||||||
|
|
||||||
void on_request(uint64 id, const td_api::getChatPinnedMessage &request);
|
void on_request(uint64 id, const td_api::getChatPinnedMessage &request);
|
||||||
|
|
||||||
|
void on_request(uint64 id, const td_api::getCallbackQueryMessage &request);
|
||||||
|
|
||||||
void on_request(uint64 id, const td_api::getMessageThread &request);
|
void on_request(uint64 id, const td_api::getMessageThread &request);
|
||||||
|
|
||||||
void on_request(uint64 id, const td_api::getMessages &request);
|
void on_request(uint64 id, const td_api::getMessages &request);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user