mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
feat: add support for application command events (#5596)
This commit is contained in:
22
src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js
Normal file
22
src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js
Normal file
@@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
const { Events } = require('../../../util/Constants');
|
||||
|
||||
module.exports = (client, { d: data }) => {
|
||||
let command;
|
||||
|
||||
if (data.guild_id) {
|
||||
const guild = client.guilds.cache.get(data.guild_id);
|
||||
if (!guild) return;
|
||||
command = guild.commands.add(data);
|
||||
} else {
|
||||
command = client.application.commands.add(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Emitted when an application command is created.
|
||||
* @event Client#applicationCommandCreate
|
||||
* @param {ApplicationCommand} command The command which was created
|
||||
*/
|
||||
client.emit(Events.APPLICATION_COMMAND_CREATE, command);
|
||||
};
|
||||
24
src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js
Normal file
24
src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js
Normal file
@@ -0,0 +1,24 @@
|
||||
'use strict';
|
||||
|
||||
const { Events } = require('../../../util/Constants');
|
||||
|
||||
module.exports = (client, { d: data }) => {
|
||||
let command;
|
||||
|
||||
if (data.guild_id) {
|
||||
const guild = client.guilds.cache.get(data.guild_id);
|
||||
if (!guild) return;
|
||||
command = guild.commands.add(data);
|
||||
guild.commands.cache.delete(data.id);
|
||||
} else {
|
||||
command = client.application.commands.add(data);
|
||||
client.application.commands.cache.delete(data.id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Emitted when an application command is deleted.
|
||||
* @event Client#applicationCommandDelete
|
||||
* @param {ApplicationCommand} command The command which was deleted
|
||||
*/
|
||||
client.emit(Events.APPLICATION_COMMAND_DELETE, command);
|
||||
};
|
||||
26
src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js
Normal file
26
src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js
Normal file
@@ -0,0 +1,26 @@
|
||||
'use strict';
|
||||
|
||||
const { Events } = require('../../../util/Constants');
|
||||
|
||||
module.exports = (client, { d: data }) => {
|
||||
let oldCommand;
|
||||
let newCommand;
|
||||
|
||||
if (data.guild_id) {
|
||||
const guild = client.guilds.cache.get(data.guild_id);
|
||||
if (!guild) return;
|
||||
oldCommand = guild.commands.cache.get(data.id)?._clone() ?? null;
|
||||
newCommand = guild.commands.add(data);
|
||||
} else {
|
||||
oldCommand = client.application.commands.cache.get(data.id)?._clone() ?? null;
|
||||
newCommand = client.application.commands.add(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Emitted when an application command is updated.
|
||||
* @event Client#applicationCommandUpdate
|
||||
* @param {?ApplicationCommand} oldCommand The command before the update
|
||||
* @param {ApplicationCommand} newCommand The command after the update
|
||||
*/
|
||||
client.emit(Events.APPLICATION_COMMAND_UPDATE, oldCommand, newCommand);
|
||||
};
|
||||
@@ -228,6 +228,9 @@ exports.Events = {
|
||||
RATE_LIMIT: 'rateLimit',
|
||||
INVALID_REQUEST_WARNING: 'invalidRequestWarning',
|
||||
CLIENT_READY: 'ready',
|
||||
APPLICATION_COMMAND_CREATE: 'applicationCommandCreate',
|
||||
APPLICATION_COMMAND_DELETE: 'applicationCommandDelete',
|
||||
APPLICATION_COMMAND_UPDATE: 'applicationCommandUpdate',
|
||||
GUILD_CREATE: 'guildCreate',
|
||||
GUILD_DELETE: 'guildDelete',
|
||||
GUILD_UPDATE: 'guildUpdate',
|
||||
@@ -310,6 +313,9 @@ exports.PartialTypes = keyMirror(['USER', 'CHANNEL', 'GUILD_MEMBER', 'MESSAGE',
|
||||
* The type of a websocket message event, e.g. `MESSAGE_CREATE`. Here are the available events:
|
||||
* * READY
|
||||
* * RESUMED
|
||||
* * APPLICATION_COMMAND_CREATE
|
||||
* * APPLICATION_COMMAND_DELETE
|
||||
* * APPLICATION_COMMAND_UPDATE
|
||||
* * GUILD_CREATE
|
||||
* * GUILD_DELETE
|
||||
* * GUILD_UPDATE
|
||||
@@ -350,6 +356,9 @@ exports.PartialTypes = keyMirror(['USER', 'CHANNEL', 'GUILD_MEMBER', 'MESSAGE',
|
||||
exports.WSEvents = keyMirror([
|
||||
'READY',
|
||||
'RESUMED',
|
||||
'APPLICATION_COMMAND_CREATE',
|
||||
'APPLICATION_COMMAND_DELETE',
|
||||
'APPLICATION_COMMAND_UPDATE',
|
||||
'GUILD_CREATE',
|
||||
'GUILD_DELETE',
|
||||
'GUILD_UPDATE',
|
||||
|
||||
9
typings/index.d.ts
vendored
9
typings/index.d.ts
vendored
@@ -478,6 +478,9 @@ declare module 'discord.js' {
|
||||
INVALID_REQUEST_WARNING: 'invalidRequestWarning';
|
||||
CLIENT_READY: 'ready';
|
||||
RESUMED: 'resumed';
|
||||
APPLICATION_COMMAND_CREATE: 'applicationCommandCreate';
|
||||
APPLICATION_COMMAND_DELETE: 'applicationCommandDelete';
|
||||
APPLICATION_COMMAND_UPDATE: 'applicationCommandUpdate';
|
||||
GUILD_CREATE: 'guildCreate';
|
||||
GUILD_DELETE: 'guildDelete';
|
||||
GUILD_UPDATE: 'guildUpdate';
|
||||
@@ -2543,6 +2546,9 @@ declare module 'discord.js' {
|
||||
type ChannelResolvable = Channel | Snowflake;
|
||||
|
||||
interface ClientEvents {
|
||||
applicationCommandCreate: [command: ApplicationCommand];
|
||||
applicationCommandDelete: [command: ApplicationCommand];
|
||||
applicationCommandUpdate: [oldCommand: ApplicationCommand | null, newCommand: ApplicationCommand];
|
||||
channelCreate: [channel: GuildChannel];
|
||||
channelDelete: [channel: DMChannel | GuildChannel];
|
||||
channelPinsUpdate: [channel: Channel | PartialDMChannel, date: Date];
|
||||
@@ -3589,6 +3595,9 @@ declare module 'discord.js' {
|
||||
type WSEventType =
|
||||
| 'READY'
|
||||
| 'RESUMED'
|
||||
| 'APPLICATION_COMMAND_CREATE'
|
||||
| 'APPLICATION_COMMAND_DELETE'
|
||||
| 'APPLICATION_COMMAND_UPDATE'
|
||||
| 'GUILD_CREATE'
|
||||
| 'GUILD_DELETE'
|
||||
| 'GUILD_UPDATE'
|
||||
|
||||
Reference in New Issue
Block a user