Skip to content

Commit

Permalink
link replies and pins in modlog instead of including the link
Browse files Browse the repository at this point in the history
Signed-off-by: RedGuy12 <paul@reid-family.org>
  • Loading branch information
cobaltt7 committed Aug 7, 2023
1 parent 60886ba commit 8fdaebd
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 59 deletions.
2 changes: 1 addition & 1 deletion modules/bot/edit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ export async function submitEdit(interaction: ModalSubmitInteraction, id?: strin
}) edited by ${interaction.user.toString()}`,
"messages",
{
button: { label: "Message", url: edited.url },
buttons: [{ label: "Message", url: edited.url }],
files: shouldLog(edited.channel) ? files : [],
},
);
Expand Down
2 changes: 1 addition & 1 deletion modules/bot/say.ts
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ export async function say(
message.id
})`,
"messages",
{ button: { label: "Message", url: message.url } },
{ buttons: [{ label: "Message", url: message.url }] },
);
await interaction.editReply(`${constants.emojis.statuses.yes} Message sent!`);
}
Expand Down
14 changes: 8 additions & 6 deletions modules/logging/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -142,12 +142,14 @@ const events: {
)}’s permissions changed${extraAuditLogsInfo(entry)}`,
"server",
{
button: {
label: "Permissions",
url:
"https://discordlookup.com/permissions-calculator/" +
change.new,
},
buttons: [
{
label: "Permissions",
url:
"https://discordlookup.com/permissions-calculator/" +
change.new,
},
],
},
);
break;
Expand Down
26 changes: 18 additions & 8 deletions modules/logging/message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export async function messageDelete(message: Message<boolean> | PartialMessage)
(config.channels.modlogs?.id === getBaseChannel(message.channel)?.id &&
databaseThread.id !== message.channel.id);

const content = !shush && (await messageToText(message));
const content = !shush && (messageToText(message, false));
const { embeds, files } = shush
? { embeds: [], files: [] }
: extractMessageExtremities(message);
Expand All @@ -38,7 +38,17 @@ export async function messageDelete(message: Message<boolean> | PartialMessage)
"messages",
{
embeds,
button: { label: "Context", url: message.url },
buttons: [
{ label: "Context", url: message.url },
...(message.reference
? [
{
label: "Referenced Message",
url: `https://discord.com/${message.reference.guildId}/${message.reference.channelId}/${message.reference.messageId}`,
},
]
: []),
],

files: content
? [{ content, extension: "md" }, ...files.map((file) => file.url)]
Expand Down Expand Up @@ -74,7 +84,7 @@ export async function messageDeleteBulk(
"messages",
{
files: [{ content: messagesInfo, extension: "md" }],
button: { label: "Context", url: messages.first()?.url ?? "" },
buttons: [{ label: "Context", url: messages.first()?.url ?? "" }],
},
);
}
Expand Down Expand Up @@ -105,7 +115,7 @@ export async function messageReactionRemoveAll(
},
],

button: { label: "Context", url: message.url },
buttons: [{ label: "Context", url: message.url }],
},
);
}
Expand All @@ -124,7 +134,7 @@ export async function messageUpdate(
newMessage.id
}) ${newMessage.flags.has("Crossposted") ? "" : "un"}published`,
"messages",
{ button: { label: "Message", url: newMessage.url } },
{ buttons: [{ label: "Message", url: newMessage.url }] },
);
}
if (oldMessage.flags.has("SuppressEmbeds") !== newMessage.flags.has("SuppressEmbeds")) {
Expand All @@ -135,7 +145,7 @@ export async function messageUpdate(
newMessage.id
})`,
"messages",
{ button: { label: "Message", url: newMessage.url }, embeds: oldMessage.embeds },
{ buttons: [{ label: "Message", url: newMessage.url }], embeds: oldMessage.embeds },
);
}

Expand All @@ -147,7 +157,7 @@ export async function messageUpdate(
newMessage.id
}) ${newMessage.pinned ? "" : "un"}pinned`,
"messages",
{ button: { label: "Message", url: newMessage.url } },
{ buttons: [{ label: "Message", url: newMessage.url }] },
);
}

Expand Down Expand Up @@ -185,7 +195,7 @@ export async function messageUpdate(
newMessage.id
}) edited`,
"messages",
{ button: { label: "Message", url: newMessage.url }, files },
{ buttons: [{ label: "Message", url: newMessage.url }], files },
);
}
}
Expand Down
17 changes: 7 additions & 10 deletions modules/logging/misc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export default async function log(
extra: {
embeds?: (Embed | APIEmbed)[];
files?: (string | { extension?: string; content: string })[];
button?: { label: string; url: string };
buttons?: { label: string; url: string }[];
} = {},
) {
const thread = await getLoggingThread(group);
Expand Down Expand Up @@ -68,16 +68,13 @@ export default async function log(
: ""),
allowedMentions: { users: [] },
embeds: extra.embeds,
components: extra.button && [
components: extra.buttons && [
{
components: [
{
label: extra.button.label,
style: ButtonStyle.Link,
type: ComponentType.Button,
url: extra.button.url,
},
],
components: extra.buttons.map((button) => ({
...button,
style: ButtonStyle.Link,
type: ComponentType.Button,
})),
type: ComponentType.ActionRow,
},
],
Expand Down
82 changes: 49 additions & 33 deletions util/discord.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,9 @@ export async function getAllMessages(channel: TextBasedChannel): Promise<Message
*
* @returns Text representation of the message.
*/
export async function messageToText(message: Message, replies = true): Promise<string> {
export function messageToText(message: Message, replies: false): string;
export async function messageToText(message: Message, replies?: true): Promise<string>;
export function messageToText(message: Message, replies = true): Awaitable<string> {
const actualContent = message.flags.has("Loading")
? (Date.now() - Number(message.createdAt)) / 1000 / 60 > 15
? `${constants.emojis.discord.error} The application did not respond`
Expand Down Expand Up @@ -241,13 +243,17 @@ export async function messageToText(message: Message, replies = true): Promise<s
}

case MessageType.ChannelPinnedMessage: {
const pinned = await message.fetchReference().catch(() => message);
if (!replies)
return `${
constants.emojis.discord.pin
} ${message.author.toString()} pinned **a message** to this channel. See all **pinned messages**.`;

return `${
constants.emojis.discord.pin
} ${message.author.toString()} pinned [a message](${
pinned.url
}) to this channel. See all [pinned messages](${pinned.channel.url}).`;
} ${message.author.toString()} pinned [a message](${message.url.replace(
message.id,
message.reference?.messageId || "",
)}) to this channel. See all [pinned messages](${message.channel.url}).`;
}

case MessageType.UserJoin: {
Expand Down Expand Up @@ -344,25 +350,33 @@ export async function messageToText(message: Message, replies = true): Promise<s

case MessageType.Reply: {
if (!replies) return message.content;
const repliedMessage = await message.fetchReference().catch(() => {});

if (!repliedMessage)
return `*${constants.emojis.discord.reply} Original message was deleted*\n\n${message.content}`;

const cleanContent = await messageToText(repliedMessage, false);

return `*[Replying to](${repliedMessage.url}) ${repliedMessage.author.toString()}${
cleanContent ? `:*\n> ${truncateText(stripMarkdown(cleanContent), 300)}` : "*"
}\n\n${message.content}`;
return message
.fetchReference()
.catch(() => {})
.then(async (reply) => {
if (!reply)
return `*${constants.emojis.discord.reply} Original message was deleted*\n\n${message.content}`;

const cleanContent = messageToText(reply, false);
return `*[Replying to](${reply.url}) ${reply.author.toString()}${
cleanContent
? `:*\n> ${truncateText(stripMarkdown(cleanContent), 300)}`
: "*"
}\n\n${message.content}`;
});
}

case MessageType.ThreadStarterMessage: {
const reference = await message.fetchReference().catch(() => {});

// The resolved message for the reference will be a Message
return reference
? (await messageToText(reference, replies)) || actualContent
: `${constants.emojis.discord.thread} Sorry, we couldn't load the first message in this thread`;
if (!replies) return actualContent;
return message
.fetchReference()
.catch(() => {})
.then((reference) =>
// The resolved message for the reference will be a Message
reference
? messageToText(reference, replies) || actualContent
: `${constants.emojis.discord.thread} Sorry, we couldn't load the first message in this thread`,
);
}

case MessageType.GuildInviteReminder: {
Expand Down Expand Up @@ -421,18 +435,20 @@ export async function messageToText(message: Message, replies = true): Promise<s
if (!replies) return actualContent;

const commandName = message.interaction?.commandName.split(" ")[0];
const command = (await config.guild.commands.fetch()).find(
({ name }) => name === commandName,
);

return `*${message.interaction?.user.toString() ?? ""} used ${
command
? chatInputApplicationCommandMention(
message.interaction?.commandName ?? "",
command.id ?? "",
)
: bold(`/${message.interaction?.commandName ?? ""}`)
}:*\n${actualContent}`;
return config.guild.commands
.fetch()
.then((commands) => commands.find(({ name }) => name === commandName))
.then(
(command) =>
`*${message.interaction?.user.toString() ?? ""} used ${
command
? chatInputApplicationCommandMention(
message.interaction?.commandName ?? "",
command.id ?? "",
)
: bold(`/${message.interaction?.commandName ?? ""}`)
}:*\n${actualContent}`,
);
}

case MessageType.Call: {
Expand Down

0 comments on commit 8fdaebd

Please sign in to comment.