mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
feat(Role): add flags (#9694)
Co-authored-by: n1ck_pro <59617443+N1ckPro@users.noreply.github.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
const AttachmentFlags = require('../util/AttachmentFlags');
|
||||||
const Util = require('../util/Util');
|
const Util = require('../util/Util');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -169,6 +170,16 @@ class MessageAttachment {
|
|||||||
} else {
|
} else {
|
||||||
this.waveform ??= null;
|
this.waveform ??= null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ('flags' in data) {
|
||||||
|
/**
|
||||||
|
* The flags of this attachment
|
||||||
|
* @type {Readonly<AttachmentFlags>}
|
||||||
|
*/
|
||||||
|
this.flags = new AttachmentFlags(data.flags).freeze();
|
||||||
|
} else {
|
||||||
|
this.flags ??= new AttachmentFlags().freeze();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ const Base = require('./Base');
|
|||||||
const { Error } = require('../errors');
|
const { Error } = require('../errors');
|
||||||
const Permissions = require('../util/Permissions');
|
const Permissions = require('../util/Permissions');
|
||||||
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
||||||
|
const RoleFlags = require('../util/RoleFlags');
|
||||||
|
|
||||||
let deprecationEmittedForComparePositions = false;
|
let deprecationEmittedForComparePositions = false;
|
||||||
|
|
||||||
@@ -142,6 +143,16 @@ class Role extends Base {
|
|||||||
this.tags.guildConnections = true;
|
this.tags.guildConnections = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ('flags' in data) {
|
||||||
|
/**
|
||||||
|
* The flags of this role
|
||||||
|
* @type {Readonly<RoleFlags>}
|
||||||
|
*/
|
||||||
|
this.flags = new RoleFlags(data.flags).freeze();
|
||||||
|
} else {
|
||||||
|
this.flags ??= new RoleFlags().freeze();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
37
src/util/RoleFlags.js
Normal file
37
src/util/RoleFlags.js
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const BitField = require('./BitField');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data structure that makes it easy to interact with an {@link GuildMember#flags} bitfield.
|
||||||
|
* @extends {BitField}
|
||||||
|
*/
|
||||||
|
class RoleFlags extends BitField {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name RoleFlags
|
||||||
|
* @kind constructor
|
||||||
|
* @memberof RoleFlags
|
||||||
|
* @param {BitFieldResolvable} [bits=0] Bit(s) to read from
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Numeric guild member flags. All available properties:
|
||||||
|
* * `IN_PROMPT`
|
||||||
|
* @type {Object}
|
||||||
|
* @see {@link https://discord.com/developers/docs/topics/permissions#role-object-role-flags}
|
||||||
|
*/
|
||||||
|
RoleFlags.FLAGS = {
|
||||||
|
IN_PROMPT: 1 << 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data that can be resolved to give a role flag bitfield. This can be:
|
||||||
|
* * A string (see {@link RoleFlags.FLAGS})
|
||||||
|
* * A role flag
|
||||||
|
* * An instance of RoleFlags
|
||||||
|
* * An Array of RoleFlagsResolvable
|
||||||
|
* @typedef {string|number|RoleFlags|RoleFlagsResolvable[]} RoleFlagsResolvable
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports = RoleFlags;
|
||||||
9
typings/index.d.ts
vendored
9
typings/index.d.ts
vendored
@@ -2159,6 +2159,7 @@ export class Role extends Base {
|
|||||||
/** @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */
|
/** @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */
|
||||||
public deleted: boolean;
|
public deleted: boolean;
|
||||||
public readonly editable: boolean;
|
public readonly editable: boolean;
|
||||||
|
public flags: Readonly<RoleFlags>;
|
||||||
public guild: Guild;
|
public guild: Guild;
|
||||||
public readonly hexColor: HexColorString;
|
public readonly hexColor: HexColorString;
|
||||||
public hoist: boolean;
|
public hoist: boolean;
|
||||||
@@ -2194,6 +2195,14 @@ export class Role extends Base {
|
|||||||
public static comparePositions(role1: Role, role2: Role): number;
|
public static comparePositions(role1: Role, role2: Role): number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class RoleFlags extends BitField<RoleFlagsString> {
|
||||||
|
public static FLAGS: Record<RoleFlagsString, number>;
|
||||||
|
public static resolve(bit?: BitFieldResolvable<RoleFlagsString, number>): number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type RoleFlagsString =
|
||||||
|
| 'IN_PROMPT';
|
||||||
|
|
||||||
export class SelectMenuInteraction<Cached extends CacheType = CacheType> extends MessageComponentInteraction<Cached> {
|
export class SelectMenuInteraction<Cached extends CacheType = CacheType> extends MessageComponentInteraction<Cached> {
|
||||||
public constructor(client: Client, data: RawMessageSelectMenuInteractionData);
|
public constructor(client: Client, data: RawMessageSelectMenuInteractionData);
|
||||||
public readonly component: CacheTypeReducer<
|
public readonly component: CacheTypeReducer<
|
||||||
|
|||||||
Reference in New Issue
Block a user