(message)
| 11 | once: false, |
| 12 | |
| 13 | async execute(message) { |
| 14 | try { |
| 15 | if (!message.guild) return; |
| 16 | |
| 17 | try { |
| 18 | const reactionRoleData = await getReactionRoleMessage(message.client, message.guild.id, message.id); |
| 19 | if (reactionRoleData) { |
| 20 | await deleteReactionRoleMessage(message.client, message.guild.id, message.id); |
| 21 | logger.info(`Cleaned up reaction role database entry for manually deleted message ${message.id} in guild ${message.guild.id}`); |
| 22 | |
| 23 | try { |
| 24 | await logEvent({ |
| 25 | client: message.client, |
| 26 | guildId: message.guild.id, |
| 27 | eventType: EVENT_TYPES.REACTION_ROLE_DELETE, |
| 28 | data: { |
| 29 | title: 'Reaction Role Removed', |
| 30 | lines: [ |
| 31 | formatLogLine('Channel', message.channel ? `${message.channel.name} ${message.channel.toString()}` : 'Unknown'), |
| 32 | formatLogLine('Message ID', `\`${message.id}\``), |
| 33 | formatLogLine('Cleanup', 'Database entry removed automatically'), |
| 34 | ], |
| 35 | quoted: true, |
| 36 | } |
| 37 | }); |
| 38 | } catch (logCleanupError) { |
| 39 | logger.warn('Failed to log reaction role cleanup after manual message deletion:', logCleanupError); |
| 40 | } |
| 41 | } |
| 42 | } catch (reactionRoleCleanupError) { |
| 43 | logger.warn(`Failed to clean up reaction role data for deleted message ${message.id}:`, reactionRoleCleanupError); |
| 44 | } |
| 45 | |
| 46 | if (message.author?.bot) return; |
| 47 | |
| 48 | const metaLines = [ |
| 49 | formatLogLine('Channel', message.channel ? `${message.channel.name} ${message.channel.toString()}` : 'Unknown'), |
| 50 | formatLogLine('Message ID', `\`${message.id}\``), |
| 51 | formatLogLine('Message author', message.author ? message.author.toString() : 'Unknown'), |
| 52 | formatLogLine('Message created', `<t:${Math.floor(message.createdTimestamp / 1000)}:R>`), |
| 53 | ]; |
| 54 | |
| 55 | let messageBody = null; |
| 56 | if (message.content) { |
| 57 | messageBody = message.content.length > MAX_LOGGED_MESSAGE_CONTENT_LENGTH |
| 58 | ? `${message.content.substring(0, MAX_LOGGED_MESSAGE_CONTENT_LENGTH - 3)}...` |
| 59 | : message.content; |
| 60 | } |
| 61 | |
| 62 | if (message.attachments.size > 0) { |
| 63 | metaLines.push(formatLogLine('Attachments', String(message.attachments.size))); |
| 64 | } |
| 65 | |
| 66 | await logEvent({ |
| 67 | client: message.client, |
| 68 | guildId: message.guild.id, |
| 69 | eventType: EVENT_TYPES.MESSAGE_DELETE, |
| 70 | data: { |
nothing calls this directly
no test coverage detected