mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-18 04:23:31 +01:00
refactor: only cache commands from own user (#6161)
This commit is contained in:
@@ -3,18 +3,13 @@
|
|||||||
const { Events } = require('../../../util/Constants');
|
const { Events } = require('../../../util/Constants');
|
||||||
|
|
||||||
module.exports = (client, { d: data }) => {
|
module.exports = (client, { d: data }) => {
|
||||||
let command;
|
const commandManager = data.guild_id ? client.guilds.cache.get(data.guild_id)?.commands : client.application.commands;
|
||||||
|
if (!commandManager) return;
|
||||||
|
|
||||||
if (data.guild_id) {
|
const command = commandManager._add(data, data.application_id === client.application.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.
|
* Emitted when a guild application command is created.
|
||||||
* @event Client#applicationCommandCreate
|
* @event Client#applicationCommandCreate
|
||||||
* @param {ApplicationCommand} command The command which was created
|
* @param {ApplicationCommand} command The command which was created
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -3,20 +3,15 @@
|
|||||||
const { Events } = require('../../../util/Constants');
|
const { Events } = require('../../../util/Constants');
|
||||||
|
|
||||||
module.exports = (client, { d: data }) => {
|
module.exports = (client, { d: data }) => {
|
||||||
let command;
|
const commandManager = data.guild_id ? client.guilds.cache.get(data.guild_id)?.commands : client.application.commands;
|
||||||
|
if (!commandManager) return;
|
||||||
|
|
||||||
if (data.guild_id) {
|
const isOwn = data.application_id === client.application.id;
|
||||||
const guild = client.guilds.cache.get(data.guild_id);
|
const command = commandManager._add(data, isOwn);
|
||||||
if (!guild) return;
|
if (isOwn) commandManager.cache.delete(data.id);
|
||||||
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.
|
* Emitted when a guild application command is deleted.
|
||||||
* @event Client#applicationCommandDelete
|
* @event Client#applicationCommandDelete
|
||||||
* @param {ApplicationCommand} command The command which was deleted
|
* @param {ApplicationCommand} command The command which was deleted
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -3,21 +3,14 @@
|
|||||||
const { Events } = require('../../../util/Constants');
|
const { Events } = require('../../../util/Constants');
|
||||||
|
|
||||||
module.exports = (client, { d: data }) => {
|
module.exports = (client, { d: data }) => {
|
||||||
let oldCommand;
|
const commandManager = data.guild_id ? client.guilds.cache.get(data.guild_id)?.commands : client.application.commands;
|
||||||
let newCommand;
|
if (!commandManager) return;
|
||||||
|
|
||||||
if (data.guild_id) {
|
const oldCommand = commandManager.cache.get(data.id)?._clone() ?? null;
|
||||||
const guild = client.guilds.cache.get(data.guild_id);
|
const newCommand = commandManager._add(data, data.application_id === client.application.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.
|
* Emitted when a guild application command is updated.
|
||||||
* @event Client#applicationCommandUpdate
|
* @event Client#applicationCommandUpdate
|
||||||
* @param {?ApplicationCommand} oldCommand The command before the update
|
* @param {?ApplicationCommand} oldCommand The command before the update
|
||||||
* @param {ApplicationCommand} newCommand The command after the update
|
* @param {ApplicationCommand} newCommand The command after the update
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ class ApplicationCommandManager extends CachedManager {
|
|||||||
const data = await this.commandPath({ guildId }).post({
|
const data = await this.commandPath({ guildId }).post({
|
||||||
data: this.constructor.transformCommand(command),
|
data: this.constructor.transformCommand(command),
|
||||||
});
|
});
|
||||||
return this._add(data, undefined, guildId);
|
return this._add(data, !guildId, guildId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -146,7 +146,7 @@ class ApplicationCommandManager extends CachedManager {
|
|||||||
data: commands.map(c => this.constructor.transformCommand(c)),
|
data: commands.map(c => this.constructor.transformCommand(c)),
|
||||||
});
|
});
|
||||||
return data.reduce(
|
return data.reduce(
|
||||||
(coll, command) => coll.set(command.id, this._add(command, undefined, guildId)),
|
(coll, command) => coll.set(command.id, this._add(command, !guildId, guildId)),
|
||||||
new Collection(),
|
new Collection(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -171,7 +171,7 @@ class ApplicationCommandManager extends CachedManager {
|
|||||||
if (!id) throw new TypeError('INVALID_TYPE', 'command', 'ApplicationCommandResolvable');
|
if (!id) throw new TypeError('INVALID_TYPE', 'command', 'ApplicationCommandResolvable');
|
||||||
|
|
||||||
const patched = await this.commandPath({ id, guildId }).patch({ data: this.constructor.transformCommand(data) });
|
const patched = await this.commandPath({ id, guildId }).patch({ data: this.constructor.transformCommand(data) });
|
||||||
return this._add(patched, undefined, guildId);
|
return this._add(patched, !guildId, guildId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -193,7 +193,7 @@ class ApplicationCommandManager extends CachedManager {
|
|||||||
await this.commandPath({ id, guildId }).delete();
|
await this.commandPath({ id, guildId }).delete();
|
||||||
|
|
||||||
const cached = this.cache.get(id);
|
const cached = this.cache.get(id);
|
||||||
this.cache.delete(id);
|
if (!guildId) this.cache.delete(id);
|
||||||
return cached ?? null;
|
return cached ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,12 @@ class ApplicationCommand extends Base {
|
|||||||
*/
|
*/
|
||||||
this.id = data.id;
|
this.id = data.id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The parent application's id
|
||||||
|
* @type {Snowflake}
|
||||||
|
*/
|
||||||
|
this.applicationId = data.application_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The guild this command is part of
|
* The guild this command is part of
|
||||||
* @type {?Guild}
|
* @type {?Guild}
|
||||||
|
|||||||
1
typings/index.d.ts
vendored
1
typings/index.d.ts
vendored
@@ -125,6 +125,7 @@ export abstract class Application extends Base {
|
|||||||
|
|
||||||
export class ApplicationCommand<PermissionsFetchType = {}> extends Base {
|
export class ApplicationCommand<PermissionsFetchType = {}> extends Base {
|
||||||
public constructor(client: Client, data: unknown, guild?: Guild, guildId?: Snowflake);
|
public constructor(client: Client, data: unknown, guild?: Guild, guildId?: Snowflake);
|
||||||
|
public applicationId: Snowflake;
|
||||||
public readonly createdAt: Date;
|
public readonly createdAt: Date;
|
||||||
public readonly createdTimestamp: number;
|
public readonly createdTimestamp: number;
|
||||||
public defaultPermission: boolean;
|
public defaultPermission: boolean;
|
||||||
|
|||||||
Reference in New Issue
Block a user