Skip to content

Commit 32f83ad

Browse files
author
xyzjesper
committed
Fixed Close-Request Bug and refetch Database after feedback creation.
1 parent f155f87 commit 32f83ad

7 files changed

+108
-55
lines changed

src/modules/ticket/buttons/ticket-add-component-feedback.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
ButtonBuilder,
44
ButtonInteraction,
55
ButtonStyle,
6-
ChannelSelectMenuBuilder,
6+
ChannelSelectMenuBuilder, ChannelType,
77
ContainerBuilder,
88
MessageFlags, ModalBuilder, RoleSelectMenuBuilder, SeparatorBuilder, SeparatorComponent, SeparatorSpacingSize,
99
StringSelectMenuBuilder,
@@ -50,19 +50,24 @@ export default {
5050

5151
} else {
5252

53-
await database.ticketSetups.update({
54-
where: {
55-
CustomId: uuid
56-
},
57-
data: {
58-
WithTicketFeedback: true
59-
}
60-
})
6153

6254
await interaction.reply({
63-
flags: MessageFlags.Ephemeral,
64-
content: `## ${await convertToEmojiPng("check", client.user.id)} Enabled User Feedback after Close`
55+
flags: MessageFlags.Ephemeral | MessageFlags.IsComponentsV2,
56+
components: [
57+
new ContainerBuilder()
58+
.addActionRowComponents(
59+
new ActionRowBuilder<ChannelSelectMenuBuilder>().addComponents(
60+
new ChannelSelectMenuBuilder()
61+
.setCustomId("ticket-add-component-feedback-channel:" + uuid)
62+
.setPlaceholder("Select Channel the Feedback result.")
63+
.setChannelTypes(ChannelType.GuildText)
64+
.setMaxValues(1)
65+
.setMinValues(1)
66+
)
67+
)
68+
]
6569
})
70+
6671
}
6772
}
6873

src/modules/ticket/buttons/ticket-add-component-ticket-limit.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export default {
3030
.setCustomId("limit")
3131
.setLabel("Ticket Limit")
3232
.setStyle(TextInputStyle.Short)
33-
.setRequired(true);
33+
.setRequired(false);
3434

3535
modal.addComponents(new ActionRowBuilder<TextInputBuilder>().addComponents(uuid));
3636

src/modules/ticket/buttons/ticket-close-request.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,16 @@ export default {
5050
.addTextDisplayComponents(new TextDisplayBuilder()
5151
.setContent(
5252
[
53-
`### ${await convertToEmojiPng("ticket", client.user.id)} ${interaction.user} ask to close this ticket from <@${data.TicketOwnerId}`,
53+
`### ${await convertToEmojiPng("ticket", client.user.id)} ${interaction.user} ask to close this ticket from <@${data.TicketOwnerId}>`,
5454
`> -# Claimed: ${data.IsClaimed ? "Yes" : "No"}`,
55-
`> -# User Claimed: <@${data.UserWhoHasClaimedId}>`,
55+
`> -# User Claimed: ${data.UserWhoHasClaimedId ? `<@${data.UserWhoHasClaimedId}>` : "N/A"}`,
5656
].join("\n")))
5757
.addActionRowComponents(
5858
new ActionRowBuilder<ButtonBuilder>().addComponents(
5959
new ButtonBuilder()
6060
.setEmoji("<:x_:1322169218682322955>")
6161
.setDisabled(!(await hasTicketPermission("confirm-user-close", interaction.member as GuildMember, data.TicketId, client) || await hasTicketPermission("all", interaction.member as GuildMember, data.TicketId, client)))
62-
.setCustomId("ticket-close")
62+
.setCustomId("ticket-close:" + uuid)
6363
.setStyle(ButtonStyle.Secondary),
6464
new ButtonBuilder()
6565
.setEmoji("<:arrowbackregular24:1301119279088799815>")

src/modules/ticket/modals/ticket-add-component-ticket-limit-modal.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export default {
2323
CustomId: uuid
2424
},
2525
data: {
26-
TicketLimit: Number(limit)
26+
TicketLimit: limit ? Number(limit) : null
2727
}
2828
}
2929
);

src/modules/ticket/modals/ticket-close-action-feedback-comment-modal.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ export default {
3535

3636
if (!data) return await ticketErrorMessage("No Data!", interaction, client)
3737

38-
const feedback = await database.ticketFeedback.findFirst({
38+
let feedback = await database.ticketFeedback.findFirst({
3939
where: {
4040
TicketId: uuid
4141
}
4242
})
43-
if (!feedback)
43+
if (!feedback) {
4444
await database.ticketFeedback.create(
4545
{
4646
data: {
@@ -55,7 +55,12 @@ export default {
5555
}
5656
}
5757
)
58-
58+
feedback = await database.ticketFeedback.findFirst({
59+
where: {
60+
TicketId: uuid
61+
}
62+
})
63+
}
5964
await database.ticketFeedback.update({
6065
where: {
6166
id: feedback.id
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import {ChannelType, Client, UserSelectMenuInteraction} from "discord.js";
2+
import {ExtendedClient} from "../../../types/client.js";
3+
import {database} from "../../../main/database.js";
4+
5+
export default {
6+
id: "ticket-add-component-feedback-channel",
7+
8+
/**
9+
* @param {UserSelectMenuInteraction} interaction
10+
* @param {Client} client
11+
*/
12+
async execute(
13+
interaction: UserSelectMenuInteraction,
14+
client: ExtendedClient
15+
) {
16+
for (const value of interaction.values) {
17+
18+
19+
await database.ticketSetups.update({
20+
where: {
21+
CustomId: interaction.customId.split(":")[1]
22+
},
23+
data: {
24+
WithTicketFeedback: true,
25+
TicketFeedbackChannelId: value
26+
}
27+
})
28+
29+
await interaction.deferUpdate();
30+
}
31+
}
32+
};

src/modules/ticket/selectmenus/ticket-close-action-feedback.ts

Lines changed: 47 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -29,46 +29,57 @@ export default {
2929
* @param {Client} client
3030
*/
3131
async execute(interaction: StringSelectMenuInteraction, client: ExtendedClient) {
32-
const uuid = interaction.customId.split(":")[1]
33-
const data = await database.tickets.findFirst({
34-
where: {
35-
TicketId: uuid
36-
}
37-
})
32+
try {
33+
const uuid = interaction.customId.split(":")[1]
34+
const data = await database.tickets.findFirst({
35+
where: {
36+
TicketId: uuid
37+
}
38+
})
3839

39-
if (!data) return await ticketErrorMessage("No Data!", interaction, client)
40+
if (!data) return await ticketErrorMessage("No Data!", interaction, client)
4041

41-
const feedback = await database.ticketFeedback.findFirst({
42-
where: {
43-
TicketId: uuid
44-
}
45-
})
46-
if (!feedback)
47-
await database.ticketFeedback.create(
48-
{
49-
data: {
50-
Sent: false,
51-
SubmittedAt: new Date(),
52-
Ticket: {
53-
connect: {
54-
TicketId: uuid
55-
}
56-
},
57-
Rating: interaction.values.includes("one") ? 1 : interaction.values.includes("two") ? 2 : interaction.values.includes("three") ? 3 : interaction.values.includes("four") ? 4 : interaction.values.includes("five") ? 5 : 0
58-
}
42+
let feedback = await database.ticketFeedback.findFirst({
43+
where: {
44+
TicketId: uuid
5945
}
60-
)
61-
62-
await database.ticketFeedback.update({
63-
where: {
64-
id: feedback.id
65-
},
66-
data: {
67-
SubmittedAt: new Date(),
68-
Rating: interaction.values.includes("one") ? 1 : interaction.values.includes("two") ? 2 : interaction.values.includes("three") ? 3 : interaction.values.includes("four") ? 4 : interaction.values.includes("five") ? 5 : 0
46+
})
47+
if (!feedback) {
48+
await database.ticketFeedback.create(
49+
{
50+
data: {
51+
Sent: false,
52+
SubmittedAt: new Date(),
53+
Ticket: {
54+
connect: {
55+
TicketId: uuid
56+
}
57+
},
58+
Rating: interaction.values.includes("one") ? 1 : interaction.values.includes("two") ? 2 : interaction.values.includes("three") ? 3 : interaction.values.includes("four") ? 4 : interaction.values.includes("five") ? 5 : 0
59+
}
60+
}
61+
)
62+
feedback = await database.ticketFeedback.findFirst({
63+
where: {
64+
TicketId: uuid
65+
}
66+
})
6967
}
70-
})
7168

72-
await interaction.deferUpdate()
69+
await database.ticketFeedback.update({
70+
where: {
71+
id: feedback.id
72+
},
73+
data: {
74+
SubmittedAt: new Date(),
75+
Rating: interaction.values.includes("one") ? 1 : interaction.values.includes("two") ? 2 : interaction.values.includes("three") ? 3 : interaction.values.includes("four") ? 4 : interaction.values.includes("five") ? 5 : 0
76+
}
77+
})
78+
79+
await interaction.deferUpdate()
80+
} catch (error) {
81+
console.log(error)
82+
return await ticketErrorMessage("Please try again - We can't get your Feedback", interaction, client)
83+
}
7384
},
7485
};

0 commit comments

Comments
 (0)