@@ -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