From 4fa95a928b197b3450e133e31ad7f2c47e48789f Mon Sep 17 00:00:00 2001 From: Rory& Date: Sun, 19 Oct 2025 08:47:44 +0200 Subject: [PATCH] Always mutate opts, not message --- src/util/entities/Message.ts | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/util/entities/Message.ts b/src/util/entities/Message.ts index fd86e691..c1277802 100644 --- a/src/util/entities/Message.ts +++ b/src/util/entities/Message.ts @@ -257,35 +257,33 @@ export class Message extends BaseClass { static async createWithDefaults(opts: Partial): Promise { const message = new Message(); + if (!opts.author) { if (!opts.author_id) throw new Error("Either author or author_id must be provided to create a Message"); - message.author = await User.findOneOrFail({ where: { id: opts.author_id! } }); + opts.author = await User.findOneOrFail({ where: { id: opts.author_id! } }); } if (!opts.channel) { if (!opts.channel_id) throw new Error("Either channel or channel_id must be provided to create a Message"); - message.channel = await Channel.findOneOrFail({ where: { id: opts.channel_id! } }); - message.guild_id ??= message.channel.guild_id; + opts.channel = await Channel.findOneOrFail({ where: { id: opts.channel_id! } }); + opts.guild_id ??= opts.channel.guild_id; } - if (!opts.member) { - if (opts.member_id) message.member = await Member.findOneOrFail({ where: { id: opts.member_id! } }); - else if (message.author?.id && opts.guild_id) message.member = await Member.findOneOrFail({ where: { id: message.author.id, guild_id: opts.guild_id! } }); - else throw new Error("Either member, member_id, or (author and guild_id) must be provided to create a Message"); - } + if (!opts.member_id) opts.member_id = message.author_id; + if (!opts.member) opts.member = await Member.findOneOrFail({ where: { id: opts.member_id! } }); if (!opts.guild) { - if (opts.guild_id) message.guild = await Guild.findOneOrFail({ where: { id: opts.guild_id! } }); - else if (opts.channel?.guild?.id) message.guild = opts.channel.guild; - else if (opts.channel?.guild_id) message.guild = await Guild.findOneOrFail({ where: { id: opts.channel.guild_id! } }); - else if (opts.member?.guild?.id) message.guild = opts.member.guild; - else if (opts.member?.guild_id) message.guild = await Guild.findOneOrFail({ where: { id: opts.member.guild_id! } }); + if (opts.guild_id) opts.guild = await Guild.findOneOrFail({ where: { id: opts.guild_id! } }); + else if (opts.channel?.guild?.id) opts.guild = opts.channel.guild; + else if (opts.channel?.guild_id) opts.guild = await Guild.findOneOrFail({ where: { id: opts.channel.guild_id! } }); + else if (opts.member?.guild?.id) opts.guild = opts.member.guild; + else if (opts.member?.guild_id) opts.guild = await Guild.findOneOrFail({ where: { id: opts.member.guild_id! } }); else throw new Error("Either guild, guild_id, channel.guild, channel.guild_id, member.guild or member.guild_id must be provided to create a Message"); } // try 2 now that we have a guild - if (!opts.member) message.member = await Member.findOneOrFail({ where: { id: message.author!.id, guild_id: message.guild!.id } }); + if (!opts.member) opts.member = await Member.findOneOrFail({ where: { id: opts.author!.id, guild_id: opts.guild!.id } }); Object.assign(message, { tts: false,