Repository navigation
Expand file tree
/
Copy pathreport.js
More file actions
94 lines (79 loc) · 2.87 KB
/
Copy pathreport.js
File metadata and controls
94 lines (79 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
const config = require('./config.js')
const { MessageActionRow, MessageButton } = require('discord.js');
const rowWhenOpen = new MessageActionRow()
.addComponents(
new MessageButton()
.setCustomId('mark-resolved')
.setLabel('Mark as resolved')
.setStyle('SUCCESS'),
)
const rowWhenClosed = new MessageActionRow()
.addComponents(
new MessageButton()
.setCustomId('mark-open')
.setLabel('Mark as open')
.setStyle('DANGER'),
)
module.exports = {
takeInteraction: async function (interaction) {
let message = interaction.options.getString('message');
let title = interaction.options.getString('title');
let logChannel = interaction.guild.channels.cache.get(process.env.REPORT_LOG_CHANNEL_ID)
let messages = await interaction.channel.messages.fetch({ limit: 1 })
let context = messages.first().url
let logMessage = {
embeds: [{
"title": `New report: ${title}`,
// "description": `**Report**\n${message}\n\n**Context**\n${context}\n\nFrom: <@${interaction.user.id}>\nIn: <#${interaction.channel.id}>\n\n**Status**\nOpen`,
"fields": [
{
"name": "Report",
"value": message
},
{
"name": "Context",
"value": context
},
{
"name": "From",
"value": `<@${interaction.user.id}>`,
},
{
"name": "To",
"value": `<#${interaction.channel.id}>`,
},
{
"name": "Status",
"value": "Open"
}
],
"color": '#00a9c0',
"thumbnail": {
"url": interaction.user.displayAvatarURL()
}
}],
components: [rowWhenOpen]
}
const sentLogMessage = await logChannel.send(logMessage)
return interaction.reply({ content: `Thanks, a moderator will take a look soon.`, ephemeral: true });
},
takeResolveInteraction: async function (interaction) {
let message = interaction.message
let embed = message.embeds[0]
// replace everything after "**Status**\n"
// embed.description = embed.description.replace(/(?<=\*\*Status\*\*\n).+/, `Closed by <@${interaction.user.id}>`)
embed.fields.find(field => field.name === "Status").value = `Closed by <@${interaction.user.id}>`
embed.color = "#808080"
message.edit({ embeds: [embed], components: [rowWhenClosed] })
interaction.deferUpdate()
},
takeReopenInteraction: async function (interaction) {
let message = interaction.message
let embed = message.embeds[0]
// embed.description = embed.description.replace(/(?<=\*\*Status\*\*\n).+/, `Reopened by <@${interaction.user.id}>`)
embed.fields.find(field => field.name === "Status").value = `Reopened by <@${interaction.user.id}>`
embed.color = "#00a9c0"
message.edit({ embeds: [embed], components: [rowWhenOpen] })
interaction.deferUpdate()
}
}