Add td_api::messageChatChosen.
This commit is contained in:
parent
6f3d7ac308
commit
06a432a373
@ -2455,6 +2455,9 @@ messageGiftedPremium currency:string amount:int53 month_count:int32 sticker:stic
|
|||||||
//@description A contact has registered with Telegram
|
//@description A contact has registered with Telegram
|
||||||
messageContactRegistered = MessageContent;
|
messageContactRegistered = MessageContent;
|
||||||
|
|
||||||
|
//@description The user chosen a chat, which was requested by the bot @chat_id Identifier of the chosen chat @button_id Identifier of the keyboard button with the request
|
||||||
|
messageChatChosen chat_id:int53 button_id:int32 = MessageContent;
|
||||||
|
|
||||||
//@description The current user has connected a website by logging in using Telegram Login Widget on it @domain_name Domain name of the connected website
|
//@description The current user has connected a website by logging in using Telegram Login Widget on it @domain_name Domain name of the connected website
|
||||||
messageWebsiteConnected domain_name:string = MessageContent;
|
messageWebsiteConnected domain_name:string = MessageContent;
|
||||||
|
|
||||||
|
@ -407,6 +407,7 @@ bool DialogAction::is_canceled_by_message_of_type(MessageContentType message_con
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
|
@ -861,6 +861,20 @@ class MessageWriteAccessAllowed final : public MessageContent {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MessageRequestedDialog final : public MessageContent {
|
||||||
|
public:
|
||||||
|
DialogId dialog_id;
|
||||||
|
int32 button_id = 0;
|
||||||
|
|
||||||
|
MessageRequestedDialog() = default;
|
||||||
|
MessageRequestedDialog(DialogId dialog_id, int32 button_id) : dialog_id(dialog_id), button_id(button_id) {
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageContentType get_type() const final {
|
||||||
|
return MessageContentType::RequestedDialog;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
template <class StorerT>
|
template <class StorerT>
|
||||||
static void store(const MessageContent *content, StorerT &storer) {
|
static void store(const MessageContent *content, StorerT &storer) {
|
||||||
CHECK(content != nullptr);
|
CHECK(content != nullptr);
|
||||||
@ -1224,6 +1238,12 @@ static void store(const MessageContent *content, StorerT &storer) {
|
|||||||
}
|
}
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
break;
|
break;
|
||||||
|
case MessageContentType::RequestedDialog: {
|
||||||
|
const auto *m = static_cast<const MessageRequestedDialog *>(content);
|
||||||
|
store(m->dialog_id, storer);
|
||||||
|
store(m->button_id, storer);
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
}
|
}
|
||||||
@ -1723,6 +1743,13 @@ static void parse(unique_ptr<MessageContent> &content, ParserT &parser) {
|
|||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
content = make_unique<MessageWriteAccessAllowed>();
|
content = make_unique<MessageWriteAccessAllowed>();
|
||||||
break;
|
break;
|
||||||
|
case MessageContentType::RequestedDialog: {
|
||||||
|
auto m = make_unique<MessageRequestedDialog>();
|
||||||
|
parse(m->dialog_id, parser);
|
||||||
|
parse(m->button_id, parser);
|
||||||
|
content = std::move(m);
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
LOG(FATAL) << "Have unknown message content type " << static_cast<int32>(content_type);
|
LOG(FATAL) << "Have unknown message content type " << static_cast<int32>(content_type);
|
||||||
}
|
}
|
||||||
@ -2349,6 +2376,7 @@ bool can_have_input_media(const Td *td, const MessageContent *content, bool is_s
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
return false;
|
return false;
|
||||||
case MessageContentType::Animation:
|
case MessageContentType::Animation:
|
||||||
case MessageContentType::Audio:
|
case MessageContentType::Audio:
|
||||||
@ -2474,6 +2502,7 @@ SecretInputMedia get_secret_input_media(const MessageContent *content, Td *td,
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -2599,6 +2628,7 @@ static tl_object_ptr<telegram_api::InputMedia> get_input_media_impl(
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -2768,6 +2798,7 @@ void delete_message_content_thumbnail(MessageContent *content, Td *td) {
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -2954,6 +2985,7 @@ Status can_send_message_content(DialogId dialog_id, const MessageContent *conten
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
}
|
}
|
||||||
return Status::OK();
|
return Status::OK();
|
||||||
@ -3087,6 +3119,7 @@ static int32 get_message_content_media_index_mask(const MessageContent *content,
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
return 0;
|
return 0;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -3878,6 +3911,14 @@ void merge_message_contents(Td *td, const MessageContent *old_content, MessageCo
|
|||||||
}
|
}
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
break;
|
break;
|
||||||
|
case MessageContentType::RequestedDialog: {
|
||||||
|
const auto *old_ = static_cast<const MessageRequestedDialog *>(old_content);
|
||||||
|
const auto *new_ = static_cast<const MessageRequestedDialog *>(new_content);
|
||||||
|
if (old_->dialog_id != new_->dialog_id || old_->button_id != new_->button_id) {
|
||||||
|
need_update = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
break;
|
break;
|
||||||
@ -4014,6 +4055,7 @@ bool merge_message_content_file_id(Td *td, MessageContent *message_content, File
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
LOG(ERROR) << "Receive new file " << new_file_id << " in a sent message of the type " << content_type;
|
LOG(ERROR) << "Receive new file " << new_file_id << " in a sent message of the type " << content_type;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -5003,6 +5045,7 @@ unique_ptr<MessageContent> dup_message_content(Td *td, DialogId dialog_id, const
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
return nullptr;
|
return nullptr;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -5324,8 +5367,16 @@ unique_ptr<MessageContent> get_action_message_content(Td *td, tl_object_ptr<tele
|
|||||||
}
|
}
|
||||||
case telegram_api::messageActionAttachMenuBotAllowed::ID:
|
case telegram_api::messageActionAttachMenuBotAllowed::ID:
|
||||||
return td::make_unique<MessageWriteAccessAllowed>();
|
return td::make_unique<MessageWriteAccessAllowed>();
|
||||||
case telegram_api::messageActionRequestedPeer::ID:
|
case telegram_api::messageActionRequestedPeer::ID: {
|
||||||
return td::make_unique<MessageUnsupported>();
|
auto action = move_tl_object_as<telegram_api::messageActionRequestedPeer>(action_ptr);
|
||||||
|
DialogId dialog_id(action->peer_);
|
||||||
|
if (!dialog_id.is_valid()) {
|
||||||
|
LOG(ERROR) << "Receive invalid " << oneline(to_string(action));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return make_unique<MessageRequestedDialog>(dialog_id, action->button_id_);
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
}
|
}
|
||||||
@ -5627,6 +5678,10 @@ tl_object_ptr<td_api::MessageContent> get_message_content_object(const MessageCo
|
|||||||
}
|
}
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
return make_tl_object<td_api::messageBotWriteAccessAllowed>();
|
return make_tl_object<td_api::messageBotWriteAccessAllowed>();
|
||||||
|
case MessageContentType::RequestedDialog: {
|
||||||
|
const auto *m = static_cast<const MessageRequestedDialog *>(content);
|
||||||
|
return make_tl_object<td_api::messageChatChosen>(m->dialog_id.get(), m->button_id);
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -6024,6 +6079,7 @@ string get_message_content_search_text(const Td *td, const MessageContent *conte
|
|||||||
case MessageContentType::GiftPremium:
|
case MessageContentType::GiftPremium:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
return string();
|
return string();
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -6157,7 +6213,7 @@ void update_failed_to_send_message_content(Td *td, unique_ptr<MessageContent> &c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_message_content_dependencies(Dependencies &dependencies, const MessageContent *message_content) {
|
void add_message_content_dependencies(Dependencies &dependencies, const MessageContent *message_content, bool is_bot) {
|
||||||
switch (message_content->get_type()) {
|
switch (message_content->get_type()) {
|
||||||
case MessageContentType::Text: {
|
case MessageContentType::Text: {
|
||||||
const auto *content = static_cast<const MessageText *>(message_content);
|
const auto *content = static_cast<const MessageText *>(message_content);
|
||||||
@ -6309,6 +6365,13 @@ void add_message_content_dependencies(Dependencies &dependencies, const MessageC
|
|||||||
break;
|
break;
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
break;
|
break;
|
||||||
|
case MessageContentType::RequestedDialog: {
|
||||||
|
const auto *content = static_cast<const MessageRequestedDialog *>(message_content);
|
||||||
|
if (!is_bot) {
|
||||||
|
dependencies.add_dialog_and_dependencies(content->dialog_id);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
break;
|
break;
|
||||||
|
@ -254,7 +254,7 @@ void update_expired_message_content(unique_ptr<MessageContent> &content);
|
|||||||
|
|
||||||
void update_failed_to_send_message_content(Td *td, unique_ptr<MessageContent> &content);
|
void update_failed_to_send_message_content(Td *td, unique_ptr<MessageContent> &content);
|
||||||
|
|
||||||
void add_message_content_dependencies(Dependencies &dependencies, const MessageContent *message_content);
|
void add_message_content_dependencies(Dependencies &dependencies, const MessageContent *message_content, bool is_bot);
|
||||||
|
|
||||||
void update_forum_topic_info_by_service_message_content(Td *td, const MessageContent *content, DialogId dialog_id,
|
void update_forum_topic_info_by_service_message_content(Td *td, const MessageContent *content, DialogId dialog_id,
|
||||||
MessageId top_thread_message_id);
|
MessageId top_thread_message_id);
|
||||||
|
@ -118,6 +118,8 @@ StringBuilder &operator<<(StringBuilder &string_builder, MessageContentType cont
|
|||||||
return string_builder << "SuggestProfilePhoto";
|
return string_builder << "SuggestProfilePhoto";
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
return string_builder << "WriteAccessAllowed";
|
return string_builder << "WriteAccessAllowed";
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
|
return string_builder << "ChatChosen";
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
return string_builder;
|
return string_builder;
|
||||||
@ -180,6 +182,7 @@ bool is_allowed_media_group_content(MessageContentType content_type) {
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -250,6 +253,7 @@ bool is_secret_message_content(int32 ttl, MessageContentType content_type) {
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -313,6 +317,7 @@ bool is_service_message_content(MessageContentType content_type) {
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -376,6 +381,7 @@ bool can_have_message_content_caption(MessageContentType content_type) {
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
|
@ -67,7 +67,8 @@ enum class MessageContentType : int32 {
|
|||||||
TopicCreate,
|
TopicCreate,
|
||||||
TopicEdit,
|
TopicEdit,
|
||||||
SuggestProfilePhoto,
|
SuggestProfilePhoto,
|
||||||
WriteAccessAllowed
|
WriteAccessAllowed,
|
||||||
|
RequestedDialog
|
||||||
};
|
};
|
||||||
|
|
||||||
StringBuilder &operator<<(StringBuilder &string_builder, MessageContentType content_type);
|
StringBuilder &operator<<(StringBuilder &string_builder, MessageContentType content_type);
|
||||||
|
@ -26074,7 +26074,7 @@ void MessagesManager::add_message_dependencies(Dependencies &dependencies, const
|
|||||||
m->reactions->add_min_channels(td_);
|
m->reactions->add_min_channels(td_);
|
||||||
m->reactions->add_dependencies(dependencies);
|
m->reactions->add_dependencies(dependencies);
|
||||||
}
|
}
|
||||||
add_message_content_dependencies(dependencies, m->content.get());
|
add_message_content_dependencies(dependencies, m->content.get(), td_->auth_manager_->is_bot());
|
||||||
add_reply_markup_dependencies(dependencies, m->reply_markup.get());
|
add_reply_markup_dependencies(dependencies, m->reply_markup.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -27705,6 +27705,7 @@ bool MessagesManager::can_edit_message(DialogId dialog_id, const Message *m, boo
|
|||||||
case MessageContentType::TopicEdit:
|
case MessageContentType::TopicEdit:
|
||||||
case MessageContentType::SuggestProfilePhoto:
|
case MessageContentType::SuggestProfilePhoto:
|
||||||
case MessageContentType::WriteAccessAllowed:
|
case MessageContentType::WriteAccessAllowed:
|
||||||
|
case MessageContentType::RequestedDialog:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user