feat: **BETA** ClydeAI
**BETA**
This commit is contained in:
parent
d1d842098a
commit
dcb9d087de
@ -65,6 +65,7 @@
|
|||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
"json-bigint": "^1.0.0",
|
"json-bigint": "^1.0.0",
|
||||||
"lodash.permutations": "^1.0.0",
|
"lodash.permutations": "^1.0.0",
|
||||||
|
"murmurhash": "^2.0.1",
|
||||||
"node-fetch": "^2.6.9",
|
"node-fetch": "^2.6.9",
|
||||||
"safe-base64": "^2.0.1-0",
|
"safe-base64": "^2.0.1-0",
|
||||||
"set-cookie-parser": "^2.6.0",
|
"set-cookie-parser": "^2.6.0",
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
const process = require('node:process');
|
const process = require('node:process');
|
||||||
const { Collection } = require('@discordjs/collection');
|
const { Collection } = require('@discordjs/collection');
|
||||||
|
const { v3 } = require('murmurhash');
|
||||||
const AnonymousGuild = require('./AnonymousGuild');
|
const AnonymousGuild = require('./AnonymousGuild');
|
||||||
const GuildAuditLogs = require('./GuildAuditLogs');
|
const GuildAuditLogs = require('./GuildAuditLogs');
|
||||||
const GuildPreview = require('./GuildPreview');
|
const GuildPreview = require('./GuildPreview');
|
||||||
@ -228,6 +229,8 @@ class Guild extends AnonymousGuild {
|
|||||||
* * ANIMATED_ICON
|
* * ANIMATED_ICON
|
||||||
* * AUTO_MODERATION
|
* * AUTO_MODERATION
|
||||||
* * BANNER
|
* * BANNER
|
||||||
|
* * CLYDE_ENABLED
|
||||||
|
* <warn> `CLYDE_ENABLED` is now an experimental feature of Discord</warn>
|
||||||
* * COMMERCE
|
* * COMMERCE
|
||||||
* * COMMUNITY
|
* * COMMUNITY
|
||||||
* * CREATOR_MONETIZABLE_PROVISIONAL
|
* * CREATOR_MONETIZABLE_PROVISIONAL
|
||||||
@ -577,6 +580,26 @@ class Guild extends AnonymousGuild {
|
|||||||
return this.members.fetch({ ...options, user: this.ownerId });
|
return this.members.fetch({ ...options, user: this.ownerId });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check out the guild that can activate ClydeAI
|
||||||
|
* <info>**BETA** - This feature is currently in beta and may be changed or removed at any time.</info>
|
||||||
|
* @type {boolean}
|
||||||
|
* @readonly
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
get clydeSupport() {
|
||||||
|
// **BETA** - This feature is currently in beta and may be changed or removed at any time.
|
||||||
|
// Cannot be enabled on guilds with more than 100 members
|
||||||
|
if (
|
||||||
|
v3(`2023-03_clyde_ai:${this.id}`) % 10e3 > 100 ||
|
||||||
|
this.memberCount > 100 ||
|
||||||
|
this.features.includes('COMMUNITY')
|
||||||
|
) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AFK voice channel for this guild.
|
* AFK voice channel for this guild.
|
||||||
* @type {?VoiceChannel}
|
* @type {?VoiceChannel}
|
||||||
@ -1453,6 +1476,23 @@ class Guild extends AnonymousGuild {
|
|||||||
return this.edit({ features });
|
return this.edit({ features });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enables or disables Clyde AI for this guild.
|
||||||
|
* <info>This feature is currently in beta and may be changed or removed at any time.</info>
|
||||||
|
* @param {boolean} [enabled=true] Whether the guild is enabled for Clyde AI
|
||||||
|
* @returns {Promise<Guild>}
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
enableClydeAI(enabled = true) {
|
||||||
|
if (!this.clydeSupport) return Promise.resolve(this);
|
||||||
|
if (enabled) {
|
||||||
|
if (this.features.includes('CLYDE_ENABLED')) return Promise.resolve(this);
|
||||||
|
return this.edit({ features: [...this.features, 'CLYDE_ENABLED'] });
|
||||||
|
} else {
|
||||||
|
return this.edit({ features: this.features.filter(f => f !== 'CLYDE_ENABLED') });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Leaves the guild.
|
* Leaves the guild.
|
||||||
* @returns {Promise<Guild>}
|
* @returns {Promise<Guild>}
|
||||||
@ -1481,6 +1521,7 @@ class Guild extends AnonymousGuild {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes the guild.
|
* Deletes the guild.
|
||||||
|
* @param {string} [mfaCode] The MFA code for the guild owner
|
||||||
* @returns {Promise<Guild>}
|
* @returns {Promise<Guild>}
|
||||||
* @example
|
* @example
|
||||||
* // Delete a guild
|
* // Delete a guild
|
||||||
@ -1488,8 +1529,11 @@ class Guild extends AnonymousGuild {
|
|||||||
* .then(guild => console.log(`Deleted the guild ${guild.name}`))
|
* .then(guild => console.log(`Deleted the guild ${guild.name}`))
|
||||||
* .catch(console.error);
|
* .catch(console.error);
|
||||||
*/
|
*/
|
||||||
async delete() {
|
async delete(mfaCode) {
|
||||||
await this.client.api.guilds(this.id).delete();
|
if ((!mfaCode || typeof mfaCode !== 'string' || mfaCode.length !== 6) && this.client.user.mfaEnabled) {
|
||||||
|
throw new Error('MFA_INVALID');
|
||||||
|
}
|
||||||
|
await this.client.api.guilds(this.id).delete({ data: mfaCode ? { code: mfaCode } : undefined });
|
||||||
return this.client.actions.GuildDelete.handle({ id: this.id }).guild;
|
return this.client.actions.GuildDelete.handle({ id: this.id }).guild;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
typings/index.d.ts
vendored
8
typings/index.d.ts
vendored
@ -1414,7 +1414,7 @@ export class Guild extends AnonymousGuild {
|
|||||||
public widgetEnabled: boolean | null;
|
public widgetEnabled: boolean | null;
|
||||||
public readonly maximumBitrate: number;
|
public readonly maximumBitrate: number;
|
||||||
public createTemplate(name: string, description?: string): Promise<GuildTemplate>;
|
public createTemplate(name: string, description?: string): Promise<GuildTemplate>;
|
||||||
public delete(): Promise<Guild>;
|
public delete(mfaCode?: string): Promise<Guild>;
|
||||||
public read(): Promise<undefined>;
|
public read(): Promise<undefined>;
|
||||||
public discoverySplashURL(options?: StaticImageURLOptions): string | null;
|
public discoverySplashURL(options?: StaticImageURLOptions): string | null;
|
||||||
public edit(data: GuildEditData, reason?: string): Promise<Guild>;
|
public edit(data: GuildEditData, reason?: string): Promise<Guild>;
|
||||||
@ -1476,6 +1476,11 @@ export class Guild extends AnonymousGuild {
|
|||||||
public setWidgetSettings(settings: GuildWidgetSettingsData, reason?: string): Promise<Guild>;
|
public setWidgetSettings(settings: GuildWidgetSettingsData, reason?: string): Promise<Guild>;
|
||||||
public setVanityCode(code?: string): Promise<Vanity>;
|
public setVanityCode(code?: string): Promise<Vanity>;
|
||||||
public toJSON(): unknown;
|
public toJSON(): unknown;
|
||||||
|
// Added
|
||||||
|
/** @deprecated */
|
||||||
|
public readonly clydeSupport: boolean;
|
||||||
|
/** @deprecated */
|
||||||
|
public enableClydeAI(enabled?: boolean): Promise<Guild>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class GuildAuditLogs<T extends GuildAuditLogsResolvable = 'ALL'> {
|
export class GuildAuditLogs<T extends GuildAuditLogsResolvable = 'ALL'> {
|
||||||
@ -6313,6 +6318,7 @@ export type GuildFeatures =
|
|||||||
| 'ANIMATED_ICON'
|
| 'ANIMATED_ICON'
|
||||||
| 'AUTO_MODERATION'
|
| 'AUTO_MODERATION'
|
||||||
| 'BANNER'
|
| 'BANNER'
|
||||||
|
| 'CLYDE_ENABLED'
|
||||||
| 'COMMERCE'
|
| 'COMMERCE'
|
||||||
| 'COMMUNITY'
|
| 'COMMUNITY'
|
||||||
| 'CREATOR_MONETIZABLE_PROVISIONAL'
|
| 'CREATOR_MONETIZABLE_PROVISIONAL'
|
||||||
|
Loading…
Reference in New Issue
Block a user