summary refs log tree commit diff
path: root/src/api/routes/channels/#channel_id/messages/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/routes/channels/#channel_id/messages/index.ts')
-rw-r--r--src/api/routes/channels/#channel_id/messages/index.ts27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/api/routes/channels/#channel_id/messages/index.ts b/src/api/routes/channels/#channel_id/messages/index.ts
index 8598d1f8..747701db 100644
--- a/src/api/routes/channels/#channel_id/messages/index.ts
+++ b/src/api/routes/channels/#channel_id/messages/index.ts
@@ -255,17 +255,22 @@ router.post(
 			);
 		}
 
-		const member = await Member.findOneOrFail({
-			where: { id: req.user_id },
-			relations: ["roles"],
-		});
-		member.roles = member.roles
-			.filter((role: Role) => {
-				return role.id !== role.guild_id;
-			})
-			.map((role: Role) => {
-				return role.id;
-			}) as any;
+		if (message.guild_id) {
+			// handleMessage will fetch the Member, but only if they are not guild owner.
+			// have to fetch ourselves otherwise.
+			if (!message.member) {
+				message.member = await Member.findOneOrFail({
+					where: { id: req.user_id, guild_id: message.guild_id },
+					relations: ["roles"]
+				});
+			}
+
+			//@ts-ignore
+			message.member.roles =
+				message.member.roles.
+					filter(x => x.id != x.guild_id)
+					.map(x => x.id);
+		}
 
 		let read_state = await ReadState.findOne({
 			where: { user_id: req.user_id, channel_id }