editing messageEdit logs to be clearer.
Co-authored-by: PineappleFan <pineapplefanyt@gmail.com>
Co-authored-by: Skyler <skyler3665@gmail.com>
diff --git a/src/events/interactionCreate.ts b/src/events/interactionCreate.ts
index 9d3dceb..6a79447 100644
--- a/src/events/interactionCreate.ts
+++ b/src/events/interactionCreate.ts
@@ -24,6 +24,7 @@
import { callback as muteCallback, check as muteCheck } from "../commands/mod/mute.js";
import { callback as nicknameCallback, check as nicknameCheck } from "../commands/mod/nick.js";
import { callback as warnCallback, check as warnCheck } from "../commands/mod/warn.js";
+import { callback as logDetailsCallback } from "../actions/logs/showDetails.js";
import client from "../utils/client.js";
export const event = "interactionCreate";
@@ -61,6 +62,9 @@
case "createtranscript": {
return await createTranscript(interaction);
}
+ case "log:showDetails": {
+ return await logDetailsCallback(interaction);
+ }
}
// Mod actions
if (interaction.customId.startsWith("mod:")) {
diff --git a/src/events/messageEdit.ts b/src/events/messageEdit.ts
index bca652e..6719cc3 100644
--- a/src/events/messageEdit.ts
+++ b/src/events/messageEdit.ts
@@ -1,5 +1,5 @@
import type { NucleusClient } from "../utils/client.js";
-import type { Message, MessageReference } from "discord.js";
+import { AttachmentBuilder, Message, MessageReference } from "discord.js";
import type Discord from "discord.js";
import * as diff from "diff";
@@ -63,68 +63,88 @@
return;
}
const differences = diff.diffChars(oldContent, newContent);
- console.log(differences);
- let contentEdit = "";
- if (differences.map((d) => (d.added || d.removed ? 1 : 0)).filter((f) => f === 1).length > 0) {
- const green = "\x1B[36m";
- const red = "\x1B[41m";
- const skipped = "\x1B[40;33m";
- const reset = "\x1B[0m";
- const bold = "\x1B[1m";
- const cutoff = 20;
- differences.forEach((part) => {
- if (!part.added && !part.removed && part.value.length > cutoff) {
- contentEdit +=
- reset +
- part.value.slice(0, cutoff / 2) +
- skipped +
- `(${part.value.length - cutoff} more)` +
- reset +
- part.value.slice(-(cutoff / 2));
- } else {
- if (part.added || part.removed) {
- part.value = part.value.replaceAll(" ", "▁");
- }
- contentEdit += (part.added ? green : part.removed ? red : "") + part.value + reset;
- }
- });
- contentEdit = contentEdit.slice(0, 2000);
- contentEdit += `\n\n${bold}Key:${reset} ${green}Added${reset} | ${red}Removed${reset} | ${skipped}Skipped${reset}`;
- const data = {
- meta: {
- type: "messageUpdate",
- displayName: "Message Edited",
- calculateType: "messageUpdate",
- color: NucleusColors.yellow,
- emoji: "MESSAGE.EDIT",
- timestamp: newMessage.editedTimestamp
- },
- separate: {
- start: `\`\`\`ansi\n${contentEdit}\`\`\``,
- end: `[[Jump to message]](${newMessage.url})`
- },
- list: {
- messageId: entry(newMessage.id, `\`${newMessage.id}\``),
- sentBy: entry(newMessage.author.id, renderUser(newMessage.author)),
- sentIn: entry(newMessage.channel.id, renderChannel(newMessage.channel as Discord.GuildBasedChannel)),
- sent: entry(newMessage.createdTimestamp, renderDelta(newMessage.createdTimestamp)),
- edited: entry(newMessage.editedTimestamp, renderDelta(newMessage.editedTimestamp)),
- mentions: renderNumberDelta(oldMessage.mentions.users.size, newMessage.mentions.users.size),
- attachments: entry(
- renderNumberDelta(oldMessage.attachments.size, newMessage.attachments.size),
- renderNumberDelta(oldMessage.attachments.size, newMessage.attachments.size) + attachmentJump
- ),
- repliedTo: entry(
- replyTo ? replyTo.messageId! : null,
- replyTo
- ? `[[Jump to message]](https://discord.com/channels/${newMessage.guild.id}/${newMessage.channel.id}/${replyTo.messageId})`
- : "None"
- )
- },
- hidden: {
- guild: newMessage.guild.id
- }
- };
- await log(data);
- }
+ const green = "\x1B[36m";
+ const red = "\x1B[41m";
+ const skipped = "\x1B[40;33m";
+ const reset = "\x1B[0m";
+ const bold = "\x1B[1m";
+ // console.log(differences);
+ // let contentAdd = "";
+ // let contentRemove = "";
+ // if (differences.map((d) => (d.added || d.removed ? 1 : 0)).filter((f) => f === 1).length > 0) {
+ // const cutoff = 20;
+ // differences.forEach((part) => {
+ // if (!part.added && !part.removed && part.value.length > cutoff) {
+ // contentAdd +=
+ // reset +
+ // part.value.slice(0, cutoff / 2) +
+ // skipped +
+ // `(${part.value.length - cutoff} more)` +
+ // reset +
+ // part.value.slice(-(cutoff / 2));
+ // contentRemove +=
+ // reset +
+ // part.value.slice(0, cutoff / 2) +
+ // skipped +
+ // `(${part.value.length - cutoff} more)` +
+ // reset +
+ // part.value.slice(-(cutoff / 2));
+ // } else {
+ // if (part.added || part.removed) {
+ // part.value = part.value.replaceAll(" ", "▁");
+ // }
+ // if (part.added) {
+ // contentAdd += green + part.value + reset;
+ // } else if (part.removed) {
+ // contentRemove += red + part.value + reset;
+ // } else {
+ // contentAdd += part.value;
+ // contentRemove += part.value;
+ // }
+ // }
+ // });
+ const key = `\n\n${bold}Key:${reset} ${green}Added${reset} | ${red}Removed${reset} | ${skipped}Skipped${reset}`;
+ const data = {
+ meta: {
+ type: "messageUpdate",
+ displayName: "Message Edited",
+ calculateType: "messageUpdate",
+ color: NucleusColors.yellow,
+ emoji: "MESSAGE.EDIT",
+ timestamp: newMessage.editedTimestamp,
+ files: [
+ new AttachmentBuilder(Buffer.from(JSON.stringify(differences)), {
+ name: "diff.json",
+ description: "A JSON file containing the differences between the two messages."
+ })
+ ],
+ showDetails: true
+ },
+ separate: {
+ start: `To read the full log press the button below.\n\`\`\`ansi\n${key}\`\`\``,
+ end: `[[Jump to message]](${newMessage.url})`
+ },
+ list: {
+ messageId: entry(newMessage.id, `\`${newMessage.id}\``),
+ sentBy: entry(newMessage.author.id, renderUser(newMessage.author)),
+ sentIn: entry(newMessage.channel.id, renderChannel(newMessage.channel as Discord.GuildBasedChannel)),
+ sent: entry(newMessage.createdTimestamp, renderDelta(newMessage.createdTimestamp)),
+ edited: entry(newMessage.editedTimestamp, renderDelta(newMessage.editedTimestamp)),
+ mentions: renderNumberDelta(oldMessage.mentions.users.size, newMessage.mentions.users.size),
+ attachments: entry(
+ renderNumberDelta(oldMessage.attachments.size, newMessage.attachments.size),
+ renderNumberDelta(oldMessage.attachments.size, newMessage.attachments.size) + attachmentJump
+ ),
+ repliedTo: entry(
+ replyTo ? replyTo.messageId! : null,
+ replyTo
+ ? `[[Jump to message]](https://discord.com/channels/${newMessage.guild.id}/${newMessage.channel.id}/${replyTo.messageId})`
+ : "None"
+ )
+ },
+ hidden: {
+ guild: newMessage.guild.id
+ }
+ };
+ await log(data);
}