Skip to content

Commit 11d195d

Browse files
fix: Prevent crash on no select menu option (#8881)
* fix: no crash on no option * refactor: consistency in ?? Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
1 parent f13ff5c commit 11d195d

File tree

4 files changed

+21
-21
lines changed

4 files changed

+21
-21
lines changed

packages/discord.js/src/structures/ChannelSelectMenuInteraction.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,21 @@ const MessageComponentInteraction = require('./MessageComponentInteraction');
1010
class ChannelSelectMenuInteraction extends MessageComponentInteraction {
1111
constructor(client, data) {
1212
super(client, data);
13+
const { resolved, values } = data.data;
1314

1415
/**
1516
* An array of the selected channel ids
1617
* @type {Snowflake[]}
1718
*/
18-
this.values = data.data.values ?? [];
19+
this.values = values ?? [];
1920

2021
/**
2122
* Collection of the selected channels
2223
* @type {Collection<Snowflake, Channel|APIChannel>}
2324
*/
2425
this.channels = new Collection();
25-
for (const channel of Object.values(data.data.resolved.channels)) {
26+
27+
for (const channel of Object.values(resolved?.channels ?? {})) {
2628
this.channels.set(channel.id, this.client.channels._add(channel, this.guild) ?? channel);
2729
}
2830
}

packages/discord.js/src/structures/MentionableSelectMenuInteraction.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ const Events = require('../util/Events');
1111
class MentionableSelectMenuInteraction extends MessageComponentInteraction {
1212
constructor(client, data) {
1313
super(client, data);
14+
const { resolved, values } = data.data;
15+
const { members, users, roles } = resolved ?? {};
1416

1517
/**
1618
* An array of the selected user and role ids
1719
* @type {Snowflake[]}
1820
*/
19-
this.values = data.data.values ?? [];
20-
21-
const { members, users, roles } = data.data.resolved ?? {};
21+
this.values = values ?? [];
2222

2323
/**
2424
* Collection of the selected users

packages/discord.js/src/structures/RoleSelectMenuInteraction.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,21 @@ const MessageComponentInteraction = require('./MessageComponentInteraction');
1010
class RoleSelectMenuInteraction extends MessageComponentInteraction {
1111
constructor(client, data) {
1212
super(client, data);
13+
const { resolved, values } = data.data;
1314

1415
/**
1516
* An array of the selected role ids
1617
* @type {Snowflake[]}
1718
*/
18-
this.values = data.data.values ?? [];
19+
this.values = values ?? [];
1920

2021
/**
2122
* Collection of the selected roles
2223
* @type {Collection<Snowflake, Role|APIRole>}
2324
*/
2425
this.roles = new Collection();
25-
for (const role of Object.values(data.data.resolved.roles)) {
26+
27+
for (const role of Object.values(resolved?.roles ?? {})) {
2628
this.roles.set(role.id, this.guild?.roles._add(role) ?? role);
2729
}
2830
}

packages/discord.js/src/structures/UserSelectMenuInteraction.js

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@ const Events = require('../util/Events');
1111
class UserSelectMenuInteraction extends MessageComponentInteraction {
1212
constructor(client, data) {
1313
super(client, data);
14+
const { resolved, values } = data.data;
1415

1516
/**
1617
* An array of the selected user ids
1718
* @type {Snowflake[]}
1819
*/
19-
this.values = data.data.values ?? [];
20+
this.values = values ?? [];
2021

2122
/**
2223
* Collection of the selected users
@@ -30,24 +31,19 @@ class UserSelectMenuInteraction extends MessageComponentInteraction {
3031
*/
3132
this.members = new Collection();
3233

33-
for (const user of Object.values(data.data.resolved.users)) {
34+
for (const user of Object.values(resolved?.users ?? {})) {
3435
this.users.set(user.id, this.client.users._add(user));
3536
}
3637

37-
if (data.data.resolved.members) {
38-
for (const [id, member] of Object.entries(data.data.resolved.members)) {
39-
const user = data.data.resolved.users[id];
40-
if (!user) {
41-
this.client.emit(
42-
Events.Debug,
43-
`[UserSelectMenuInteraction] Received a member without a user, skipping ${id}`,
44-
);
38+
for (const [id, member] of Object.entries(resolved?.members ?? {})) {
39+
const user = resolved.users[id];
4540

46-
continue;
47-
}
48-
49-
this.members.set(id, this.guild?.members._add({ user, ...member }) ?? { user, ...member });
41+
if (!user) {
42+
this.client.emit(Events.Debug, `[UserSelectMenuInteraction] Received a member without a user, skipping ${id}`);
43+
continue;
5044
}
45+
46+
this.members.set(id, this.guild?.members._add({ user, ...member }) ?? { user, ...member });
5147
}
5248
}
5349
}

0 commit comments

Comments
 (0)