feat(Role): add flags (#9694)

* feat(Role): add `flags`

* types: use RoleFlags enum

* Update packages/discord.js/typings/index.d.ts

Co-authored-by: Jaw0r3k <jaworekwiadomosci@gmail.com>

---------

Co-authored-by: Jaw0r3k <jaworekwiadomosci@gmail.com>
This commit is contained in:
n1ck_pro
2023-08-10 23:20:13 +02:00
committed by GitHub
parent 692f0fc96d
commit 3b18e5b08d
5 changed files with 52 additions and 0 deletions

View File

@@ -36,6 +36,7 @@ exports.MessageFlagsBitField = require('./util/MessageFlagsBitField');
exports.Options = require('./util/Options'); exports.Options = require('./util/Options');
exports.Partials = require('./util/Partials'); exports.Partials = require('./util/Partials');
exports.PermissionsBitField = require('./util/PermissionsBitField'); exports.PermissionsBitField = require('./util/PermissionsBitField');
exports.RoleFlagsBitField = require('./util/RoleFlagsBitField');
exports.ShardEvents = require('./util/ShardEvents'); exports.ShardEvents = require('./util/ShardEvents');
exports.Status = require('./util/Status'); exports.Status = require('./util/Status');
exports.SnowflakeUtil = require('@sapphire/snowflake').DiscordSnowflake; exports.SnowflakeUtil = require('@sapphire/snowflake').DiscordSnowflake;

View File

@@ -5,6 +5,7 @@ const { PermissionFlagsBits } = require('discord-api-types/v10');
const Base = require('./Base'); const Base = require('./Base');
const { DiscordjsError, ErrorCodes } = require('../errors'); const { DiscordjsError, ErrorCodes } = require('../errors');
const PermissionsBitField = require('../util/PermissionsBitField'); const PermissionsBitField = require('../util/PermissionsBitField');
const RoleFlagsBitField = require('../util/RoleFlagsBitField');
/** /**
* Represents a role on Discord. * Represents a role on Discord.
@@ -101,6 +102,16 @@ class Role extends Base {
if ('unicode_emoji' in data) this.unicodeEmoji = data.unicode_emoji; if ('unicode_emoji' in data) this.unicodeEmoji = data.unicode_emoji;
if ('flags' in data) {
/**
* The flags of this role
* @type {Readonly<RoleFlagsBitField>}
*/
this.flags = new RoleFlagsBitField(data.flags).freeze();
} else {
this.flags ??= new RoleFlagsBitField().freeze();
}
/** /**
* The tags this role has * The tags this role has
* @type {?Object} * @type {?Object}

View File

@@ -410,6 +410,11 @@
* @see {@link https://discord-api-types.dev/api/discord-api-types-payloads/common#PermissionFlagsBits} * @see {@link https://discord-api-types.dev/api/discord-api-types-payloads/common#PermissionFlagsBits}
*/ */
/**
* @external RoleFlags
* @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/RoleFlags}
*/
/** /**
* @external RESTGetAPIGuildThreadsResult * @external RESTGetAPIGuildThreadsResult
* @see {@link https://discord-api-types.dev/api/discord-api-types-v10#RESTGetAPIGuildThreadsResult} * @see {@link https://discord-api-types.dev/api/discord-api-types-v10#RESTGetAPIGuildThreadsResult}

View File

@@ -0,0 +1,26 @@
'use strict';
const { RoleFlags } = require('discord-api-types/v10');
const BitField = require('./BitField');
/**
* Data structure that makes it easy to interact with a {@link Role#flags} bitfield.
* @extends {BitField}
*/
class RoleFlagsBitField extends BitField {
/**
* Numeric role flags.
* @type {RoleFlags}
* @memberof RoleFlagsBitField
*/
static Flags = RoleFlags;
}
/**
* @name RoleFlagsBitField
* @kind constructor
* @memberof RoleFlagsBitField
* @param {BitFieldResolvable} [bits=0] Bit(s) to read from
*/
module.exports = RoleFlagsBitField;

View File

@@ -167,6 +167,7 @@ import {
APIGuildOnboardingPromptOption, APIGuildOnboardingPromptOption,
GuildOnboardingPromptType, GuildOnboardingPromptType,
AttachmentFlags, AttachmentFlags,
RoleFlags,
} from 'discord-api-types/v10'; } from 'discord-api-types/v10';
import { ChildProcess } from 'node:child_process'; import { ChildProcess } from 'node:child_process';
import { EventEmitter } from 'node:events'; import { EventEmitter } from 'node:events';
@@ -2524,6 +2525,7 @@ export class Role extends Base {
public get createdAt(): Date; public get createdAt(): Date;
public get createdTimestamp(): number; public get createdTimestamp(): number;
public get editable(): boolean; public get editable(): boolean;
public flags: RoleFlagsBitField;
public guild: Guild; public guild: Guild;
public get hexColor(): HexColorString; public get hexColor(): HexColorString;
public hoist: boolean; public hoist: boolean;
@@ -2559,6 +2561,13 @@ export class Role extends Base {
public toString(): RoleMention; public toString(): RoleMention;
} }
export type RoleFlagsString = keyof typeof RoleFlags;
export class RoleFlagsBitField extends BitField<RoleFlagsString> {
public static Flags: typeof RoleFlags;
public static resolve(bit?: BitFieldResolvable<RoleFlagsString, number>): number;
}
export class StringSelectMenuInteraction< export class StringSelectMenuInteraction<
Cached extends CacheType = CacheType, Cached extends CacheType = CacheType,
> extends MessageComponentInteraction<Cached> { > extends MessageComponentInteraction<Cached> {