mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 03:53:29 +01:00
feat(GuildMemberManager): addRole and removeRole (#8510)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
@@ -441,6 +441,42 @@ class GuildMemberManager extends CachedManager {
|
|||||||
return this.guild.bans.remove(user, reason);
|
return this.guild.bans.remove(user, reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options used for adding or removing a role from a member.
|
||||||
|
* @typedef {Object} AddOrRemoveGuildMemberRoleOptions
|
||||||
|
* @property {GuildMemberResolvable} user The user to add/remove the role from
|
||||||
|
* @property {RoleResolvable} role The role to add/remove
|
||||||
|
* @property {string} [reason] Reason for adding/removing the role
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a role to a member.
|
||||||
|
* @param {AddOrRemoveGuildMemberRoleOptions} options Options for adding the role
|
||||||
|
* @returns {Promise<GuildMember|User|Snowflake>}
|
||||||
|
*/
|
||||||
|
async addRole(options) {
|
||||||
|
const { user, role, reason } = options;
|
||||||
|
const userId = this.guild.members.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<GuildMember|User|Snowflake>}
|
||||||
|
*/
|
||||||
|
async removeRole(options) {
|
||||||
|
const { user, role, reason } = options;
|
||||||
|
const userId = this.guild.members.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;
|
||||||
|
}
|
||||||
|
|
||||||
async _fetchSingle({ user, cache, force = false }) {
|
async _fetchSingle({ user, cache, force = false }) {
|
||||||
if (!force) {
|
if (!force) {
|
||||||
const existing = this.cache.get(user);
|
const existing = this.cache.get(user);
|
||||||
|
|||||||
8
packages/discord.js/typings/index.d.ts
vendored
8
packages/discord.js/typings/index.d.ts
vendored
@@ -3407,6 +3407,12 @@ export class GuildManager extends CachedManager<Snowflake, Guild, GuildResolvabl
|
|||||||
public fetch(options?: FetchGuildsOptions): Promise<Collection<Snowflake, OAuth2Guild>>;
|
public fetch(options?: FetchGuildsOptions): Promise<Collection<Snowflake, OAuth2Guild>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface AddOrRemoveGuildMemberRoleOptions {
|
||||||
|
user: GuildMemberResolvable;
|
||||||
|
role: RoleResolvable;
|
||||||
|
reason?: string;
|
||||||
|
}
|
||||||
|
|
||||||
export class GuildMemberManager extends CachedManager<Snowflake, GuildMember, GuildMemberResolvable> {
|
export class GuildMemberManager extends CachedManager<Snowflake, GuildMember, GuildMemberResolvable> {
|
||||||
private constructor(guild: Guild, iterable?: Iterable<RawGuildMemberData>);
|
private constructor(guild: Guild, iterable?: Iterable<RawGuildMemberData>);
|
||||||
public guild: Guild;
|
public guild: Guild;
|
||||||
@@ -3429,6 +3435,8 @@ export class GuildMemberManager extends CachedManager<Snowflake, GuildMember, Gu
|
|||||||
public prune(options?: GuildPruneMembersOptions): Promise<number>;
|
public prune(options?: GuildPruneMembersOptions): Promise<number>;
|
||||||
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>;
|
||||||
|
public addRole(options: AddOrRemoveGuildMemberRoleOptions): Promise<GuildMember | User | Snowflake>;
|
||||||
|
public removeRole(options: AddOrRemoveGuildMemberRoleOptions): Promise<GuildMember | User | Snowflake>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class GuildBanManager extends CachedManager<Snowflake, GuildBan, GuildBanResolvable> {
|
export class GuildBanManager extends CachedManager<Snowflake, GuildBan, GuildBanResolvable> {
|
||||||
|
|||||||
Reference in New Issue
Block a user