Skip to content

Commit 90f0568

Browse files
committed
More ticket changes
1 parent d56f762 commit 90f0568

File tree

6 files changed

+271
-261
lines changed

6 files changed

+271
-261
lines changed

commands/Tickets/add-member.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,10 @@ class AddMember extends Command {
7878
return msg.channel.send({ embeds: [em] });
7979
} catch (err) {
8080
this.client.logger.error(err);
81-
this.client.util
82-
.errorEmbed(msg, 'An error occurred while trying to add a member to this ticket.')
83-
.catch(() => null);
81+
this.client.util.errorEmbed(
82+
msg,
83+
'An error occurred while trying to add a member to this ticket. Please try again later.',
84+
);
8485
} finally {
8586
connection.release();
8687
}

commands/Tickets/close.js

Lines changed: 125 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -19,149 +19,152 @@ class CloseTicket extends Command {
1919
const reason = args.join(' ') || 'No reason specified';
2020

2121
const connection = await this.client.db.getConnection();
22-
const [rows] = await connection.execute(
23-
/* sql */ `
24-
SELECT
25-
*
26-
FROM
27-
ticket_settings
28-
WHERE
29-
server_id = ?
30-
`,
31-
[msg.guild.id],
32-
);
33-
34-
if (rows.length === 0) {
35-
connection.release();
36-
return msg.channel.send('The ticket system has not been setup in this server.');
37-
}
38-
39-
if (!msg.guild.members.me.permissions.has('ManageChannels')) {
40-
connection.release();
41-
return msg.channel.send('Please let a server administrator know the bot is missing Manage Channels permission.');
42-
}
43-
44-
const logID = rows[0].logging_id;
45-
const roleID = rows[0].role_id;
4622

47-
if (!msg.channel.name.startsWith('ticket')) {
48-
connection.release();
49-
return msg.channel.send('You need to be inside the ticket you want to close.');
50-
}
51-
52-
const tName = msg.channel.name;
53-
const role = msg.guild.roles.cache.get(roleID);
54-
const [ownerRows] = await connection.execute(
55-
/* sql */
56-
`
57-
SELECT
58-
user_id
59-
FROM
60-
user_tickets
61-
WHERE
62-
server_id = ?
63-
AND channel_id = ?
64-
`,
65-
[msg.guild.id, msg.channel.id],
66-
);
67-
const owner = ownerRows[0]?.user_id;
68-
69-
if (!owner) {
70-
connection.release();
71-
return msg.channel.send('This ticket does not have an owner.');
72-
}
23+
try {
24+
const [rows] = await connection.execute(
25+
/* sql */ `
26+
SELECT
27+
*
28+
FROM
29+
ticket_settings
30+
WHERE
31+
server_id = ?
32+
`,
33+
[msg.guild.id],
34+
);
7335

74-
if (owner !== msg.author.id) {
75-
if (!msg.member.roles.cache.some((r) => r.id === roleID)) {
76-
connection.release();
77-
return msg.channel.send(`You need to be the ticket owner or a member of ${role.name} to use this command.`);
36+
if (rows.length === 0) {
37+
return msg.channel.send('The ticket system has not been setup in this server.');
7838
}
79-
}
80-
81-
const em = new EmbedBuilder()
82-
.setAuthor({ name: msg.member.displayName, iconURL: msg.member.displayAvatarURL() })
83-
.setTitle('Ticket Closed')
84-
.setColor('#E65DF4').setDescription(stripIndents`${msg.author} has requested to close this ticket.
85-
The ticket will close in 5 minutes if no further activity occurs.
86-
87-
Reason: ${reason}
88-
`);
89-
await msg.channel.send({ embeds: [em] });
90-
91-
const filter = (m) => m.content?.length > 0;
92-
93-
const collected = await msg.channel
94-
.awaitMessages({
95-
filter,
96-
max: 1,
97-
time: 300000,
98-
errors: ['time'],
99-
})
100-
.catch(() => null);
101-
102-
if (!collected) {
103-
const attachment = await discordTranscripts.createTranscript(msg.channel);
104-
let received;
10539

106-
const userEmbed = new EmbedBuilder()
107-
.setTitle('Ticket Closed')
108-
.setColor('#E65DF4')
109-
.addFields([
110-
{ name: 'Reason', value: reason, inline: false },
111-
{ name: 'Server', value: msg.guild.name, inline: false },
112-
])
113-
.setTimestamp();
114-
const user = await this.client.users.fetch(owner);
115-
await user.send({ embeds: [userEmbed], files: [attachment] }).catch(() => {
116-
received = 'no';
117-
});
40+
if (!msg.guild.members.me.permissions.has('ManageChannels')) {
41+
return msg.channel.send(
42+
'Please let a server administrator know the bot is missing Manage Channels permission.',
43+
);
44+
}
11845

119-
const logEmbed = new EmbedBuilder()
120-
.setAuthor({ name: user.displayName, iconURL: user.displayAvatarURL() })
121-
.setTitle('Ticket Closed')
122-
.addFields([
123-
{ name: 'Author', value: `<@${owner}> (${owner})`, inline: false },
124-
{ name: 'Channel', value: `${tName}: ${msg.channel.id}`, inline: false },
125-
{ name: 'Reason', value: reason, inline: false },
126-
])
127-
.setColor('#E65DF4')
128-
.setTimestamp();
129-
if (received === 'no') logEmbed.setFooter({ text: 'Could not message author' });
46+
const logID = rows[0].logging_id;
47+
const roleID = rows[0].role_id;
13048

131-
await msg.guild.channels.cache
132-
.get(logID)
133-
.send({ embeds: [logEmbed], files: [attachment] })
134-
.catch((e) => this.client.logger.error(e));
49+
if (!msg.channel.name.startsWith('ticket')) {
50+
return msg.channel.send('You need to be inside the ticket you want to close.');
51+
}
13552

136-
await connection.execute(
53+
const tName = msg.channel.name;
54+
const role = msg.guild.roles.cache.get(roleID);
55+
const [ownerRows] = await connection.execute(
13756
/* sql */
13857
`
139-
DELETE FROM user_tickets
58+
SELECT
59+
user_id
60+
FROM
61+
user_tickets
14062
WHERE
14163
server_id = ?
14264
AND channel_id = ?
14365
`,
14466
[msg.guild.id, msg.channel.id],
14567
);
146-
connection.release();
68+
const owner = ownerRows[0]?.user_id;
14769

148-
return msg.channel.delete();
149-
}
70+
if (!owner) {
71+
return msg.channel.send('This ticket does not have an owner.');
72+
}
73+
74+
if (owner !== msg.author.id) {
75+
if (!msg.member.roles.cache.some((r) => r.id === roleID)) {
76+
return msg.channel.send(`You need to be the ticket owner or a member of ${role.name} to use this command.`);
77+
}
78+
}
79+
80+
const em = new EmbedBuilder()
81+
.setAuthor({ name: msg.member.displayName, iconURL: msg.member.displayAvatarURL() })
82+
.setTitle('Ticket Closed')
83+
.setColor('#E65DF4').setDescription(stripIndents`${msg.author} has requested to close this ticket.
84+
The ticket will close in 5 minutes if no further activity occurs.
85+
86+
Reason: ${reason}
87+
`);
88+
await msg.channel.send({ embeds: [em] });
89+
90+
const filter = (m) => m.content?.length > 0;
91+
92+
const collected = await msg.channel
93+
.awaitMessages({
94+
filter,
95+
max: 1,
96+
time: 300000,
97+
errors: ['time'],
98+
})
99+
.catch(() => null);
100+
101+
if (!collected) {
102+
const attachment = await discordTranscripts.createTranscript(msg.channel);
103+
let received;
104+
105+
const userEmbed = new EmbedBuilder()
106+
.setTitle('Ticket Closed')
107+
.setColor('#E65DF4')
108+
.addFields([
109+
{ name: 'Reason', value: reason, inline: false },
110+
{ name: 'Server', value: msg.guild.name, inline: false },
111+
])
112+
.setTimestamp();
113+
const user = await this.client.users.fetch(owner);
114+
await user.send({ embeds: [userEmbed], files: [attachment] }).catch(() => {
115+
received = 'no';
116+
});
117+
118+
const logEmbed = new EmbedBuilder()
119+
.setAuthor({ name: user.displayName, iconURL: user.displayAvatarURL() })
120+
.setTitle('Ticket Closed')
121+
.addFields([
122+
{ name: 'Author', value: `<@${owner}> (${owner})`, inline: false },
123+
{ name: 'Channel', value: `${tName}: ${msg.channel.id}`, inline: false },
124+
{ name: 'Reason', value: reason, inline: false },
125+
])
126+
.setColor('#E65DF4')
127+
.setTimestamp();
128+
if (received === 'no') logEmbed.setFooter({ text: 'Could not message author' });
129+
130+
await msg.guild.channels.cache
131+
.get(logID)
132+
.send({ embeds: [logEmbed], files: [attachment] })
133+
.catch((e) => this.client.logger.error(e));
134+
135+
await connection.execute(
136+
/* sql */
137+
`
138+
DELETE FROM user_tickets
139+
WHERE
140+
server_id = ?
141+
AND channel_id = ?
142+
`,
143+
[msg.guild.id, msg.channel.id],
144+
);
145+
146+
return msg.channel.delete();
147+
}
150148

151-
const response = collected.first().content;
152-
const embed = new EmbedBuilder()
153-
.setTitle('Ticket Re-Opened')
154-
.setDescription(
155-
stripIndents`
149+
const response = collected.first().content;
150+
const embed = new EmbedBuilder()
151+
.setTitle('Ticket Re-Opened')
152+
.setDescription(
153+
stripIndents`
156154
Closing of the ticket has been cancelled with the following reason:
157155
158156
${response}`,
159-
)
160-
.setColor('#E65DF4')
161-
.setTimestamp();
157+
)
158+
.setColor('#E65DF4')
159+
.setTimestamp();
162160

163-
connection.release();
164-
return msg.channel.send({ embeds: [embed] });
161+
return msg.channel.send({ embeds: [embed] });
162+
} catch (err) {
163+
this.client.logger.error(err);
164+
this.client.util.errorEmbed(msg, 'An error occurred while trying to close the ticket. Please try again later.');
165+
} finally {
166+
connection.release();
167+
}
165168
}
166169
}
167170

commands/Tickets/force-close.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,12 @@ class forceClose extends Command {
154154
);
155155

156156
await channel.delete();
157+
} catch (err) {
158+
this.client.logger.error(err);
159+
this.client.util.errorEmbed(
160+
msg,
161+
'An error occurred while trying to force close the ticket. Please try again later.',
162+
);
157163
} finally {
158164
connection.release();
159165
}

commands/Tickets/new-ticket.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,9 +185,9 @@ class NewTicket extends Command {
185185
}
186186

187187
return tixChan.send({ content: role.toString(), embeds: [chanEmbed], components: [row] });
188-
} catch (e) {
189-
this.client.logger.error(e);
190-
return msg.channel.send('An error occurred while creating the ticket. Please try again later.');
188+
} catch (err) {
189+
this.client.logger.error(err);
190+
this.client.util.errorEmbed(msg, 'An error occurred while creating the ticket. Please try again later.');
191191
} finally {
192192
connection.release();
193193
}

commands/Tickets/remove-member.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,10 @@ class RemoveMember extends Command {
8080
return msg.channel.send({ embeds: [em] });
8181
} catch (err) {
8282
this.client.logger.error(err);
83-
this.client.util
84-
.errorEmbed(msg, 'An error occurred while trying to remove that member from the ticket.')
85-
.catch((e) => {
86-
this.client.logger.error(e);
87-
});
83+
this.client.util.errorEmbed(
84+
msg,
85+
'An error occurred while trying to remove that member from the ticket. Please try again later.',
86+
);
8887
} finally {
8988
connection.release();
9089
}

0 commit comments

Comments
 (0)