mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 03:53:29 +01:00
feat: bypass cache check with forceFetch param (#4592)
This commit is contained in:
@@ -74,6 +74,7 @@ class ChannelManager extends BaseManager {
|
|||||||
* Obtains a channel from Discord, or the channel cache if it's already available.
|
* Obtains a channel from Discord, or the channel cache if it's already available.
|
||||||
* @param {Snowflake} id ID of the channel
|
* @param {Snowflake} id ID of the channel
|
||||||
* @param {boolean} [cache=true] Whether to cache the new channel object if it isn't already
|
* @param {boolean} [cache=true] Whether to cache the new channel object if it isn't already
|
||||||
|
* @param {boolean} [force=false] Whether to skip the cache check and request the API
|
||||||
* @returns {Promise<Channel>}
|
* @returns {Promise<Channel>}
|
||||||
* @example
|
* @example
|
||||||
* // Fetch a channel by its id
|
* // Fetch a channel by its id
|
||||||
@@ -81,9 +82,11 @@ class ChannelManager extends BaseManager {
|
|||||||
* .then(channel => console.log(channel.name))
|
* .then(channel => console.log(channel.name))
|
||||||
* .catch(console.error);
|
* .catch(console.error);
|
||||||
*/
|
*/
|
||||||
async fetch(id, cache = true) {
|
async fetch(id, cache = true, force = false) {
|
||||||
const existing = this.cache.get(id);
|
if (!force) {
|
||||||
if (existing && !existing.partial) return existing;
|
const existing = this.cache.get(id);
|
||||||
|
if (existing && !existing.partial) return existing;
|
||||||
|
}
|
||||||
|
|
||||||
const data = await this.client.api.channels(id).get();
|
const data = await this.client.api.channels(id).get();
|
||||||
return this.add(data, null, cache);
|
return this.add(data, null, cache);
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ class GuildMemberManager extends BaseManager {
|
|||||||
* @typedef {Object} FetchMemberOptions
|
* @typedef {Object} FetchMemberOptions
|
||||||
* @property {UserResolvable} user The user to fetch
|
* @property {UserResolvable} user The user to fetch
|
||||||
* @property {boolean} [cache=true] Whether or not to cache the fetched member
|
* @property {boolean} [cache=true] Whether or not to cache the fetched member
|
||||||
|
* @property {boolean} [force=false] Whether to skip the cache check and request the API
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -78,6 +79,7 @@ class GuildMemberManager extends BaseManager {
|
|||||||
* @property {boolean} [withPresences=false] Whether or not to include the presences
|
* @property {boolean} [withPresences=false] Whether or not to include the presences
|
||||||
* @property {number} [time=120e3] Timeout for receipt of members
|
* @property {number} [time=120e3] Timeout for receipt of members
|
||||||
* @property {?string} nonce Nonce for this request (32 characters max - default to base 16 now timestamp)
|
* @property {?string} nonce Nonce for this request (32 characters max - default to base 16 now timestamp)
|
||||||
|
* @property {boolean} [force=false] Whether to skip the cache check and request the API
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -97,6 +99,11 @@ class GuildMemberManager extends BaseManager {
|
|||||||
* .then(console.log)
|
* .then(console.log)
|
||||||
* .catch(console.error);
|
* .catch(console.error);
|
||||||
* @example
|
* @example
|
||||||
|
* // Fetch a single member without checking cache
|
||||||
|
* guild.members.fetch({ user, force: true })
|
||||||
|
* .then(console.log)
|
||||||
|
* .catch(console.error)
|
||||||
|
* @example
|
||||||
* // Fetch a single member without caching
|
* // Fetch a single member without caching
|
||||||
* guild.members.fetch({ user, cache: false })
|
* guild.members.fetch({ user, cache: false })
|
||||||
* .then(console.log)
|
* .then(console.log)
|
||||||
@@ -215,9 +222,12 @@ class GuildMemberManager extends BaseManager {
|
|||||||
.then(() => this.client.users.resolve(user));
|
.then(() => this.client.users.resolve(user));
|
||||||
}
|
}
|
||||||
|
|
||||||
_fetchSingle({ user, cache }) {
|
_fetchSingle({ user, cache, force = false }) {
|
||||||
const existing = this.cache.get(user);
|
if (!force) {
|
||||||
if (existing && !existing.partial) return Promise.resolve(existing);
|
const existing = this.cache.get(user);
|
||||||
|
if (existing && !existing.partial) return Promise.resolve(existing);
|
||||||
|
}
|
||||||
|
|
||||||
return this.client.api
|
return this.client.api
|
||||||
.guilds(this.guild.id)
|
.guilds(this.guild.id)
|
||||||
.members(user)
|
.members(user)
|
||||||
@@ -232,9 +242,10 @@ class GuildMemberManager extends BaseManager {
|
|||||||
query,
|
query,
|
||||||
time = 120e3,
|
time = 120e3,
|
||||||
nonce = Date.now().toString(16),
|
nonce = Date.now().toString(16),
|
||||||
|
force = false,
|
||||||
} = {}) {
|
} = {}) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (this.guild.memberCount === this.cache.size && !query && !limit && !presences && !user_ids) {
|
if (this.guild.memberCount === this.cache.size && !query && !limit && !presences && !user_ids && !force) {
|
||||||
resolve(this.cache);
|
resolve(this.cache);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ class MessageManager extends BaseManager {
|
|||||||
* Those need to be fetched separately in such a case.</info>
|
* Those need to be fetched separately in such a case.</info>
|
||||||
* @param {Snowflake|ChannelLogsQueryOptions} [message] The ID of the message to fetch, or query parameters.
|
* @param {Snowflake|ChannelLogsQueryOptions} [message] The ID of the message to fetch, or query parameters.
|
||||||
* @param {boolean} [cache=true] Whether to cache the message(s)
|
* @param {boolean} [cache=true] Whether to cache the message(s)
|
||||||
|
* @param {boolean} [force=false] Whether to skip the cache check and request the API
|
||||||
* @returns {Promise<Message>|Promise<Collection<Snowflake, Message>>}
|
* @returns {Promise<Message>|Promise<Collection<Snowflake, Message>>}
|
||||||
* @example
|
* @example
|
||||||
* // Get message
|
* // Get message
|
||||||
@@ -62,8 +63,8 @@ class MessageManager extends BaseManager {
|
|||||||
* .then(messages => console.log(`${messages.filter(m => m.author.id === '84484653687267328').size} messages`))
|
* .then(messages => console.log(`${messages.filter(m => m.author.id === '84484653687267328').size} messages`))
|
||||||
* .catch(console.error);
|
* .catch(console.error);
|
||||||
*/
|
*/
|
||||||
fetch(message, cache = true) {
|
fetch(message, cache = true, force = false) {
|
||||||
return typeof message === 'string' ? this._fetchId(message, cache) : this._fetchMany(message, cache);
|
return typeof message === 'string' ? this._fetchId(message, cache, force) : this._fetchMany(message, cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -127,9 +128,12 @@ class MessageManager extends BaseManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async _fetchId(messageID, cache) {
|
async _fetchId(messageID, cache, force) {
|
||||||
const existing = this.cache.get(messageID);
|
if (!force) {
|
||||||
if (existing && !existing.partial) return existing;
|
const existing = this.cache.get(messageID);
|
||||||
|
if (existing && !existing.partial) return existing;
|
||||||
|
}
|
||||||
|
|
||||||
const data = await this.client.api.channels[this.channel.id].messages[messageID].get();
|
const data = await this.client.api.channels[this.channel.id].messages[messageID].get();
|
||||||
return this.add(data, cache);
|
return this.add(data, cache);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ class RoleManager extends BaseManager {
|
|||||||
* Obtains one or more roles from Discord, or the role cache if they're already available.
|
* Obtains one or more roles from Discord, or the role cache if they're already available.
|
||||||
* @param {Snowflake} [id] ID or IDs of the role(s)
|
* @param {Snowflake} [id] ID or IDs of the role(s)
|
||||||
* @param {boolean} [cache=true] Whether to cache the new roles objects if it weren't already
|
* @param {boolean} [cache=true] Whether to cache the new roles objects if it weren't already
|
||||||
|
* @param {boolean} [force=false] Whether to skip the cache check and request the API
|
||||||
* @returns {Promise<Role|RoleManager>}
|
* @returns {Promise<Role|RoleManager>}
|
||||||
* @example
|
* @example
|
||||||
* // Fetch all roles from the guild
|
* // Fetch all roles from the guild
|
||||||
@@ -45,8 +46,8 @@ class RoleManager extends BaseManager {
|
|||||||
* .then(role => console.log(`The role color is: ${role.color}`))
|
* .then(role => console.log(`The role color is: ${role.color}`))
|
||||||
* .catch(console.error);
|
* .catch(console.error);
|
||||||
*/
|
*/
|
||||||
async fetch(id, cache = true) {
|
async fetch(id, cache = true, force = false) {
|
||||||
if (id) {
|
if (id && !force) {
|
||||||
const existing = this.cache.get(id);
|
const existing = this.cache.get(id);
|
||||||
if (existing) return existing;
|
if (existing) return existing;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,11 +55,15 @@ class UserManager extends BaseManager {
|
|||||||
* Obtains a user from Discord, or the user cache if it's already available.
|
* Obtains a user from Discord, or the user cache if it's already available.
|
||||||
* @param {Snowflake} id ID of the user
|
* @param {Snowflake} id ID of the user
|
||||||
* @param {boolean} [cache=true] Whether to cache the new user object if it isn't already
|
* @param {boolean} [cache=true] Whether to cache the new user object if it isn't already
|
||||||
|
* @param {boolean} [force=false] Whether to skip the cache check and request the API
|
||||||
* @returns {Promise<User>}
|
* @returns {Promise<User>}
|
||||||
*/
|
*/
|
||||||
async fetch(id, cache = true) {
|
async fetch(id, cache = true, force = false) {
|
||||||
const existing = this.cache.get(id);
|
if (!force) {
|
||||||
if (existing && !existing.partial) return existing;
|
const existing = this.cache.get(id);
|
||||||
|
if (existing && !existing.partial) return existing;
|
||||||
|
}
|
||||||
|
|
||||||
const data = await this.client.api.users(id).get();
|
const data = await this.client.api.users(id).get();
|
||||||
return this.add(data, cache);
|
return this.add(data, cache);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,10 +90,11 @@ class Channel extends Base {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches this channel.
|
* Fetches this channel.
|
||||||
|
* @param {boolean} [force=false] Whether to skip the cache check and request the API
|
||||||
* @returns {Promise<Channel>}
|
* @returns {Promise<Channel>}
|
||||||
*/
|
*/
|
||||||
fetch() {
|
fetch(force = false) {
|
||||||
return this.client.channels.fetch(this.id, true);
|
return this.client.channels.fetch(this.id, true, force);
|
||||||
}
|
}
|
||||||
|
|
||||||
static create(client, data, guild) {
|
static create(client, data, guild) {
|
||||||
|
|||||||
@@ -61,10 +61,11 @@ class DMChannel extends Channel {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch this DMChannel.
|
* Fetch this DMChannel.
|
||||||
|
* @param {boolean} [force=false] Whether to skip the cache check and request the API
|
||||||
* @returns {Promise<DMChannel>}
|
* @returns {Promise<DMChannel>}
|
||||||
*/
|
*/
|
||||||
fetch() {
|
fetch(force = false) {
|
||||||
return this.recipient.createDM();
|
return this.recipient.createDM(force);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -373,10 +373,11 @@ class GuildMember extends Base {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches this GuildMember.
|
* Fetches this GuildMember.
|
||||||
|
* @param {boolean} [force=false] Whether to skip the cache check and request the API
|
||||||
* @returns {Promise<GuildMember>}
|
* @returns {Promise<GuildMember>}
|
||||||
*/
|
*/
|
||||||
fetch() {
|
fetch(force = false) {
|
||||||
return this.guild.members.fetch(this.id, true);
|
return this.guild.members.fetch({ user: this.id, cache: true, force });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -547,10 +547,11 @@ class Message extends Base {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch this message.
|
* Fetch this message.
|
||||||
|
* @param {boolean} [force=false] Whether to skip the cache check and request the API
|
||||||
* @returns {Promise<Message>}
|
* @returns {Promise<Message>}
|
||||||
*/
|
*/
|
||||||
fetch() {
|
fetch(force = false) {
|
||||||
return this.channel.messages.fetch(this.id, true);
|
return this.channel.messages.fetch(this.id, true, force);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -222,11 +222,15 @@ class User extends Base {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a DM channel between the client and the user.
|
* Creates a DM channel between the client and the user.
|
||||||
|
* @param {boolean} [force=false] Whether to skip the cache check and request the API
|
||||||
* @returns {Promise<DMChannel>}
|
* @returns {Promise<DMChannel>}
|
||||||
*/
|
*/
|
||||||
async createDM() {
|
async createDM(force = false) {
|
||||||
const { dmChannel } = this;
|
if (!force) {
|
||||||
if (dmChannel && !dmChannel.partial) return dmChannel;
|
const { dmChannel } = this;
|
||||||
|
if (dmChannel && !dmChannel.partial) return dmChannel;
|
||||||
|
}
|
||||||
|
|
||||||
const data = await this.client.api.users(this.client.user.id).channels.post({
|
const data = await this.client.api.users(this.client.user.id).channels.post({
|
||||||
data: {
|
data: {
|
||||||
recipient_id: this.id,
|
recipient_id: this.id,
|
||||||
@@ -265,10 +269,11 @@ class User extends Base {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches this user's flags.
|
* Fetches this user's flags.
|
||||||
|
* @param {boolean} [force=false] Whether to skip the cache check and request the AP
|
||||||
* @returns {Promise<UserFlags>}
|
* @returns {Promise<UserFlags>}
|
||||||
*/
|
*/
|
||||||
async fetchFlags() {
|
async fetchFlags(force = false) {
|
||||||
if (this.flags) return this.flags;
|
if (this.flags && !force) return this.flags;
|
||||||
const data = await this.client.api.users(this.id).get();
|
const data = await this.client.api.users(this.id).get();
|
||||||
this._patch(data);
|
this._patch(data);
|
||||||
return this.flags;
|
return this.flags;
|
||||||
@@ -276,10 +281,11 @@ class User extends Base {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches this user.
|
* Fetches this user.
|
||||||
|
* @param {boolean} [force=false] Whether to skip the cache check and request the AP
|
||||||
* @returns {Promise<User>}
|
* @returns {Promise<User>}
|
||||||
*/
|
*/
|
||||||
fetch() {
|
fetch(force = false) {
|
||||||
return this.client.users.fetch(this.id, true);
|
return this.client.users.fetch(this.id, true, force);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
32
typings/index.d.ts
vendored
32
typings/index.d.ts
vendored
@@ -159,7 +159,7 @@ declare module 'discord.js' {
|
|||||||
public id: Snowflake;
|
public id: Snowflake;
|
||||||
public type: keyof typeof ChannelType;
|
public type: keyof typeof ChannelType;
|
||||||
public delete(reason?: string): Promise<Channel>;
|
public delete(reason?: string): Promise<Channel>;
|
||||||
public fetch(): Promise<Channel>;
|
public fetch(force?: boolean): Promise<Channel>;
|
||||||
public toString(): string;
|
public toString(): string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -581,7 +581,7 @@ declare module 'discord.js' {
|
|||||||
public recipient: User;
|
public recipient: User;
|
||||||
public readonly partial: false;
|
public readonly partial: false;
|
||||||
public type: 'dm';
|
public type: 'dm';
|
||||||
public fetch(): Promise<this>;
|
public fetch(force?: boolean): Promise<this>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Emoji extends Base {
|
export class Emoji extends Base {
|
||||||
@@ -836,8 +836,8 @@ declare module 'discord.js' {
|
|||||||
public user: User;
|
public user: User;
|
||||||
public readonly voice: VoiceState;
|
public readonly voice: VoiceState;
|
||||||
public ban(options?: BanOptions): Promise<GuildMember>;
|
public ban(options?: BanOptions): Promise<GuildMember>;
|
||||||
public fetch(): Promise<GuildMember>;
|
public fetch(force?: boolean): Promise<GuildMember>;
|
||||||
public createDM(): Promise<DMChannel>;
|
public createDM(force?: boolean): Promise<DMChannel>;
|
||||||
public deleteDM(): Promise<DMChannel>;
|
public deleteDM(): Promise<DMChannel>;
|
||||||
public edit(data: GuildMemberEditData, reason?: string): Promise<GuildMember>;
|
public edit(data: GuildMemberEditData, reason?: string): Promise<GuildMember>;
|
||||||
public hasPermission(
|
public hasPermission(
|
||||||
@@ -985,7 +985,7 @@ declare module 'discord.js' {
|
|||||||
public edit(options: MessageEditOptions | MessageEmbed | APIMessage): Promise<Message>;
|
public edit(options: MessageEditOptions | MessageEmbed | APIMessage): Promise<Message>;
|
||||||
public equals(message: Message, rawData: object): boolean;
|
public equals(message: Message, rawData: object): boolean;
|
||||||
public fetchWebhook(): Promise<Webhook>;
|
public fetchWebhook(): Promise<Webhook>;
|
||||||
public fetch(): Promise<Message>;
|
public fetch(force?: boolean): Promise<Message>;
|
||||||
public pin(options?: { reason?: string }): Promise<Message>;
|
public pin(options?: { reason?: string }): Promise<Message>;
|
||||||
public react(emoji: EmojiIdentifierResolvable): Promise<MessageReaction>;
|
public react(emoji: EmojiIdentifierResolvable): Promise<MessageReaction>;
|
||||||
public reply(
|
public reply(
|
||||||
@@ -1520,8 +1520,8 @@ declare module 'discord.js' {
|
|||||||
public deleteDM(): Promise<DMChannel>;
|
public deleteDM(): Promise<DMChannel>;
|
||||||
public displayAvatarURL(options?: ImageURLOptions & { dynamic?: boolean }): string;
|
public displayAvatarURL(options?: ImageURLOptions & { dynamic?: boolean }): string;
|
||||||
public equals(user: User): boolean;
|
public equals(user: User): boolean;
|
||||||
public fetch(): Promise<User>;
|
public fetch(force?: boolean): Promise<User>;
|
||||||
public fetchFlags(): Promise<UserFlags>;
|
public fetchFlags(force?: boolean): Promise<UserFlags>;
|
||||||
public toString(): string;
|
public toString(): string;
|
||||||
public typingDurationIn(channel: ChannelResolvable): number;
|
public typingDurationIn(channel: ChannelResolvable): number;
|
||||||
public typingIn(channel: ChannelResolvable): boolean;
|
public typingIn(channel: ChannelResolvable): boolean;
|
||||||
@@ -1854,7 +1854,7 @@ declare module 'discord.js' {
|
|||||||
|
|
||||||
export class ChannelManager extends BaseManager<Snowflake, Channel, ChannelResolvable> {
|
export class ChannelManager extends BaseManager<Snowflake, Channel, ChannelResolvable> {
|
||||||
constructor(client: Client, iterable: Iterable<any>);
|
constructor(client: Client, iterable: Iterable<any>);
|
||||||
public fetch(id: Snowflake, cache?: boolean): Promise<Channel>;
|
public fetch(id: Snowflake, cache?: boolean, force?: boolean): Promise<Channel>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export abstract class BaseManager<K, Holds, R> {
|
export abstract class BaseManager<K, Holds, R> {
|
||||||
@@ -1946,8 +1946,12 @@ declare module 'discord.js' {
|
|||||||
constructor(channel: TextChannel | DMChannel, iterable?: Iterable<any>);
|
constructor(channel: TextChannel | DMChannel, iterable?: Iterable<any>);
|
||||||
public channel: TextBasedChannelFields;
|
public channel: TextBasedChannelFields;
|
||||||
public cache: Collection<Snowflake, Message>;
|
public cache: Collection<Snowflake, Message>;
|
||||||
public fetch(message: Snowflake, cache?: boolean): Promise<Message>;
|
public fetch(message: Snowflake, cache?: boolean, force?: boolean): Promise<Message>;
|
||||||
public fetch(options?: ChannelLogsQueryOptions, cache?: boolean): Promise<Collection<Snowflake, Message>>;
|
public fetch(
|
||||||
|
options?: ChannelLogsQueryOptions,
|
||||||
|
cache?: boolean,
|
||||||
|
force?: boolean,
|
||||||
|
): Promise<Collection<Snowflake, Message>>;
|
||||||
public fetchPinned(cache?: boolean): Promise<Collection<Snowflake, Message>>;
|
public fetchPinned(cache?: boolean): Promise<Collection<Snowflake, Message>>;
|
||||||
public delete(message: MessageResolvable, reason?: string): Promise<void>;
|
public delete(message: MessageResolvable, reason?: string): Promise<void>;
|
||||||
}
|
}
|
||||||
@@ -1986,13 +1990,13 @@ declare module 'discord.js' {
|
|||||||
public guild: Guild;
|
public guild: Guild;
|
||||||
|
|
||||||
public create(options?: { data?: RoleData; reason?: string }): Promise<Role>;
|
public create(options?: { data?: RoleData; reason?: string }): Promise<Role>;
|
||||||
public fetch(id: Snowflake, cache?: boolean): Promise<Role | null>;
|
public fetch(id: Snowflake, cache?: boolean, force?: boolean): Promise<Role | null>;
|
||||||
public fetch(id?: Snowflake, cache?: boolean): Promise<this>;
|
public fetch(id?: Snowflake, cache?: boolean, force?: boolean): Promise<this>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class UserManager extends BaseManager<Snowflake, User, UserResolvable> {
|
export class UserManager extends BaseManager<Snowflake, User, UserResolvable> {
|
||||||
constructor(client: Client, iterable?: Iterable<any>);
|
constructor(client: Client, iterable?: Iterable<any>);
|
||||||
public fetch(id: Snowflake, cache?: boolean): Promise<User>;
|
public fetch(id: Snowflake, cache?: boolean, force?: boolean): Promise<User>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class VoiceStateManager extends BaseManager<Snowflake, VoiceState, typeof VoiceState> {
|
export class VoiceStateManager extends BaseManager<Snowflake, VoiceState, typeof VoiceState> {
|
||||||
@@ -2424,6 +2428,7 @@ declare module 'discord.js' {
|
|||||||
interface FetchMemberOptions {
|
interface FetchMemberOptions {
|
||||||
user: UserResolvable;
|
user: UserResolvable;
|
||||||
cache?: boolean;
|
cache?: boolean;
|
||||||
|
force?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface FetchMembersOptions {
|
interface FetchMembersOptions {
|
||||||
@@ -2433,6 +2438,7 @@ declare module 'discord.js' {
|
|||||||
withPresences?: boolean;
|
withPresences?: boolean;
|
||||||
time?: number;
|
time?: number;
|
||||||
nonce?: string;
|
nonce?: string;
|
||||||
|
force?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface FileOptions {
|
interface FileOptions {
|
||||||
|
|||||||
Reference in New Issue
Block a user