@@ -80,7 +80,10 @@ class ModalSubmitInteraction extends BaseInteraction {
8080 * @type {Array<ActionRowModalData | LabelModalData | TextDisplayModalData> }
8181 */
8282 this . components = data . data . components ?. map ( component =>
83- ModalSubmitInteraction . transformComponent ( component , data . data . resolved ) ,
83+ ModalSubmitInteraction . transformComponent ( component , data . data . resolved , {
84+ client : this . client ,
85+ guild : this . guild ,
86+ } ) ,
8487 ) ;
8588
8689 /**
@@ -121,22 +124,25 @@ class ModalSubmitInteraction extends BaseInteraction {
121124 * Transforms component data to discord.js-compatible data
122125 * @param {* } rawComponent The data to transform
123126 * @param {APIInteractionDataResolved } [resolved] The resolved data for the interaction
127+ * @param {* } [extra] Extra data required for the transformation
124128 * @returns {ModalData[] }
125129 */
126- static transformComponent ( rawComponent , resolved ) {
130+ static transformComponent ( rawComponent , resolved , { client , guild } = { } ) {
127131 if ( 'components' in rawComponent ) {
128132 return {
129133 type : rawComponent . type ,
130134 id : rawComponent . id ,
131- components : rawComponent . components . map ( component => this . transformComponent ( component , resolved ) ) ,
135+ components : rawComponent . components . map ( component =>
136+ this . transformComponent ( component , resolved , { client, guild } ) ,
137+ ) ,
132138 } ;
133139 }
134140
135141 if ( 'component' in rawComponent ) {
136142 return {
137143 type : rawComponent . type ,
138144 id : rawComponent . id ,
139- component : this . transformComponent ( rawComponent . component , resolved ) ,
145+ component : this . transformComponent ( rawComponent . component , resolved , { client , guild } ) ,
140146 } ;
141147 }
142148
@@ -164,19 +170,25 @@ class ModalSubmitInteraction extends BaseInteraction {
164170 return collection . size ? collection : null ;
165171 } ;
166172
167- const users = resolveCollection ( resolved . users , user => this . client . users . _add ( user ) ) ;
173+ const users = resolveCollection ( resolved . users , user => client . users . _add ( user ) ) ;
168174 if ( users ) data . users = users ;
169175
170176 const channels = resolveCollection (
171177 resolved . channels ,
172- channel => this . client . channels . _add ( channel , this . guild ) ?? channel ,
178+ channel => client . channels . _add ( channel , guild ) ?? channel ,
173179 ) ;
174180 if ( channels ) data . channels = channels ;
175181
176- const members = resolveCollection ( resolved . members , member => this . guild ?. members . _add ( member ) ?? member ) ;
177- if ( members ) data . members = members ;
182+ const members = new Collection ( ) ;
178183
179- const roles = resolveCollection ( resolved . roles , role => this . guild ?. roles . _add ( role ) ?? role ) ;
184+ for ( const [ id , member ] of Object . entries ( resolved . members ) ) {
185+ const user = users . get ( id ) ;
186+ members . set ( id , guild ?. members . _add ( { user, ...member } ) ?? member ) ;
187+ }
188+
189+ if ( members . size > 0 ) data . members = members ;
190+
191+ const roles = resolveCollection ( resolved . roles , role => guild ?. roles . _add ( role ) ?? role ) ;
180192 if ( roles ) data . roles = roles ;
181193 }
182194 }
0 commit comments