Moved client init to seperate file
This commit is contained in:
48
src/index.ts
48
src/index.ts
@@ -1,46 +1,4 @@
|
|||||||
import { ExtendedClient as Client } from "./utils/Client"
|
import Illegitimate from "./utils/Illegitimate"
|
||||||
import { GatewayIntentBits, Partials } from "discord.js"
|
const illegitimate = new Illegitimate()
|
||||||
import config from "./utils/Config"
|
|
||||||
import { redis } from "./utils/Redis"
|
|
||||||
import { connect } from "mongoose"
|
|
||||||
import { loadAllEvents } from "./utils/Events"
|
|
||||||
import { autoDeployCommands } from "./utils/Autodeploy"
|
|
||||||
|
|
||||||
const client = new Client({
|
illegitimate.start()
|
||||||
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")
|
|
||||||
})
|
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import { Client, Collection } from "discord.js"
|
import { Client, Collection, GatewayIntentBits, Partials } from "discord.js"
|
||||||
import { Command } from "../interfaces"
|
import { Command } from "../interfaces"
|
||||||
import { ContextMenu } from "../interfaces"
|
import { ContextMenu } from "../interfaces"
|
||||||
import { Button } from "../interfaces"
|
import { Button } from "../interfaces"
|
||||||
import { Modal } from "../interfaces"
|
import { Modal } from "../interfaces"
|
||||||
import { Autocomplete } from "../interfaces"
|
import { Autocomplete } from "../interfaces"
|
||||||
|
import config from "./Config"
|
||||||
|
import { autoDeployCommands } from "./Autodeploy"
|
||||||
|
import { loadAllEvents } from "./Events"
|
||||||
|
|
||||||
export class ExtendedClient extends Client {
|
export class ExtendedClient extends Client {
|
||||||
commands: Collection<string, Command> = new Collection()
|
commands: Collection<string, Command> = new Collection()
|
||||||
@@ -11,4 +14,39 @@ export class ExtendedClient extends Client {
|
|||||||
buttons: Collection<string, Button> = new Collection()
|
buttons: Collection<string, Button> = new Collection()
|
||||||
modals: Collection<string, Modal> = new Collection()
|
modals: Collection<string, Modal> = new Collection()
|
||||||
autocomplete: Collection<string, Autocomplete> = new Collection()
|
autocomplete: Collection<string, Autocomplete> = 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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
24
src/utils/Illegitimate.ts
Normal file
24
src/utils/Illegitimate.ts
Normal file
@@ -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")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
26
src/utils/Init.ts
Normal file
26
src/utils/Init.ts
Normal file
@@ -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}`)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user