thaldrin/src/modules/info/settings.ts

149 lines
6.6 KiB
TypeScript

import Command from '../../handler/structures/Command';
import { Context, Server } from '../../utils/types';
import lingua from '../../utils/lingua';
import { MessageEmbed } from 'discord.js';
import database from "../../utils/database"
function enabled(a: boolean, lang: string) {
// @ts-ignore
return a ? lingua[lang].MISC.ENABLED : lingua[lang].MISC.DISABLED
}
export = class Settings extends Command {
constructor() {
super({
name: "settings",
description: "See and change the Bot's Settings",
cooldown: 1,
})
}
async command(ctx: Context) {
let settings = ctx.settings
let sub = ctx.args[0]
ctx.args.shift()
let value = ctx.args[0]
const Embed = new MessageEmbed().setColor(ctx.config.variables.color).setFooter(`${ctx.config.variables.name}`, ctx.config.variables.avatar)
switch (sub) {
case "toggle":
switch (value) {
case "shortlinks":
case "sl":
case "shorts":
{
// @ts-ignore
let { data, error } = await database.from<Server>("servers").update({ shortlinks: !ctx.settings.shortlinks }).match({ server_id: ctx.guild?.id })
// @ts-ignore
if (error) throw new Error(error)
const embed = new MessageEmbed()
.setColor(ctx.config.variables.color)
.setFooter(`${ctx.config.variables.name}`, ctx.config.variables.avatar)
.setTitle(`Toggled Shortlink for ${ctx.guild?.name}`)
.setDescription(`Successfully ${enabled(!ctx.settings.shortlinks, ctx.settings.locale)} Shortlinks on this Server.`)
return ctx.channel.send(embed)
}
case "sourcefinder":
case "sf":
case "sauce":
{
// @ts-ignore
let { data, error } = await database.from<Server>("servers").update({ sourcefinder: !ctx.settings.sourcefinder }).match({ server_id: ctx.guild?.id })
// @ts-ignore
if (error) throw new Error(error)
const embed = new MessageEmbed()
.setColor(ctx.config.variables.color)
.setFooter(`${ctx.config.variables.name}`, ctx.config.variables.avatar)
.setTitle(`Toggled Sourcefinder for ${ctx.guild?.name}`)
.setDescription(`Successfully ${enabled(!ctx.settings.sourcefinder, ctx.settings.locale)} Sourcefinder on this Server.`)
return ctx.channel.send(embed)
}
case "embeds":
case "imageembeds":
{
// @ts-ignore
let { data, error } = await database.from<Server>("servers").update({ embeds: !ctx.settings.embeds }).match({ server_id: ctx.guild?.id })
// @ts-ignore
if (error) throw new Error(error)
const embed = new MessageEmbed()
.setColor(ctx.config.variables.color)
.setFooter(`${ctx.config.variables.name}`, ctx.config.variables.avatar)
.setTitle(`Toggled Embeds for ${ctx.guild?.name}`)
.setDescription(`Successfully ${enabled(!ctx.settings.embeds, ctx.settings.locale)} Embeds for this Server.`)
return ctx.channel.send(embed)
}
case "interactions":
case "rptext":
{
// @ts-ignore
let { data, error } = await database.from<Server>("servers").update({ interaction_text: !ctx.settings.interaction_text }).match({ server_id: ctx.guild?.id })
// @ts-ignore
if (error) throw new Error(error)
const embed = new MessageEmbed()
.setColor(ctx.config.variables.color)
.setFooter(`${ctx.config.variables.name}`, ctx.config.variables.avatar)
.setTitle(`Toggled RP Text on RP Commands for ${ctx.guild?.name}`)
.setDescription(`Successfully ${enabled(!ctx.settings.interaction_text, ctx.settings.locale)} RP Text for this Server.`)
return ctx.channel.send(embed)
}
// case "shortlinks":
// case "sl":
// case "shorts":
// case "sourcefinder":
// case "sf":
// case "sauce":
// case "embeds":
// case "imageembeds":
// case "interactions":
// case "rptext":
default:
// @ts-ignore
Embed.setDescription(`${lingua[settings.locale].MISSING.VALUE.SETTING}
**Valid Settings**:
- shortlinks
- shorts
- sl
- sourcefinder
- sauce
- sf
- embeds
- imageembeds
- interactions
- rptext`)
return ctx.channel.send(Embed)
}
default: {
Embed.setTitle("Settings for " + ctx.guild?.name)
.setDescription(`
**Prefixes**
- ${settings.prefix.join("\n- ")}`)
.addField("Shortlinks", enabled(settings.shortlinks, settings.locale), true)
.addField("Sourcefinder", enabled(settings.sourcefinder, settings.locale), true)
.addField("*_ _*", "*_ _*", true)
.addField("RP Text", enabled(settings.interaction_text, settings.locale), true)
.addField("Image Embeds", enabled(settings.embeds, settings.locale), true)
}
}
ctx.channel.send(Embed)
}
}