@@ -23,8 +23,9 @@ pub enum DiscordMessageData {
2323 content : String ,
2424 sent_time : DateTime < Utc > ,
2525 list_item_id : Snowflake ,
26+ reactions : DiscordReactionList
2627 } ,
27- Received ( Arc < serenity:: model:: channel:: Message > , Option < Arc < serenity:: model:: guild:: Member > > ) ,
28+ Received ( Arc < serenity:: model:: channel:: Message > , Option < Arc < serenity:: model:: guild:: Member > > , DiscordReactionList ) ,
2829}
2930
3031#[ derive( Clone ) ]
@@ -33,7 +34,6 @@ pub struct DiscordMessage {
3334 pub channel : Arc < serenity:: model:: channel:: Channel > ,
3435 pub data : DiscordMessageData ,
3536 pub content : OnceLock < View < DiscordMessageContent > > ,
36- pub reactions : DiscordReactionList ,
3737}
3838
3939impl DiscordMessage {
@@ -46,11 +46,12 @@ impl DiscordMessage {
4646 }
4747 . unwrap ( ) ;
4848
49+ let reactions = ( & msg. reactions ) . into ( ) ;
50+
4951 Self {
5052 client,
5153 channel,
52- reactions : ( & msg. reactions ) . into ( ) ,
53- data : DiscordMessageData :: Received ( msg, member) ,
54+ data : DiscordMessageData :: Received ( msg, member, reactions) ,
5455 content : OnceLock :: new ( ) ,
5556 }
5657 }
@@ -61,11 +62,11 @@ impl DiscordMessage {
6162 channel : Arc < serenity:: model:: channel:: Channel > ,
6263 member : Option < Arc < serenity:: model:: guild:: Member > > ,
6364 ) -> Self {
65+ let reactions = ( & msg. reactions ) . into ( ) ;
6466 Self {
6567 client,
6668 channel,
67- reactions : ( & msg. reactions ) . into ( ) ,
68- data : DiscordMessageData :: Received ( msg, member) ,
69+ data : DiscordMessageData :: Received ( msg, member, reactions) ,
6970 content : OnceLock :: new ( ) ,
7071 }
7172 }
@@ -118,7 +119,7 @@ impl Message for DiscordMessage {
118119 } ,
119120 } ,
120121
121- DiscordMessageData :: Received ( message, member) => DiscordMessageAuthor {
122+ DiscordMessageData :: Received ( message, member, .. ) => DiscordMessageAuthor {
122123 client : self . client . clone ( ) ,
123124 data : match member {
124125 None => author:: DiscordMessageAuthorData :: NonMemberAuthor ( message. clone ( ) ) ,
@@ -135,7 +136,7 @@ impl Message for DiscordMessage {
135136 . get_or_init ( || {
136137 let content = match & self . data {
137138 DiscordMessageData :: Pending { content, .. } => DiscordMessageContent :: pending ( content. clone ( ) ) ,
138- DiscordMessageData :: Received ( message, _) => DiscordMessageContent :: received ( message) ,
139+ DiscordMessageData :: Received ( message, _, reactions ) => DiscordMessageContent :: received ( message, reactions ) ,
139140 } ;
140141
141142 cx. new_view ( |_cx| content)
@@ -145,15 +146,15 @@ impl Message for DiscordMessage {
145146
146147 fn get_identifier ( & self ) -> Option < Snowflake > {
147148 match & self . data {
148- DiscordMessageData :: Received ( message, _ ) => Some ( message. id . into ( ) ) ,
149+ DiscordMessageData :: Received ( message, .. ) => Some ( message. id . into ( ) ) ,
149150 DiscordMessageData :: Pending { .. } => None ,
150151 }
151152 }
152153
153154 fn get_nonce ( & self ) -> impl PartialEq {
154155 match & self . data {
155156 DiscordMessageData :: Pending { nonce, .. } => NonceState :: Fixed ( nonce) ,
156- DiscordMessageData :: Received ( message, _ ) => NonceState :: Discord ( & message. nonce ) ,
157+ DiscordMessageData :: Received ( message, .. ) => NonceState :: Discord ( & message. nonce ) ,
157158 }
158159 }
159160
@@ -169,12 +170,15 @@ impl Message for DiscordMessage {
169170 fn get_timestamp ( & self ) -> Option < DateTime < Utc > > {
170171 match & self . data {
171172 DiscordMessageData :: Pending { sent_time, .. } => Some ( * sent_time) ,
172- DiscordMessageData :: Received ( message, _ ) => DateTime :: from_timestamp_millis ( message. timestamp . timestamp_millis ( ) ) ,
173+ DiscordMessageData :: Received ( message, .. ) => DateTime :: from_timestamp_millis ( message. timestamp . timestamp_millis ( ) ) ,
173174 }
174175 }
175176
176177 fn get_reactions ( & mut self ) -> & mut impl ReactionList {
177- & mut self . reactions
178+ match & mut self . data {
179+ DiscordMessageData :: Pending { reactions, .. } => reactions,
180+ DiscordMessageData :: Received ( _, _, reactions) => reactions,
181+ }
178182 }
179183}
180184
@@ -184,7 +188,7 @@ impl AsyncListItem for DiscordMessage {
184188 fn get_list_identifier ( & self ) -> Self :: Identifier {
185189 match & self . data {
186190 DiscordMessageData :: Pending { list_item_id, .. } => * list_item_id,
187- DiscordMessageData :: Received ( message, _ ) => message. id . into ( ) ,
191+ DiscordMessageData :: Received ( message, .. ) => message. id . into ( ) ,
188192 }
189193 }
190194}
0 commit comments