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", "tsconfig-paths": "^4.0.0",
"typescript": "^4.6.3", "typescript": "^4.6.3",
"uuid": "^8.3.2", "uuid": "^8.3.2",
"winston": "^3.8.0",
"winston-daily-rotate-file": "^4.6.1" "winston-daily-rotate-file": "^4.6.1"
}, },
"devDependencies": { "devDependencies": {

View file

@ -7,60 +7,66 @@ import timeoutSchema from "../../models/timeout";
import logger from "../../logger"; 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 await guildSchema
.deleteMany({ guildId: id }) .deleteMany({ guildId: guild.id })
.then(async () => { .then(async () => {
return logger?.silly(`Deleted guild: ${id}`); return logger?.silly(`Deleted guild: ${guild.id}`);
}) })
.catch(async (error) => { .catch(async (error) => {
logger?.error(`Error deleting guild: ${id} - ${error}`); logger?.error(`Error deleting guild: ${guild.id} - ${error}`);
}); });
await userSchema await userSchema
.deleteMany({ guildId: id }) .deleteMany({ guildId: guild.id })
.then(async () => { .then(async () => {
logger?.silly(`Deleted users for guild: ${id} from database`); logger?.silly(`Deleted users for guild: ${guild.id} from database`);
}) })
.catch(async (error) => { .catch(async (error) => {
logger?.error(`Error deleting users for guild: ${id} - ${error}`); logger?.error(`Error deleting users for guild: ${guild.id} - ${error}`);
}); });
await apiSchema await apiSchema
.deleteMany({ guildId: id }) .deleteMany({ guildId: guild.id })
.then(async () => { .then(async () => {
logger?.silly(`Deleted apis for guild: ${id} from database`); logger?.silly(`Deleted apis for guild: ${guild.id} from database`);
}) })
.catch(async (error) => { .catch(async (error) => {
logger?.error(`Error deleting apis for guild: ${id} - ${error}`); logger?.error(`Error deleting apis for guild: ${guild.id} - ${error}`);
}); });
await counterSchema await counterSchema
.deleteMany({ guildId: id }) .deleteMany({ guildId: guild.id })
.then(async () => { .then(async () => {
logger?.silly(`Deleted counters for guild: ${id} from database`); logger?.silly(`Deleted counters for guild: ${guild.id} from database`);
}) })
.catch(async (error) => { .catch(async (error) => {
logger?.error(`Error deleting counters for guild: ${id} - ${error}`); logger?.error(
`Error deleting counters for guild: ${guild.id} - ${error}`
);
}); });
await shopRoleSchema await shopRoleSchema
.deleteMany({ guildId: id }) .deleteMany({ guildId: guild.id })
.then(async () => { .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) => { .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 await timeoutSchema
.deleteMany({ guildId: id }) .deleteMany({ guildId: guild.id })
.then(async () => { .then(async () => {
logger?.silly(`Deleted timeouts for guild: ${id} from database`); logger?.silly(`Deleted timeouts for guild: ${guild.id} from database`);
}) })
.catch(async (error) => { .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 // Dependencies
import { Snowflake } from "discord.js"; import { Guild } from "discord.js";
// Models // Models
import guildSchema from "../../models/guild"; import guildSchema from "../../models/guild";
@ -8,18 +8,18 @@ import guildSchema from "../../models/guild";
import logger from "../../logger"; import logger from "../../logger";
// Function // Function
export default async (id: Snowflake) => { export default async (guild: Guild) => {
const guildObj = await guildSchema?.findOne({ guildId: id }); const guildObj = await guildSchema?.findOne({ guildId: guild.id });
if (guildObj === null) { if (guildObj === null) {
const newGuildObj = new guildSchema({ guildId: id }); const newGuildObj = new guildSchema({ guildId: guild.id });
await newGuildObj await newGuildObj
.save() .save()
.then(async () => { .then(async () => {
logger?.silly(`Created guild: ${id}`); logger?.silly(`Created guild: ${guild.id}`);
}) })
.catch(async (error) => { .catch(async (error) => {
logger?.error(`Error creating guild: ${id} - ${error}`); logger?.error(`Error creating guild: ${guild.id} - ${error}`);
}); });
return newGuildObj; 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`); return logger?.silly(`Guild is null`);
} }
const guildDB = await fetchGuild(guild.id); const guildDB = await fetchGuild(guild);
await cooldown.command(interaction, guildDB?.credits?.workTimeout); await cooldown.command(interaction, guildDB?.credits?.workTimeout);

View file

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

View file

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

View file

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