feat(guild): mute guild
This commit is contained in:
parent
93c230150c
commit
79942b987e
@ -638,6 +638,35 @@ class Guild extends AnonymousGuild {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mute a guild
|
||||||
|
* @param {boolean} mute Weather or not you want to mute the guild
|
||||||
|
* @param {?number} time The amount of time you want to mute the server for in seconds
|
||||||
|
* @returns {boolean} true if it worked and false if it didn't
|
||||||
|
* @example
|
||||||
|
* guild.mute(true, 3600) // mutes the guild for an hour
|
||||||
|
* guild.mute(true, -1) // mutes the guild forever
|
||||||
|
* guild.mute(false); // unmutes the guild
|
||||||
|
*/
|
||||||
|
async mute(mute, time) {
|
||||||
|
try {
|
||||||
|
if (mute && time == null) return false;
|
||||||
|
if (time == null && !mute) await this.client.api.guilds(this.id).settings.patch({ muted: false });
|
||||||
|
let ms = time * 1000;
|
||||||
|
let date = new Date(Date.now() + ms).toISOString();
|
||||||
|
await this.client.api.guilds(this.id).settings.patch({
|
||||||
|
mute_config: {
|
||||||
|
end_time: date,
|
||||||
|
selected_time_window: time,
|
||||||
|
},
|
||||||
|
muted: true,
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches a collection of integrations to this guild.
|
* Fetches a collection of integrations to this guild.
|
||||||
* Resolves with a collection mapping integrations by their ids.
|
* Resolves with a collection mapping integrations by their ids.
|
||||||
|
5
typings/index.d.ts
vendored
5
typings/index.d.ts
vendored
@ -1363,6 +1363,7 @@ export class Guild extends AnonymousGuild {
|
|||||||
public fetchAuditLogs<T extends GuildAuditLogsResolvable = 'ALL'>(
|
public fetchAuditLogs<T extends GuildAuditLogsResolvable = 'ALL'>(
|
||||||
options?: GuildAuditLogsFetchOptions<T>,
|
options?: GuildAuditLogsFetchOptions<T>,
|
||||||
): Promise<GuildAuditLogs<T>>;
|
): Promise<GuildAuditLogs<T>>;
|
||||||
|
public mute(mute: boolean, time: number | null): boolean;
|
||||||
public fetchIntegrations(): Promise<Collection<Snowflake | string, Integration>>;
|
public fetchIntegrations(): Promise<Collection<Snowflake | string, Integration>>;
|
||||||
public fetchOwner(options?: BaseFetchOptions): Promise<GuildMember>;
|
public fetchOwner(options?: BaseFetchOptions): Promise<GuildMember>;
|
||||||
public fetchPreview(): Promise<GuildPreview>;
|
public fetchPreview(): Promise<GuildPreview>;
|
||||||
@ -5249,8 +5250,8 @@ export type CacheConstructors = {
|
|||||||
// Narrowing the type of `manager.name` doesn't propagate type information to `holds` and the return type.
|
// Narrowing the type of `manager.name` doesn't propagate type information to `holds` and the return type.
|
||||||
export type CacheFactory = (
|
export type CacheFactory = (
|
||||||
manager: CacheConstructors[keyof Caches],
|
manager: CacheConstructors[keyof Caches],
|
||||||
holds: Caches[typeof manager['name']][1],
|
holds: Caches[(typeof manager)['name']][1],
|
||||||
) => typeof manager['prototype'] extends DataManager<infer K, infer V, any> ? Collection<K, V> : never;
|
) => (typeof manager)['prototype'] extends DataManager<infer K, infer V, any> ? Collection<K, V> : never;
|
||||||
|
|
||||||
export type CacheWithLimitsOptions = {
|
export type CacheWithLimitsOptions = {
|
||||||
[K in keyof Caches]?: Caches[K][0]['prototype'] extends DataManager<infer K, infer V, any>
|
[K in keyof Caches]?: Caches[K][0]['prototype'] extends DataManager<infer K, infer V, any>
|
||||||
|
Loading…
Reference in New Issue
Block a user