Merge pull request #235 from VermiumSifell/dev

2022.4.1
This commit is contained in:
Axel Olausson Holtenäs 2022-04-17 20:48:43 +02:00 committed by GitHub
commit 58e054bbe5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 130 additions and 4 deletions

View file

@ -65,7 +65,7 @@ const guildSchema = new Schema<IGuild>(
roles: {
status: {
type: Boolean,
default: true,
default: false,
},
pricePerHour: {
type: Number,

View file

@ -4,7 +4,7 @@ import modules from "@events/messageCreate/modules";
export default {
name: "messageCreate",
async execute(message: Message) {
await modules.counters.execute(message);
await modules.credits.execute(message);
await modules.points.execute(message);
await modules.counters.execute(message);
},

View file

@ -13,6 +13,7 @@ import credits from "./modules/credits";
import points from "./modules/points";
import welcome from "./modules/welcome";
import audits from "./modules/audits";
import shop from "./modules/shop";
import { SlashCommandSubcommandGroupBuilder } from "@discordjs/builders";
// Function
@ -25,7 +26,8 @@ export default {
.addSubcommand(credits.data)
.addSubcommand(points.data)
.addSubcommand(welcome.data)
.addSubcommand(audits.data);
.addSubcommand(audits.data)
.addSubcommand(shop.data);
},
execute: async (interaction: CommandInteraction) => {
// Destructure member
@ -81,6 +83,12 @@ export default {
return audits.execute(interaction);
}
if (options?.getSubcommand() === "shop") {
logger?.verbose(`Executing shop subcommand`);
return shop.execute(interaction);
}
logger?.verbose(`No subcommand found`);
},
};

View file

@ -0,0 +1,89 @@
// Dependencies
import { CommandInteraction } from "discord.js";
// Configurations
import { successColor, footerText, footerIcon } from "@config/embed";
// Handlers
import logger from "@logger";
// Models
import guildSchema from "@schemas/guild";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import { ChannelType } from "discord-api-types/v10";
// Function
export default {
data: (command: SlashCommandSubcommandBuilder) => {
return command
.setName("shop")
.setDescription("Shop")
.addBooleanOption((option) =>
option
.setName("roles-status")
.setDescription("Should roles be enabled?")
)
.addNumberOption((option) =>
option
.setName("roles-price-per-hour")
.setDescription("Price per hour for roles.")
);
},
execute: async (interaction: CommandInteraction) => {
// Destructure member
const { options, guild } = interaction;
// Get options
const rolesStatus = options?.getBoolean("roles-status");
const rolesPricePerHour = options?.getNumber("roles-price-per-hour");
// Get guild object
const guildDB = await guildSchema?.findOne({
guildId: guild?.id,
});
if (guildDB === null) {
return logger?.verbose(`Guild not found in database.`);
}
// Modify values
guildDB.shop.roles.status =
rolesStatus !== null ? rolesStatus : guildDB?.shop?.roles?.status;
guildDB.shop.roles.pricePerHour =
rolesPricePerHour !== null
? rolesPricePerHour
: guildDB?.shop?.roles?.pricePerHour;
// Save guild
await guildDB?.save()?.then(async () => {
logger?.verbose(`Guild shop updated.`);
return interaction?.editReply({
embeds: [
{
title: ":hammer: Settings - Guild [Shop]",
description: `Shop settings updated.`,
color: successColor,
fields: [
{
name: "🤖 Roles Status",
value: `${guildDB?.shop?.roles.status}`,
inline: true,
},
{
name: "🌊 Roles Price Per Hour",
value: `${guildDB?.shop?.roles.pricePerHour}`,
inline: true,
},
],
timestamp: new Date(),
footer: {
iconURL: footerIcon,
text: footerText,
},
},
],
});
});
},
};

View file

@ -5,10 +5,14 @@ import { CommandInteraction } from "discord.js";
// Handlers
import logger from "../../../logger";
import { errorColor, footerText, footerIcon } from "@config/embed";
// Modules
import buy from "./modules/buy";
import cancel from "./modules/cancel";
import guildSchema from "@schemas/guild";
// Function
export default {
data: (group: SlashCommandSubcommandGroupBuilder) => {
@ -19,7 +23,32 @@ export default {
.addSubcommand(cancel.data);
},
execute: async (interaction: CommandInteraction) => {
const { options } = interaction;
const { options, guild } = interaction;
const guildDB = await guildSchema?.findOne({
guildId: guild?.id,
});
if (guildDB === null) return;
if (!guildDB.shop.roles.status) {
logger.verbose(`Shop roles disabled.`);
return interaction?.editReply({
embeds: [
{
title: ":dollar: Shop - Roles",
description: "This server has disabled shop roles.",
color: errorColor,
timestamp: new Date(),
footer: {
iconURL: footerIcon,
text: footerText,
},
},
],
});
}
if (options?.getSubcommand() === "buy") {
logger.verbose(`Executing buy subcommand`);