diff --git a/packages/discord.js/src/managers/GuildBanManager.js b/packages/discord.js/src/managers/GuildBanManager.js index e2efc7c5b..1b78a01ae 100644 --- a/packages/discord.js/src/managers/GuildBanManager.js +++ b/packages/discord.js/src/managers/GuildBanManager.js @@ -6,7 +6,6 @@ const { Routes } = require('discord-api-types/v10'); const { CachedManager } = require('./CachedManager.js'); const { DiscordjsTypeError, DiscordjsError, ErrorCodes } = require('../errors/index.js'); const { GuildBan } = require('../structures/GuildBan.js'); -const { GuildMember } = require('../structures/GuildMember.js'); /** * Manages API methods for guild bans and stores their cache. @@ -136,15 +135,11 @@ class GuildBanManager extends CachedManager { /** * Bans a user from the guild. * @param {UserResolvable} user The user to ban - * @param {BanOptions} [options] Options for the ban - * @returns {Promise} Result object will be resolved as specifically as possible. - * If the GuildMember cannot be resolved, the User will instead be attempted to be resolved. If that also cannot - * be resolved, the user id will be the result. + * @param {BanOptions} [options={}] Options for the ban + * @returns {Promise} * @example * // Ban a user by id (or with a user/guild member object) - * guild.bans.create('84484653687267328') - * .then(banInfo => console.log(`Banned ${banInfo.user?.tag ?? banInfo.tag ?? banInfo}`)) - * .catch(console.error); + * await guild.bans.create('84484653687267328'); */ async create(user, options = {}) { if (typeof options !== 'object') throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'options', 'object', true); @@ -157,30 +152,21 @@ class GuildBanManager extends CachedManager { }, reason: options.reason, }); - if (user instanceof GuildMember) return user; - const _user = this.client.users.cache.get(id); - if (_user) { - return this.guild.members.resolve(_user) ?? _user; - } - return id; } /** * Unbans a user from the guild. * @param {UserResolvable} user The user to unban * @param {string} [reason] Reason for unbanning user - * @returns {Promise} + * @returns {Promise} * @example * // Unban a user by id (or with a user/guild member object) - * guild.bans.remove('84484653687267328') - * .then(user => console.log(`Unbanned ${user.username} from ${guild.name}`)) - * .catch(console.error); + * await guild.bans.remove('84484653687267328'); */ async remove(user, reason) { const id = this.client.users.resolveId(user); if (!id) throw new DiscordjsError(ErrorCodes.BanResolveId); await this.client.rest.delete(Routes.guildBan(this.guild.id, id), { reason }); - return this.client.users.resolve(user); } /** diff --git a/packages/discord.js/src/managers/GuildMemberManager.js b/packages/discord.js/src/managers/GuildMemberManager.js index 332f58b4a..a71a20cd6 100644 --- a/packages/discord.js/src/managers/GuildMemberManager.js +++ b/packages/discord.js/src/managers/GuildMemberManager.js @@ -445,60 +445,49 @@ class GuildMemberManager extends CachedManager { return pruned; } + /* eslint-disable consistent-return */ /** * Kicks a user from the guild. * The user must be a member of the guild * @param {UserResolvable} user The member to kick * @param {string} [reason] Reason for kicking - * @returns {Promise} Result object will be resolved as specifically as possible. - * If the GuildMember cannot be resolved, the User will instead be attempted to be resolved. If that also cannot - * be resolved, the user's id will be the result. + * @returns {Promise} * @example * // Kick a user by id (or with a user/guild member object) - * guild.members.kick('84484653687267328') - * .then(kickInfo => console.log(`Kicked ${kickInfo.user?.tag ?? kickInfo.tag ?? kickInfo}`)) - * .catch(console.error); + * await guild.members.kick('84484653687267328'); */ async kick(user, reason) { const id = this.client.users.resolveId(user); if (!id) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'user', 'UserResolvable'); await this.client.rest.delete(Routes.guildMember(this.guild.id, id), { reason }); - - return this.resolve(user) ?? this.client.users.resolve(user) ?? id; } + /* eslint-enable consistent-return */ /** - * Bans a user from the guild. + * Bans a user from the guild. Internally calls the {@link GuildBanManager#create} method. * @param {UserResolvable} user The user to ban * @param {BanOptions} [options] Options for the ban - * @returns {Promise} Result object will be resolved as specifically as possible. - * If the GuildMember cannot be resolved, the User will instead be attempted to be resolved. If that also cannot - * be resolved, the user id will be the result. - * Internally calls the GuildBanManager#create method. + * @returns {Promise} * @example * // Ban a user by id (or with a user/guild member object) - * guild.members.ban('84484653687267328') - * .then(banInfo => console.log(`Banned ${banInfo.user?.tag ?? banInfo.tag ?? banInfo}`)) - * .catch(console.error); + * await guild.members.ban('84484653687267328'); */ - ban(user, options) { - return this.guild.bans.create(user, options); + async ban(user, options) { + await this.guild.bans.create(user, options); } /** * Unbans a user from the guild. Internally calls the {@link GuildBanManager#remove} method. * @param {UserResolvable} user The user to unban * @param {string} [reason] Reason for unbanning user - * @returns {Promise} The user that was unbanned + * @returns {Promise} * @example * // Unban a user by id (or with a user/guild member object) - * guild.members.unban('84484653687267328') - * .then(user => console.log(`Unbanned ${user.username} from ${guild.name}`)) - * .catch(console.error); + * await guild.members.unban('84484653687267328'); */ - unban(user, reason) { - return this.guild.bans.remove(user, reason); + async unban(user, reason) { + await this.guild.bans.remove(user, reason); } /** @@ -531,29 +520,25 @@ class GuildMemberManager extends CachedManager { /** * Adds a role to a member. * @param {AddOrRemoveGuildMemberRoleOptions} options Options for adding the role - * @returns {Promise} + * @returns {Promise} */ async addRole(options) { const { user, role, reason } = options; const userId = this.resolveId(user); const roleId = this.guild.roles.resolveId(role); await this.client.rest.put(Routes.guildMemberRole(this.guild.id, userId, roleId), { reason }); - - return this.resolve(user) ?? this.client.users.resolve(user) ?? userId; } /** * Removes a role from a member. * @param {AddOrRemoveGuildMemberRoleOptions} options Options for removing the role - * @returns {Promise} + * @returns {Promise} */ async removeRole(options) { const { user, role, reason } = options; const userId = this.resolveId(user); const roleId = this.guild.roles.resolveId(role); await this.client.rest.delete(Routes.guildMemberRole(this.guild.id, userId, roleId), { reason }); - - return this.resolve(user) ?? this.client.users.resolve(user) ?? userId; } } diff --git a/packages/discord.js/src/structures/GuildMember.js b/packages/discord.js/src/structures/GuildMember.js index aeecc3bd9..669230a41 100644 --- a/packages/discord.js/src/structures/GuildMember.js +++ b/packages/discord.js/src/structures/GuildMember.js @@ -412,24 +412,22 @@ class GuildMember extends Base { /** * Kicks this member from the guild. * @param {string} [reason] Reason for kicking user - * @returns {Promise} + * @returns {Promise} */ - kick(reason) { - return this.guild.members.kick(this, reason); + async kick(reason) { + await this.guild.members.kick(this, reason); } /** * Bans this guild member. * @param {BanOptions} [options] Options for the ban - * @returns {Promise} + * @returns {Promise} * @example * // Ban a guild member, deleting a week's worth of messages - * guildMember.ban({ deleteMessageSeconds: 60 * 60 * 24 * 7, reason: 'They deserved it' }) - * .then(console.log) - * .catch(console.error); + * await guildMember.ban({ deleteMessageSeconds: 60 * 60 * 24 * 7, reason: 'They deserved it' }); */ - ban(options) { - return this.guild.bans.create(this, options); + async ban(options) { + await this.guild.bans.create(this, options); } /** diff --git a/packages/discord.js/test/random.js b/packages/discord.js/test/random.js index 030807db3..393b69761 100644 --- a/packages/discord.js/test/random.js +++ b/packages/discord.js/test/random.js @@ -139,12 +139,13 @@ client.on(Events.MessageCreate, message => { } if (message.content.startsWith('kick')) { + const user = message.mentions.users.first(); message.guild.members - .resolve(message.mentions.users.first()) + .resolve(user) .kick() - .then(member => { - console.log(member); - message.channel.send(`Kicked!${member.user.username}`); + .then(() => { + console.log(user.id); + message.channel.send(`Kicked ${user.username}!`); }) .catch(console.error); } diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 7bc046078..c6ea950b1 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -1631,7 +1631,7 @@ export class GuildMember extends Base { public get voice(): VoiceState; public avatarURL(options?: ImageURLOptions): string | null; public bannerURL(options?: ImageURLOptions): string | null; - public ban(options?: BanOptions): Promise; + public ban(options?: BanOptions): Promise; public disableCommunicationUntil(timeout: DateResolvable | null, reason?: string): Promise; public timeout(timeout: number | null, reason?: string): Promise; public fetch(force?: boolean): Promise; @@ -1644,7 +1644,7 @@ export class GuildMember extends Base { communicationDisabledUntilTimestamp: number; readonly communicationDisabledUntil: Date; }; - public kick(reason?: string): Promise; + public kick(reason?: string): Promise; public permissionsIn(channel: GuildChannelResolvable): Readonly; public setFlags(flags: GuildMemberFlagsResolvable, reason?: string): Promise; public setNickname(nickname: string | null, reason?: string): Promise; @@ -4191,7 +4191,7 @@ export class GuildMemberManager extends CachedManager; public add(user: UserResolvable, options: AddGuildMemberOptions): Promise; - public ban(user: UserResolvable, options?: BanOptions): Promise; + public ban(user: UserResolvable, options?: BanOptions): Promise; public bulkBan( users: ReadonlyCollection | readonly UserResolvable[], options?: BanOptions, @@ -4202,23 +4202,23 @@ export class GuildMemberManager extends CachedManager; public fetch(options?: FetchMembersOptions): Promise>; public fetchMe(options?: BaseFetchOptions): Promise; - public kick(user: UserResolvable, reason?: string): Promise; + public kick(user: UserResolvable, reason?: string): Promise; public list(options?: GuildListMembersOptions): Promise>; public prune(options: GuildPruneMembersOptions & { dry?: false; count: false }): Promise; public prune(options?: GuildPruneMembersOptions): Promise; public search(options: GuildSearchMembersOptions): Promise>; - public unban(user: UserResolvable, reason?: string): Promise; - public addRole(options: AddOrRemoveGuildMemberRoleOptions): Promise; - public removeRole(options: AddOrRemoveGuildMemberRoleOptions): Promise; + public unban(user: UserResolvable, reason?: string): Promise; + public addRole(options: AddOrRemoveGuildMemberRoleOptions): Promise; + public removeRole(options: AddOrRemoveGuildMemberRoleOptions): Promise; } export class GuildBanManager extends CachedManager { private constructor(guild: Guild, iterable?: Iterable); public guild: Guild; - public create(user: UserResolvable, options?: BanOptions): Promise; + public create(user: UserResolvable, options?: BanOptions): Promise; public fetch(options: UserResolvable | FetchBanOptions): Promise; public fetch(options?: FetchBansOptions): Promise>; - public remove(user: UserResolvable, reason?: string): Promise; + public remove(user: UserResolvable, reason?: string): Promise; public bulkCreate( users: ReadonlyCollection | readonly UserResolvable[], options?: BanOptions,