8

公式の TDLib C++ の例を使用して、フォーマットされたマークダウン テキストを含むメッセージを送信しようとしています。

これが私のコードです:

auto send_message = td_api::make_object<td_api::sendMessage>();
send_message->chat_id_ = -1001424068198;
auto message_content = td_api::make_object<td_api::inputMessageText>();

std::string text = "Hello! **how are u?**";
message_content->text_ = td_api::make_object<td_api::formattedText>();     
message_content->text_->text_ = std::move(text);      
send_message->input_message_content_ = std::move(message_content);
send_query(std::move(send_message), {});

"Hello! how are u? " が表示されることを期待していますが、マークダウン形式が適用されていないコードに書かれているとおりのメッセージが表示されます。

TDLibに強制的に解析させる方法を見つけようとして、Googleで何時間も費やしました。

更新:解決しました!

助けてくれてありがとうAzeem!

この例を使用すると、次のコードは解析されたメッセージを送信する必要があります (VS 2019 でテスト済み)

void sendMsg(INT64 chatID, INT64 ReplyTo, const char* textMsg) {
const std::string text = textMsg;
auto textParseMarkdown = td_api::make_object<td_api::textParseModeMarkdown>(2);
auto parseTextEntities = td_api::make_object<td_api::parseTextEntities>(text, std::move(textParseMarkdown));
td::Client::Request parseRequest{ 123, std::move(parseTextEntities) };
auto parseResponse = td::Client::execute(std::move(parseRequest));

if (parseResponse.object->get_id()  == td_api::formattedText::ID) {
    auto formattedText = td_api::make_object<td_api::formattedText>();
    formattedText = td_api::move_object_as<td_api::formattedText>(parseResponse.object);

    auto send_message = td_api::make_object<td_api::sendMessage>();
    send_message->chat_id_ = chatID;
    auto message_content = td_api::make_object<td_api::inputMessageText>();

    message_content->text_ = std::move(formattedText);
    send_message->input_message_content_ = std::move(message_content);
    send_message->reply_to_message_id_ = ReplyTo;
    send_query(std::move(send_message), {});
}

}

4

1 に答える 1