83 lines
2.4 KiB
TypeScript
83 lines
2.4 KiB
TypeScript
// Dependencies
|
|
import { ColorResolvable, CommandInteraction } from "discord.js";
|
|
|
|
// Configurations
|
|
import config from "../../../../../config.json";
|
|
|
|
// Handlers
|
|
import logger from "../../../../logger";
|
|
|
|
// Models
|
|
import guildSchema from "../../../../database/schemas/guild";
|
|
|
|
// Function
|
|
export default async (interaction: CommandInteraction) => {
|
|
// Destructure member
|
|
const { options, guild, user } = interaction;
|
|
|
|
// Get options
|
|
const status = options?.getBoolean("status");
|
|
const rate = options?.getNumber("rate");
|
|
const timeout = options?.getNumber("timeout");
|
|
const minimumLength = options?.getNumber("minimum-length");
|
|
|
|
// Get guild object
|
|
const guildDB = await guildSchema?.findOne({
|
|
guildId: guild?.id,
|
|
});
|
|
|
|
if (guildDB === null) return;
|
|
|
|
// Modify values
|
|
guildDB.points.status = status !== null ? status : guildDB?.points?.status;
|
|
guildDB.points.rate = rate !== null ? rate : guildDB?.points?.rate;
|
|
guildDB.points.timeout =
|
|
timeout !== null ? timeout : guildDB?.points?.timeout;
|
|
guildDB.points.minimumLength =
|
|
minimumLength !== null ? minimumLength : guildDB?.points?.minimumLength;
|
|
|
|
// Save guild
|
|
await guildDB?.save()?.then(async () => {
|
|
// Create embed object
|
|
const embed = {
|
|
title: ":hammer: Settings - Guild [Points]" as string,
|
|
description: "Following settings is set!" as string,
|
|
color: config.colors.success as ColorResolvable,
|
|
fields: [
|
|
{
|
|
name: "🤖 Status" as string,
|
|
value: `${guildDB?.points?.status}` as string,
|
|
inline: true,
|
|
},
|
|
{
|
|
name: "📈 Rate" as string,
|
|
value: `${guildDB?.points?.rate}` as string,
|
|
inline: true,
|
|
},
|
|
{
|
|
name: "🔨 Minimum Length" as string,
|
|
value: `${guildDB?.points?.minimumLength}` as string,
|
|
inline: true,
|
|
},
|
|
{
|
|
name: "⏰ Timeout" as string,
|
|
value: `${guildDB?.points?.timeout}` as string,
|
|
inline: true,
|
|
},
|
|
],
|
|
timestamp: new Date(),
|
|
footer: {
|
|
iconURL: config?.footer?.icon as string,
|
|
text: config?.footer?.text as string,
|
|
},
|
|
};
|
|
|
|
// Send debug message
|
|
logger?.debug(
|
|
`Guild: ${guild?.id} User: ${user?.id} has changed credit details.`
|
|
);
|
|
|
|
// Return interaction reply
|
|
return interaction?.editReply({ embeds: [embed] });
|
|
});
|
|
};
|