This commit is contained in:
Axel Olausson Holtenäs 2022-07-05 02:03:37 +02:00
parent 41c6234d81
commit b6c55872bd
No known key found for this signature in database
GPG key ID: 7BF6826B76382CBA
9 changed files with 40 additions and 73 deletions

View file

@ -48,7 +48,6 @@
"tsconfig-paths": "^4.0.0",
"typescript": "^4.6.3",
"uuid": "^8.3.2",
"winston": "^3.8.0",
"winston-daily-rotate-file": "^4.6.1"
},
"devDependencies": {

View file

@ -7,60 +7,66 @@ import timeoutSchema from "../../models/timeout";
import logger from "../../logger";
import { Snowflake } from "discord.js";
import { Guild } from "discord.js";
export default async (id: Snowflake) => {
export default async (guild: Guild) => {
await guildSchema
.deleteMany({ guildId: id })
.deleteMany({ guildId: guild.id })
.then(async () => {
return logger?.silly(`Deleted guild: ${id}`);
return logger?.silly(`Deleted guild: ${guild.id}`);
})
.catch(async (error) => {
logger?.error(`Error deleting guild: ${id} - ${error}`);
logger?.error(`Error deleting guild: ${guild.id} - ${error}`);
});
await userSchema
.deleteMany({ guildId: id })
.deleteMany({ guildId: guild.id })
.then(async () => {
logger?.silly(`Deleted users for guild: ${id} from database`);
logger?.silly(`Deleted users for guild: ${guild.id} from database`);
})
.catch(async (error) => {
logger?.error(`Error deleting users for guild: ${id} - ${error}`);
logger?.error(`Error deleting users for guild: ${guild.id} - ${error}`);
});
await apiSchema
.deleteMany({ guildId: id })
.deleteMany({ guildId: guild.id })
.then(async () => {
logger?.silly(`Deleted apis for guild: ${id} from database`);
logger?.silly(`Deleted apis for guild: ${guild.id} from database`);
})
.catch(async (error) => {
logger?.error(`Error deleting apis for guild: ${id} - ${error}`);
logger?.error(`Error deleting apis for guild: ${guild.id} - ${error}`);
});
await counterSchema
.deleteMany({ guildId: id })
.deleteMany({ guildId: guild.id })
.then(async () => {
logger?.silly(`Deleted counters for guild: ${id} from database`);
logger?.silly(`Deleted counters for guild: ${guild.id} from database`);
})
.catch(async (error) => {
logger?.error(`Error deleting counters for guild: ${id} - ${error}`);
logger?.error(
`Error deleting counters for guild: ${guild.id} - ${error}`
);
});
await shopRoleSchema
.deleteMany({ guildId: id })
.deleteMany({ guildId: guild.id })
.then(async () => {
logger?.silly(`Deleted shop roles for guild: ${id} from database`);
logger?.silly(`Deleted shop roles for guild: ${guild.id} from database`);
})
.catch(async (error) => {
logger?.error(`Error deleting shop roles for guild: ${id} - ${error}`);
logger?.error(
`Error deleting shop roles for guild: ${guild.id} - ${error}`
);
});
await timeoutSchema
.deleteMany({ guildId: id })
.deleteMany({ guildId: guild.id })
.then(async () => {
logger?.silly(`Deleted timeouts for guild: ${id} from database`);
logger?.silly(`Deleted timeouts for guild: ${guild.id} from database`);
})
.catch(async (error) => {
logger?.error(`Error deleting timeouts for guild: ${id} - ${error}`);
logger?.error(
`Error deleting timeouts for guild: ${guild.id} - ${error}`
);
});
};

View file

@ -1,5 +1,5 @@
// Dependencies
import { Snowflake } from "discord.js";
import { Guild } from "discord.js";
// Models
import guildSchema from "../../models/guild";
@ -8,18 +8,18 @@ import guildSchema from "../../models/guild";
import logger from "../../logger";
// Function
export default async (id: Snowflake) => {
const guildObj = await guildSchema?.findOne({ guildId: id });
export default async (guild: Guild) => {
const guildObj = await guildSchema?.findOne({ guildId: guild.id });
if (guildObj === null) {
const newGuildObj = new guildSchema({ guildId: id });
const newGuildObj = new guildSchema({ guildId: guild.id });
await newGuildObj
.save()
.then(async () => {
logger?.silly(`Created guild: ${id}`);
logger?.silly(`Created guild: ${guild.id}`);
})
.catch(async (error) => {
logger?.error(`Error creating guild: ${id} - ${error}`);
logger?.error(`Error creating guild: ${guild.id} - ${error}`);
});
return newGuildObj;

View file

@ -1,35 +0,0 @@
import { Client, Guild } from "discord.js";
import logger from "../../logger";
import dropGuild from "../../helpers/dropGuild";
import fetchGuild from "../../helpers/fetchGuild";
import guildSchema from "../../models/guild";
export const options = {
schedule: "0 0 1 * *", // https://crontab.guru/
};
export const execute = async (client: Client) => {
const guildsDB = await guildSchema.find();
const guildsDiscord = client.guilds.cache;
const shouldNotExist = guildsDB
.filter((x) => !guildsDiscord.some((y) => y.id === x.guildId))
.map((z) => z.guildId);
const shouldExist = guildsDiscord
.filter((x) => !guildsDB.some((y) => y.guildId === x.id))
.map((z) => z.id);
if (shouldNotExist) {
shouldNotExist.forEach(async (x) => {
await dropGuild(x);
});
}
if (shouldExist) {
shouldExist.forEach(async (x) => {
await fetchGuild(x);
});
}
};

View file

@ -43,7 +43,7 @@ export default {
return logger?.silly(`Guild is null`);
}
const guildDB = await fetchGuild(guild.id);
const guildDB = await fetchGuild(guild);
await cooldown.command(interaction, guildDB?.credits?.workTimeout);

View file

@ -11,13 +11,10 @@ export const options: IEventOptions = {
export const execute = async (guild: Guild) => {
const { client } = guild;
if (!client.user)
throw new Error("Discord API client user is not available.");
logger?.silly(`Added to guild: ${guild.name} (${guild.id})`);
logger.silly(
`${client.user.username} joined guild: ${guild.name} (${guild.id})`
);
await fetchGuild(guild.id);
await fetchGuild(guild);
await updatePresence(client);
logger.silly(`guildCreate: ${guild}`);
};

View file

@ -16,7 +16,7 @@ export const execute = async (guild: Guild) => {
logger?.silly(`Deleted from guild: ${guild.name} (${guild.id})`);
await dropGuild(guild.id);
await dropGuild(guild);
await updatePresence(client);
logger.silly(`guildDelete: ${guild}`);

View file

@ -17,7 +17,7 @@ export default {
const { id: guildId } = guild;
const { id: userId } = author;
const guildData = await fetchGuild(guild.id);
const guildData = await fetchGuild(guild);
const userData = await fetchUser(author, guild);
if (content.length < guildData.credits.minimumLength) return;

View file

@ -14,7 +14,7 @@ export default {
if (author.bot) return;
if (channel?.type !== "GUILD_TEXT") return;
const guildData = await fetchGuild(guild.id);
const guildData = await fetchGuild(guild);
const userData = await fetchUser(author, guild);
if (content.length < guildData.credits.minimumLength) return;