mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 20:13:30 +01:00
feat(InteractionCreate): move to an Action handler (#5906)
This commit is contained in:
@@ -17,6 +17,7 @@ class ActionsManager {
|
|||||||
this.register(require('./ChannelUpdate'));
|
this.register(require('./ChannelUpdate'));
|
||||||
this.register(require('./GuildDelete'));
|
this.register(require('./GuildDelete'));
|
||||||
this.register(require('./GuildUpdate'));
|
this.register(require('./GuildUpdate'));
|
||||||
|
this.register(require('./InteractionCreate'));
|
||||||
this.register(require('./InviteCreate'));
|
this.register(require('./InviteCreate'));
|
||||||
this.register(require('./InviteDelete'));
|
this.register(require('./InviteDelete'));
|
||||||
this.register(require('./GuildMemberRemove'));
|
this.register(require('./GuildMemberRemove'));
|
||||||
|
|||||||
46
src/client/actions/InteractionCreate.js
Normal file
46
src/client/actions/InteractionCreate.js
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Action = require('./Action');
|
||||||
|
const { Events, InteractionTypes, MessageComponentTypes } = require('../../util/Constants');
|
||||||
|
const Structures = require('../../util/Structures');
|
||||||
|
|
||||||
|
class InteractionCreateAction extends Action {
|
||||||
|
handle(data) {
|
||||||
|
const client = this.client;
|
||||||
|
|
||||||
|
// Resolve and cache partial channels for Interaction#channel getter
|
||||||
|
this.getChannel(data);
|
||||||
|
|
||||||
|
let InteractionType;
|
||||||
|
switch (data.type) {
|
||||||
|
case InteractionTypes.APPLICATION_COMMAND:
|
||||||
|
InteractionType = Structures.get('CommandInteraction');
|
||||||
|
break;
|
||||||
|
case InteractionTypes.MESSAGE_COMPONENT:
|
||||||
|
switch (data.data.component_type) {
|
||||||
|
case MessageComponentTypes.BUTTON:
|
||||||
|
InteractionType = Structures.get('ButtonInteraction');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
client.emit(
|
||||||
|
Events.DEBUG,
|
||||||
|
`[INTERACTION] Received component interaction with unknown type: ${data.data.component_type}`,
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
client.emit(Events.DEBUG, `[INTERACTION] Received interaction with unknown type: ${data.type}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Emitted when an interaction is created.
|
||||||
|
* @event Client#interaction
|
||||||
|
* @param {Interaction} interaction The interaction which was created
|
||||||
|
*/
|
||||||
|
client.emit(Events.INTERACTION_CREATE, new InteractionType(client, data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = InteractionCreateAction;
|
||||||
@@ -1,36 +1,5 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const { Events, InteractionTypes, MessageComponentTypes } = require('../../../util/Constants');
|
module.exports = (client, packet) => {
|
||||||
const Structures = require('../../../util/Structures');
|
client.actions.InteractionCreate.handle(packet.d);
|
||||||
|
|
||||||
module.exports = (client, { d: data }) => {
|
|
||||||
let InteractionType;
|
|
||||||
switch (data.type) {
|
|
||||||
case InteractionTypes.APPLICATION_COMMAND:
|
|
||||||
InteractionType = Structures.get('CommandInteraction');
|
|
||||||
break;
|
|
||||||
case InteractionTypes.MESSAGE_COMPONENT:
|
|
||||||
switch (data.data.component_type) {
|
|
||||||
case MessageComponentTypes.BUTTON:
|
|
||||||
InteractionType = Structures.get('ButtonInteraction');
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
client.emit(
|
|
||||||
Events.DEBUG,
|
|
||||||
`[INTERACTION] Received component interaction with unknown type: ${data.data.component_type}`,
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
client.emit(Events.DEBUG, `[INTERACTION] Received interaction with unknown type: ${data.type}`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Emitted when an interaction is created.
|
|
||||||
* @event Client#interaction
|
|
||||||
* @param {Interaction} interaction The interaction which was created
|
|
||||||
*/
|
|
||||||
client.emit(Events.INTERACTION_CREATE, new InteractionType(client, data));
|
|
||||||
};
|
};
|
||||||
|
|||||||
3
typings/index.d.ts
vendored
3
typings/index.d.ts
vendored
@@ -504,7 +504,7 @@ declare module 'discord.js' {
|
|||||||
|
|
||||||
export class CommandInteraction extends Interaction {
|
export class CommandInteraction extends Interaction {
|
||||||
public readonly command: ApplicationCommand | null;
|
public readonly command: ApplicationCommand | null;
|
||||||
public channel: TextChannel | DMChannel | NewsChannel;
|
public readonly channel: TextChannel | DMChannel | NewsChannel | PartialDMChannel | null;
|
||||||
public channelID: Snowflake;
|
public channelID: Snowflake;
|
||||||
public commandID: Snowflake;
|
public commandID: Snowflake;
|
||||||
public commandName: string;
|
public commandName: string;
|
||||||
@@ -1366,6 +1366,7 @@ declare module 'discord.js' {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class MessageComponentInteraction extends Interaction {
|
export class MessageComponentInteraction extends Interaction {
|
||||||
|
public readonly channel: TextChannel | DMChannel | NewsChannel | PartialDMChannel | null;
|
||||||
public componentType: MessageComponentType;
|
public componentType: MessageComponentType;
|
||||||
public customID: string;
|
public customID: string;
|
||||||
public deferred: boolean;
|
public deferred: boolean;
|
||||||
|
|||||||
Reference in New Issue
Block a user