import { Command } from '@thaldrin/eu'; import { Context, Server } from '../../../utils/types'; import database from "../../../utils/database" import language from '../../../utils/language'; import replace from '../../../utils/replace'; import { MessageEmbed } from 'discord.js'; export = class Prefix extends Command { constructor() { super({ name: "prefix", description: "Invite the bot to your server", cooldown: 1, // usage: `` }) } async command(ctx: Context) { let sub = ctx.args[0] ctx.args.shift() switch (sub) { case "list": { const embed = new MessageEmbed().setColor(ctx.config.variables.color).setFooter(`${ctx.config.variables.name}`, ctx.config.variables.avatar) .setTitle(`Prefixes for ${ctx.guild?.name}`) .setDescription(`${[...ctx.config.variables.prefix, ...ctx.settings.prefix].map((prefix, i) => `- ${prefix}\n`).join("")}`) return ctx.channel.send(embed) } case "+": case "a": case "add": { // @ts-ignore if (ctx.args === [] || ctx.args.join(' ').trim() === '') return ctx.channel.send(language.get(ctx.settings.locale).missing.values.prefix); // @ts-ignore let { data, error } = await database.from("servers").update({ prefix: [...ctx.settings.prefix, `${ctx.args.join(" ").trim()}`] }).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(`Updated Prefixes for ${ctx.guild?.name}`) .setDescription(`Successfully added \`${ctx.args.join(" ").trim()}\` as an additional prefix on this Server.`) return ctx.channel.send(embed) } case "-": case "r": case "rm": case "remove": { if (ctx.args === [] || ctx.args.join(' ').trim() === '') return ctx.channel.send(language.get(ctx.settings.locale).missing.values.prefix); if (!ctx.settings.prefix.includes(ctx.args.join(" ").trim())) return ctx.channel.send(`\`${ctx.args.join(" ").trim()}\` is not configured as a prefix on this Server.`) let newprefixes = ctx.settings.prefix.filter(prefix => prefix !== ctx.args.join(" ").trim()) // @ts-ignore let { data, error } = await database.from("servers").update({ prefix: [...newprefixes] }).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) // TODO move this to translation file .setTitle(`Updated Prefixes for ${ctx.guild?.name}`) .setDescription(`Successfully removed \`${ctx.args.join(" ").trim()}\` from the list of prefixes for this Server.`) return ctx.channel.send(embed) } default: { const embed = new MessageEmbed().setColor(ctx.config.variables.color).setFooter(`${ctx.config.variables.name}`, ctx.config.variables.avatar) .setTitle(`Prefixes for ${ctx.guild?.name}`) .setDescription(`${[...ctx.config.variables.prefix, ...ctx.settings.prefix].map((prefix, i) => `- ${prefix}\n`).join("")}`) return ctx.channel.send(embed) } } } }