128128use crate :: models:: { HasId , Snowflake , Timestamp } ;
129129use base64:: Engine ;
130130use serde:: { Deserialize , Serialize } ;
131+ use serde_json:: Value ;
131132
132133/// Represents a message in a guild channel.
133134#[ derive( Debug , Clone , PartialEq , Serialize , Deserialize ) ]
@@ -569,7 +570,7 @@ impl Default for GroupMessage {
569570#[ derive( Debug , Clone , PartialEq , Serialize , Deserialize ) ]
570571pub struct C2CMessage {
571572 /// The message's unique ID
572- pub id : Option < Snowflake > ,
573+ pub id : Option < String > ,
573574 /// The message content
574575 pub content : Option < String > ,
575576 /// Referenced message information
@@ -584,6 +585,8 @@ pub struct C2CMessage {
584585 pub timestamp : Option < Timestamp > ,
585586 /// The author of this message
586587 pub author : Option < C2CMessageUser > ,
588+ /// Message scene information
589+ pub message_scene : Option < Value > ,
587590 /// Event ID from the gateway
588591 pub event_id : Option < String > ,
589592}
@@ -600,6 +603,7 @@ impl C2CMessage {
600603 msg_seq : None ,
601604 timestamp : None ,
602605 author : None ,
606+ message_scene : None ,
603607 event_id : None ,
604608 }
605609 }
@@ -642,6 +646,7 @@ impl C2CMessage {
642646 author : data
643647 . get ( "author" )
644648 . map ( |v| C2CMessageUser :: from_data ( v. clone ( ) ) ) ,
649+ message_scene : data. get ( "message_scene" ) . cloned ( ) ,
645650 event_id : Some ( event_id) ,
646651 }
647652 }
@@ -845,17 +850,26 @@ impl GroupMessageUser {
845850}
846851
847852/// User information in a C2C message.
848- /// Represents a user in a C2C message.
849- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize ) ]
853+ /// Represents a user in a C2C message
854+ #[ derive( Debug , Clone , PartialEq , Serialize , Deserialize ) ]
850855pub struct C2CMessageUser {
851- /// The user's OpenID
856+ /// The user's ID
857+ pub id : Option < String > ,
858+ /// The user's union openid
859+ pub union_openid : Option < String > ,
860+ /// The user's openid
852861 pub user_openid : Option < String > ,
853862}
854863
855864impl C2CMessageUser {
856865 /// Creates a new C2C message user from API data.
857866 pub fn from_data ( data : serde_json:: Value ) -> Self {
858867 Self {
868+ id : data. get ( "id" ) . and_then ( |v| v. as_str ( ) ) . map ( String :: from) ,
869+ union_openid : data
870+ . get ( "union_openid" )
871+ . and_then ( |v| v. as_str ( ) )
872+ . map ( String :: from) ,
859873 user_openid : data
860874 . get ( "user_openid" )
861875 . and_then ( |v| v. as_str ( ) )
0 commit comments