Skip to content

feat: Use mysql and alot of improvements #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Jan 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
227 changes: 113 additions & 114 deletions commands/info/help.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const { MessageEmbed, MessageActionRow, MessageSelectMenu, MessageButton } = require('discord.js');
const { MessageEmbed, MessageActionRow, MessageSelectMenu } = require('discord.js');
const humanizeDuration = require("humanize-duration");

module.exports = {
Expand Down Expand Up @@ -37,123 +37,122 @@ module.exports = {
}
return interaction.reply({ embeds: [embed] })
}
// await interaction.deferReply();
const row = new MessageActionRow()
.addComponents(
new MessageSelectMenu()
.setCustomId('help_menu')
.setPlaceholder('Select Command Category.')
.setMinValues(1)
.setMaxValues(1)
.addOptions([
{
label: "General",
emoji: "⚙",
description: "Show all commands in general category.",
value: "general"
},
{
label: "Info",
description: "Show all commands in info category.",
emoji: "ℹ",
value: "info"
},
{
label: "Ticket",
description: "Show all commands in ticket category.",
emoji: "📃",
value: "ticket"
}
])
)
interaction.reply({ content: "**👋 Select Category You Need Help For**", components: [row] });
const filter = i => i.customId === 'help_menu' || 'selected_command' && i.user.id === interaction.user.id;
const collector = interaction.channel.createMessageComponentCollector({ filter: filter, max: 2, componentType: "SELECT_MENU" });
collector.on('collect', async i => {
if (i.values.includes('general')) {
await i.deferUpdate();
const loopArray = [];
if (client.commands.filter(r => r.category === 'general').size === '25') {
loopArray.slice(0, 25)
}
client.commands.filter(r => r.category === "general").forEach(cmd => {
loopArray.push({
label: cmd.name,
value: cmd.name,
description: cmd.description,
emoji: "⚙"
})
})
const commandRow = row.setComponents(
new MessageSelectMenu()
.setCustomId('general_cmd')
.setPlaceholder('General Commands')
.setMinValues(1)
.setMaxValues(1)
.addOptions(loopArray)
)
return i.editReply({
content: "**Select what command you need help for.**",
components: [commandRow]
})
const row = new MessageActionRow()
.addComponents(
new MessageSelectMenu()
.setCustomId('help_menu')
.setPlaceholder('Select Command Category.')
.setMinValues(1)
.setMaxValues(1)
.addOptions([
{
label: "General",
emoji: "⚙",
description: "Show all commands in general category.",
value: "general"
},
{
label: "Info",
description: "Show all commands in info category.",
emoji: "ℹ",
value: "info"
},
{
label: "Ticket",
description: "Show all commands in ticket category.",
emoji: "📃",
value: "ticket"
}
if (i.values.includes('info')) {
await i.deferUpdate();
const loopArray = [];
if (client.commands.filter(r => r.category === 'info').size === '25') {
loopArray.slice(0, 25)
}
client.commands.filter(r => r.category === "info").forEach(cmd => {
loopArray.push({
label: cmd.name,
value: cmd.name,
description: cmd.description,
emoji: "ℹ"
})
})
const commandRow = row.setComponents(
new MessageSelectMenu()
.setCustomId('info_cmd')
.setPlaceholder('Info Commands')
.setMinValues(1)
.setMaxValues(1)
.addOptions(loopArray)
)
return i.editReply({
content: "**Select what command you need help for.**",
components: [commandRow]
})
])
)
interaction.reply({ content: "**👋 Select Category You Need Help For**", components: [row] });
const filter = i => i.customId === 'help_menu' || 'selected_command' && i.user.id === interaction.user.id;
const collector = interaction.channel.createMessageComponentCollector({ filter: filter, max: 2, componentType: "SELECT_MENU" });
collector.on('collect', async i => {
if (i.values.includes('general')) {
await i.deferUpdate();
const loopArray = [];
if (client.commands.filter(r => r.category === 'general').size === '25') {
loopArray.slice(0, 25)
}
if (i.values.includes('ticket')) {
await i.deferUpdate();
const loopArray = [];
if (client.commands.filter(r => r.category === 'ticket').size > 25) {
loopArray.slice(0, 25)
}
client.commands.filter(r => r.category === "ticket").forEach(cmd => {
loopArray.push({
label: cmd.name,
value: cmd.name,
description: cmd.description,
emoji: "📃"
})
client.commands.filter(r => r.category === "general").forEach(cmd => {
loopArray.push({
label: cmd.name,
value: cmd.name,
description: cmd.description,
emoji: "⚙"
})
const commandRow = row.setComponents(
new MessageSelectMenu()
.setCustomId('ticket_cmd')
.setPlaceholder('Ticket Commands')
.setMinValues(1)
.setMaxValues(1)
.addOptions(loopArray)
)
return i.editReply({
content: "**Select what command you need help for.**",
components: [commandRow]
})
const commandRow = row.setComponents(
new MessageSelectMenu()
.setCustomId('general_cmd')
.setPlaceholder('General Commands')
.setMinValues(1)
.setMaxValues(1)
.addOptions(loopArray)
)
return i.editReply({
content: "**Select what command you need help for.**",
components: [commandRow]
})
}
if (i.values.includes('info')) {
await i.deferUpdate();
const loopArray = [];
if (client.commands.filter(r => r.category === 'info').size === '25') {
loopArray.slice(0, 25)
}
client.commands.filter(r => r.category === "info").forEach(cmd => {
loopArray.push({
label: cmd.name,
value: cmd.name,
description: cmd.description,
emoji: "ℹ"
})
})
const commandRow = row.setComponents(
new MessageSelectMenu()
.setCustomId('info_cmd')
.setPlaceholder('Info Commands')
.setMinValues(1)
.setMaxValues(1)
.addOptions(loopArray)
)
return i.editReply({
content: "**Select what command you need help for.**",
components: [commandRow]
})
}
if (i.values.includes('ticket')) {
await i.deferUpdate();
const loopArray = [];
if (client.commands.filter(r => r.category === 'ticket').size > 25) {
loopArray.slice(0, 25)
}
})
} catch (e) {
return false;
}
client.commands.filter(r => r.category === "ticket").forEach(cmd => {
loopArray.push({
label: cmd.name,
value: cmd.name,
description: cmd.description,
emoji: "📃"
})
})
const commandRow = row.setComponents(
new MessageSelectMenu()
.setCustomId('ticket_cmd')
.setPlaceholder('Ticket Commands')
.setMinValues(1)
.setMaxValues(1)
.addOptions(loopArray)
)
return i.editReply({
content: "**Select what command you need help for.**",
components: [commandRow]
})
}
})
} catch (e) {
return false;
}
}
}
7 changes: 5 additions & 2 deletions commands/ticket/close.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ module.exports = {
modOnly: true,
category: "ticket",
usage: "/close",
run: async(interaction) => {
run: async(interaction, client) => {
await interaction.channel.permissionOverwrites.set([
{
id: interaction.guild.id,
deny: ['VIEW_CHANNEL', 'SEND_MESSAGES']
}
])
]);
const ticketData = await client.db.get('tickets', interaction.channel.id);
ticketData['open'] = false;
await client.db.set('tickets', interaction.channel.id, ticketData);
const embed = new Discord.MessageEmbed()
.setDescription(`**🔒 Ticket has been closed**`)
.setColor(config.embedColor)
Expand Down
3 changes: 2 additions & 1 deletion commands/ticket/delete.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ module.exports = {
.setThumbnail(interaction.user.displayAvatarURL({ dynamic: true }))
await logChannel.send({
embeds: [embed]
})
});
await client.db.delete('tickets', interaction.channel.id);
return interaction.channel.delete(`By: ${interaction.user.tag}`);
}
if (i.customId === 'cancel') {
Expand Down
34 changes: 19 additions & 15 deletions commands/ticket/new.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,19 @@ module.exports = {
category: "ticket",
usage: "/new",
run: async(interaction, client) => {
const getAllData = await client.db.all("tickets");
const userHasTicket = getAllData.filter(r => r.data.user === interaction.user.id);
const ticketCatgory = interaction.guild.channels.cache.find(r => r.type === 'GUILD_CATEGORY' && r.name === 'tickets');
if (!ticketCatgory) {
const embed = new MessageEmbed()
.setDescription('**:x: You need to setup ticket system before creating a new ticket, use command \`/setup\` to setup ticket system.**')
.setColor(config.embedColor)
await interaction.guild.channels.create('tickets', { type: "GUILD_CATEGORY", reason: "Setup ticket category" })
return interaction.reply({
embeds: [embed],
content: `:x: There was no ticket category, and i created a new one, use this command again.`,
ephemeral: true
})
}
if (userHasTicket.length > 0) {
return interaction.reply({
content: `:x: You already have opened ticket.`,
ephemeral: true
})
}
Expand All @@ -36,24 +42,22 @@ module.exports = {
],
reason: "Created a new ticket"
});
await client.db.set('tickets', ticketChannel.id, {
category: ticketCatgory.id,
ticket: ticketChannel.id,
guild: interaction.guild.id,
user: interaction.user.id,
open: true
})
const embed = new MessageEmbed()
.setAuthor(interaction.user.tag, interaction.user.displayAvatarURL({ dynamic: true }))
.setDescription("Support will be with you shortly.\nTo close this ticket click 🔒 button.")
.setDescription("Support will be with you shortly.")
.setColor(config.embedColor)
.setFooter(`${interaction.guild.name} Support`, interaction.guild.iconURL({ dynamic: true }))
.setTimestamp()
const row = new MessageActionRow()
.addComponents(
new MessageButton()
.setCustomId('close')
.setStyle('DANGER')
.setLabel('Close Ticket')
.setEmoji('🔒')
)
ticketChannel.send({
content: interaction.user.toString(),
embeds: [embed],
components: [row]
embeds: [embed]
})
const successEmbed = new MessageEmbed()
.setDescription(`**👋 Hey ${interaction.user.username}, You can ask your question in ${ticketChannel}**`)
Expand Down
26 changes: 26 additions & 0 deletions commands/ticket/open.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
module.exports = {
name: "open",
description: "Reopen ticket channel.",
ticketOnly: true,
modOnly: true,
category: "ticket",
usage: "/open",
run: async(interaction, client) => {
const getTicketData = await client.db.get("tickets", interaction.channel.id);
if (getTicketData.open) {
return interaction.reply({
content: `:x: This ticket is already opened`,
ephemeral: true
})
}
getTicketData['open'] = true;
await client.db.set('tickets', interaction.channel.id, getTicketData);
await interaction.channel.permissionOverwrites.edit(getTicketData.user, {
VIEW_CHANNEL: true,
SEND_MESSAGES: true
});
interaction.reply({
content: `✅ Successfully reopened this ticket.`
})
}
}
29 changes: 0 additions & 29 deletions commands/ticket/setup.js

This file was deleted.

Loading