diff --git a/src/config/example.encryption.ts b/src/config/example.encryption.ts index e69de29..9d547f1 100644 --- a/src/config/example.encryption.ts +++ b/src/config/example.encryption.ts @@ -0,0 +1,5 @@ +// Encryption algorithm +export const algorithm = "aes-256-ctr"; + +// Encryption secret (strictly 32 length) +export const secretKey = ""; diff --git a/src/database/index.ts b/src/database/index.ts index 8130eb2..9c62259 100644 --- a/src/database/index.ts +++ b/src/database/index.ts @@ -1,8 +1,12 @@ -import { url } from "@config/database"; - +// 3rd party dependencies import mongoose from "mongoose"; + +// Dependencies import logger from "@logger"; +// Configuration +import { url } from "@config/database"; + export default async () => { await mongoose .connect(url) diff --git a/src/database/schemas/api.ts b/src/database/schemas/api.ts index a388322..12519d2 100644 --- a/src/database/schemas/api.ts +++ b/src/database/schemas/api.ts @@ -1,15 +1,22 @@ -import mongoose from "mongoose"; +import { Snowflake } from "discord.js"; +import { model, Schema } from "mongoose"; -const apiSchema = new mongoose.Schema( +export interface IApi { + guildId: Snowflake; + url: string; + token: { iv: string; content: string }; +} + +const apiSchema = new Schema( { guildId: { - type: mongoose.SchemaTypes.Decimal128, + type: String, required: true, unique: false, index: true, }, url: { - type: mongoose.SchemaTypes.String, + type: String, required: true, unique: false, index: true, @@ -17,14 +24,14 @@ const apiSchema = new mongoose.Schema( }, token: { iv: { - type: mongoose.SchemaTypes.String, + type: String, required: true, unique: false, index: true, default: "token", }, content: { - type: mongoose.SchemaTypes.String, + type: String, required: true, unique: false, index: true, @@ -35,4 +42,4 @@ const apiSchema = new mongoose.Schema( { timestamps: true } ); -export default mongoose.model("api", apiSchema); +export default model("api", apiSchema); diff --git a/src/database/schemas/counter.ts b/src/database/schemas/counter.ts index 3519b1b..fd274eb 100644 --- a/src/database/schemas/counter.ts +++ b/src/database/schemas/counter.ts @@ -1,27 +1,35 @@ -import mongoose from "mongoose"; +import { Schema, model } from "mongoose"; +import { Snowflake } from "discord.js"; -const counterSchema = new mongoose.Schema( +export interface ICounter { + guildId: Snowflake; + channelId: Snowflake; + word: string; + counter: number; +} + +const counterSchema = new Schema( { guildId: { - type: mongoose.SchemaTypes.Decimal128, + type: String, required: true, unique: false, index: true, }, channelId: { - type: mongoose.SchemaTypes.String, + type: String, required: true, unique: true, index: true, }, word: { - type: mongoose.SchemaTypes.String, + type: String, required: true, unique: false, index: true, }, counter: { - type: mongoose.SchemaTypes.Number, + type: Number, required: true, unique: false, index: true, @@ -31,4 +39,4 @@ const counterSchema = new mongoose.Schema( { timestamps: true } ); -export default mongoose.model("counter", counterSchema); +export default model("counter", counterSchema); diff --git a/src/database/schemas/index.ts b/src/database/schemas/index.ts deleted file mode 100644 index 5ba7679..0000000 --- a/src/database/schemas/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import counter from "./counter"; - -export default { counter }; diff --git a/src/database/schemas/shopRole.ts b/src/database/schemas/shopRole.ts index 3f48756..19692fa 100644 --- a/src/database/schemas/shopRole.ts +++ b/src/database/schemas/shopRole.ts @@ -1,34 +1,43 @@ -import mongoose from "mongoose"; +import { Snowflake } from "discord.js"; +import { Schema, model } from "mongoose"; -const shopRoleSchema = new mongoose.Schema( +export interface IShopRole { + roleId: Snowflake; + userId: Snowflake; + guildId: Snowflake; + pricePerHour: number; + lastPayed: Date; +} + +const shopRoleSchema = new Schema( { roleId: { - type: mongoose.SchemaTypes.Decimal128, + type: String, required: true, unique: false, index: true, }, userId: { - type: mongoose.SchemaTypes.Decimal128, + type: String, required: true, unique: false, index: true, }, guildId: { - type: mongoose.SchemaTypes.Decimal128, + type: String, required: true, unique: false, index: true, }, pricePerHour: { - type: mongoose.SchemaTypes.Number, + type: Number, required: true, unique: false, index: true, default: 5, }, lastPayed: { - type: mongoose.SchemaTypes.Date, + type: Date, unique: false, index: true, }, @@ -36,4 +45,4 @@ const shopRoleSchema = new mongoose.Schema( { timestamps: true } ); -export default mongoose.model("shopRole", shopRoleSchema); +export default model("shopRole", shopRoleSchema); diff --git a/src/database/schemas/timeout.ts b/src/database/schemas/timeout.ts index d783932..f923f08 100644 --- a/src/database/schemas/timeout.ts +++ b/src/database/schemas/timeout.ts @@ -1,22 +1,29 @@ -import mongoose from "mongoose"; +import { Snowflake } from "discord.js"; +import { Schema, model } from "mongoose"; -const timeoutSchema = new mongoose.Schema( +export interface ITimeout { + userId: Snowflake; + guildId: Snowflake; + timeoutId: string; +} + +const timeoutSchema = new Schema( { userId: { - type: mongoose.SchemaTypes.Decimal128, + type: String, required: true, unique: false, index: true, }, guildId: { - type: mongoose.SchemaTypes.Decimal128, + type: String, required: true, unique: false, index: true, }, - timeoutId: { type: mongoose.SchemaTypes.String }, + timeoutId: { type: String }, }, { timestamps: true } ); -export default mongoose.model("timeout", timeoutSchema); +export default model("timeout", timeoutSchema); diff --git a/src/events/guildCreate/index.ts b/src/events/guildCreate/index.ts index f3264c8..dfa4c7e 100644 --- a/src/events/guildCreate/index.ts +++ b/src/events/guildCreate/index.ts @@ -1,9 +1,9 @@ -// Dependencies +// 3rd party dependencies import { Guild } from "discord.js"; -// Helpers -import updatePresence from "../../helpers/updatePresence"; -import fetchGuild from "../../helpers/fetchGuild"; +// Dependencies +import updatePresence from "@helpers/updatePresence"; +import fetchGuild from "@helpers/fetchGuild"; export default { name: "guildCreate", diff --git a/src/events/guildDelete/index.ts b/src/events/guildDelete/index.ts index cf96c55..241a6ba 100644 --- a/src/events/guildDelete/index.ts +++ b/src/events/guildDelete/index.ts @@ -1,9 +1,9 @@ -// Dependencies +// 3rd party dependencies import { Guild } from "discord.js"; -// Helpers -import updatePresence from "../../helpers/updatePresence"; -import dropGuild from "../../helpers/dropGuild"; +// Dependencies +import updatePresence from "@helpers/updatePresence"; +import dropGuild from "@helpers/dropGuild"; export default { name: "guildDelete", diff --git a/src/events/guildMemberAdd/index.ts b/src/events/guildMemberAdd/index.ts index 1b5a140..8412463 100644 --- a/src/events/guildMemberAdd/index.ts +++ b/src/events/guildMemberAdd/index.ts @@ -1,9 +1,9 @@ -// Dependencies +// 3rd party dependencies import { GuildMember } from "discord.js"; -// Helpers -import updatePresence from "../../helpers/updatePresence"; -import fetchUser from "../../helpers/fetchUser"; +// Dependencies +import updatePresence from "@helpers/updatePresence"; +import fetchUser from "@helpers/fetchUser"; export default { name: "guildMemberAdd", diff --git a/src/events/guildMemberRemove/index.ts b/src/events/guildMemberRemove/index.ts index 3db75a9..5f4f6fb 100644 --- a/src/events/guildMemberRemove/index.ts +++ b/src/events/guildMemberRemove/index.ts @@ -1,9 +1,9 @@ -// Dependencies +// 3rd party dependencies import { GuildMember } from "discord.js"; -// Helpers -import updatePresence from "../../helpers/updatePresence"; -import dropUser from "../../helpers/dropUser"; +// Dependencies +import updatePresence from "@helpers/updatePresence"; +import dropUser from "@helpers/dropUser"; export default { name: "guildMemberRemove", diff --git a/src/events/interactionCreate/isCommand.ts b/src/events/interactionCreate/components/isCommand.ts similarity index 89% rename from src/events/interactionCreate/isCommand.ts rename to src/events/interactionCreate/components/isCommand.ts index bb28847..ed347fa 100644 --- a/src/events/interactionCreate/isCommand.ts +++ b/src/events/interactionCreate/components/isCommand.ts @@ -3,7 +3,7 @@ import { CommandInteraction, MessageEmbed } from "discord.js"; import logger from "@logger"; -import * as embed from "@config/embed"; +import { errorColor, footerText, footerIcon } from "@config/embed"; import guildSchema from "@schemas/guild"; @@ -49,9 +49,9 @@ export default async (interaction: CommandInteraction) => { .setDescription( `There was an error executing the command: **${currentCommand.data.name}**.` ) - .setColor(embed.errorColor) + .setColor(errorColor) .setTimestamp(new Date()) - .setFooter({ text: embed.footerText, iconURL: embed.footerIcon }), + .setFooter({ text: footerText, iconURL: footerIcon }), ], }); }); diff --git a/src/events/interactionCreate/index.ts b/src/events/interactionCreate/index.ts index 33b006b..e16ef00 100644 --- a/src/events/interactionCreate/index.ts +++ b/src/events/interactionCreate/index.ts @@ -1,7 +1,8 @@ -// Dependencies +// 3rd party dependencies import { CommandInteraction } from "discord.js"; -import isCommand from "./isCommand"; +// Dependencies +import isCommand from "@root/events/interactionCreate/components/isCommand"; export default { name: "interactionCreate", diff --git a/src/handlers/encryption.ts b/src/handlers/encryption.ts index 2ab38fe..4624d74 100644 --- a/src/handlers/encryption.ts +++ b/src/handlers/encryption.ts @@ -1,11 +1,11 @@ import crypto from "crypto"; -import config from "../../config.json"; -const algorithm = "aes-256-ctr"; +import { secretKey, algorithm } from "@config/encryption"; + const iv = crypto.randomBytes(16); const encrypt = (text: any) => { - const cipher = crypto.createCipheriv(algorithm, config.secretKey, iv); + const cipher = crypto.createCipheriv(algorithm, secretKey, iv); const encrypted = Buffer.concat([cipher.update(text), cipher.final()]); @@ -18,7 +18,7 @@ const encrypt = (text: any) => { const decrypt = (hash: any) => { const decipher = crypto.createDecipheriv( algorithm, - config.secretKey, + secretKey, Buffer.from(hash.iv, "hex") ); diff --git a/src/helpers/devMode.ts b/src/helpers/devMode.ts index 708481b..abdba7e 100644 --- a/src/helpers/devMode.ts +++ b/src/helpers/devMode.ts @@ -7,9 +7,9 @@ import logger from "@logger"; import { devMode, guildId } from "@config/other"; export default async (client: Client) => { - if (!devMode) { - client?.application?.commands?.set([], guildId).then(async () => { - logger.verbose(`Removed all guild based commands from ${guildId}`); - }); - } + // if (!devMode) { + // client?.application?.commands?.set([], guildId).then(async () => { + // logger.verbose(`Removed all guild based commands from ${guildId}`); + // }); + // } };