mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-16 11:33:30 +01:00
feat(GuildMemberManager): add addRole and removeRole methods (#9108)
* feat: addrole and removerole * fix: apply suggestions * Apply suggestions from code review Co-authored-by: space <spaceeec@yahoo.com> * fix: missdeleted ban :( --------- Co-authored-by: space <spaceeec@yahoo.com>
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
/* eslint-disable newline-per-chained-call */
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const { Buffer } = require('node:buffer');
|
const { Buffer } = require('node:buffer');
|
||||||
@@ -436,6 +437,38 @@ class GuildMemberManager extends CachedManager {
|
|||||||
return this._add(data, cache);
|
return this._add(data, cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a role to a member.
|
||||||
|
* @param {GuildMemberResolvable} user The user to add the role from
|
||||||
|
* @param {RoleResolvable} role The role to add
|
||||||
|
* @param {string} [reason] Reason for adding the role
|
||||||
|
* @returns {Promise<GuildMember|User|Snowflake>}
|
||||||
|
*/
|
||||||
|
async addRole(user, role, reason) {
|
||||||
|
const userId = this.guild.members.resolveId(user);
|
||||||
|
const roleId = this.guild.roles.resolveId(role);
|
||||||
|
|
||||||
|
await this.client.api.guilds(this.guild.id).members(userId).roles(roleId).put({ reason });
|
||||||
|
|
||||||
|
return this.resolve(user) ?? this.client.users.resolve(user) ?? userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes a role from a member.
|
||||||
|
* @param {UserResolvable} user The user to remove the role from
|
||||||
|
* @param {RoleResolvable} role The role to remove
|
||||||
|
* @param {string} [reason] Reason for removing the role
|
||||||
|
* @returns {Promise<GuildMember|User|Snowflake>}
|
||||||
|
*/
|
||||||
|
async removeRole(user, role, reason) {
|
||||||
|
const userId = this.guild.members.resolveId(user);
|
||||||
|
const roleId = this.guild.roles.resolveId(role);
|
||||||
|
|
||||||
|
await this.client.api.guilds(this.guild.id).members(userId).roles(roleId).delete({ reason });
|
||||||
|
|
||||||
|
return this.resolve(user) ?? this.client.users.resolve(user) ?? userId;
|
||||||
|
}
|
||||||
|
|
||||||
_fetchMany({
|
_fetchMany({
|
||||||
limit = 0,
|
limit = 0,
|
||||||
withPresences: presences = false,
|
withPresences: presences = false,
|
||||||
|
|||||||
2
typings/index.d.ts
vendored
2
typings/index.d.ts
vendored
@@ -3425,6 +3425,7 @@ export class GuildMemberManager extends CachedManager<Snowflake, GuildMember, Gu
|
|||||||
options: AddGuildMemberOptions & { fetchWhenExisting: false },
|
options: AddGuildMemberOptions & { fetchWhenExisting: false },
|
||||||
): Promise<GuildMember | null>;
|
): Promise<GuildMember | null>;
|
||||||
public add(user: UserResolvable, options: AddGuildMemberOptions): Promise<GuildMember>;
|
public add(user: UserResolvable, options: AddGuildMemberOptions): Promise<GuildMember>;
|
||||||
|
public addRole(user: UserResolvable, role: RoleResolvable, reason?: string): Promise<GuildMember|User|Snowflake>;
|
||||||
public ban(user: UserResolvable, options?: BanOptions): Promise<GuildMember | User | Snowflake>;
|
public ban(user: UserResolvable, options?: BanOptions): Promise<GuildMember | User | Snowflake>;
|
||||||
public edit(user: UserResolvable, data: GuildMemberEditData, reason?: string): Promise<GuildMember>;
|
public edit(user: UserResolvable, data: GuildMemberEditData, reason?: string): Promise<GuildMember>;
|
||||||
public fetch(
|
public fetch(
|
||||||
@@ -3436,6 +3437,7 @@ export class GuildMemberManager extends CachedManager<Snowflake, GuildMember, Gu
|
|||||||
public list(options?: GuildListMembersOptions): Promise<Collection<Snowflake, GuildMember>>;
|
public list(options?: GuildListMembersOptions): Promise<Collection<Snowflake, GuildMember>>;
|
||||||
public prune(options: GuildPruneMembersOptions & { dry?: false; count: false }): Promise<null>;
|
public prune(options: GuildPruneMembersOptions & { dry?: false; count: false }): Promise<null>;
|
||||||
public prune(options?: GuildPruneMembersOptions): Promise<number>;
|
public prune(options?: GuildPruneMembersOptions): Promise<number>;
|
||||||
|
public removeRole(user: UserResolvable, role: RoleResolvable, reason?: string): Promise<GuildMember|User|Snowflake>;
|
||||||
public search(options: GuildSearchMembersOptions): Promise<Collection<Snowflake, GuildMember>>;
|
public search(options: GuildSearchMembersOptions): Promise<Collection<Snowflake, GuildMember>>;
|
||||||
public unban(user: UserResolvable, reason?: string): Promise<User | null>;
|
public unban(user: UserResolvable, reason?: string): Promise<User | null>;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user