chore(release): version

This commit is contained in:
March 7th 2022-06-13 23:53:43 +07:00
parent bdc1c70758
commit dd2912fb8d
14 changed files with 245 additions and 31 deletions

View File

@ -14,7 +14,7 @@
## About ## About
<strong>Welcome to `discord.js-selfbot-v13@v2.2`, based on `discord.js@13.8.0`</strong> <strong>Welcome to `discord.js-selfbot-v13@v2.3`, based on `discord.js@13.8.0`</strong>
- discord.js-selfbot-v13 is a [Node.js](https://nodejs.org) module that allows user accounts to interact with the Discord API v9. - discord.js-selfbot-v13 is a [Node.js](https://nodejs.org) module that allows user accounts to interact with the Discord API v9.
@ -36,15 +36,12 @@ But if you want to see some specific notes (with pictures) you can go to [here](
### <strong>[Risky actions](https://github.com/Merubokkusu/Discord-S.C.U.M/issues/66)</strong> ### <strong>[Risky actions](https://github.com/Merubokkusu/Discord-S.C.U.M/issues/66)</strong>
## Checklist ## Checklist
- [x] Send + receive messages with Attachment, Embed (WebEmbed), etc. - [x] Send + receive messages (not send Embed :v ).
- [x] Setting Discord App (Missing a lot of functions) - [x] Setting Discord App (Missing a lot of functions)
- [X] Requests (add friends, join guilds, etc.) - [X] REST (Guild, Relationships, Profile Editing)
- [X] Profile Editing (Name, Status, Avatar, Bio, Rich-Presence, etc.) - [X] Interactions (slash commands, buttons, context menu, modal)
- [X] Interactions (slash commands, buttons, etc.) - [X] Voice (Call, Join, Leave, Speak, etc.)
- [X] Voice Channel (Join, Leave, Speak, etc.)
- [X] Documentation - [X] Documentation
- [X] Audio call
- [X] Recieve messages from large servers
- [ ] Add more guild http api wraps - [ ] Add more guild http api wraps
- [ ] Video stream - [ ] Video stream
- [ ] Everything - [ ] Everything
@ -127,3 +124,5 @@ Contact me in Discord: [Shiraori#1782](https://discord.com/users/721746046543331
## <strong><img src="https://cdn.discordapp.com/attachments/820557032016969751/952436539118456882/flag-vietnam_1f1fb-1f1f3.png" alt="." width="20" height="20"/> Vietnamese</strong> ## <strong><img src="https://cdn.discordapp.com/attachments/820557032016969751/952436539118456882/flag-vietnam_1f1fb-1f1f3.png" alt="." width="20" height="20"/> Vietnamese</strong>
Được tạo bởi người Việt Nam, dựa trên Discord API v9, đây là một trong những module selfbot được hỗ trợ tốt nhất. Được tạo bởi người Việt Nam, dựa trên Discord API v9, đây là một trong những module selfbot được hỗ trợ tốt nhất.
# From Github with love 💕

File diff suppressed because one or more lines are too long

52
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "discord.js-selfbot-v13", "name": "discord.js-selfbot-v13",
"version": "2.2.0", "version": "2.3.0",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "discord.js-selfbot-v13", "name": "discord.js-selfbot-v13",
"version": "2.2.0", "version": "2.3.0",
"license": "GNU General Public License v3.0", "license": "GNU General Public License v3.0",
"dependencies": { "dependencies": {
"@discordjs/builders": "^0.15.0", "@discordjs/builders": "^0.15.0",
@ -21,7 +21,7 @@
"bignumber.js": "^9.0.2", "bignumber.js": "^9.0.2",
"bufferutil": "^4.0.6", "bufferutil": "^4.0.6",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"discord-api-types": "^0.33.5", "discord-api-types": "^0.34.0",
"discord-bettermarkdown": "^1.2.0", "discord-bettermarkdown": "^1.2.0",
"discord-rpc-contructor": "^1.1.5", "discord-rpc-contructor": "^1.1.5",
"discord.js": "^13.8.0", "discord.js": "^13.8.0",
@ -1042,6 +1042,11 @@
"node": ">=16.9.0" "node": ">=16.9.0"
} }
}, },
"node_modules/@discordjs/builders/node_modules/discord-api-types": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz",
"integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg=="
},
"node_modules/@discordjs/collection": { "node_modules/@discordjs/collection": {
"version": "0.7.0", "version": "0.7.0",
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz",
@ -1688,6 +1693,11 @@
"node": ">=16.9.0" "node": ">=16.9.0"
} }
}, },
"node_modules/@discordjs/voice/node_modules/discord-api-types": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz",
"integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg=="
},
"node_modules/@eslint/eslintrc": { "node_modules/@eslint/eslintrc": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz",
@ -4438,9 +4448,9 @@
} }
}, },
"node_modules/discord-api-types": { "node_modules/discord-api-types": {
"version": "0.33.5", "version": "0.34.0",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.34.0.tgz",
"integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" "integrity": "sha512-xwlhwiLZ11+8+ou1JlPOLJkwpu8qklm+aUm9JF06YC59fSo4CD7gQqsbUBxqevqheLx+WhRgJOHjDbjI0Q+Ecw=="
}, },
"node_modules/discord-bettermarkdown": { "node_modules/discord-bettermarkdown": {
"version": "1.2.0", "version": "1.2.0",
@ -4495,6 +4505,11 @@
"node": ">=16.9.0" "node": ">=16.9.0"
} }
}, },
"node_modules/discord.js/node_modules/discord-api-types": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz",
"integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg=="
},
"node_modules/dmd": { "node_modules/dmd": {
"version": "4.0.6", "version": "4.0.6",
"resolved": "https://registry.npmjs.org/dmd/-/dmd-4.0.6.tgz", "resolved": "https://registry.npmjs.org/dmd/-/dmd-4.0.6.tgz",
@ -15487,6 +15502,13 @@
"fast-deep-equal": "^3.1.3", "fast-deep-equal": "^3.1.3",
"ts-mixer": "^6.0.1", "ts-mixer": "^6.0.1",
"tslib": "^2.4.0" "tslib": "^2.4.0"
},
"dependencies": {
"discord-api-types": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz",
"integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg=="
}
} }
}, },
"@discordjs/collection": { "@discordjs/collection": {
@ -15987,6 +16009,13 @@
"tiny-typed-emitter": "^2.1.0", "tiny-typed-emitter": "^2.1.0",
"tslib": "^2.4.0", "tslib": "^2.4.0",
"ws": "^8.7.0" "ws": "^8.7.0"
},
"dependencies": {
"discord-api-types": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz",
"integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg=="
}
} }
}, },
"@eslint/eslintrc": { "@eslint/eslintrc": {
@ -18166,9 +18195,9 @@
} }
}, },
"discord-api-types": { "discord-api-types": {
"version": "0.33.5", "version": "0.34.0",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.34.0.tgz",
"integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" "integrity": "sha512-xwlhwiLZ11+8+ou1JlPOLJkwpu8qklm+aUm9JF06YC59fSo4CD7gQqsbUBxqevqheLx+WhRgJOHjDbjI0Q+Ecw=="
}, },
"discord-bettermarkdown": { "discord-bettermarkdown": {
"version": "1.2.0", "version": "1.2.0",
@ -18215,6 +18244,11 @@
"ts-mixer": "^6.0.1", "ts-mixer": "^6.0.1",
"tslib": "^2.4.0" "tslib": "^2.4.0"
} }
},
"discord-api-types": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz",
"integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg=="
} }
} }
}, },

View File

@ -1,6 +1,6 @@
{ {
"name": "discord.js-selfbot-v13", "name": "discord.js-selfbot-v13",
"version": "2.2.0", "version": "2.3.0",
"description": "A unofficial discord.js fork for creating selfbots [Based on discord.js v13]", "description": "A unofficial discord.js fork for creating selfbots [Based on discord.js v13]",
"main": "./src/index.js", "main": "./src/index.js",
"types": "./typings/index.d.ts", "types": "./typings/index.d.ts",
@ -63,7 +63,7 @@
"bignumber.js": "^9.0.2", "bignumber.js": "^9.0.2",
"bufferutil": "^4.0.6", "bufferutil": "^4.0.6",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"discord-api-types": "^0.33.5", "discord-api-types": "^0.34.0",
"discord-bettermarkdown": "^1.2.0", "discord-bettermarkdown": "^1.2.0",
"discord-rpc-contructor": "^1.1.5", "discord-rpc-contructor": "^1.1.5",
"discord.js": "^13.8.0", "discord.js": "^13.8.0",

View File

@ -1,7 +1,17 @@
'use strict'; 'use strict';
const { Events } = require('../../../util/Constants'); const { Events } = require('../../../util/Constants');
/**
* @typedef {Object} InteractionResponseBody
* @property {Snowflake} id maybe id of this event (???) (documentation needed)
* @property {Snowflake} nonce nonce in POST /interactions
*/
module.exports = (client, packet) => { module.exports = (client, packet) => {
if (client.user.bot) client.actions.InteractionCreate.handle(packet.d); if (client.user.bot) client.actions.InteractionCreate.handle(packet.d);
else client.emit(Events.INTERACTION_CREATE, packet.d); /**
* Emitted whenever client user send interaction
* @event Client#interactionSuccess
* @param {InteractionResponseBody} data InteractionResponseBody
*/ else client.emit(Events.INTERACTION_CREATE, packet.d);
}; };

View File

@ -2,5 +2,10 @@
const { Events } = require('../../../util/Constants'); const { Events } = require('../../../util/Constants');
module.exports = (client, { d: data }) => { module.exports = (client, { d: data }) => {
/**
* Emitted whenever client user send interaction and error
* @event Client#interactionFailed
* @param {InteractionResponseBody} data data
*/
client.emit(Events.INTERACTION_FAILED, data); client.emit(Events.INTERACTION_FAILED, data);
}; };

View File

@ -0,0 +1,11 @@
'use strict';
const Modal = require('../../../structures/Modal');
const { Events } = require('../../../util/Constants');
module.exports = (client, { d: data }) => {
/**
* Emitted whenever client user receive interaction.showModal()
* @event Client#interactionModalCreate
* @param {Modal} modal The modal (extended)
*/
client.emit(Events.INTERACTION_MODAL_CREATE, new Modal(data, client));
};

View File

@ -8,25 +8,31 @@ const Discord = require('../../../index');
const { Events, Opcodes } = require('../../../util/Constants'); const { Events, Opcodes } = require('../../../util/Constants');
const { Networking } = require('../../../util/Voice'); const { Networking } = require('../../../util/Voice');
/**
* Emitted whenever clientOptions.checkUpdate = true
* @event Client#update
* @param {string} data Log data :)) ehe
*/
async function checkUpdate(client) { async function checkUpdate(client) {
const res_ = await axios const res_ = await axios
.get(`https://registry.npmjs.com/${encodeURIComponent('discord.js-selfbot-v13')}`) .get(`https://registry.npmjs.com/${encodeURIComponent('discord.js-selfbot-v13')}`)
.catch(() => {}); .catch(() => {});
if (!res_) { if (!res_) {
return client.emit(Events.DEBUG, `${chalk.redBright('[Fail]')} Check Update error`); return client.emit('update', `${chalk.redBright('[Fail]')} Check Update error`);
} }
const lastest_tag = res_.data['dist-tags'].latest; const lastest_tag = res_.data['dist-tags'].latest;
// Checking if the package is outdated // Checking if the package is outdated
// Stable version // Stable version
if (lastest_tag !== Discord.version && Discord.version.includes('-') == false) { if (lastest_tag !== Discord.version && Discord.version.includes('-') == false) {
return client.emit( return client.emit(
Events.DEBUG, 'update',
`${chalk.yellowBright('[WARNING]')} New Discord.js-selfbot-v13 version. `${chalk.yellowBright('[WARNING]')} New Discord.js-selfbot-v13 version.
Old Version: ${chalk.redBright(Discord.version)} => New Version: ${chalk.greenBright(lastest_tag)}`, Old Version: ${chalk.redBright(Discord.version)} => New Version: ${chalk.greenBright(lastest_tag)}`,
); );
} }
client.emit( client.emit(
Events.DEBUG, 'update',
`${chalk.greenBright('[OK]')} Discord.js-selfbot-v13 is up to date. Version: ${chalk.blueBright(Discord.version)}`, `${chalk.greenBright('[OK]')} Discord.js-selfbot-v13 is up to date. Version: ${chalk.blueBright(Discord.version)}`,
); );
return null; return null;

View File

@ -55,6 +55,7 @@ const handlers = Object.fromEntries([
['WEBHOOKS_UPDATE', require('./WEBHOOKS_UPDATE')], ['WEBHOOKS_UPDATE', require('./WEBHOOKS_UPDATE')],
['INTERACTION_CREATE', require('./INTERACTION_CREATE')], ['INTERACTION_CREATE', require('./INTERACTION_CREATE')],
['INTERACTION_SUCCESS', require('./INTERACTION_SUCCESS')], ['INTERACTION_SUCCESS', require('./INTERACTION_SUCCESS')],
['INTERACTION_MODAL_CREATE', require('./INTERACTION_MODAL_CREATE')],
['INTERACTION_FAILED', require('./INTERACTION_FAILED')], ['INTERACTION_FAILED', require('./INTERACTION_FAILED')],
['STAGE_INSTANCE_CREATE', require('./STAGE_INSTANCE_CREATE')], ['STAGE_INSTANCE_CREATE', require('./STAGE_INSTANCE_CREATE')],
['STAGE_INSTANCE_UPDATE', require('./STAGE_INSTANCE_UPDATE')], ['STAGE_INSTANCE_UPDATE', require('./STAGE_INSTANCE_UPDATE')],

View File

@ -63,6 +63,12 @@ class APIRequest {
} else { } else {
body.append('payload_json', JSON.stringify(this.options.data)); body.append('payload_json', JSON.stringify(this.options.data));
} }
} else if (typeof this.options.body !== 'undefined') {
if (this.options.dontUsePayloadJSON) {
for (const [key, value] of Object.entries(this.options.body)) body.append(key, value);
} else {
body.append('payload_json', JSON.stringify(this.options.body));
}
} }
headers = Object.assign(headers, body.getHeaders()); headers = Object.assign(headers, body.getHeaders());
// eslint-disable-next-line eqeqeq // eslint-disable-next-line eqeqeq

View File

@ -630,8 +630,26 @@ class ApplicationCommand extends Base {
if (subCommandCheck && subCommand?.options && subCommand?.options[i]?.required) { if (subCommandCheck && subCommand?.options && subCommand?.options[i]?.required) {
throw new Error('Value required missing'); throw new Error('Value required missing');
} }
const data2 = {
type: 2, // Slash command, context menu
application_id: this.applicationId,
guild_id: message.guildId,
channel_id: message.channelId,
session_id: this.client.session_id,
data: {
// ApplicationCommandData
version: this.version,
id: this.id,
name: this.name,
guild_id: message.guildId,
type: ApplicationCommandTypes[this.type],
options: option_,
attachments: attachments,
},
nonce: SnowflakeUtil.generate(),
};
const data = { const data = {
type: 2, // ??? type: 2, // Slash command, context menu
application_id: this.applicationId, application_id: this.applicationId,
guild_id: message.guildId, guild_id: message.guildId,
channel_id: message.channelId, channel_id: message.channelId,
@ -647,11 +665,16 @@ class ApplicationCommand extends Base {
}, },
nonce: SnowflakeUtil.generate(), nonce: SnowflakeUtil.generate(),
}; };
console.log('Send', data); await this.client.api.interactions
await this.client.api.interactions.post({ .post({
body: data, body: data,
data,
files: attachmentsBuffer, files: attachmentsBuffer,
})
.catch(async () => {
await this.client.api.interactions.post({
body: data2,
files: attachmentsBuffer,
});
}); });
return true; return true;
} }

View File

@ -1,6 +1,8 @@
'use strict'; 'use strict';
const BaseMessageComponent = require('./BaseMessageComponent'); const BaseMessageComponent = require('./BaseMessageComponent');
const User = require('./User');
const SnowflakeUtil = require('../util/SnowflakeUtil');
const Util = require('../util/Util'); const Util = require('../util/Util');
/** /**
@ -37,6 +39,31 @@ class Modal {
* @type {?string} * @type {?string}
*/ */
this.title = data.title ?? null; this.title = data.title ?? null;
/**
* Timestamp (Discord epoch) of when this modal was created
* @type {?Snowflake}
*/
this.nonce = data.nonce ?? null;
/**
* ID of modal ???
* @type {?Snowflake}
*/
this.id = data.id ?? null;
/**
* Application sending the modal
* @type {?Object}
*/
this.application = data.application
? {
...data.application,
bot: data.application.bot ? new User(client, data.application.bot) : null,
}
: null;
this.client = client;
} }
/** /**
@ -96,8 +123,85 @@ class Modal {
components: this.components.map(c => c.toJSON()), components: this.components.map(c => c.toJSON()),
custom_id: this.customId, custom_id: this.customId,
title: this.title, title: this.title,
id: this.id,
}; };
} }
/**
* @typedef {Object} ModalReplyData
* @property {string} [customId] TextInputComponent custom id
* @property {string} [value] TextInputComponent value
*/
/**
* Reply to this modal with data. (Event only)
* @param {Snowflake} guildId GuildID of the guild to send the modal to
* @param {Snowflake} channelId ChannelID of the channel to send the modal to
* @param {...ModalReplyData} data Data to send with the modal
* @returns {Promise<boolean>}
*/
async reply(guildId, channelId, ...data) {
// Test
if (this.application) throw new Error('Modal cannot reply (Missing Application)');
const guild = this.client.guilds.cache.get(guildId);
if (!guild) throw new Error('GUILD_NOT_FOUND', `Guild ${guildId} not found`);
const channel = guild.channels.cache.get(channelId);
if (!channel) throw new Error('CHANNEL_NOT_FOUND', `Channel ${channelId} [Guild ${guildId}] not found`);
// Add data to components
// this.components = [ MessageActionRow.components = [ TextInputComponent ] ]
// 5 MessageActionRow / Modal, 1 TextInputComponent / 1 MessageActionRow
for (let i = 0; i < this.components.length; i++) {
const value = data.find(d => d.customId == this.components[i].components[0].customId);
if (this.components[i].components[0].required == true) {
if (!value) {
throw new Error(
'MODAL_REQUIRED_FIELD_MISSING\n' +
`Required fieldId ${this.components[i].components[0].customId} missing value`,
);
}
if (!(typeof value?.value == 'string')) {
throw new Error(
'MODAL_REPLY_DATA_INVALID\n' +
`Data (Required) must be strings, got ${typeof value.value} [Custom ID: ${value.customId}]`,
);
}
}
if (value) {
if (!(typeof value?.value == 'string')) {
console.warn(
'Warning: MODAL_REPLY_DATA_INVALID',
`Data (Not required) must be strings, got ${typeof value.value} [Custom ID: ${value.customId}]`,
);
continue;
}
this.components[i].components[0].value = value.value;
}
delete this.components[i].components[0].maxLength;
delete this.components[i].components[0].minLength;
delete this.components[i].components[0].required;
delete this.components[i].components[0].placeholder;
delete this.components[i].components[0].label;
delete this.components[i].components[0].style;
}
// Filter
this.components = this.components.filter(c => c.components[0].value && c.components[0].value !== '');
// Get Object
const dataFinal = this.toJSON();
delete dataFinal.title;
const postData = {
type: 5, // Maybe modal ... (2: slash, context menu)
application_id: this.application.id,
guild_id: guildId,
channel_id: channelId,
data: dataFinal,
nonce: SnowflakeUtil.generate(),
session_id: this.client.session_id,
};
await this.client.api.interactions.post({
data: postData,
});
return true;
}
} }
module.exports = Modal; module.exports = Modal;

View File

@ -297,6 +297,10 @@ exports.Events = {
* @private This event is not documented in the API. * @private This event is not documented in the API.
*/ */
INTERACTION_FAILED: 'interactionFailed', INTERACTION_FAILED: 'interactionFailed',
/**
* @private This event is not documented in the API.
*/
INTERACTION_MODAL_CREATE: 'interactionModalCreate',
ERROR: 'error', ERROR: 'error',
WARN: 'warn', WARN: 'warn',
DEBUG: 'debug', DEBUG: 'debug',

11
typings/index.d.ts vendored
View File

@ -1974,6 +1974,9 @@ export class Modal {
public components: MessageActionRow<ModalActionRowComponent>[]; public components: MessageActionRow<ModalActionRowComponent>[];
public customId: string | null; public customId: string | null;
public title: string | null; public title: string | null;
public application: object | null;
public client: Client | null;
public nonce: Snowflake | null;
public addComponents( public addComponents(
...components: ( ...components: (
| MessageActionRow<ModalActionRowComponent> | MessageActionRow<ModalActionRowComponent>
@ -1997,6 +2000,12 @@ export class Modal {
): this; ): this;
public setTitle(title: string): this; public setTitle(title: string): this;
public toJSON(): RawModalSubmitInteractionData; public toJSON(): RawModalSubmitInteractionData;
public reply(guildId: Snowflake, channelId: Snowflake, ...args: ModalReplyData[]): Promise<boolean>;
}
export interface ModalReplyData {
customId: string;
value: string;
} }
export class ModalSubmitFieldsResolver { export class ModalSubmitFieldsResolver {
@ -4042,6 +4051,7 @@ export interface ClientEvents extends BaseClientEvents {
interactionCreate: [interaction: Interaction | { nonce: Snowflake; id: Snowflake }]; interactionCreate: [interaction: Interaction | { nonce: Snowflake; id: Snowflake }];
interactionSuccess: [interaction: { nonce: Snowflake; id: Snowflake }]; interactionSuccess: [interaction: { nonce: Snowflake; id: Snowflake }];
interactionFailed: [interaction: { nonce: Snowflake; id: Snowflake }]; interactionFailed: [interaction: { nonce: Snowflake; id: Snowflake }];
interactionModalCreate: [modal: Modal];
shardDisconnect: [closeEvent: CloseEvent, shardId: number]; shardDisconnect: [closeEvent: CloseEvent, shardId: number];
shardError: [error: Error, shardId: number]; shardError: [error: Error, shardId: number];
shardReady: [shardId: number, unavailableGuilds: Set<Snowflake> | undefined]; shardReady: [shardId: number, unavailableGuilds: Set<Snowflake> | undefined];
@ -4123,6 +4133,7 @@ export interface ConstantsEvents {
WEBHOOKS_UPDATE: 'webhookUpdate'; WEBHOOKS_UPDATE: 'webhookUpdate';
INTERACTION_CREATE: 'interactionCreate'; INTERACTION_CREATE: 'interactionCreate';
INTERACTION_SUCCESS: 'interactionSuccess'; INTERACTION_SUCCESS: 'interactionSuccess';
INTERACTION_MODAL_CREATE: 'interactionModalCreate';
INTERACTION_FAILED: 'interactionFailed'; INTERACTION_FAILED: 'interactionFailed';
ERROR: 'error'; ERROR: 'error';
WARN: 'warn'; WARN: 'warn';