summaryrefslogtreecommitdiff
path: root/packages/gateway
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-10-06 19:47:27 -0700
committerFuwn <[email protected]>2025-10-06 19:47:27 -0700
commit804f1f65c222c79090a248a71d9427ccc0465a61 (patch)
tree5fc77b1661a25ef573489431d9c62fc0922bb98a /packages/gateway
parentfeat(gateway:react): Cross-guild support (diff)
downloadumabotdiscord-804f1f65c222c79090a248a71d9427ccc0465a61.tar.xz
umabotdiscord-804f1f65c222c79090a248a71d9427ccc0465a61.zip
feat(gateway): Better gate messageDeletion and messageEdit to performing author
Diffstat (limited to 'packages/gateway')
-rw-r--r--packages/gateway/src/listeners/messageDeletion.ts42
-rw-r--r--packages/gateway/src/listeners/messageEdit.ts21
2 files changed, 38 insertions, 25 deletions
diff --git a/packages/gateway/src/listeners/messageDeletion.ts b/packages/gateway/src/listeners/messageDeletion.ts
index bbd00fe..4e6a315 100644
--- a/packages/gateway/src/listeners/messageDeletion.ts
+++ b/packages/gateway/src/listeners/messageDeletion.ts
@@ -18,9 +18,34 @@ export const handleMessageDeletion = (client: Client) => {
const application = await client.application?.fetch();
const ownerId = application?.owner?.id;
- const isBotOrOwner =
+ const guild = deletedMessage.guild;
+ const serverOwnerId = guild?.ownerId;
+ const isPrivilegedAuthor =
deletedMessage.author?.id === client.user?.id ||
- deletedMessage.author?.id === ownerId;
+ deletedMessage.author?.id === ownerId ||
+ deletedMessage.author?.id === serverOwnerId;
+
+ if (isPrivilegedAuthor) return;
+
+ try {
+ const auditLogs = await guild?.fetchAuditLogs({
+ limit: 1,
+ type: 72, // MESSAGE_DELETE
+ });
+ const deletionLog = auditLogs?.entries.first();
+
+ if (deletionLog) {
+ const deleterId = deletionLog.executor?.id;
+ const isPrivilegedDeleter =
+ deleterId === client.user?.id ||
+ deleterId === ownerId ||
+ deleterId === serverOwnerId;
+
+ if (isPrivilegedDeleter) return;
+ }
+ } catch (error) {
+ console.log("Could not fetch audit logs for message deletion");
+ }
try {
const channel = deletedMessage.channel;
@@ -31,7 +56,6 @@ export const handleMessageDeletion = (client: Client) => {
GUILD_CHANNEL_MAPPINGS[
deletedMessage.guildId as keyof typeof GUILD_CHANNEL_MAPPINGS
];
-
const embed = new EmbedBuilder()
.setTitle("🗑️ Message Deleted")
.setColor("#ff4444")
@@ -89,11 +113,7 @@ export const handleMessageDeletion = (client: Client) => {
.map((a) => `[${a.name}](${a.url})`)
.join("\n").length <= 1024)
) {
- if (isBotOrOwner) {
- await sendAuditLog(client, embed);
- } else {
- await sendAuditLog(client, embed, undefined, guildChannelId);
- }
+ await sendAuditLog(client, embed, undefined, guildChannelId);
} else {
let additionalContent = "";
@@ -109,11 +129,7 @@ export const handleMessageDeletion = (client: Client) => {
additionalContent += "### Attachments\n\n" + attachmentList;
}
- if (isBotOrOwner) {
- await sendAuditLog(client, embed, additionalContent);
- } else {
- await sendAuditLog(client, embed, additionalContent, guildChannelId);
- }
+ await sendAuditLog(client, embed, additionalContent, guildChannelId);
}
} catch (error) {
console.error("Error logging message deletion:", error);
diff --git a/packages/gateway/src/listeners/messageEdit.ts b/packages/gateway/src/listeners/messageEdit.ts
index f794b44..f099632 100644
--- a/packages/gateway/src/listeners/messageEdit.ts
+++ b/packages/gateway/src/listeners/messageEdit.ts
@@ -17,9 +17,14 @@ export const handleMessageEdit = (client: Client) => {
const application = await client.application?.fetch();
const ownerId = application?.owner?.id;
- const isBotOrOwner =
+ const guild = newMessage.guild;
+ const serverOwnerId = guild?.ownerId;
+ const isPrivilegedUser =
newMessage.author?.id === client.user?.id ||
- newMessage.author?.id === ownerId;
+ newMessage.author?.id === ownerId ||
+ newMessage.author?.id === serverOwnerId;
+
+ if (isPrivilegedUser) return;
try {
const channel = newMessage.channel;
@@ -85,22 +90,14 @@ export const handleMessageEdit = (client: Client) => {
if (newContent.length > maxFieldLength)
additionalContent += `AFTER:\n${newContent}`;
- if (isBotOrOwner) {
- await sendAuditLog(client, embed, additionalContent);
- } else {
- await sendAuditLog(client, embed, additionalContent, guildChannelId);
- }
+ await sendAuditLog(client, embed, additionalContent, guildChannelId);
} else {
embed.addFields(
{ name: "Before", value: oldContent, inline: false },
{ name: "After", value: newContent, inline: false },
);
- if (isBotOrOwner) {
- await sendAuditLog(client, embed);
- } else {
- await sendAuditLog(client, embed, undefined, guildChannelId);
- }
+ await sendAuditLog(client, embed, undefined, guildChannelId);
}
} catch (error) {
console.error("Error logging message edit:", error);