diff --git a/src/structures/SelectMenuInteraction.js b/src/structures/SelectMenuInteraction.js index f0663cf..42ef0c1 100644 --- a/src/structures/SelectMenuInteraction.js +++ b/src/structures/SelectMenuInteraction.js @@ -1,11 +1,9 @@ 'use strict'; -const { Collection } = require('@discordjs/collection'); const MessageComponentInteraction = require('./MessageComponentInteraction'); -const { Events } = require('../util/Constants'); /** - * Represents any select menu interaction. + * Represents a select menu interaction. * @extends {MessageComponentInteraction} */ class SelectMenuInteraction extends MessageComponentInteraction { @@ -20,151 +18,4 @@ class SelectMenuInteraction extends MessageComponentInteraction { } } -module.exports.SelectMenuInteraction = SelectMenuInteraction; - -/** - * Represents a CHANNEL_SELECT interaction. - * @extends {SelectMenuInteraction} - */ -class ChannelSelectInteraction extends SelectMenuInteraction { - constructor(client, data) { - super(client, data); - - const { channels } = data.data.resolved ?? {}; - - /** - * Collection of the selected channels - * @type {Collection} - */ - this.channels = new Collection(); - for (const channel of Object.values(channels)) { - this.channel.set(channel.id, this.client.channels._add(channel)); - } - } -} - -module.exports.ChannelSelectInteraction = ChannelSelectInteraction; - -/** - * Represents a ROLE_SELECT interaction. - * @extends {SelectMenuInteraction} - */ -class RoleSelectInteraction extends SelectMenuInteraction { - constructor(client, data) { - super(client, data); - - const { roles } = data.data.resolved ?? {}; - - /** - * Collection of the selected roles - * @type {Collection} - */ - this.roles = new Collection(); - for (const role of Object.values(roles)) { - this.roles.set(role.id, this.guild?.roles._add(role) ?? role); - } - } -} - -module.exports.RoleSelectInteraction = RoleSelectInteraction; - -/** - * Represents a USER_SELECT interaction. - * @extends {SelectMenuInteraction} - */ -class UserSelectInteraction extends SelectMenuInteraction { - constructor(client, data) { - super(client, data); - - const { members, users } = data.data.resolved ?? {}; - - /** - * Collection of the selected users - * @type {Collection} - */ - this.users = new Collection(); - for (const user of Object.values(users)) { - this.users.set(user.id, this.client.users._add(user)); - } - - if (members) { - /** - * Collection of the selected members - * @type {Collection} - */ - this.members = new Collection(); - for (const [id, member] of Object.entries(members)) { - const user = users[id]; - if (!user) { - this.client.emit(Events.DEBUG, `[SelectMenuInteraction] Received a member without a user, skipping ${id}`); - continue; - } - this.members.set(id, this.guild?.members._add({ user, ...member }) ?? { user, ...member }); - } - } - } -} - -module.exports.UserSelectInteraction = UserSelectInteraction; - -/** - * Represents a MENTIONABLE_SELECT interaction. - * @extends {SelectMenuInteraction} - */ -class MentionableSelectInteraction extends SelectMenuInteraction { - constructor(client, data) { - super(client, data); - - const { members, users, roles, channels } = data.data.resolved ?? {}; - - if (channels) { - /** - * Collection of the selected channels - * @type {Collection} - */ - this.channels = new Collection(); - for (const channel of Object.values(channels)) { - this.channels.set(channel.id, this.client?.channels._add(channel) ?? channel); - } - } - - if (members) { - /** - * Collection of the selected members - * @type {Collection} - */ - this.members = new Collection(); - for (const [id, member] of Object.entries(members)) { - const user = users[id]; - if (!user) { - this.client.emit(Events.DEBUG, `[SelectMenuInteraction] Received a member without a user, skipping ${id}`); - continue; - } - this.members.set(id, this.guild?.members._add({ user, ...member }) ?? { user, ...member }); - } - } - - if (roles) { - /** - * Collection of the selected roles - * @type {Collection} - */ - this.roles = new Collection(); - for (const role of Object.values(roles)) { - this.roles.set(role.id, this.guild?.roles._add(role) ?? role); - } - } - - if (users) { - /** - * Collection of the selected users - * @type {Collection} - */ - this.users = new Collection(); - for (const user of Object.values(users)) { - this.users.set(user.id, this.client.users._add(user)); - } - } - } -} -module.exports.MentionableSelectInteraction = MentionableSelectInteraction; +module.exports = SelectMenuInteraction;