Add resync commmand

This commit is contained in:
Ethan Lane 2023-11-23 17:28:15 +00:00
parent 091b8e5205
commit 0d6005044c
3 changed files with 45 additions and 2 deletions

View file

@ -7,8 +7,8 @@ import { CardRarity, CardRarityToString } from "../constants/CardRarity";
import Config from "../database/entities/app/Config";
export default class CardSetupFunction {
public static async Execute() {
if (await Config.GetValue('safemode') == "true") return;
public static async Execute(): Promise<boolean> {
if (await Config.GetValue('safemode') == "true") return false;
try {
await this.ClearDatabase();
@ -16,7 +16,10 @@ export default class CardSetupFunction {
await this.ReadCards();
} catch {
await Config.SetValue('safemode', 'true');
return false;
}
return true;
}
private static async ClearDatabase() {

38
src/commands/resync.ts Normal file
View file

@ -0,0 +1,38 @@
import { CacheType, CommandInteraction, PermissionsBitField, SlashCommandBuilder } from "discord.js";
import { Command } from "../type/command";
import CardSetupFunction from "../Functions/CardSetupFunction";
import Config from "../database/entities/app/Config";
export default class Resync extends Command {
constructor() {
super();
super.CommandBuilder = new SlashCommandBuilder()
.setName('resync')
.setDescription('Resync the card database')
.setDefaultMemberPermissions(PermissionsBitField.Flags.Administrator);
}
public override async execute(interaction: CommandInteraction<CacheType>) {
if (!interaction.isChatInputCommand()) return;
const whitelistedUsers = process.env.GDRIVESYNC_WHITELIST!.split(',');
if (!whitelistedUsers.find(x => x == interaction.user.id)) {
await interaction.reply("Only whitelisted users can use this command.");
return;
}
if (await CardSetupFunction.Execute()) {
if (await Config.GetValue('safemode') == "true") {
await Config.SetValue('safemode', 'false');
await interaction.reply("Resynced database and disabled safe mode.");
return;
}
await interaction.reply("Resynced database.");
} else {
await interaction.reply("Resync failed, safe mode has been activated until successful resync.");
}
}
}

View file

@ -4,6 +4,7 @@ import { CoreClient } from "./client/client";
import About from "./commands/about";
import Drop from "./commands/drop";
import Gdrivesync from "./commands/gdrivesync";
import Resync from "./commands/resync";
// Test Command Imports
import Dropnumber from "./commands/stage/dropnumber";
@ -20,6 +21,7 @@ export default class Registry {
CoreClient.RegisterCommand('about', new About());
CoreClient.RegisterCommand('drop', new Drop());
CoreClient.RegisterCommand('gdrivesync', new Gdrivesync());
CoreClient.RegisterCommand('resync', new Resync());
// Test Commands
CoreClient.RegisterCommand('dropnumber', new Dropnumber(), Environment.Test);