diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 95661800e..c504d79b8 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -4462,12 +4462,11 @@ getMessageEmbeddingCode chat_id:int53 message_id:int53 for_album:Bool = Text; getMessageLinkInfo url:string = MessageLinkInfo; -//@description Translates a message text or caption to the given language. Returns a 404 error if the translation can't be performed -//@chat_id Identifier of the chat to which the message belongs -//@message_id Identifier of the message +//@description Translates a text to the given language. Returns a 404 error if the translation can't be performed +//@text Text to translate //@from_language_code A two-letter ISO 639-1 language code of the language from which the message is translated. If empty, the language will be detected automatically //@to_language_code A two-letter ISO 639-1 language code of the language to which the message is translated -translateMessage chat_id:int53 message_id:int53 from_language_code:string to_language_code:string = Text; +translateText text:string from_language_code:string to_language_code:string = Text; //@description Returns list of message sender identifiers, which can be used to send messages in a chat @chat_id Chat identifier diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 3a078d43b..7b1bcba70 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -18049,26 +18049,10 @@ void MessagesManager::on_get_message_viewers(DialogId dialog_id, vector promise.set_value(td_->contacts_manager_->get_users_object(-1, user_ids)); } -void MessagesManager::translate_message(FullMessageId full_message_id, const string &from_language_code, - const string &to_language_code, - Promise> &&promise) { - auto dialog_id = full_message_id.get_dialog_id(); - Dialog *d = get_dialog_force(dialog_id, "translate_message"); - if (d == nullptr) { - return promise.set_error(Status::Error(400, "Chat not found")); - } - - auto m = get_message_force(d, full_message_id.get_message_id(), "translate_message"); - if (m == nullptr) { - return promise.set_error(Status::Error(400, "Message not found")); - } - - const FormattedText *text = get_message_content_text(m->content.get()); - if (text == nullptr) { - return promise.set_error(Status::Error(400, "Message have no text")); - } - - td_->create_handler(std::move(promise))->send(text->text, from_language_code, to_language_code); +void MessagesManager::translate_text(const string &text, const string &from_language_code, + const string &to_language_code, + Promise> &&promise) { + td_->create_handler(std::move(promise))->send(text, from_language_code, to_language_code); } void MessagesManager::get_dialog_info_full(DialogId dialog_id, Promise &&promise, const char *source) { diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 7666b450c..8dd83637a 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -609,8 +609,8 @@ class MessagesManager final : public Actor { void get_message_viewers(FullMessageId full_message_id, Promise> &&promise); - void translate_message(FullMessageId full_message_id, const string &from_language_code, - const string &to_language_code, Promise> &&promise); + void translate_text(const string &text, const string &from_language_code, const string &to_language_code, + Promise> &&promise); bool is_message_edited_recently(FullMessageId full_message_id, int32 seconds); diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 86ac0a3b2..4996da74b 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -4741,13 +4741,14 @@ void Td::on_request(uint64 id, td_api::getMessageLinkInfo &request) { CREATE_REQUEST(GetMessageLinkInfoRequest, std::move(request.url_)); } -void Td::on_request(uint64 id, td_api::translateMessage &request) { +void Td::on_request(uint64 id, td_api::translateText &request) { CHECK_IS_USER(); + CLEAN_INPUT_STRING(request.text_); CLEAN_INPUT_STRING(request.from_language_code_); CLEAN_INPUT_STRING(request.to_language_code_); CREATE_REQUEST_PROMISE(); - messages_manager_->translate_message({DialogId(request.chat_id_), MessageId(request.message_id_)}, - request.from_language_code_, request.to_language_code_, std::move(promise)); + messages_manager_->translate_text(request.text_, request.from_language_code_, request.to_language_code_, + std::move(promise)); } void Td::on_request(uint64 id, const td_api::getFile &request) { diff --git a/td/telegram/Td.h b/td/telegram/Td.h index f95af0cfa..1fa04dd28 100644 --- a/td/telegram/Td.h +++ b/td/telegram/Td.h @@ -533,7 +533,7 @@ class Td final : public Actor { void on_request(uint64 id, td_api::getMessageLinkInfo &request); - void on_request(uint64 id, td_api::translateMessage &request); + void on_request(uint64 id, td_api::translateText &request); void on_request(uint64 id, const td_api::getFile &request); diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index b095ec185..36dd82594 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -2777,14 +2777,12 @@ class CliClient final : public Actor { send_request(td_api::make_object(chat_id, message_id, for_album)); } else if (op == "gmli") { send_request(td_api::make_object(args)); - } else if (op == "tm") { - ChatId chat_id; - MessageId message_id; + } else if (op == "tt") { + string text; string from_language_code; string to_language_code; - get_args(args, chat_id, message_id, from_language_code, to_language_code); - send_request( - td_api::make_object(chat_id, message_id, from_language_code, to_language_code)); + get_args(args, text, from_language_code, to_language_code); + send_request(td_api::make_object(text, from_language_code, to_language_code)); } else if (op == "gf" || op == "GetFile") { send_request(td_api::make_object(as_file_id(args))); } else if (op == "gfdps") {