(guild, event)
| 109 | }; |
| 110 | |
| 111 | async function createTicketLogEmbed(guild, event) { |
| 112 | const style = TICKET_EVENT_STYLES[event.type] || { color: 0x95a5a6, title: 'Ticket Event' }; |
| 113 | const ticketNumber = event.ticketNumber || event.ticketId; |
| 114 | const ticketRef = ticketNumber ? `#${ticketNumber}` : 'Unknown'; |
| 115 | const channelMention = event.ticketId ? `<#${event.ticketId}>` : null; |
| 116 | const executorMention = event.executorId ? `<@${event.executorId}>` : null; |
| 117 | const userMention = event.userId ? `<@${event.userId}>` : null; |
| 118 | |
| 119 | let inlineFields = []; |
| 120 | let fields = []; |
| 121 | let author = null; |
| 122 | let footer = { text: 'TitanBot Ticketing' }; |
| 123 | |
| 124 | switch (event.type) { |
| 125 | case 'open': |
| 126 | author = await resolveUserAuthor(guild.client, event.userId); |
| 127 | inlineFields = [ |
| 128 | { name: 'Ticket', value: ticketRef, inline: true }, |
| 129 | { name: 'Creator', value: userMention || 'Unknown', inline: true }, |
| 130 | ]; |
| 131 | if (channelMention) { |
| 132 | inlineFields.push({ name: 'Channel', value: channelMention, inline: true }); |
| 133 | } |
| 134 | if (event.reason) { |
| 135 | fields.push({ name: 'Reason', value: String(event.reason).slice(0, 1024), inline: false }); |
| 136 | } |
| 137 | break; |
| 138 | |
| 139 | case 'close': |
| 140 | author = await resolveUserAuthor(guild.client, event.executorId); |
| 141 | inlineFields = [ |
| 142 | { name: 'Ticket', value: ticketRef, inline: true }, |
| 143 | { name: 'Closed by', value: executorMention || 'Unknown', inline: true }, |
| 144 | ]; |
| 145 | if (channelMention) { |
| 146 | inlineFields.push({ name: 'Channel', value: channelMention, inline: true }); |
| 147 | } |
| 148 | if (event.reason) { |
| 149 | fields.push({ name: 'Reason', value: String(event.reason).slice(0, 1024), inline: false }); |
| 150 | } |
| 151 | break; |
| 152 | |
| 153 | case 'delete': |
| 154 | author = await resolveUserAuthor(guild.client, event.executorId); |
| 155 | inlineFields = [ |
| 156 | { name: 'Ticket', value: ticketRef, inline: true }, |
| 157 | { name: 'Deleted by', value: executorMention || 'Unknown', inline: true }, |
| 158 | ]; |
| 159 | break; |
| 160 | |
| 161 | case 'claim': |
| 162 | case 'unclaim': |
| 163 | author = await resolveUserAuthor(guild.client, event.executorId); |
| 164 | inlineFields = [ |
| 165 | { name: 'Ticket', value: ticketRef, inline: true }, |
| 166 | { |
| 167 | name: event.type === 'claim' ? 'Claimed by' : 'Unclaimed by', |
| 168 | value: executorMention || 'Unknown', |
no test coverage detected