shop role colors and devMode and fix delete role

This commit is contained in:
Axel Olausson Holtenäs 2022-04-11 12:36:33 +02:00
parent 0385ef4837
commit 63d7152a61
No known key found for this signature in database
GPG key ID: 9347A5E873995701
7 changed files with 109 additions and 80 deletions

View file

@ -29,5 +29,6 @@
},
"secretKey": "SET A LONG RANDOM PASSWORD HERE, ITS FOR USE OF ENCRYPTION WITH LENGTH OF 32",
"importToDB": false,
"clearUnused": false
"clearUnused": false,
"devMode": false
}

View file

@ -1,54 +1,61 @@
// Dependencies
import { SlashCommandBuilder } from "@discordjs/builders";
import { CommandInteraction } from "discord.js";
import { SlashCommandBuilder } from '@discordjs/builders';
import { CommandInteraction } from 'discord.js';
// Modules
import pterodactyl from "./modules/pterodactyl";
import pterodactyl from './modules/pterodactyl';
// Groups
import roles from "./roles";
import roles from './roles';
// Handlers
import logger from "../../handlers/logger";
import logger from '../../handlers/logger';
// Function
export default {
data: new SlashCommandBuilder()
.setName("shop")
.setDescription("Open our shop.")
.setName('shop')
.setDescription('Open our shop.')
.addSubcommand((subcommand) =>
subcommand
.setName("pterodactyl")
.setDescription("Buy pterodactyl power.")
.setName('pterodactyl')
.setDescription('Buy pterodactyl power.')
.addIntegerOption((option) =>
option
.setName("amount")
.setDescription("How much credits you want to withdraw.")
.setName('amount')
.setDescription('How much credits you want to withdraw.')
)
)
.addSubcommandGroup((group) =>
group
.setName("roles")
.setDescription("Manage custom roles.")
.setName('roles')
.setDescription('Manage custom roles.')
.addSubcommand((command) =>
command
.setName("buy")
.setDescription("Buy a custom role")
.setName('buy')
.setDescription('Buy a custom role')
.addStringOption((option) =>
option
.setName("name")
.setDescription("Name of the role you wish to purchase.")
.setName('name')
.setDescription('Name of the role you wish to purchase.')
)
.addStringOption((option) =>
option
.setName('color')
.setDescription(
'Color of the role you wish to purchase (For example RED or BLUE or GREEN).'
)
)
)
.addSubcommand((command) =>
command
.setName("cancel")
.setDescription("Cancel a custom role")
.addRoleOption((option) =>
option
.setName("role")
.setDescription("Name of the role you wish to cancel.")
)
)
.addSubcommand((command) =>
command
.setName('cancel')
.setDescription('Cancel a custom role')
.addRoleOption((option) =>
option
.setName('role')
.setDescription('Name of the role you wish to cancel.')
)
),
async execute(interaction: CommandInteraction) {
@ -56,13 +63,13 @@ export default {
const { options, commandName, user, guild } = interaction;
// Module - Pterodactyl
if (options?.getSubcommand() === "pterodactyl") {
if (options?.getSubcommand() === 'pterodactyl') {
// Execute Module - Pterodactyl
return pterodactyl(interaction);
}
// Group - Roles
else if (options?.getSubcommandGroup() === "roles") {
else if (options?.getSubcommandGroup() === 'roles') {
// Execute Group - Roles
return roles(interaction);
}

View file

@ -3,31 +3,32 @@ import {
CommandInteraction,
ColorResolvable,
GuildMemberRoleManager,
} from "discord.js";
} from 'discord.js';
// Configurations
import config from "../../../../../config.json";
import config from '../../../../../config.json';
// Models
import shopRolesSchema from "../../../../helpers/database/models/shopRolesSchema";
import guildSchema from "../../../../helpers/database/models/guildSchema";
import shopRolesSchema from '../../../../helpers/database/models/shopRolesSchema';
import guildSchema from '../../../../helpers/database/models/guildSchema';
// Helpers
import creditNoun from "../../../../helpers/creditNoun";
import fetchUser from "../../../../helpers/fetchUser";
import creditNoun from '../../../../helpers/creditNoun';
import fetchUser from '../../../../helpers/fetchUser';
// Function
export default async (interaction: CommandInteraction) => {
const { options, guild, user, member } = interaction;
const optionName = options?.getString("name");
const optionName = options?.getString('name');
const optionColor = options?.getString('color');
// If amount is null
if (optionName === null) {
// Embed object
const embed = {
title: ":dollar: Shop - Roles [Buy]" as string,
description: "We could not read your requested name." as string,
title: ':dollar: Shop - Roles [Buy]' as string,
description: 'We could not read your requested name.' as string,
color: config?.colors?.error as ColorResolvable,
timestamp: new Date(),
footer: {
@ -43,7 +44,7 @@ export default async (interaction: CommandInteraction) => {
await guild?.roles
.create({
name: optionName,
color: "RED",
color: optionColor as ColorResolvable,
reason: `${user?.id} bought from shop`,
})
.then(async (role) => {
@ -74,13 +75,13 @@ export default async (interaction: CommandInteraction) => {
await shopRolesSchema?.find()?.then((role: any) => console.log(role));
const embed = {
title: ":shopping_cart: Shop - Roles [Buy]" as string,
title: ':shopping_cart: Shop - Roles [Buy]' as string,
description:
`You have bought ${role?.name} for ${guildDB?.shop?.roles?.pricePerHour} per hour.` as string,
color: config?.colors?.success as ColorResolvable,
fields: [
{
name: "Your balance" as string,
name: 'Your balance' as string,
value: `${creditNoun(userDB?.credits)}` as string,
},
],

View file

@ -1,15 +1,15 @@
import logger from "../../handlers/logger";
import config from "../../../config.json";
import deployCommands from "../../helpers/deployCommands";
import dbGuildFix from "../../helpers/dbGuildFix";
import dbMemberFix from "../../helpers/dbMemberFix";
import logger from '../../handlers/logger';
import config from '../../../config.json';
import deployCommands from '../../helpers/deployCommands';
import dbGuildFix from '../../helpers/dbGuildFix';
import dbMemberFix from '../../helpers/dbMemberFix';
import userSchema from "../../helpers/database/models/userSchema";
import userSchema from '../../helpers/database/models/userSchema';
import { Client } from "discord.js";
import updatePresence from "../../helpers/updatePresence";
import { Client } from 'discord.js';
import updatePresence from '../../helpers/updatePresence';
export default {
name: "ready",
name: 'ready',
once: true,
async execute(client: Client) {
// Send info message
@ -30,6 +30,19 @@ export default {
});
}
if (client === null) return;
if (client.application === null) return;
if (!config?.devMode) {
client?.application?.commands
?.set([], config.bot.guildId)
.then(async (commands) => {
logger.info(
`Removed all guild based commands from ${config.bot.guildId}`
);
});
}
if (config.clearUnused) {
await userSchema.find().then(
async (result) =>

View file

@ -1,12 +1,12 @@
import schedule from "node-schedule";
import users from "../helpers/database/models/userSchema";
import shopRoles from "../helpers/database/models/shopRolesSchema";
import guilds from "../helpers/database/models/guildSchema";
import logger from "./logger";
import { Client } from "discord.js";
import schedule from 'node-schedule';
import users from '../helpers/database/models/userSchema';
import shopRoles from '../helpers/database/models/shopRolesSchema';
import guilds from '../helpers/database/models/guildSchema';
import logger from './logger';
import { Client } from 'discord.js';
export default async (client: Client) => {
schedule.scheduleJob("*/5 * * * *", async () => {
schedule.scheduleJob('*/5 * * * *', async () => {
shopRoles.find().then(async (shopRoles: any) => {
shopRoles.map(async (shopRole: any) => {
const payed = new Date(shopRole.lastPayed);
@ -37,10 +37,12 @@ export default async (client: Client) => {
const rGuild = await client.guilds.cache.get(`${shopRole.guildId}`);
const rMember = await rGuild?.members.fetch(`${shopRole.userId}`);
shopRoles.deleteOne({ _id: shopRole._id });
await rMember?.roles
.remove(`${shopRole.roleId}`)
.then(async (test) => console.log("4", test))
.catch(async (test) => console.log("5", test)); // Removes all roles
.then(async (test) => console.log('4', test))
.catch(async (test) => console.log('5', test)); // Removes all roles
}
shopRole.lastPayed = new Date();
@ -54,6 +56,6 @@ export default async (client: Client) => {
});
});
await logger.debug("Checking schedules! (Every 5 minutes)");
await logger.debug('Checking schedules! (Every 5 minutes)');
});
};

View file

@ -20,17 +20,22 @@ export default async () => {
body: commands,
});
await rest
.put(
Routes.applicationGuildCommands(config.bot.clientId, config.bot.guildId),
{
body: commands,
}
)
.then(async () =>
logger.info('Successfully registered application commands.')
)
.catch(async (err) => {
await logger.error(err);
});
if (config?.devMode) {
await rest
.put(
Routes.applicationGuildCommands(
config.bot.clientId,
config.bot.guildId
),
{
body: commands,
}
)
.then(async () =>
logger.info('Successfully registered application commands.')
)
.catch(async (err) => {
await logger.error(err);
});
}
};

View file

@ -1,13 +1,13 @@
// Dependencies
import { Client, Intents } from "discord.js"; // discord.js
import { Client, Intents } from 'discord.js'; // discord.js
import database from "./helpers/database";
import events from "./handlers/events";
import commands from "./handlers/commands";
import locale from "./handlers/locale";
import schedules from "./handlers/schedules";
import database from './helpers/database';
import events from './handlers/events';
import commands from './handlers/commands';
import locale from './handlers/locale';
import schedules from './handlers/schedules';
import config from "../config.json"; // config.json
import config from '../config.json'; // config.json
(async () => {
// Initialize discord.js client