chore(release): version
This commit is contained in:
parent
bdc1c70758
commit
dd2912fb8d
15
README.md
15
README.md
@ -14,7 +14,7 @@
|
||||
|
||||
## 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.
|
||||
|
||||
@ -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>
|
||||
|
||||
## 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] Requests (add friends, join guilds, etc.)
|
||||
- [X] Profile Editing (Name, Status, Avatar, Bio, Rich-Presence, etc.)
|
||||
- [X] Interactions (slash commands, buttons, etc.)
|
||||
- [X] Voice Channel (Join, Leave, Speak, etc.)
|
||||
- [X] REST (Guild, Relationships, Profile Editing)
|
||||
- [X] Interactions (slash commands, buttons, context menu, modal)
|
||||
- [X] Voice (Call, Join, Leave, Speak, etc.)
|
||||
- [X] Documentation
|
||||
- [X] Audio call
|
||||
- [X] Recieve messages from large servers
|
||||
- [ ] Add more guild http api wraps
|
||||
- [ ] Video stream
|
||||
- [ ] 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>
|
||||
Đượ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
52
package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "discord.js-selfbot-v13",
|
||||
"version": "2.2.0",
|
||||
"version": "2.3.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "discord.js-selfbot-v13",
|
||||
"version": "2.2.0",
|
||||
"version": "2.3.0",
|
||||
"license": "GNU General Public License v3.0",
|
||||
"dependencies": {
|
||||
"@discordjs/builders": "^0.15.0",
|
||||
@ -21,7 +21,7 @@
|
||||
"bignumber.js": "^9.0.2",
|
||||
"bufferutil": "^4.0.6",
|
||||
"chalk": "^4.1.2",
|
||||
"discord-api-types": "^0.33.5",
|
||||
"discord-api-types": "^0.34.0",
|
||||
"discord-bettermarkdown": "^1.2.0",
|
||||
"discord-rpc-contructor": "^1.1.5",
|
||||
"discord.js": "^13.8.0",
|
||||
@ -1042,6 +1042,11 @@
|
||||
"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": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz",
|
||||
@ -1688,6 +1693,11 @@
|
||||
"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": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz",
|
||||
@ -4438,9 +4448,9 @@
|
||||
}
|
||||
},
|
||||
"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=="
|
||||
"version": "0.34.0",
|
||||
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.34.0.tgz",
|
||||
"integrity": "sha512-xwlhwiLZ11+8+ou1JlPOLJkwpu8qklm+aUm9JF06YC59fSo4CD7gQqsbUBxqevqheLx+WhRgJOHjDbjI0Q+Ecw=="
|
||||
},
|
||||
"node_modules/discord-bettermarkdown": {
|
||||
"version": "1.2.0",
|
||||
@ -4495,6 +4505,11 @@
|
||||
"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": {
|
||||
"version": "4.0.6",
|
||||
"resolved": "https://registry.npmjs.org/dmd/-/dmd-4.0.6.tgz",
|
||||
@ -15487,6 +15502,13 @@
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"ts-mixer": "^6.0.1",
|
||||
"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": {
|
||||
@ -15987,6 +16009,13 @@
|
||||
"tiny-typed-emitter": "^2.1.0",
|
||||
"tslib": "^2.4.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": {
|
||||
@ -18166,9 +18195,9 @@
|
||||
}
|
||||
},
|
||||
"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=="
|
||||
"version": "0.34.0",
|
||||
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.34.0.tgz",
|
||||
"integrity": "sha512-xwlhwiLZ11+8+ou1JlPOLJkwpu8qklm+aUm9JF06YC59fSo4CD7gQqsbUBxqevqheLx+WhRgJOHjDbjI0Q+Ecw=="
|
||||
},
|
||||
"discord-bettermarkdown": {
|
||||
"version": "1.2.0",
|
||||
@ -18215,6 +18244,11 @@
|
||||
"ts-mixer": "^6.0.1",
|
||||
"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=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"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]",
|
||||
"main": "./src/index.js",
|
||||
"types": "./typings/index.d.ts",
|
||||
@ -63,7 +63,7 @@
|
||||
"bignumber.js": "^9.0.2",
|
||||
"bufferutil": "^4.0.6",
|
||||
"chalk": "^4.1.2",
|
||||
"discord-api-types": "^0.33.5",
|
||||
"discord-api-types": "^0.34.0",
|
||||
"discord-bettermarkdown": "^1.2.0",
|
||||
"discord-rpc-contructor": "^1.1.5",
|
||||
"discord.js": "^13.8.0",
|
||||
|
@ -1,7 +1,17 @@
|
||||
'use strict';
|
||||
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) => {
|
||||
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);
|
||||
};
|
||||
|
@ -2,5 +2,10 @@
|
||||
const { Events } = require('../../../util/Constants');
|
||||
|
||||
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);
|
||||
};
|
||||
|
11
src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js
Normal file
11
src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js
Normal 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));
|
||||
};
|
@ -8,25 +8,31 @@ const Discord = require('../../../index');
|
||||
const { Events, Opcodes } = require('../../../util/Constants');
|
||||
const { Networking } = require('../../../util/Voice');
|
||||
|
||||
/**
|
||||
* Emitted whenever clientOptions.checkUpdate = true
|
||||
* @event Client#update
|
||||
* @param {string} data Log data :)) ehe
|
||||
*/
|
||||
|
||||
async function checkUpdate(client) {
|
||||
const res_ = await axios
|
||||
.get(`https://registry.npmjs.com/${encodeURIComponent('discord.js-selfbot-v13')}`)
|
||||
.catch(() => {});
|
||||
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;
|
||||
// Checking if the package is outdated
|
||||
// Stable version
|
||||
if (lastest_tag !== Discord.version && Discord.version.includes('-') == false) {
|
||||
return client.emit(
|
||||
Events.DEBUG,
|
||||
'update',
|
||||
`${chalk.yellowBright('[WARNING]')} New Discord.js-selfbot-v13 version.
|
||||
Old Version: ${chalk.redBright(Discord.version)} => New Version: ${chalk.greenBright(lastest_tag)}`,
|
||||
);
|
||||
}
|
||||
client.emit(
|
||||
Events.DEBUG,
|
||||
'update',
|
||||
`${chalk.greenBright('[OK]')} Discord.js-selfbot-v13 is up to date. Version: ${chalk.blueBright(Discord.version)}`,
|
||||
);
|
||||
return null;
|
||||
|
@ -55,6 +55,7 @@ const handlers = Object.fromEntries([
|
||||
['WEBHOOKS_UPDATE', require('./WEBHOOKS_UPDATE')],
|
||||
['INTERACTION_CREATE', require('./INTERACTION_CREATE')],
|
||||
['INTERACTION_SUCCESS', require('./INTERACTION_SUCCESS')],
|
||||
['INTERACTION_MODAL_CREATE', require('./INTERACTION_MODAL_CREATE')],
|
||||
['INTERACTION_FAILED', require('./INTERACTION_FAILED')],
|
||||
['STAGE_INSTANCE_CREATE', require('./STAGE_INSTANCE_CREATE')],
|
||||
['STAGE_INSTANCE_UPDATE', require('./STAGE_INSTANCE_UPDATE')],
|
||||
|
@ -63,6 +63,12 @@ class APIRequest {
|
||||
} else {
|
||||
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());
|
||||
// eslint-disable-next-line eqeqeq
|
||||
|
@ -630,8 +630,26 @@ class ApplicationCommand extends Base {
|
||||
if (subCommandCheck && subCommand?.options && subCommand?.options[i]?.required) {
|
||||
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 = {
|
||||
type: 2, // ???
|
||||
type: 2, // Slash command, context menu
|
||||
application_id: this.applicationId,
|
||||
guild_id: message.guildId,
|
||||
channel_id: message.channelId,
|
||||
@ -647,12 +665,17 @@ class ApplicationCommand extends Base {
|
||||
},
|
||||
nonce: SnowflakeUtil.generate(),
|
||||
};
|
||||
console.log('Send', data);
|
||||
await this.client.api.interactions.post({
|
||||
body: data,
|
||||
data,
|
||||
files: attachmentsBuffer,
|
||||
});
|
||||
await this.client.api.interactions
|
||||
.post({
|
||||
body: data,
|
||||
files: attachmentsBuffer,
|
||||
})
|
||||
.catch(async () => {
|
||||
await this.client.api.interactions.post({
|
||||
body: data2,
|
||||
files: attachmentsBuffer,
|
||||
});
|
||||
});
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
|
@ -1,6 +1,8 @@
|
||||
'use strict';
|
||||
|
||||
const BaseMessageComponent = require('./BaseMessageComponent');
|
||||
const User = require('./User');
|
||||
const SnowflakeUtil = require('../util/SnowflakeUtil');
|
||||
const Util = require('../util/Util');
|
||||
|
||||
/**
|
||||
@ -37,6 +39,31 @@ class Modal {
|
||||
* @type {?string}
|
||||
*/
|
||||
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()),
|
||||
custom_id: this.customId,
|
||||
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;
|
||||
|
@ -297,6 +297,10 @@ exports.Events = {
|
||||
* @private This event is not documented in the API.
|
||||
*/
|
||||
INTERACTION_FAILED: 'interactionFailed',
|
||||
/**
|
||||
* @private This event is not documented in the API.
|
||||
*/
|
||||
INTERACTION_MODAL_CREATE: 'interactionModalCreate',
|
||||
ERROR: 'error',
|
||||
WARN: 'warn',
|
||||
DEBUG: 'debug',
|
||||
|
11
typings/index.d.ts
vendored
11
typings/index.d.ts
vendored
@ -1974,6 +1974,9 @@ export class Modal {
|
||||
public components: MessageActionRow<ModalActionRowComponent>[];
|
||||
public customId: string | null;
|
||||
public title: string | null;
|
||||
public application: object | null;
|
||||
public client: Client | null;
|
||||
public nonce: Snowflake | null;
|
||||
public addComponents(
|
||||
...components: (
|
||||
| MessageActionRow<ModalActionRowComponent>
|
||||
@ -1997,6 +2000,12 @@ export class Modal {
|
||||
): this;
|
||||
public setTitle(title: string): this;
|
||||
public toJSON(): RawModalSubmitInteractionData;
|
||||
public reply(guildId: Snowflake, channelId: Snowflake, ...args: ModalReplyData[]): Promise<boolean>;
|
||||
}
|
||||
|
||||
export interface ModalReplyData {
|
||||
customId: string;
|
||||
value: string;
|
||||
}
|
||||
|
||||
export class ModalSubmitFieldsResolver {
|
||||
@ -4042,6 +4051,7 @@ export interface ClientEvents extends BaseClientEvents {
|
||||
interactionCreate: [interaction: Interaction | { nonce: Snowflake; id: Snowflake }];
|
||||
interactionSuccess: [interaction: { nonce: Snowflake; id: Snowflake }];
|
||||
interactionFailed: [interaction: { nonce: Snowflake; id: Snowflake }];
|
||||
interactionModalCreate: [modal: Modal];
|
||||
shardDisconnect: [closeEvent: CloseEvent, shardId: number];
|
||||
shardError: [error: Error, shardId: number];
|
||||
shardReady: [shardId: number, unavailableGuilds: Set<Snowflake> | undefined];
|
||||
@ -4123,6 +4133,7 @@ export interface ConstantsEvents {
|
||||
WEBHOOKS_UPDATE: 'webhookUpdate';
|
||||
INTERACTION_CREATE: 'interactionCreate';
|
||||
INTERACTION_SUCCESS: 'interactionSuccess';
|
||||
INTERACTION_MODAL_CREATE: 'interactionModalCreate';
|
||||
INTERACTION_FAILED: 'interactionFailed';
|
||||
ERROR: 'error';
|
||||
WARN: 'warn';
|
||||
|
Loading…
Reference in New Issue
Block a user