From 83dc8f91d1fc85e006ccea8d3b917052bc110302 Mon Sep 17 00:00:00 2001 From: Taken Date: Thu, 28 Dec 2023 19:13:43 +0100 Subject: [PATCH 1/2] Updated style of export --- src/events/server/guildMemberAdd/logNewJoins.ts | 6 ++---- src/events/server/interactions/logBtnsCmds.ts | 6 ++---- src/events/server/messages/react.ts | 6 ++---- src/events/server/ready/consolelog.ts | 6 ++---- src/events/server/ready/sendOnlineMessage.ts | 6 ++---- src/events/server/ready/status.ts | 6 ++---- src/events/server/voiceStateUpdate/vcJoinLeave.ts | 6 ++---- 7 files changed, 14 insertions(+), 28 deletions(-) diff --git a/src/events/server/guildMemberAdd/logNewJoins.ts b/src/events/server/guildMemberAdd/logNewJoins.ts index a4dfedb..10d9af2 100644 --- a/src/events/server/guildMemberAdd/logNewJoins.ts +++ b/src/events/server/guildMemberAdd/logNewJoins.ts @@ -2,7 +2,7 @@ import { ChannelType, GuildMember, userMention } from "discord.js" import { color, botLogChannel } from "../../../../config/options.json" import { Event } from "../../../interfaces" -const event: Event = { +export = { name: "logNewJoins", description: "Logs new joins", type: "event", @@ -44,6 +44,4 @@ const event: Event = { ], }) }, -} - -export = event +} as Event diff --git a/src/events/server/interactions/logBtnsCmds.ts b/src/events/server/interactions/logBtnsCmds.ts index a58162e..9acc705 100644 --- a/src/events/server/interactions/logBtnsCmds.ts +++ b/src/events/server/interactions/logBtnsCmds.ts @@ -1,7 +1,7 @@ import { ChatInputCommandInteraction, ButtonInteraction } from "discord.js" import { Event } from "../../../interfaces" -const event: Event = { +export = { name: "logBtnsCmds", description: "Logs all button and command interactions", type: "event", @@ -37,6 +37,4 @@ const event: Event = { return } }, -} - -export = event +} as Event diff --git a/src/events/server/messages/react.ts b/src/events/server/messages/react.ts index a1fad9e..4f970af 100644 --- a/src/events/server/messages/react.ts +++ b/src/events/server/messages/react.ts @@ -1,7 +1,7 @@ import { Event } from "../../../interfaces" import { Message } from "discord.js" -const event: Event = { +export = { name: "ur mom", description: "ur moms someone", type: "event", @@ -15,6 +15,4 @@ const event: Event = { message.react("Woot:734345936347725885") } }, -} - -export = event +} as Event diff --git a/src/events/server/ready/consolelog.ts b/src/events/server/ready/consolelog.ts index eb34507..6486b78 100644 --- a/src/events/server/ready/consolelog.ts +++ b/src/events/server/ready/consolelog.ts @@ -1,7 +1,7 @@ import { Event } from "../../../interfaces" import { ExtendedClient as Client } from "../../../utils/Client" -const event: Event = { +export = { name: "conolelog", description: "console log", type: "event", @@ -10,6 +10,4 @@ const event: Event = { execute(client: Client) { console.log("Logged in as " + client.user!.tag + "!") }, -} - -export = event +} as Event diff --git a/src/events/server/ready/sendOnlineMessage.ts b/src/events/server/ready/sendOnlineMessage.ts index 5f77701..c7ec0fd 100644 --- a/src/events/server/ready/sendOnlineMessage.ts +++ b/src/events/server/ready/sendOnlineMessage.ts @@ -3,7 +3,7 @@ import { Event } from "../../../interfaces" import { ExtendedClient as Client } from "../../../utils/Client" import { ChannelType } from "discord.js" -const event: Event = { +export = { name: "sendonlinemessage", description: "send an online message", type: "event", @@ -36,6 +36,4 @@ const event: Event = { ], }) }, -} - -export = event +} as Event diff --git a/src/events/server/ready/status.ts b/src/events/server/ready/status.ts index 95cd8e5..667b8d8 100644 --- a/src/events/server/ready/status.ts +++ b/src/events/server/ready/status.ts @@ -2,7 +2,7 @@ import statuses = require("../../../../config/statuses.json") import { Event } from "../../../interfaces" import { ExtendedClient as Client } from "../../../utils/Client" -const event: Event = { +export = { name: "status", description: "Sets the status of the bot", type: "event", @@ -28,6 +28,4 @@ const event: Event = { user.setStatus("dnd") }, -} - -export = event +} as Event diff --git a/src/events/server/voiceStateUpdate/vcJoinLeave.ts b/src/events/server/voiceStateUpdate/vcJoinLeave.ts index d98d816..9e8d4c2 100644 --- a/src/events/server/voiceStateUpdate/vcJoinLeave.ts +++ b/src/events/server/voiceStateUpdate/vcJoinLeave.ts @@ -7,7 +7,7 @@ import { import { botLogChannel, color } from "../../../../config/options.json" import { Event } from "../../../interfaces" -const event: Event = { +export = { name: "vcJoinLeave", description: "Logs when a user joins or leaves a voice channel.", type: "event", @@ -94,6 +94,4 @@ const event: Event = { }) } }, -} - -export = event +} as Event From c63d931f8aee0135ba41d704f8c948f9259be6e3 Mon Sep 17 00:00:00 2001 From: Taken Date: Thu, 28 Dec 2023 19:14:06 +0100 Subject: [PATCH 2/2] Moved client init to seperate file --- src/index.ts | 48 +++------------------------------------ src/utils/Client.ts | 40 +++++++++++++++++++++++++++++++- src/utils/Illegitimate.ts | 24 ++++++++++++++++++++ src/utils/Init.ts | 26 +++++++++++++++++++++ 4 files changed, 92 insertions(+), 46 deletions(-) create mode 100644 src/utils/Illegitimate.ts create mode 100644 src/utils/Init.ts diff --git a/src/index.ts b/src/index.ts index b516e8b..eefdd3f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,46 +1,4 @@ -import { ExtendedClient as Client } from "./utils/Client" -import { GatewayIntentBits, Partials } from "discord.js" -import config from "./utils/Config" -import { redis } from "./utils/Redis" -import { connect } from "mongoose" -import { loadAllEvents } from "./utils/Events" -import { autoDeployCommands } from "./utils/Autodeploy" +import Illegitimate from "./utils/Illegitimate" +const illegitimate = new Illegitimate() -const client = new Client({ - intents: [ - GatewayIntentBits.Guilds, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.GuildMembers, - GatewayIntentBits.MessageContent, - GatewayIntentBits.DirectMessages, - GatewayIntentBits.GuildVoiceStates, - ], - partials: [ - Partials.GuildMember, - Partials.User, - Partials.Message, - Partials.Channel, - ], -}) - -loadAllEvents(client) - -let token: string -if (process.env.NODE_ENV === "dev") { - console.log("Running in development mode.") - token = config.dev.devtoken - autoDeployCommands() -} else { - console.log("Running in production mode.") - token = config.prod.token -} - -client.login(token) - -redis.on("ready", () => { - console.log("Connected to Redis") -}) - -connect(config.prod.mongoURI, {}).then(() => { - console.log("Connected to MongoDB") -}) +illegitimate.start() diff --git a/src/utils/Client.ts b/src/utils/Client.ts index 9785a3e..1b6463d 100644 --- a/src/utils/Client.ts +++ b/src/utils/Client.ts @@ -1,9 +1,12 @@ -import { Client, Collection } from "discord.js" +import { Client, Collection, GatewayIntentBits, Partials } from "discord.js" import { Command } from "../interfaces" import { ContextMenu } from "../interfaces" import { Button } from "../interfaces" import { Modal } from "../interfaces" import { Autocomplete } from "../interfaces" +import config from "./Config" +import { autoDeployCommands } from "./Autodeploy" +import { loadAllEvents } from "./Events" export class ExtendedClient extends Client { commands: Collection = new Collection() @@ -11,4 +14,39 @@ export class ExtendedClient extends Client { buttons: Collection = new Collection() modals: Collection = new Collection() autocomplete: Collection = new Collection() + + constructor() { + super({ + intents: [ + GatewayIntentBits.Guilds, + GatewayIntentBits.GuildMessages, + GatewayIntentBits.GuildMembers, + GatewayIntentBits.MessageContent, + GatewayIntentBits.DirectMessages, + GatewayIntentBits.GuildVoiceStates, + ], + partials: [ + Partials.GuildMember, + Partials.User, + Partials.Message, + Partials.Channel, + ], + }) + } + + async start() { + loadAllEvents(this) + + let token: string + if (process.env.NODE_ENV === "dev") { + console.log("Running in development mode.") + token = config.dev.devtoken + autoDeployCommands() + } else { + console.log("Running in production mode.") + token = config.prod.token + } + + this.login(token) + } } diff --git a/src/utils/Illegitimate.ts b/src/utils/Illegitimate.ts new file mode 100644 index 0000000..d93c019 --- /dev/null +++ b/src/utils/Illegitimate.ts @@ -0,0 +1,24 @@ +import { ExtendedClient as Client } from "./Client" +import config from "./Config" +import { redis } from "./Redis" +import { connect } from "mongoose" +import init from "./Init" +const client = new Client() + +export default class Illegitimate { + constructor() {} + + async start() { + init() + + client.start() + + redis.on("ready", () => { + console.log("Connected to Redis") + }) + + connect(config.prod.mongoURI, {}).then(() => { + console.log("Connected to MongoDB") + }) + } +} diff --git a/src/utils/Init.ts b/src/utils/Init.ts new file mode 100644 index 0000000..24f54e8 --- /dev/null +++ b/src/utils/Init.ts @@ -0,0 +1,26 @@ +import config from "./Config" + +const prodValues = config.prod +const devValues = config.dev + +export default function init() { + if (process.env.NODE_ENV === "dev") { + Object.keys(devValues).forEach(key => { + if (!process.env[key]) { + throw new Error(`[DEV] Missing environment variable: ${key}`) + } + }) + + Object.keys(prodValues).forEach(key => { + if (!process.env[key]) { + throw new Error(`[PROD] Missing environment variable: ${key}`) + } + }) + } else { + Object.keys(prodValues).forEach(key => { + if (!process.env[key]) { + throw new Error(`[PROD] Missing environment variable: ${key}`) + } + }) + } +}