mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-18 12:33:30 +01:00
fix(Actions): inject built data by using a symbol (#9203)
This fixes the hard crash encountered from message component interactions where a `channel` property was added to them, causing hard crashes Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
@@ -34,7 +34,7 @@ class GenericAction {
|
|||||||
getChannel(data) {
|
getChannel(data) {
|
||||||
const id = data.channel_id ?? data.id;
|
const id = data.channel_id ?? data.id;
|
||||||
return (
|
return (
|
||||||
data.channel ??
|
data[this.client.actions.injectedChannel] ??
|
||||||
this.getPayload(
|
this.getPayload(
|
||||||
{
|
{
|
||||||
id,
|
id,
|
||||||
@@ -51,7 +51,7 @@ class GenericAction {
|
|||||||
getMessage(data, channel, cache) {
|
getMessage(data, channel, cache) {
|
||||||
const id = data.message_id ?? data.id;
|
const id = data.message_id ?? data.id;
|
||||||
return (
|
return (
|
||||||
data.message ??
|
data[this.client.actions.injectedMessage] ??
|
||||||
this.getPayload(
|
this.getPayload(
|
||||||
{
|
{
|
||||||
id,
|
id,
|
||||||
@@ -86,7 +86,7 @@ class GenericAction {
|
|||||||
|
|
||||||
getUser(data) {
|
getUser(data) {
|
||||||
const id = data.user_id;
|
const id = data.user_id;
|
||||||
return data.user ?? this.getPayload({ id }, this.client.users, id, Partials.User);
|
return data[this.client.actions.injectedUser] ?? this.getPayload({ id }, this.client.users, id, Partials.User);
|
||||||
}
|
}
|
||||||
|
|
||||||
getUserFromMember(data) {
|
getUserFromMember(data) {
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
class ActionsManager {
|
class ActionsManager {
|
||||||
|
// These symbols represent fully built data that we inject at times when calling actions manually. Action#getUser,
|
||||||
|
// for example, will return the injected data (which is assumed to be a built structure) instead of trying to make it
|
||||||
|
// from provided data
|
||||||
|
injectedUser = Symbol('djs.actions.injectedUser');
|
||||||
|
injectedChannel = Symbol('djs.actions.injectedChannel');
|
||||||
|
injectedMessage = Symbol('djs.actions.injectedMessage');
|
||||||
|
|
||||||
constructor(client) {
|
constructor(client) {
|
||||||
this.client = client;
|
this.client = client;
|
||||||
|
|
||||||
|
|||||||
@@ -787,9 +787,9 @@ class Message extends Base {
|
|||||||
|
|
||||||
return this.client.actions.MessageReactionAdd.handle(
|
return this.client.actions.MessageReactionAdd.handle(
|
||||||
{
|
{
|
||||||
user: this.client.user,
|
[this.client.actions.injectedUser]: this.client.user,
|
||||||
channel: this.channel,
|
[this.client.actions.injectedChannel]: this.channel,
|
||||||
message: this,
|
[this.client.actions.injectedMessage]: this,
|
||||||
emoji: resolvePartialEmoji(emoji),
|
emoji: resolvePartialEmoji(emoji),
|
||||||
},
|
},
|
||||||
true,
|
true,
|
||||||
|
|||||||
Reference in New Issue
Block a user