cleanup and attachment logs for bulk deletes
This commit is contained in:
parent
747c718570
commit
67f8d32040
@ -106,10 +106,6 @@ class GuildLogger extends Observer {
|
|||||||
const { reference, channel, author, content, id } = message;
|
const { reference, channel, author, content, id } = message;
|
||||||
|
|
||||||
const embed = {
|
const embed = {
|
||||||
// author: {
|
|
||||||
// name: message.format('MSGLOG_DELETE_TITLE', { channel: message.channel.name, author: Util.escapeMarkdown(message.author.tag) }), //`${message.author.tag} (${message.author.id})`,
|
|
||||||
// icon_url: message.author.displayAvatarURL({ size: 32 }) //eslint-disable-line camelcase
|
|
||||||
// },
|
|
||||||
title: message.format('MSGLOG_DELETE_TITLE', { channel: channel.name, author: Util.escapeMarkdown(author.tag) }),
|
title: message.format('MSGLOG_DELETE_TITLE', { channel: channel.name, author: Util.escapeMarkdown(author.tag) }),
|
||||||
description: Util.escapeMarkdown(content)?.replace(/\\n/gu, ' ') || message.format('MSGLOG_NOCONTENT'),
|
description: Util.escapeMarkdown(content)?.replace(/\\n/gu, ' ') || message.format('MSGLOG_NOCONTENT'),
|
||||||
color: CONSTANTS.COLORS.RED,
|
color: CONSTANTS.COLORS.RED,
|
||||||
@ -202,7 +198,7 @@ class GuildLogger extends Observer {
|
|||||||
const currentMb = currentFiles.length > 0 ? currentFiles.map((f) => f.size).reduce((p, v) => p + v) : 0;
|
const currentMb = currentFiles.length > 0 ? currentFiles.map((f) => f.size).reduce((p, v) => p + v) : 0;
|
||||||
if (currentMb + file.size > 8 * CONSTANTS.IMAGES.MB_DIVIDER) {
|
if (currentMb + file.size > 8 * CONSTANTS.IMAGES.MB_DIVIDER) {
|
||||||
await upload(currentFiles);
|
await upload(currentFiles);
|
||||||
currentFiles = [];
|
currentFiles = [file];
|
||||||
} else {
|
} else {
|
||||||
currentFiles.push(file);
|
currentFiles.push(file);
|
||||||
}
|
}
|
||||||
@ -223,24 +219,6 @@ class GuildLogger extends Observer {
|
|||||||
this.client.logger.error('Error in message delete:\n' + err.stack);
|
this.client.logger.error('Error in message delete:\n' + err.stack);
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
|
||||||
if(message.attachments.size > 0) {
|
|
||||||
return this.logAttachment({ msgID: message.id, guildID: guild.id, channelID: channel.id, logChannel });
|
|
||||||
}
|
|
||||||
|
|
||||||
const embed = {
|
|
||||||
title: message.format('MSGLOG_DELETE_TITLE', { author: Util.escapeMarkdown(author.tag), channel: channel.name }),
|
|
||||||
description: message.content,
|
|
||||||
footer: {
|
|
||||||
text: message.format('MSGLOG_DELETE_FOOTER', { msgID: message.id, userID: author.id })
|
|
||||||
},
|
|
||||||
color: CONSTANTS.COLORS.RED,
|
|
||||||
timestamp: message.createdAt
|
|
||||||
};
|
|
||||||
|
|
||||||
await logChannel.send({ embed });
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async messageDeleteBulk(messages) {
|
async messageDeleteBulk(messages) {
|
||||||
@ -253,6 +231,8 @@ class GuildLogger extends Observer {
|
|||||||
const settings = await guild.settings();
|
const settings = await guild.settings();
|
||||||
const chatlogs = settings.messageLog;
|
const chatlogs = settings.messageLog;
|
||||||
if (!chatlogs.channel) return;
|
if (!chatlogs.channel) return;
|
||||||
|
const logChannel = await guild.resolveChannel(chatlogs.channel);
|
||||||
|
if (!logChannel) return undefined;
|
||||||
|
|
||||||
const { ignore, bypass } = chatlogs;
|
const { ignore, bypass } = chatlogs;
|
||||||
if (ignore.includes(channel.id)) return;
|
if (ignore.includes(channel.id)) return;
|
||||||
@ -284,6 +264,60 @@ class GuildLogger extends Observer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const uploaded = [];
|
||||||
|
if (message.attachments.size > 0 && chatlogs.attachments && logChannel.nsfw) {
|
||||||
|
|
||||||
|
const data = await this.client.storageManager.mongodb.messages.findOne({
|
||||||
|
id: message.id
|
||||||
|
});
|
||||||
|
|
||||||
|
if (data) {
|
||||||
|
|
||||||
|
const attachments = await this.client.storageManager.mongodb.attachments.find({
|
||||||
|
_id: { $in: data.attachments.filter((a) => a.index).map((a) => a.index) }
|
||||||
|
});
|
||||||
|
const sortedAttachments = data.attachments.sort((a, b) => b.size - a.size);
|
||||||
|
|
||||||
|
const files = [];
|
||||||
|
for (const attachment of sortedAttachments) {
|
||||||
|
|
||||||
|
const attachmentData = attachments.find((a) => a.attachmentId === attachment.id);
|
||||||
|
|
||||||
|
if (!attachmentData) continue;
|
||||||
|
// TODO: Implement a webhook on the logging server to upload the images instead
|
||||||
|
if (attachment.size > 8 * CONSTANTS.IMAGES.MB_DIVIDER) continue; //(attachment.size > CONSTANTS.IMAGES.UPLOAD_LIMIT[message.guild.premiumTier] * CONSTANTS.IMAGES.MB_DIVIDER)
|
||||||
|
|
||||||
|
attachmentData.buffer = attachmentData.buffer.buffer;
|
||||||
|
const messageAttachment = new MessageAttachment(attachmentData.buffer, attachment.name, { size: attachment.size });
|
||||||
|
files.push(messageAttachment);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
let currentFiles = [];
|
||||||
|
|
||||||
|
const upload = async (files) => {
|
||||||
|
const attachmentMessage = await this.attachmentWebhook.send(null, files).catch((error) => this.client.logger.error(error));
|
||||||
|
attachmentMessage.attachments.map((a) => uploaded.push(`[${a.filename} (${(a.size / CONSTANTS.IMAGES.MB_DIVIDER).toFixed(2)}mb)](${a.url})`));
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const file of files) {
|
||||||
|
const currentMb = currentFiles.length > 0 ? currentFiles.map((f) => f.size).reduce((p, v) => p + v) : 0;
|
||||||
|
if (currentMb + file.size > 8 * CONSTANTS.IMAGES.MB_DIVIDER) {
|
||||||
|
await upload(currentFiles);
|
||||||
|
currentFiles = [file];
|
||||||
|
} else {
|
||||||
|
currentFiles.push(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentFiles.length > 0) {
|
||||||
|
await upload(currentFiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//const attStr = message.attachments.map((att) => `${att.name} (${att.id})`).join(', ');
|
//const attStr = message.attachments.map((att) => `${att.name} (${att.id})`).join(', ');
|
||||||
const value = stripIndents`${content ? content.substring(0, cutOff) : message.format('BULK_DELETE_NO_CONTENT')}`;
|
const value = stripIndents`${content ? content.substring(0, cutOff) : message.format('BULK_DELETE_NO_CONTENT')}`;
|
||||||
//${message.attachments.size > 0 ? `__(Attachments: ${attStr})__` : '' }
|
//${message.attachments.size > 0 ? `__(Attachments: ${attStr})__` : '' }
|
||||||
@ -297,6 +331,12 @@ class GuildLogger extends Observer {
|
|||||||
value: content.substring(cutOff)
|
value: content.substring(cutOff)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (uploaded.length) fields.push({
|
||||||
|
name: message.format('BULK_DELETE_ATTACHMENTS'),
|
||||||
|
value: uploaded.join('\n'),
|
||||||
|
_attachment: true
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Compile embeds
|
//Compile embeds
|
||||||
@ -328,7 +368,7 @@ class GuildLogger extends Observer {
|
|||||||
for (let i = 0; i < embeds.length; i++) {
|
for (let i = 0; i < embeds.length; i++) {
|
||||||
const embed = embeds[i];
|
const embed = embeds[i];
|
||||||
//Amount of messages showing
|
//Amount of messages showing
|
||||||
const x = embed.fields.filter((field) => field.name !== '\u200b').length;
|
const x = embed.fields.filter((field) => field.name !== '\u200b' && !field._attachment).length;
|
||||||
embed.title = guild.format('BULK_DELETE_TITLE', { embedNr: i + 1, channel: channel.name });
|
embed.title = guild.format('BULK_DELETE_TITLE', { embedNr: i + 1, channel: channel.name });
|
||||||
embed.footer = { text: guild.format('BULK_DELETE_FOOTER', { rangeStart: showed + 1, rangeEnd: showed += x, total: messages.size }) };
|
embed.footer = { text: guild.format('BULK_DELETE_FOOTER', { rangeStart: showed + 1, rangeEnd: showed += x, total: messages.size }) };
|
||||||
const result = await hook.send({ embeds: [embed] }).catch((err) => {
|
const result = await hook.send({ embeds: [embed] }).catch((err) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user