@@ -677,11 +677,12 @@ message::message(class cluster* o) : message() {
677677 owner = o;
678678}
679679
680- message& message::set_reference (snowflake _message_id, snowflake _guild_id, snowflake _channel_id, bool fail_if_not_exists) {
680+ message& message::set_reference (snowflake _message_id, snowflake _guild_id, snowflake _channel_id, bool fail_if_not_exists, message_ref_type type ) {
681681 message_reference.channel_id = _channel_id;
682682 message_reference.guild_id = _guild_id;
683683 message_reference.message_id = _message_id;
684684 message_reference.fail_if_not_exists = fail_if_not_exists;
685+ message_reference.type = type;
685686 return *this ;
686687}
687688
@@ -1119,6 +1120,7 @@ json message::to_json(bool with_id, bool is_interaction_response) const {
11191120 /* Populate message reference */
11201121 if (message_reference.channel_id || message_reference.guild_id || message_reference.message_id ) {
11211122 j[" message_reference" ] = json::object ();
1123+ j[" message_reference" ][" type" ] = static_cast <uint32_t >(message_reference.type );
11221124 if (message_reference.channel_id ) {
11231125 j[" message_reference" ][" channel_id" ] = std::to_string (message_reference.channel_id );
11241126 }
@@ -1408,10 +1410,17 @@ message& message::fill_from_json(json* d, cache_policy_t cp) {
14081410 }
14091411 if (d->find (" message_reference" ) != d->end ()) {
14101412 json& mr = (*d)[" message_reference" ];
1413+ message_reference.type = static_cast <message_ref_type>(int8_not_null (&mr, " type" ));
14111414 message_reference.channel_id = snowflake_not_null (&mr, " channel_id" );
14121415 message_reference.guild_id = snowflake_not_null (&mr, " guild_id" );
14131416 message_reference.message_id = snowflake_not_null (&mr, " message_id" );
14141417 message_reference.fail_if_not_exists = bool_not_null (&mr, " fail_if_not_exists" );
1418+
1419+ if (message_reference.type == mrt_forward) {
1420+ for (auto & e : (*d)[" message_snapshots" ]) {
1421+ message_snapshots.messages .emplace_back (message ().fill_from_json (&(e[" message" ]), cp));
1422+ }
1423+ }
14151424 }
14161425 if (auto it = d->find (" poll" ); it != d->end ()) {
14171426 from_json (*it, attached_poll.emplace ());
0 commit comments