@@ -23,17 +23,22 @@ public class CacheMessageModel : DiscordCacheBaseModel
2323 public bool IsSuppressed { get ; set ; }
2424 public bool MentionedEveryone { get ; set ; }
2525
26- public ulong [ ] MentionedChannelIds { get ; set ; }
27- public ulong [ ] MentionedRoleIds { get ; set ; }
28- public ulong [ ] MentionedUserIds { get ; set ; }
26+ [ BsonIgnoreIfNull ]
27+ public ulong [ ] ? MentionedChannelIds { get ; set ; }
28+ [ BsonIgnoreIfNull ]
29+ public ulong [ ] ? MentionedRoleIds { get ; set ; }
30+ [ BsonIgnoreIfNull ]
31+ public ulong [ ] ? MentionedUserIds { get ; set ; }
2932 [ BsonIgnoreIfNull ]
3033 public CacheMessageActivity ? Activity { get ; set ; }
3134 [ BsonIgnoreIfNull ]
3235 public CacheMessageApplication ? Application { get ; set ; }
3336 [ BsonIgnoreIfNull ]
3437 public CacheMessageReference ? Reference { get ; set ; }
35- public Dictionary < CacheEmote , CacheReactionMetadata > Reactions { get ; set ; }
36- public CacheMessageComponent [ ] Components { get ; set ; }
38+ [ BsonIgnoreIfNull ]
39+ public Dictionary < CacheEmote , CacheReactionMetadata > ? Reactions { get ; set ; }
40+ [ BsonIgnoreIfNull ]
41+ public CacheMessageComponent [ ] ? Components { get ; set ; }
3742 [ BsonIgnoreIfNull ]
3843 public CacheStickerItem [ ] ? Stickers { get ; set ; }
3944 [ BsonIgnoreIfNull ]
@@ -42,6 +47,8 @@ public class CacheMessageModel : DiscordCacheBaseModel
4247 public CacheMessageInteraction ? Interaction { get ; set ; }
4348 [ BsonIgnoreIfNull ]
4449 public CacheMessageInteractionMetadata ? InteractionMetadata { get ; set ; }
50+ [ BsonIgnoreIfNull ]
51+ public List < CacheMessageAttachment > ? Attachments { get ; set ; }
4552 #endregion
4653
4754 #region ISnowflakeEntity
@@ -58,71 +65,77 @@ public CacheMessageModel()
5865 {
5966 Content = "" ;
6067 ContentClean = "" ;
61- Embeds = Array . Empty < CacheMessageEmbed > ( ) ;
62- Tags = Array . Empty < CacheMessageTag > ( ) ;
6368 IsDeleted = false ;
6469 DeletedTimestamp = DateTimeOffset . FromUnixTimeMilliseconds ( 0 ) ;
65- MentionedChannelIds = [ ] ;
66- MentionedRoleIds = [ ] ;
67- MentionedUserIds = [ ] ;
68- Reactions = [ ] ;
69- Components = [ ] ;
7070 }
7171
7272 public CacheMessageModel Update ( IMessage message )
7373 {
74- this . Content = message . Content ;
75- this . Timestamp = message . Timestamp ;
76- this . EditedTimestamp = message . EditedTimestamp ;
77- this . Embeds = message . Embeds . Select ( CacheMessageEmbed . FromExisting )
78- . Where ( v => v != null )
79- . Cast < CacheMessageEmbed > ( )
80- . ToArray ( ) ;
81- this . Tags = message . Tags . Select ( CacheMessageTag . FromExisting )
82- . Where ( v => v != null )
83- . Cast < CacheMessageTag > ( )
84- . ToArray ( ) ;
85- this . Source = message . Source ;
86- this . IsTTS = message . IsTTS ;
87- this . Pinned = message . IsPinned ;
88- this . IsSuppressed = message . IsSuppressed ;
89- this . MentionedEveryone = message . MentionedEveryone ;
90- this . MentionedChannelIds = message . MentionedChannelIds . ToArray ( ) ;
91- this . MentionedRoleIds = message . MentionedRoleIds . ToArray ( ) ;
92- this . MentionedUserIds = message . MentionedUserIds . ToArray ( ) ;
93- this . Activity = CacheMessageActivity . FromExisting ( message . Activity ) ;
94- this . Application = CacheMessageApplication . FromExisting ( message . Application ) ;
95- this . Reference = CacheMessageReference . FromExisting ( message . Reference ) ;
96- this . Components = message . Components
74+ Content = message . Content ;
75+ Timestamp = message . Timestamp ;
76+ EditedTimestamp = message . EditedTimestamp ;
77+ Embeds = message . Embeds . Count == 0 ? null
78+ : message . Embeds . Select ( CacheMessageEmbed . FromExisting )
79+ . Where ( v => v != null )
80+ . Cast < CacheMessageEmbed > ( )
81+ . ToArray ( ) ;
82+ Tags = message . Tags . Count == 0 ? null
83+ : message . Tags . Select ( CacheMessageTag . FromExisting )
84+ . Where ( v => v != null )
85+ . Cast < CacheMessageTag > ( )
86+ . ToArray ( ) ;
87+ Source = message . Source ;
88+ IsTTS = message . IsTTS ;
89+ Pinned = message . IsPinned ;
90+ IsSuppressed = message . IsSuppressed ;
91+ MentionedEveryone = message . MentionedEveryone ;
92+ MentionedChannelIds = message . MentionedChannelIds . Count == 0
93+ ? null : message . MentionedChannelIds . ToArray ( ) ;
94+ MentionedRoleIds = message . MentionedRoleIds . Count == 0
95+ ? null : message . MentionedRoleIds . ToArray ( ) ;
96+ MentionedUserIds = message . MentionedUserIds . Count == 0
97+ ? null : message . MentionedUserIds . ToArray ( ) ;
98+ Activity = CacheMessageActivity . FromExisting ( message . Activity ) ;
99+ Application = CacheMessageApplication . FromExisting ( message . Application ) ;
100+ Reference = CacheMessageReference . FromExisting ( message . Reference ) ;
101+ Components = message . Components . Count == 0 ? null
102+ : message . Components
97103 . Select ( CacheMessageComponent . FromExisting )
98104 . Where ( v => v != null )
99105 . Cast < CacheMessageComponent > ( )
100106 . ToArray ( ) ;
101- this . Stickers = message . Stickers
102- . Select ( CacheStickerItem . FromExisting )
103- . Where ( v => v != null )
104- . Cast < CacheStickerItem > ( )
105- . ToArray ( ) ;
106- this . Flags = message . Flags ;
107+ Stickers = message . Stickers . Count == 0 ? null
108+ : message . Stickers
109+ . Select ( CacheStickerItem . FromExisting )
110+ . Where ( v => v != null )
111+ . Cast < CacheStickerItem > ( )
112+ . ToArray ( ) ;
113+ Flags = message . Flags ;
107114 if ( message is IUserMessage usrMsg )
108115 {
109- this . InteractionMetadata = CacheMessageInteractionMetadata . FromExisting ( usrMsg . InteractionMetadata ) ;
116+ InteractionMetadata = CacheMessageInteractionMetadata . FromExisting ( usrMsg . InteractionMetadata ) ;
110117 }
111118 else
112119 {
113- this . InteractionMetadata = null ;
120+ InteractionMetadata = null ;
114121 }
115- this . Interaction = null ;
116- this . CreatedAt = message . CreatedAt ;
117- this . Snowflake = message . Id ;
118- this . AuthorId = message . Author . Id ;
119- this . ChannelId = message . Channel . Id ;
120- this . GuildId = 0 ;
122+ Interaction = null ;
123+ CreatedAt = message . CreatedAt ;
124+ Snowflake = message . Id ;
125+ AuthorId = message . Author . Id ;
126+ ChannelId = message . Channel . Id ;
127+ GuildId = 0 ;
121128
122- if ( message != null && message . Channel is SocketGuildChannel sgc )
129+ if ( message . Channel is SocketGuildChannel sgc )
123130 {
124- this . GuildId = sgc . Guild . Id ;
131+ GuildId = sgc . Guild . Id ;
125132 }
133+
134+ Attachments = message . Attachments == null || message . Attachments . Count < 1
135+ ? null
136+ : message . Attachments . Select ( CacheMessageAttachment . FromExisting )
137+ . Where ( e => e != null )
138+ . Cast < CacheMessageAttachment > ( ) . ToList ( ) ;
126139 return this ;
127140 }
128141 public static CacheMessageModel ? FromExisting ( IMessage ? message )
0 commit comments