140 lines
4.1 KiB
TypeScript
140 lines
4.1 KiB
TypeScript
import { getGuildSetting } from "../tools/data";
|
|
import { Badword, database, GuildSetting } from "../data";
|
|
import { Console } from "console";
|
|
|
|
const console = new Console(process.stdout);
|
|
|
|
export default async function execute(args: string[]) {
|
|
const command = args[0];
|
|
if (!command) return printHelp();
|
|
|
|
switch (command.toLowerCase()) {
|
|
case "info": {
|
|
if (!args[1]) return printHelp();
|
|
const settings = await getGuildSetting(args[1]);
|
|
const wordCount = await database.getRepository(Badword).count({
|
|
where: {
|
|
guildID: args[1]
|
|
}
|
|
});
|
|
|
|
console.log(`Guild ${args[1]}:
|
|
- Preserve Settings: ${settings.preserveDataOnGuildLeave ? "ENABLED" : "DISABLED"}
|
|
- Logchannel: ${settings.notificationChannelID ? `ENABLED (${settings.notificationChannelID})` : "DISABLED"}
|
|
- blocked Words: ${wordCount}`);
|
|
break;
|
|
}
|
|
|
|
case "words": {
|
|
if (!args[1] || !args[2]) return printWordHelp();
|
|
|
|
const badWords = await database.getRepository(Badword).find({
|
|
where: {
|
|
guildID: args[2]
|
|
}
|
|
});
|
|
|
|
switch (args[1].toLowerCase()) {
|
|
case "get": {
|
|
console.log(`Bad words for ${args[2]}:\n\n${badWords.map((badWord) => badWord.value).reduce((prev, next) => prev + ", " + next, "").slice(2)}`);
|
|
break;
|
|
}
|
|
|
|
case "add": {
|
|
if (!args[3]) {
|
|
printWordHelp();
|
|
break;
|
|
}
|
|
|
|
if (badWords.filter(w => w.value === args[3]!.toLowerCase()).length > 0) {
|
|
console.log("Word already exists");
|
|
break;
|
|
}
|
|
|
|
const badWord = new Badword();
|
|
badWord.guildID = args[2];
|
|
badWord.value = args[3].toLowerCase();
|
|
|
|
await database.getRepository(Badword).save(badWord);
|
|
console.log(`${args[3].toLowerCase()} added to guild ${args[2]}`);
|
|
break;
|
|
}
|
|
|
|
case "remove": {
|
|
if (!args[3]) {
|
|
printWordHelp();
|
|
break;
|
|
}
|
|
|
|
const badWord = badWords.find((w) => w.value === args[3]?.toLowerCase());
|
|
|
|
if (!badWord) {
|
|
console.log(`${args[3].toLowerCase()} is not in blocklist of guild ${args[2]}`);
|
|
break;
|
|
}
|
|
|
|
await database.getRepository(Badword).delete({
|
|
id: badWord.id
|
|
});
|
|
|
|
console.log(`${badWord.value} deleted for guild ${args[2]}`);
|
|
break;
|
|
}
|
|
|
|
case "clear": {
|
|
await database.getRepository(Badword).delete({
|
|
guildID: args[2]
|
|
});
|
|
|
|
console.log(`Deleted ${badWords.length} entries`);
|
|
break;
|
|
}
|
|
|
|
default: {
|
|
printHelp();
|
|
break;
|
|
}
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case "delete": {
|
|
if (!args[1]) return printHelp();
|
|
|
|
await database.getRepository(GuildSetting).delete({
|
|
id: args[1]
|
|
});
|
|
|
|
await database.getRepository(Badword).delete({
|
|
guildID: args[1]
|
|
});
|
|
|
|
console.log(`Deleted all data for guild ${args[1]}`);
|
|
break;
|
|
}
|
|
|
|
default: {
|
|
printHelp();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function printHelp() {
|
|
console.log(`Usage "guild":
|
|
|
|
guild info [GUILDID]
|
|
guild words [get|add|remove|clear]
|
|
guild delete [GUILDID]`);
|
|
}
|
|
|
|
function printWordHelp() {
|
|
console.log(`Usage "guild words":
|
|
|
|
guild words get [GUILDID]
|
|
guild words add [GUILDID] [WORD]
|
|
guild words remove [GUILDID] [WORD]
|
|
guild words clear [GUILDID]`);
|
|
} |