mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 20:13:30 +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',
|
RATE_LIMIT: 'rateLimit',
|
||||||
INVALID_REQUEST_WARNING: 'invalidRequestWarning',
|
INVALID_REQUEST_WARNING: 'invalidRequestWarning',
|
||||||
CLIENT_READY: 'ready',
|
CLIENT_READY: 'ready',
|
||||||
|
APPLICATION_COMMAND_CREATE: 'applicationCommandCreate',
|
||||||
|
APPLICATION_COMMAND_DELETE: 'applicationCommandDelete',
|
||||||
|
APPLICATION_COMMAND_UPDATE: 'applicationCommandUpdate',
|
||||||
GUILD_CREATE: 'guildCreate',
|
GUILD_CREATE: 'guildCreate',
|
||||||
GUILD_DELETE: 'guildDelete',
|
GUILD_DELETE: 'guildDelete',
|
||||||
GUILD_UPDATE: 'guildUpdate',
|
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:
|
* The type of a websocket message event, e.g. `MESSAGE_CREATE`. Here are the available events:
|
||||||
* * READY
|
* * READY
|
||||||
* * RESUMED
|
* * RESUMED
|
||||||
|
* * APPLICATION_COMMAND_CREATE
|
||||||
|
* * APPLICATION_COMMAND_DELETE
|
||||||
|
* * APPLICATION_COMMAND_UPDATE
|
||||||
* * GUILD_CREATE
|
* * GUILD_CREATE
|
||||||
* * GUILD_DELETE
|
* * GUILD_DELETE
|
||||||
* * GUILD_UPDATE
|
* * GUILD_UPDATE
|
||||||
@@ -350,6 +356,9 @@ exports.PartialTypes = keyMirror(['USER', 'CHANNEL', 'GUILD_MEMBER', 'MESSAGE',
|
|||||||
exports.WSEvents = keyMirror([
|
exports.WSEvents = keyMirror([
|
||||||
'READY',
|
'READY',
|
||||||
'RESUMED',
|
'RESUMED',
|
||||||
|
'APPLICATION_COMMAND_CREATE',
|
||||||
|
'APPLICATION_COMMAND_DELETE',
|
||||||
|
'APPLICATION_COMMAND_UPDATE',
|
||||||
'GUILD_CREATE',
|
'GUILD_CREATE',
|
||||||
'GUILD_DELETE',
|
'GUILD_DELETE',
|
||||||
'GUILD_UPDATE',
|
'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';
|
INVALID_REQUEST_WARNING: 'invalidRequestWarning';
|
||||||
CLIENT_READY: 'ready';
|
CLIENT_READY: 'ready';
|
||||||
RESUMED: 'resumed';
|
RESUMED: 'resumed';
|
||||||
|
APPLICATION_COMMAND_CREATE: 'applicationCommandCreate';
|
||||||
|
APPLICATION_COMMAND_DELETE: 'applicationCommandDelete';
|
||||||
|
APPLICATION_COMMAND_UPDATE: 'applicationCommandUpdate';
|
||||||
GUILD_CREATE: 'guildCreate';
|
GUILD_CREATE: 'guildCreate';
|
||||||
GUILD_DELETE: 'guildDelete';
|
GUILD_DELETE: 'guildDelete';
|
||||||
GUILD_UPDATE: 'guildUpdate';
|
GUILD_UPDATE: 'guildUpdate';
|
||||||
@@ -2543,6 +2546,9 @@ declare module 'discord.js' {
|
|||||||
type ChannelResolvable = Channel | Snowflake;
|
type ChannelResolvable = Channel | Snowflake;
|
||||||
|
|
||||||
interface ClientEvents {
|
interface ClientEvents {
|
||||||
|
applicationCommandCreate: [command: ApplicationCommand];
|
||||||
|
applicationCommandDelete: [command: ApplicationCommand];
|
||||||
|
applicationCommandUpdate: [oldCommand: ApplicationCommand | null, newCommand: ApplicationCommand];
|
||||||
channelCreate: [channel: GuildChannel];
|
channelCreate: [channel: GuildChannel];
|
||||||
channelDelete: [channel: DMChannel | GuildChannel];
|
channelDelete: [channel: DMChannel | GuildChannel];
|
||||||
channelPinsUpdate: [channel: Channel | PartialDMChannel, date: Date];
|
channelPinsUpdate: [channel: Channel | PartialDMChannel, date: Date];
|
||||||
@@ -3589,6 +3595,9 @@ declare module 'discord.js' {
|
|||||||
type WSEventType =
|
type WSEventType =
|
||||||
| 'READY'
|
| 'READY'
|
||||||
| 'RESUMED'
|
| 'RESUMED'
|
||||||
|
| 'APPLICATION_COMMAND_CREATE'
|
||||||
|
| 'APPLICATION_COMMAND_DELETE'
|
||||||
|
| 'APPLICATION_COMMAND_UPDATE'
|
||||||
| 'GUILD_CREATE'
|
| 'GUILD_CREATE'
|
||||||
| 'GUILD_DELETE'
|
| 'GUILD_DELETE'
|
||||||
| 'GUILD_UPDATE'
|
| 'GUILD_UPDATE'
|
||||||
|
|||||||
Reference in New Issue
Block a user