diff --git a/src/util/BitField.js b/src/util/BitField.js index 7cc30afcc..889dbf27e 100644 --- a/src/util/BitField.js +++ b/src/util/BitField.js @@ -129,9 +129,10 @@ class BitField { /** * Data that can be resolved to give a bitfield. This can be: * * A bit number (this can be a number literal or a value taken from {@link BitField.FLAGS}) + * * A string bit number * * An instance of BitField * * An Array of BitFieldResolvable - * @typedef {number|bigint|BitField|BitFieldResolvable[]} BitFieldResolvable + * @typedef {number|string|bigint|BitField|BitFieldResolvable[]} BitFieldResolvable */ /** @@ -144,7 +145,10 @@ class BitField { if (typeof defaultBit === typeof bit && bit >= defaultBit) return bit; if (bit instanceof BitField) return bit.bitfield; if (Array.isArray(bit)) return bit.map(p => this.resolve(p)).reduce((prev, p) => prev | p, defaultBit); - if (typeof bit === 'string' && typeof this.FLAGS[bit] !== 'undefined') return this.FLAGS[bit]; + if (typeof bit === 'string') { + if (typeof this.FLAGS[bit] !== 'undefined') return this.FLAGS[bit]; + if (!isNaN(bit)) return typeof defaultBit === 'bigint' ? BigInt(bit) : Number(bit); + } throw new RangeError('BITFIELD_INVALID', bit); } } diff --git a/typings/index.d.ts b/typings/index.d.ts index c3083c54d..e0b12db2d 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -365,7 +365,7 @@ declare module 'discord.js' { public valueOf(): N; public [Symbol.iterator](): IterableIterator; public static FLAGS: unknown; - public static resolve(bit?: BitFieldResolvable): number | bigint; + public static resolve(bit?: BitFieldResolvable): number | bigint; } export class ButtonInteraction extends MessageComponentInteraction { @@ -2874,9 +2874,10 @@ declare module 'discord.js' { } type BitFieldResolvable = - | RecursiveReadonlyArray>> + | RecursiveReadonlyArray>> | T | N + | `${bigint}` | Readonly>; type BufferResolvable = Buffer | string;