delete: removeUserReaction

This commit is contained in:
ITOH
2021-04-30 15:22:48 +02:00
parent a7de104b9a
commit 8c347747dd
5 changed files with 24 additions and 45 deletions
+15 -2
View File
@@ -1,12 +1,18 @@
import { rest } from "../../rest/rest.ts"; import { rest } from "../../rest/rest.ts";
import { endpoints } from "../../util/constants.ts"; import { endpoints } from "../../util/constants.ts";
import { requireBotChannelPermissions } from "../../util/permissions.ts";
/** Removes a reaction from the bot on this message. Reaction takes the form of **name:id** for custom guild emoji, or Unicode characters. */ /** Removes a reaction from the given user on this message, defaults to bot. Reaction takes the form of **name:id** for custom guild emoji, or Unicode characters. */
export async function removeReaction( export async function removeReaction(
channelId: string, channelId: string,
messageId: string, messageId: string,
reaction: string, reaction: string,
userId?: string,
) { ) {
if (userId) {
await requireBotChannelPermissions(channelId, ["MANAGE_MESSAGES"]);
}
if (reaction.startsWith("<:")) { if (reaction.startsWith("<:")) {
reaction = reaction.substring(2, reaction.length - 1); reaction = reaction.substring(2, reaction.length - 1);
} else if (reaction.startsWith("<a:")) { } else if (reaction.startsWith("<a:")) {
@@ -15,6 +21,13 @@ export async function removeReaction(
return await rest.runMethod<undefined>( return await rest.runMethod<undefined>(
"delete", "delete",
endpoints.CHANNEL_MESSAGE_REACTION_ME(channelId, messageId, reaction), userId
? endpoints.CHANNEL_MESSAGE_REACTION_USER(
channelId,
messageId,
reaction,
userId,
)
: endpoints.CHANNEL_MESSAGE_REACTION_ME(channelId, messageId, reaction),
); );
} }
@@ -1,29 +0,0 @@
import { rest } from "../../rest/rest.ts";
import { endpoints } from "../../util/constants.ts";
import { requireBotChannelPermissions } from "../../util/permissions.ts";
/** Removes a reaction from the specified user on this message. Reaction takes the form of **name:id** for custom guild emoji, or Unicode characters. */
export async function removeUserReaction(
channelId: string,
messageId: string,
reaction: string,
userId: string,
) {
await requireBotChannelPermissions(channelId, ["MANAGE_MESSAGES"]);
if (reaction.startsWith("<:")) {
reaction = reaction.substring(2, reaction.length - 1);
} else if (reaction.startsWith("<a:")) {
reaction = reaction.substring(3, reaction.length - 1);
}
return await rest.runMethod<undefined>(
"delete",
endpoints.CHANNEL_MESSAGE_REACTION_USER(
channelId,
messageId,
reaction,
userId,
),
);
}
-3
View File
@@ -93,7 +93,6 @@ import { publishMessage } from "./messages/publish_message.ts";
import { removeAllReactions } from "./messages/remove_all_reactions.ts"; import { removeAllReactions } from "./messages/remove_all_reactions.ts";
import { removeReaction } from "./messages/remove_reaction.ts"; import { removeReaction } from "./messages/remove_reaction.ts";
import { removeReactionEmoji } from "./messages/remove_reaction_emoji.ts"; import { removeReactionEmoji } from "./messages/remove_reaction_emoji.ts";
import { removeUserReaction } from "./messages/remove_user_reaction.ts";
import { sendMessage } from "./messages/send_message.ts"; import { sendMessage } from "./messages/send_message.ts";
import { unpin, unpinMessage } from "./messages/unpin_message.ts"; import { unpin, unpinMessage } from "./messages/unpin_message.ts";
import { editBotStatus } from "./misc/edit_bot_status.ts"; import { editBotStatus } from "./misc/edit_bot_status.ts";
@@ -240,7 +239,6 @@ export {
removeReaction, removeReaction,
removeReactionEmoji, removeReactionEmoji,
removeRole, removeRole,
removeUserReaction,
sendDirectMessage, sendDirectMessage,
sendInteractionResponse, sendInteractionResponse,
sendMessage, sendMessage,
@@ -361,7 +359,6 @@ export let helpers = {
removeAllReactions, removeAllReactions,
removeReactionEmoji, removeReactionEmoji,
removeReaction, removeReaction,
removeUserReaction,
sendMessage, sendMessage,
unpinMessage, unpinMessage,
// misc // misc
+6 -3
View File
@@ -121,8 +121,8 @@ const baseMessage: Partial<DiscordenoMessage> = {
removeReactionEmoji(reaction) { removeReactionEmoji(reaction) {
return removeReactionEmoji(this.channelId!, this.id!, reaction); return removeReactionEmoji(this.channelId!, this.id!, reaction);
}, },
removeReaction(reaction) { removeReaction(reaction, userId) {
return removeReaction(this.channelId!, this.id!, reaction); return removeReaction(this.channelId!, this.id!, reaction, userId);
}, },
}; };
@@ -255,5 +255,8 @@ export interface DiscordenoMessage
/** Remove all reactions */ /** Remove all reactions */
removeReactionEmoji(reaction: string): ReturnType<typeof removeReactionEmoji>; removeReactionEmoji(reaction: string): ReturnType<typeof removeReactionEmoji>;
/** Remove all reactions */ /** Remove all reactions */
removeReaction(reaction: string): ReturnType<typeof removeReaction>; removeReaction(
reaction: string,
userId?: string,
): ReturnType<typeof removeReaction>;
} }
+3 -8
View File
@@ -1,12 +1,7 @@
import { import { addReaction, cache, removeReaction, sendMessage } from "../../mod.ts";
addReaction,
cache,
removeUserReaction,
sendMessage,
} from "../../mod.ts";
import { defaultTestOptions, tempData } from "../ws/start_bot.ts";
import { assertEquals, assertExists } from "../deps.ts"; import { assertEquals, assertExists } from "../deps.ts";
import { delayUntil } from "../util/delay_until.ts"; import { delayUntil } from "../util/delay_until.ts";
import { defaultTestOptions, tempData } from "../ws/start_bot.ts";
async function ifItFailsBlameWolf(type: "getter" | "raw") { async function ifItFailsBlameWolf(type: "getter" | "raw") {
const message = await sendMessage(tempData.channelId, "Hello World!"); const message = await sendMessage(tempData.channelId, "Hello World!");
@@ -32,7 +27,7 @@ async function ifItFailsBlameWolf(type: "getter" | "raw") {
assertEquals(await cache.messages.get(message.id)?.reactions?.length, 1); assertEquals(await cache.messages.get(message.id)?.reactions?.length, 1);
if (type === "raw") { if (type === "raw") {
await removeUserReaction( await removeReaction(
message.channelId, message.channelId,
message.id, message.id,
"❤", "❤",