diff --git a/src/structures/APIMessage.js b/src/structures/APIMessage.js index 04bc7210..db257bdb 100644 --- a/src/structures/APIMessage.js +++ b/src/structures/APIMessage.js @@ -171,15 +171,11 @@ class APIMessage { : this.options.allowedMentions; let message_reference; - if (this.options.inlineReplyTo) { - const message = this.target.messages.resolve(this.options.inlineReplyTo); - if (message) { - message_reference = { message_id: message.id, channel_id: message.channel.id }; - } else { - message_reference = { - message_id: this.options.inlineReplyTo.messageID, - channel_id: this.options.inlineReplyTo.channelID, - }; + if (typeof this.options.replyTo !== 'undefined') { + const message_id = this.target.messages.resolveID(this.options.replyTo); + if (message_id) { + const channel_id = typeof this.options.replyTo === 'string' ? this.target.id : this.options.replyTo.channel.id; + message_reference = { message_id, channel_id }; } } diff --git a/src/structures/Message.js b/src/structures/Message.js index c2fe1b1a..07d6e5ff 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -422,10 +422,16 @@ class Message extends Base { ); } + /** + * The Message this crosspost/reply/pin add references, if cached + * @type {Message} + * @readonly + */ get referencedMessage() { - return this.reference && this.reference.messageID && this.client.channels.cache.has(this.reference.channelID) - ? this.client.channels.resolve(this.reference.channelID).messages.resolve(this.reference.messageID) - : null; + if (!this.reference) return null; + const referenceChannel = this.client.channels.resolve(this.reference.channelID); + if (!referenceChannel) return null; + return referenceChannel.messages.resolve(this.reference.messageID); } /** diff --git a/src/util/Constants.js b/src/util/Constants.js index 366770af..1386c9fa 100644 --- a/src/util/Constants.js +++ b/src/util/Constants.js @@ -398,6 +398,7 @@ exports.WSEvents = keyMirror([ * * CHANNEL_FOLLOW_ADD * * GUILD_DISCOVERY_DISQUALIFIED * * GUILD_DISCOVERY_REQUALIFIED + * * INLINE_REPLY * @typedef {string} MessageType */ exports.MessageTypes = [ diff --git a/typings/index.d.ts b/typings/index.d.ts index 001a0871..f8eb52e8 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -1518,8 +1518,6 @@ declare module 'discord.js' { public fetchWebhooks(): Promise>; } - type TextBasedChannelResolvable = TextChannel | NewsChannel | DMChannel | Snowflake; - export class User extends PartialTextBasedChannel(Base) { constructor(client: Client, data: object); public avatar: string | null; @@ -2829,7 +2827,7 @@ declare module 'discord.js' { messageID: string | null; } - type MessageResolvable = Message | { id: Snowflake; channel: TextBasedChannelResolvable }; + type MessageResolvable = Message | Snowflake; type MessageTarget = TextChannel | NewsChannel | DMChannel | User | GuildMember | Webhook | WebhookClient;