Merge branch 'dev' into 'main'

Dev

See merge request illegitimate/illegitimate-bot!138
This commit is contained in:
2023-12-28 18:27:21 +00:00
11 changed files with 106 additions and 74 deletions

View File

@@ -2,7 +2,7 @@ import { ChannelType, GuildMember, userMention } from "discord.js"
import { color, botLogChannel } from "../../../../config/options.json" import { color, botLogChannel } from "../../../../config/options.json"
import { Event } from "../../../interfaces" import { Event } from "../../../interfaces"
const event: Event = { export = {
name: "logNewJoins", name: "logNewJoins",
description: "Logs new joins", description: "Logs new joins",
type: "event", type: "event",
@@ -44,6 +44,4 @@ const event: Event = {
], ],
}) })
}, },
} } as Event
export = event

View File

@@ -1,7 +1,7 @@
import { ChatInputCommandInteraction, ButtonInteraction } from "discord.js" import { ChatInputCommandInteraction, ButtonInteraction } from "discord.js"
import { Event } from "../../../interfaces" import { Event } from "../../../interfaces"
const event: Event = { export = {
name: "logBtnsCmds", name: "logBtnsCmds",
description: "Logs all button and command interactions", description: "Logs all button and command interactions",
type: "event", type: "event",
@@ -37,6 +37,4 @@ const event: Event = {
return return
} }
}, },
} } as Event
export = event

View File

@@ -1,7 +1,7 @@
import { Event } from "../../../interfaces" import { Event } from "../../../interfaces"
import { Message } from "discord.js" import { Message } from "discord.js"
const event: Event = { export = {
name: "ur mom", name: "ur mom",
description: "ur moms someone", description: "ur moms someone",
type: "event", type: "event",
@@ -15,6 +15,4 @@ const event: Event = {
message.react("Woot:734345936347725885") message.react("Woot:734345936347725885")
} }
}, },
} } as Event
export = event

View File

@@ -1,7 +1,7 @@
import { Event } from "../../../interfaces" import { Event } from "../../../interfaces"
import { ExtendedClient as Client } from "../../../utils/Client" import { ExtendedClient as Client } from "../../../utils/Client"
const event: Event = { export = {
name: "conolelog", name: "conolelog",
description: "console log", description: "console log",
type: "event", type: "event",
@@ -10,6 +10,4 @@ const event: Event = {
execute(client: Client) { execute(client: Client) {
console.log("Logged in as " + client.user!.tag + "!") console.log("Logged in as " + client.user!.tag + "!")
}, },
} } as Event
export = event

View File

@@ -3,7 +3,7 @@ import { Event } from "../../../interfaces"
import { ExtendedClient as Client } from "../../../utils/Client" import { ExtendedClient as Client } from "../../../utils/Client"
import { ChannelType } from "discord.js" import { ChannelType } from "discord.js"
const event: Event = { export = {
name: "sendonlinemessage", name: "sendonlinemessage",
description: "send an online message", description: "send an online message",
type: "event", type: "event",
@@ -36,6 +36,4 @@ const event: Event = {
], ],
}) })
}, },
} } as Event
export = event

View File

@@ -2,7 +2,7 @@ import statuses = require("../../../../config/statuses.json")
import { Event } from "../../../interfaces" import { Event } from "../../../interfaces"
import { ExtendedClient as Client } from "../../../utils/Client" import { ExtendedClient as Client } from "../../../utils/Client"
const event: Event = { export = {
name: "status", name: "status",
description: "Sets the status of the bot", description: "Sets the status of the bot",
type: "event", type: "event",
@@ -28,6 +28,4 @@ const event: Event = {
user.setStatus("dnd") user.setStatus("dnd")
}, },
} } as Event
export = event

View File

@@ -7,7 +7,7 @@ import {
import { botLogChannel, color } from "../../../../config/options.json" import { botLogChannel, color } from "../../../../config/options.json"
import { Event } from "../../../interfaces" import { Event } from "../../../interfaces"
const event: Event = { export = {
name: "vcJoinLeave", name: "vcJoinLeave",
description: "Logs when a user joins or leaves a voice channel.", description: "Logs when a user joins or leaves a voice channel.",
type: "event", type: "event",
@@ -94,6 +94,4 @@ const event: Event = {
}) })
} }
}, },
} } as Event
export = event

View File

@@ -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")
})

View File

@@ -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
View 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
View 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}`)
}
})
}
}