style(src/prettier): updating with the prettier
This commit is contained in:
parent
b36925546c
commit
bb46ad3996
17 changed files with 1909 additions and 1717 deletions
|
|
@ -1,251 +1,268 @@
|
|||
import { prisma } from '../../lib/prisma.ts';
|
||||
import { ActionRowBuilder, ChannelType, PermissionsBitField, ComponentType, StringSelectMenuBuilder, StringSelectMenuInteraction, StringSelectMenuOptionBuilder, SlashCommandBuilder, ChatInputCommandInteractionActivityType, channelMention, roleMention, PresenceUpdateStatus, MessageFlags, SlashCommandBuilder, EmbedBuilder } from 'discord.js';
|
||||
import emoji from '../../../assets/emoji.json' assert { type: "json" };
|
||||
import { prisma } from "../../lib/prisma.ts";
|
||||
import {
|
||||
ActionRowBuilder,
|
||||
ChannelType,
|
||||
PermissionsBitField,
|
||||
ComponentType,
|
||||
StringSelectMenuBuilder,
|
||||
StringSelectMenuInteraction,
|
||||
StringSelectMenuOptionBuilder,
|
||||
SlashCommandBuilder,
|
||||
ChatInputCommandInteractionActivityType,
|
||||
channelMention,
|
||||
roleMention,
|
||||
PresenceUpdateStatus,
|
||||
MessageFlags,
|
||||
SlashCommandBuilder,
|
||||
EmbedBuilder,
|
||||
} from "discord.js";
|
||||
import emoji from "../../../assets/emoji.json" assert { type: "json" };
|
||||
|
||||
export default {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('logs')
|
||||
.setDescription('edit the logs configuration')
|
||||
.addStringOption(option => option
|
||||
.setName('action')
|
||||
.setDescription('What is the action you to perform')
|
||||
.setRequired(true)
|
||||
.addChoices(
|
||||
{
|
||||
name: 'Show',
|
||||
value: 'logs_show'
|
||||
},
|
||||
{
|
||||
name: 'Auto-configuration',
|
||||
value: 'logs_auto'
|
||||
},
|
||||
{
|
||||
name: 'Configuration',
|
||||
value: 'logs_config'
|
||||
},
|
||||
)
|
||||
),
|
||||
async execute(interaction: CommandInteraction) {
|
||||
let guildData: Guild;
|
||||
try {
|
||||
guildData = await prisma.guild.findUnique({
|
||||
where: {
|
||||
id: interaction.guild.id
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
console.error(`\t⚠️ | Cannot get the database connection!\n\t\t(${err}).`);
|
||||
await interaction.reply({
|
||||
content: `${emoji.answer.error} | Cannot connect to the database`,
|
||||
flags: MessageFlags.Ephemeral
|
||||
});
|
||||
return;
|
||||
}
|
||||
let userData: User;
|
||||
try {
|
||||
userData = await prisma.user.findUnique({
|
||||
where: {
|
||||
id: interaction.user.id
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
throw(`\t⚠️ | Cannot get the database connection!\n\t\t(${err}).`);
|
||||
await interaction.reply({
|
||||
content: `${emoji.answer.error} | Cannot connect to the database`,
|
||||
flags: MessageFlags.Ephemeral
|
||||
});
|
||||
return;
|
||||
}
|
||||
const choice: string = interaction.options.getString('action');
|
||||
switch (choice) {
|
||||
case 'logs_show':
|
||||
if (guildData.logEnable) {
|
||||
const logsData: EmbedBuilder = new EmbedBuilder()
|
||||
.setTitle(`Logs for ${interaction.guild.name}`)
|
||||
.setColor(`${guildData.color}`)
|
||||
.setFooter({
|
||||
text: guildData.footer
|
||||
})
|
||||
.setDescription(`
|
||||
data: new SlashCommandBuilder()
|
||||
.setName("logs")
|
||||
.setDescription("edit the logs configuration")
|
||||
.addStringOption((option) =>
|
||||
option
|
||||
.setName("action")
|
||||
.setDescription("What is the action you to perform")
|
||||
.setRequired(true)
|
||||
.addChoices(
|
||||
{
|
||||
name: "Show",
|
||||
value: "logs_show",
|
||||
},
|
||||
{
|
||||
name: "Auto-configuration",
|
||||
value: "logs_auto",
|
||||
},
|
||||
{
|
||||
name: "Configuration",
|
||||
value: "logs_config",
|
||||
},
|
||||
),
|
||||
),
|
||||
async execute(interaction: CommandInteraction) {
|
||||
let guildData: Guild;
|
||||
try {
|
||||
guildData = await prisma.guild.findUnique({
|
||||
where: {
|
||||
id: interaction.guild.id,
|
||||
},
|
||||
});
|
||||
} catch (err) {
|
||||
console.error(
|
||||
`\t⚠️ | Cannot get the database connection!\n\t\t(${err}).`,
|
||||
);
|
||||
await interaction.reply({
|
||||
content: `${emoji.answer.error} | Cannot connect to the database`,
|
||||
flags: MessageFlags.Ephemeral,
|
||||
});
|
||||
return;
|
||||
}
|
||||
let userData: User;
|
||||
try {
|
||||
userData = await prisma.user.findUnique({
|
||||
where: {
|
||||
id: interaction.user.id,
|
||||
},
|
||||
});
|
||||
} catch (err) {
|
||||
throw `\t⚠️ | Cannot get the database connection!\n\t\t(${err}).`;
|
||||
await interaction.reply({
|
||||
content: `${emoji.answer.error} | Cannot connect to the database`,
|
||||
flags: MessageFlags.Ephemeral,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const choice: string = interaction.options.getString("action");
|
||||
switch (choice) {
|
||||
case "logs_show":
|
||||
if (guildData.logEnable) {
|
||||
const logsData: EmbedBuilder = new EmbedBuilder()
|
||||
.setTitle(`Logs for ${interaction.guild.name}`)
|
||||
.setColor(`${guildData.color}`)
|
||||
.setFooter({
|
||||
text: guildData.footer,
|
||||
}).setDescription(`
|
||||
${guildData.logCategory ? `${emoji.answer.yes} | Categories` : `${emoji.answer.no} | Categories`}
|
||||
${guildData.logBot ? `${emoji.answer.yes} | Bot` : `${emoji.answer.no} | Bot`}
|
||||
${guildData.logChannels ? `${emoji.answer.yes} | Channels` : `${emoji.answer.no} | Channels`}
|
||||
${guildData.logMember ? `${emoji.answer.yes} | Member` : `${emoji.answer.no} | Member`}
|
||||
${guildData.logMod ? `${emoji.answer.yes} | Moderation` : `${emoji.answer.no} | Moderation`}
|
||||
${guildData.logMsg ? `${emoji.answer.yes} | Message` : `${emoji.answer.no} | Message`}
|
||||
${guildData.logServer ? `${emoji.answer.yes} | Server` : `${emoji.answer.no} | Server`}
|
||||
`)
|
||||
|
||||
await interaction.reply({
|
||||
embeds: [
|
||||
logsData
|
||||
]
|
||||
});
|
||||
} else {
|
||||
await interaction.reply({
|
||||
content: `${emoji.answer.no} | The log is disable on the server`,
|
||||
flags: MessageFlags.Ephemeral
|
||||
});
|
||||
}
|
||||
return;
|
||||
case 'logs_auto':
|
||||
if (guildData.logEnable) {
|
||||
await interaction.reply({
|
||||
content: `${emoji.answer.error} | The log is already setup on this server`,
|
||||
flags: MessageFlags.Ephemeral
|
||||
});
|
||||
return;
|
||||
}
|
||||
${guildData.logBot ? `${emoji.answer.yes} | Bot` : `${emoji.answer.no} | Bot`}
|
||||
${guildData.logChannels ? `${emoji.answer.yes} | Channels` : `${emoji.answer.no} | Channels`}
|
||||
${guildData.logMember ? `${emoji.answer.yes} | Member` : `${emoji.answer.no} | Member`}
|
||||
${guildData.logMod ? `${emoji.answer.yes} | Moderation` : `${emoji.answer.no} | Moderation`}
|
||||
${guildData.logMsg ? `${emoji.answer.yes} | Message` : `${emoji.answer.no} | Message`}
|
||||
${guildData.logServer ? `${emoji.answer.yes} | Server` : `${emoji.answer.no} | Server`}
|
||||
`);
|
||||
|
||||
const roles = interaction.guild?.roles.cache
|
||||
.filter(role => !role.managed && role.id !== interaction.guild?.id)
|
||||
.sort((a, b) => b.position - a.position)
|
||||
await interaction.reply({
|
||||
embeds: [logsData],
|
||||
});
|
||||
} else {
|
||||
await interaction.reply({
|
||||
content: `${emoji.answer.no} | The log is disable on the server`,
|
||||
flags: MessageFlags.Ephemeral,
|
||||
});
|
||||
}
|
||||
return;
|
||||
case "logs_auto":
|
||||
if (guildData.logEnable) {
|
||||
await interaction.reply({
|
||||
content: `${emoji.answer.error} | The log is already setup on this server`,
|
||||
flags: MessageFlags.Ephemeral,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const menu = new StringSelectMenuBuilder()
|
||||
.setCustomId('role_select')
|
||||
.setPlaceholder('Choose the role that will have logs access')
|
||||
.setMinValues(1)
|
||||
.setMaxValues(Math.min(roles.size, 25))
|
||||
.addOptions(roles.map(role =>
|
||||
new StringSelectMenuOptionBuilder()
|
||||
.setLabel(role.name)
|
||||
.setValue(role.id)
|
||||
)
|
||||
);
|
||||
const roles = interaction.guild?.roles.cache
|
||||
.filter((role) => !role.managed && role.id !== interaction.guild?.id)
|
||||
.sort((a, b) => b.position - a.position);
|
||||
|
||||
const roleSelection = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(menu);
|
||||
const menu = new StringSelectMenuBuilder()
|
||||
.setCustomId("role_select")
|
||||
.setPlaceholder("Choose the role that will have logs access")
|
||||
.setMinValues(1)
|
||||
.setMaxValues(Math.min(roles.size, 25))
|
||||
.addOptions(
|
||||
roles.map((role) =>
|
||||
new StringSelectMenuOptionBuilder()
|
||||
.setLabel(role.name)
|
||||
.setValue(role.id),
|
||||
),
|
||||
);
|
||||
|
||||
let permSelector: EmbedBuilder = new EmbedBuilder()
|
||||
.setTitle(`Which role will have access`)
|
||||
.setColor(`${guildData.color}`)
|
||||
.setFooter({
|
||||
text: guildData.footer
|
||||
})
|
||||
|
||||
const msg = await interaction.reply({
|
||||
embeds: [
|
||||
permSelector
|
||||
],
|
||||
components: [
|
||||
roleSelection
|
||||
],
|
||||
flags: MessageFlags.fetchReply
|
||||
});
|
||||
const collector = msg.createMessageComponentCollector({
|
||||
componentType: ComponentType.StringSelect,
|
||||
time: 60_000,
|
||||
max: 25
|
||||
});
|
||||
collector.on('collect', async (selectInteraction: StringSelectMenuInteraction) => {
|
||||
if (selectInteraction.user.id !== interaction.user.id) {
|
||||
selectInteraction.reply({
|
||||
content: `${emoji.answer.no} | You cannot use this selector !`,
|
||||
ephemeral: true
|
||||
});
|
||||
return;
|
||||
}
|
||||
const selectedRoles = selectInteraction.values;
|
||||
const permissionOverwrites = [
|
||||
{
|
||||
id: interaction.guild.roles.everyone.id,
|
||||
deny: [
|
||||
PermissionsBitField.Flags.ViewChannel,
|
||||
PermissionsBitField.Flags.SendMessages
|
||||
],
|
||||
},
|
||||
...selectedRoles.map(id => ({
|
||||
id,
|
||||
allow: [
|
||||
PermissionsBitField.Flags.ViewChannel
|
||||
],
|
||||
}))
|
||||
];
|
||||
const roleSelection =
|
||||
new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(menu);
|
||||
|
||||
const category = await interaction.guild.channels.create({
|
||||
name: 'Logs',
|
||||
type: ChannelType.GuildCategory,
|
||||
permissionOverwrites
|
||||
}) as CategoryChannel;
|
||||
let permSelector: EmbedBuilder = new EmbedBuilder()
|
||||
.setTitle(`Which role will have access`)
|
||||
.setColor(`${guildData.color}`)
|
||||
.setFooter({
|
||||
text: guildData.footer,
|
||||
});
|
||||
|
||||
const logBot = await interaction.guild.channels.create({
|
||||
name: 'bot-logs',
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites
|
||||
}) as TextChannel;
|
||||
const msg = await interaction.reply({
|
||||
embeds: [permSelector],
|
||||
components: [roleSelection],
|
||||
flags: MessageFlags.fetchReply,
|
||||
});
|
||||
const collector = msg.createMessageComponentCollector({
|
||||
componentType: ComponentType.StringSelect,
|
||||
time: 60_000,
|
||||
max: 25,
|
||||
});
|
||||
collector.on(
|
||||
"collect",
|
||||
async (selectInteraction: StringSelectMenuInteraction) => {
|
||||
if (selectInteraction.user.id !== interaction.user.id) {
|
||||
selectInteraction.reply({
|
||||
content: `${emoji.answer.no} | You cannot use this selector !`,
|
||||
ephemeral: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const selectedRoles = selectInteraction.values;
|
||||
const permissionOverwrites = [
|
||||
{
|
||||
id: interaction.guild.roles.everyone.id,
|
||||
deny: [
|
||||
PermissionsBitField.Flags.ViewChannel,
|
||||
PermissionsBitField.Flags.SendMessages,
|
||||
],
|
||||
},
|
||||
...selectedRoles.map((id) => ({
|
||||
id,
|
||||
allow: [PermissionsBitField.Flags.ViewChannel],
|
||||
})),
|
||||
];
|
||||
|
||||
const logChannels = await interaction.guild.channels.create({
|
||||
name: 'channel-logs',
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites
|
||||
}) as TextChannel;
|
||||
const category = (await interaction.guild.channels.create({
|
||||
name: "Logs",
|
||||
type: ChannelType.GuildCategory,
|
||||
permissionOverwrites,
|
||||
})) as CategoryChannel;
|
||||
|
||||
const logMember = await interaction.guild.channels.create({
|
||||
name: 'member-logs',
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites
|
||||
}) as TextChannel;
|
||||
const logBot = (await interaction.guild.channels.create({
|
||||
name: "bot-logs",
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites,
|
||||
})) as TextChannel;
|
||||
|
||||
const logMod = await interaction.guild.channels.create({
|
||||
name: 'mod-logs',
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites
|
||||
}) as TextChannel;
|
||||
const logChannels = (await interaction.guild.channels.create({
|
||||
name: "channel-logs",
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites,
|
||||
})) as TextChannel;
|
||||
|
||||
const logMsg = await interaction.guild.channels.create({
|
||||
name: 'message-logs',
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites
|
||||
}) as TextChannel;
|
||||
const logMember = (await interaction.guild.channels.create({
|
||||
name: "member-logs",
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites,
|
||||
})) as TextChannel;
|
||||
|
||||
const logServer = await interaction.guild.channels.create({
|
||||
name: 'server-logs',
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites
|
||||
}) as TextChannel;
|
||||
const logMod = (await interaction.guild.channels.create({
|
||||
name: "mod-logs",
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites,
|
||||
})) as TextChannel;
|
||||
|
||||
await prisma.guild.update({
|
||||
where: {
|
||||
id: interaction.guild.id
|
||||
},
|
||||
data: {
|
||||
logEnable: true,
|
||||
logCategory: category.id,
|
||||
logBot: logBot.id,
|
||||
logChannels: logChannels.id,
|
||||
logMember: logMember.id,
|
||||
logMod: logMod.id,
|
||||
logMsg: logMsg.id,
|
||||
logServer: logServer.id
|
||||
}
|
||||
});
|
||||
const mentionList = selectedRoles.map(id => `- <@&${id}>`).join('\n');
|
||||
const autoConfig = new EmbedBuilder()
|
||||
.setTitle(`The logs category is created`)
|
||||
.setDescription(`
|
||||
const logMsg = (await interaction.guild.channels.create({
|
||||
name: "message-logs",
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites,
|
||||
})) as TextChannel;
|
||||
|
||||
const logServer = (await interaction.guild.channels.create({
|
||||
name: "server-logs",
|
||||
type: ChannelType.GuildText,
|
||||
parent: category,
|
||||
permissionOverwrites,
|
||||
})) as TextChannel;
|
||||
|
||||
await prisma.guild.update({
|
||||
where: {
|
||||
id: interaction.guild.id,
|
||||
},
|
||||
data: {
|
||||
logEnable: true,
|
||||
logCategory: category.id,
|
||||
logBot: logBot.id,
|
||||
logChannels: logChannels.id,
|
||||
logMember: logMember.id,
|
||||
logMod: logMod.id,
|
||||
logMsg: logMsg.id,
|
||||
logServer: logServer.id,
|
||||
},
|
||||
});
|
||||
const mentionList = selectedRoles
|
||||
.map((id) => `- <@&${id}>`)
|
||||
.join("\n");
|
||||
const autoConfig = new EmbedBuilder()
|
||||
.setTitle(`The logs category is created`)
|
||||
.setDescription(
|
||||
`
|
||||
This following roles will have access to the logs.
|
||||
${mentionList}
|
||||
`)
|
||||
.setColor(`${guildData.color}`)
|
||||
.setFooter({
|
||||
text: guildData.footer
|
||||
})
|
||||
await selectInteraction.update({
|
||||
embeds: [
|
||||
autoConfig
|
||||
],
|
||||
components: []
|
||||
});
|
||||
return;
|
||||
});
|
||||
default:
|
||||
console.error(`no choice on logs command ${choice}`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
`,
|
||||
)
|
||||
.setColor(`${guildData.color}`)
|
||||
.setFooter({
|
||||
text: guildData.footer,
|
||||
});
|
||||
await selectInteraction.update({
|
||||
embeds: [autoConfig],
|
||||
components: [],
|
||||
});
|
||||
return;
|
||||
},
|
||||
);
|
||||
default:
|
||||
console.error(`no choice on logs command ${choice}`);
|
||||
return;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue