Add td_api::quickReplyMessage.
This commit is contained in:
parent
768afb8815
commit
4fff9a0417
@ -3722,6 +3722,18 @@ storyInteraction actor_id:MessageSender interaction_date:int32 block_list:BlockL
|
||||
storyInteractions total_count:int32 total_forward_count:int32 total_reaction_count:int32 interactions:vector<storyInteraction> next_offset:string = StoryInteractions;
|
||||
|
||||
|
||||
//@description Describes a message that can be used for quick reply
|
||||
//@id Unique message identifier among all quick replies
|
||||
//@sending_state The sending state of the message; may be null if the message isn't being sent and didn't fail to be sent
|
||||
//@forward_info Information about the initial message sender; may be null if none or unknown
|
||||
//@reply_to_message_id Information about the identifier of the quick reply message to which the message replies
|
||||
//@self_destruct_type The message's self-destruct type; may be null if none
|
||||
//@via_bot_user_id If non-zero, the user identifier of the bot through which this message was sent
|
||||
//@media_album_id Unique identifier of an album this message belongs to. Only audios, documents, photos and videos can be grouped together in albums
|
||||
//@content Content of the message
|
||||
quickReplyMessage id:int53 sending_state:MessageSendingState forward_info:messageForwardInfo reply_to_message_id:int53 self_destruct_type:MessageSelfDestructType via_bot_user_id:int53 media_album_id:int64 content:MessageContent = QuickReplyMessage;
|
||||
|
||||
|
||||
//@class PublicForward @description Describes a public forward or repost of a story
|
||||
|
||||
//@description Contains a public forward as a message @message Information about the message
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "td/telegram/QuickReplyManager.h"
|
||||
|
||||
#include "td/telegram/AuthManager.h"
|
||||
#include "td/telegram/ContactsManager.h"
|
||||
#include "td/telegram/Dependencies.h"
|
||||
#include "td/telegram/DialogManager.h"
|
||||
#include "td/telegram/MessageContent.h"
|
||||
@ -24,12 +25,6 @@ void QuickReplyManager::tear_down() {
|
||||
parent_.reset();
|
||||
}
|
||||
|
||||
td_api::object_ptr<td_api::MessageContent> QuickReplyManager::get_quick_reply_message_message_content_object(
|
||||
const QuickReplyMessage *m) const {
|
||||
return get_message_content_object(m->content.get(), td_, DialogId(), 0, m->is_content_secret, true, -1,
|
||||
m->invert_media, m->disable_web_page_preview);
|
||||
}
|
||||
|
||||
unique_ptr<QuickReplyManager::QuickReplyMessage> QuickReplyManager::create_message(
|
||||
telegram_api::object_ptr<telegram_api::Message> message_ptr, const char *source) const {
|
||||
LOG(DEBUG) << "Receive from " << source << " " << to_string(message_ptr);
|
||||
@ -162,4 +157,53 @@ void QuickReplyManager::add_quick_reply_message_dependencies(Dependencies &depen
|
||||
add_message_content_dependencies(dependencies, m->content.get(), is_bot);
|
||||
}
|
||||
|
||||
bool QuickReplyManager::can_resend_message(const QuickReplyMessage *m) const {
|
||||
if (m->send_error_code != 429) {
|
||||
return false;
|
||||
}
|
||||
if (m->forward_info != nullptr || m->real_forward_from_dialog_id.is_valid()) {
|
||||
return false;
|
||||
}
|
||||
if (m->via_bot_user_id.is_valid() || m->hide_via_bot) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
td_api::object_ptr<td_api::MessageSendingState> QuickReplyManager::get_message_sending_state_object(
|
||||
const QuickReplyMessage *m) const {
|
||||
CHECK(m != nullptr);
|
||||
if (m->message_id.is_yet_unsent()) {
|
||||
return td_api::make_object<td_api::messageSendingStatePending>(m->sending_id);
|
||||
}
|
||||
if (m->is_failed_to_send) {
|
||||
auto can_retry = can_resend_message(m);
|
||||
auto error_code = m->send_error_code > 0 ? m->send_error_code : 400;
|
||||
auto need_another_reply_quote =
|
||||
can_retry && error_code == 400 && m->send_error_message == CSlice("QUOTE_TEXT_INVALID");
|
||||
return td_api::make_object<td_api::messageSendingStateFailed>(
|
||||
td_api::make_object<td_api::error>(error_code, m->send_error_message), can_retry, false,
|
||||
need_another_reply_quote, false, max(m->try_resend_at - Time::now(), 0.0));
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
td_api::object_ptr<td_api::MessageContent> QuickReplyManager::get_quick_reply_message_message_content_object(
|
||||
const QuickReplyMessage *m) const {
|
||||
return get_message_content_object(m->content.get(), td_, DialogId(), 0, m->is_content_secret, true, -1,
|
||||
m->invert_media, m->disable_web_page_preview);
|
||||
}
|
||||
|
||||
td_api::object_ptr<td_api::quickReplyMessage> QuickReplyManager::get_quick_reply_message_object(
|
||||
const QuickReplyMessage *m, const char *source) const {
|
||||
CHECK(m != nullptr);
|
||||
auto forward_info =
|
||||
m->forward_info == nullptr ? nullptr : m->forward_info->get_message_forward_info_object(td_, false);
|
||||
return td_api::make_object<td_api::quickReplyMessage>(
|
||||
m->message_id.get(), get_message_sending_state_object(m), std::move(forward_info), m->reply_to_message_id.get(),
|
||||
m->ttl.get_message_self_destruct_type_object(),
|
||||
td_->contacts_manager_->get_user_id_object(m->via_bot_user_id, "via_bot_user_id"), m->media_album_id,
|
||||
get_quick_reply_message_message_content_object(m));
|
||||
}
|
||||
|
||||
} // namespace td
|
||||
|
@ -81,14 +81,21 @@ class QuickReplyManager final : public Actor {
|
||||
|
||||
void tear_down() final;
|
||||
|
||||
td_api::object_ptr<td_api::MessageContent> get_quick_reply_message_message_content_object(
|
||||
const QuickReplyMessage *m) const;
|
||||
|
||||
void add_quick_reply_message_dependencies(Dependencies &dependencies, const QuickReplyMessage *m) const;
|
||||
|
||||
unique_ptr<QuickReplyMessage> create_message(telegram_api::object_ptr<telegram_api::Message> message_ptr,
|
||||
const char *source) const;
|
||||
|
||||
bool can_resend_message(const QuickReplyMessage *m) const;
|
||||
|
||||
td_api::object_ptr<td_api::MessageSendingState> get_message_sending_state_object(const QuickReplyMessage *m) const;
|
||||
|
||||
td_api::object_ptr<td_api::MessageContent> get_quick_reply_message_message_content_object(
|
||||
const QuickReplyMessage *m) const;
|
||||
|
||||
td_api::object_ptr<td_api::quickReplyMessage> get_quick_reply_message_object(const QuickReplyMessage *m,
|
||||
const char *source) const;
|
||||
|
||||
Td *td_;
|
||||
ActorShared<> parent_;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user