From 9ed53e228a9f9b4d429c227697e2b8e59c108ccd Mon Sep 17 00:00:00 2001 From: Cyber Date: Tue, 30 Jul 2024 18:56:57 +0200 Subject: [PATCH 1/2] fix: reaction removing --- .../channels/#channel_id/messages/#message_id/reactions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts index c2222b0a..aa871d03 100644 --- a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts +++ b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts @@ -262,7 +262,7 @@ router.put( ); router.delete( - "/:emoji/:user_id", + "/:emoji/:burst/:user_id", route({ responses: { 204: {}, From cc63571d89cc1053c4a6a78b639766700b38398d Mon Sep 17 00:00:00 2001 From: Cyber Date: Sat, 10 Aug 2024 20:25:52 +0200 Subject: [PATCH 2/2] fix: make this a new route --- .../messages/#message_id/reactions.ts | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts index aa871d03..4792c534 100644 --- a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts +++ b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts @@ -261,6 +261,76 @@ router.put( }, ); +router.delete( + "/:emoji/:user_id", + route({ + responses: { + 204: {}, + 400: { + body: "APIErrorResponse", + }, + 404: {}, + 403: {}, + }, + }), + async (req: Request, res: Response) => { + let { user_id } = req.params; + const { message_id, channel_id } = req.params; + + const emoji = getEmoji(req.params.emoji); + + const channel = await Channel.findOneOrFail({ + where: { id: channel_id }, + }); + const message = await Message.findOneOrFail({ + where: { id: message_id, channel_id }, + }); + + if (user_id === "@me") user_id = req.user_id; + else { + const permissions = await getPermission( + req.user_id, + undefined, + channel_id, + ); + permissions.hasThrow("MANAGE_MESSAGES"); + } + + const already_added = message.reactions.find( + (x) => + (x.emoji.id === emoji.id && emoji.id) || + x.emoji.name === emoji.name, + ); + if (!already_added || !already_added.user_ids.includes(user_id)) + throw new HTTPError("Reaction not found", 404); + + already_added.count--; + + if (already_added.count <= 0) message.reactions.remove(already_added); + else + already_added.user_ids.splice( + already_added.user_ids.indexOf(user_id), + 1, + ); + + await message.save(); + + await emitEvent({ + event: "MESSAGE_REACTION_REMOVE", + channel_id, + data: { + user_id: req.user_id, + channel_id, + message_id, + guild_id: channel.guild_id, + emoji, + }, + } as MessageReactionRemoveEvent); + + res.sendStatus(204); + }, +); + router.delete( "/:emoji/:burst/:user_id", route({