3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-14 13:55:03 +00:00
zeppelin/backend/src/plugins/ModActions/functions/formatReasonForAttachments.ts

38 lines
1.4 KiB
TypeScript

import { Attachment, ChatInputCommandInteraction, Message, TextBasedChannel } from "discord.js";
import { GuildPluginData } from "knub";
import { isContextMessage } from "../../../pluginUtils";
import { ModActionsPluginType } from "../types";
export async function formatReasonWithMessageLinkForAttachments(
pluginData: GuildPluginData<ModActionsPluginType>,
reason: string,
context: Message | ChatInputCommandInteraction,
attachments: Attachment[],
) {
if (isContextMessage(context)) {
const allAttachments = [...new Set([...context.attachments.values(), ...attachments])];
return allAttachments.length > 0 ? ((reason || "") + " " + context.url).trim() : reason;
}
if (attachments.length < 1) {
return reason;
}
const attachmentChannelId = pluginData.config.get().attachment_storing_channel;
const channel = attachmentChannelId
? (pluginData.guild.channels.cache.get(attachmentChannelId) as TextBasedChannel) ?? context.channel
: context.channel;
const message = await channel!.send({
content: `Storing ${attachments.length} attachment${attachments.length === 1 ? "" : "s"}`,
files: attachments.map((a) => a.url),
});
return ((reason || "") + " " + message.url).trim();
}
export function formatReasonWithAttachments(reason: string, attachments: Attachment[]) {
const attachmentUrls = attachments.map((a) => a.url);
return ((reason || "") + " " + attachmentUrls.join(" ")).trim();
}