diff options
| author | Fuwn <[email protected]> | 2025-10-06 19:47:27 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-10-06 19:47:27 -0700 |
| commit | 804f1f65c222c79090a248a71d9427ccc0465a61 (patch) | |
| tree | 5fc77b1661a25ef573489431d9c62fc0922bb98a /packages/gateway | |
| parent | feat(gateway:react): Cross-guild support (diff) | |
| download | umabotdiscord-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.ts | 42 | ||||
| -rw-r--r-- | packages/gateway/src/listeners/messageEdit.ts | 21 |
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); |