Skip to content
This repository was archived by the owner on Dec 5, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.env
node_modules
build
logs
logs
settings.json
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@
"start:dev": "ts-node src/bot.ts"
},
"dependencies": {
"@types/fs-extra": "^9.0.6",
"axios": "^0.21.1",
"discord.js": "^12.5.1",
"dotenv": "^8.2.0",
"fs-extra": "^9.1.0",
"mongoose": "^5.11.6",
"winston": "^3.3.3"
},
Expand Down
1 change: 1 addition & 0 deletions src/commands/help.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ module.exports = {
if (!categoryID) {
var categoryIcon = ":grey_question:";
}
if(categoryID !== "Developers")
embed.addField(`${categoryIcon} ${categoryID} (${category.size})`, category.map((cmd: any) => `${cmd.name}`).join(" **|** "));
}
embed.addField(":question: Command Information", `${client.prefix}help <command>`);
Expand Down
26 changes: 26 additions & 0 deletions src/commands/maintenance.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { Message, MessageManager } from "discord.js";
import Client from "../structures/Client";
import { saveSettings } from "../utils/settings/Settings";
module.exports = {
name: "maintenance",
description: "Puts bot into maintenance!",
category: "Developers",
usage: "maintenance <reason>",
run: async function run(client: Client, message: Message, args: string[]) {
if(!client.developers.includes(message.author.id)) return message.channel.send("Missing permissions.");
if(client.settings.disabled) {
client.settings.disabled = false;
client.settings.disabledReason = undefined;
saveSettings(client.settings);
return message.channel.send("Turned off maintenance!");
}

if(args.length === 0) return message.channel.send("Please give a reason!");

const reason = args.join(" ");
client.settings.disabled = true;
client.settings.disabledReason = reason;
saveSettings(client.settings);
return message.channel.send("Turned on maintenance!");
},
};
1 change: 1 addition & 0 deletions src/events/message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ module.exports = async function message(client: DiscordClient, message: Message)
}
if (!cmd) return;
if (cmd) {
if (!client.developers.includes(message.author.id) && client.settings.disabled) return message.channel.send('The bot is currently in maintenance for ' + client.settings.disabledReason);
if (guildSettings.disabledCommands.includes(cmd.name)) return;
if (cmd.name !== "admin" && guildSettings.sleep) return message.channel.send("Bot is in sleep mode! Do c!admin sleep to turn it back on!");

Expand Down
10 changes: 8 additions & 2 deletions src/structures/Client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { promisify } from "util";
import Discord from "discord.js";
import Database from "../utils/database/Database";
import logger from "../utils/logger/Logger";
import { ISettings, getSettings } from "../utils/settings/Settings"

const readdir = promisify(fs.readdir);

Expand All @@ -12,15 +13,20 @@ export default class Client extends Discord.Client {
version = "2.12.1";
commands = new Discord.Collection();
aliases = new Discord.Collection();
settings: ISettings | undefined;
developers = ["438057670042320896" /*Miqhtie*/ , "234576713005137920" /*Joel*/ ]

constructor() {
super({
disableMentions: "everyone",
partials: ["GUILD_MEMBER", "USER", "MESSAGE", "REACTION", "CHANNEL"],
});

logger.verbose("t");

Database.initialize(`mongodb+srv://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@${process.env.MONGO_HOST}/${process.env.MONGO_DBNAME}?retryWrites=true&w=majority`, this);
getSettings().then((settings) => {
this.settings = settings;
});
}

async loadEvents(eventsDir: string) {
Expand Down Expand Up @@ -55,4 +61,4 @@ export default class Client extends Discord.Client {
});
logger.info(`Done loading ${c} commands.`);
}
}
}
37 changes: 37 additions & 0 deletions src/utils/settings/Settings.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import fs from "fs-extra";
import logger from "../logger/Logger";

export interface ISettings {
disabled: boolean,
disabledReason: string | undefined
}

export const defaultSettings: ISettings = {
disabled: false,
disabledReason: undefined
}

const settingsPath = "./settings.json";

export async function getSettings(): Promise<ISettings> {
return new Promise((resolve, reject) => {
fs.readJson(settingsPath)
.then((settings: any) => {
resolve(Object.assign(settings, defaultSettings));
})
.catch(() => {
logger.warn("No settings file provided, using default settings!");
resolve(defaultSettings);
});
})
}

export function saveSettings(settings: ISettings) {
fs.writeJson(settingsPath, settings)
.then(() => {
logger.info(`Saved settings ${JSON.stringify(settings)}`);
})
.catch((err) => {
logger.error(`Error saving settings ${JSON.stringify(err)}`);
});
}
41 changes: 41 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@
dependencies:
"@types/node" "*"

"@types/fs-extra@^9.0.6":
version "9.0.6"
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.6.tgz#488e56b77299899a608b8269719c1d133027a6ab"
integrity sha512-ecNRHw4clCkowNOBJH1e77nvbPxHYnWIXMv1IAoG/9+MYGkgoyr3Ppxr7XYFNL41V422EDhyV4/4SSK8L2mlig==
dependencies:
"@types/node" "*"

"@types/mongodb@^3.5.27":
version "3.6.3"
resolved "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.3.tgz"
Expand Down Expand Up @@ -67,6 +74,11 @@ asynckit@^0.4.0:
resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=

at-least-node@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==

axios@^0.21.1:
version "0.21.1"
resolved "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz"
Expand Down Expand Up @@ -249,6 +261,16 @@ follow-redirects@^1.10.0:
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz"
integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==

fs-extra@^9.1.0:
version "9.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
dependencies:
at-least-node "^1.0.0"
graceful-fs "^4.2.0"
jsonfile "^6.0.1"
universalify "^2.0.0"

fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
Expand All @@ -266,6 +288,11 @@ glob@^7.1.3:
once "^1.3.0"
path-is-absolute "^1.0.0"

graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.6"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==

inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
Expand Down Expand Up @@ -294,6 +321,15 @@ isarray@~1.0.0:
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=

jsonfile@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
dependencies:
universalify "^2.0.0"
optionalDependencies:
graceful-fs "^4.1.6"

kareem@2.3.2:
version "2.3.2"
resolved "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz"
Expand Down Expand Up @@ -607,6 +643,11 @@ typescript@^4.1.2:
resolved "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz"
integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==

universalify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==

util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
Expand Down