Maybe more robust enforcement
1 files changed, 10 insertions, 7 deletions
diff --git a/src/util/entities/Message.ts b/src/util/entities/Message.ts
index 2b516c74c..fd86e691c 100644
--- a/src/util/entities/Message.ts
+++ b/src/util/entities/Message.ts
@@ -262,21 +262,24 @@ export class Message extends BaseClass {
message.author = await User.findOneOrFail({ where: { id: opts.author_id! } });
}
- if (!opts.member) {
- if (opts.member_id) message.member = await Member.findOneOrFail({ where: { id: opts.member_id! } });
- else if (message.author && opts.guild_id) message.member = await Member.findOneOrFail({ where: { id: message.author.id, guild_id: opts.guild_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;
}
+ 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.guild) {
if (opts.guild_id) message.guild = await Guild.findOneOrFail({ where: { id: opts.guild_id! } });
- else if (opts.channel?.guild) message.guild = opts.channel.guild;
+ 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) message.guild = opts.member.guild;
+ 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! } });
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");
}
|