diff --git a/td/telegram/LinkManager.cpp b/td/telegram/LinkManager.cpp index d16637465..b97b9e188 100644 --- a/td/telegram/LinkManager.cpp +++ b/td/telegram/LinkManager.cpp @@ -283,8 +283,17 @@ class LinkManager::InternalLinkBotStart final : public InternalLink { td_api::object_ptr get_internal_link_type_object() const final { bool autostart = autostart_; - if (Scheduler::context() != nullptr && bot_username_ == G()->get_option_string("premium_bot_username")) { - autostart = true; + if (Scheduler::context() != nullptr && !autostart) { + if (bot_username_ == G()->get_option_string("premium_bot_username")) { + autostart = true; + } else { + const Td *td = G()->td().get_actor_unsafe(); + auto dialog_id = td->messages_manager_->resolve_dialog_username(bot_username_); + if (dialog_id.is_valid() && dialog_id.get_type() == DialogType::User && + td->messages_manager_->get_dialog_has_last_message(dialog_id)) { + autostart = true; + } + } } return td_api::make_object(bot_username_, start_parameter_, autostart); } diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 07f86396b..bbea179ea 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -25952,6 +25952,11 @@ bool MessagesManager::get_dialog_silent_send_message(DialogId dialog_id) const { return d->notification_settings.silent_send_message; } +bool MessagesManager::get_dialog_has_last_message(DialogId dialog_id) const { + const auto *d = get_dialog(dialog_id); + return d != nullptr && d->last_message_id.is_valid(); +} + DialogId MessagesManager::get_dialog_default_send_message_as_dialog_id(DialogId dialog_id) const { auto *d = get_dialog(dialog_id); CHECK(d != nullptr); diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 94e7c0296..89b7c8bdf 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -433,6 +433,8 @@ class MessagesManager final : public Actor { bool get_dialog_silent_send_message(DialogId dialog_id) const; + bool get_dialog_has_last_message(DialogId dialog_id) const; + DialogId get_dialog_default_send_message_as_dialog_id(DialogId dialog_id) const; Result> send_message(