aboutsummaryrefslogtreecommitdiff
path: root/src/lib/extensions/BotGuild.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/extensions/BotGuild.ts')
-rw-r--r--src/lib/extensions/BotGuild.ts38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/lib/extensions/BotGuild.ts b/src/lib/extensions/BotGuild.ts
new file mode 100644
index 0000000..22d7834
--- /dev/null
+++ b/src/lib/extensions/BotGuild.ts
@@ -0,0 +1,38 @@
+import { Guild, Structures } from 'discord.js';
+import { BotClient } from './BotClient';
+import { Guild as GuildModel } from '../types/Models';
+
+export class GuildSettings {
+ private guild: BotGuild;
+ constructor(guild: BotGuild) {
+ this.guild = guild;
+ }
+ public async getPrefix(): Promise<string> {
+ return await GuildModel.findByPk(this.guild.id).then(
+ (gm) => gm?.prefix || this.guild.client.config.prefix
+ );
+ }
+ public async setPrefix(value: string): Promise<void> {
+ let entry = await GuildModel.findByPk(this.guild.id);
+ if (!entry) {
+ entry = GuildModel.build({
+ id: this.guild.id,
+ prefix: value
+ });
+ } else {
+ entry.prefix = value;
+ }
+ await entry.save();
+ }
+}
+
+export class BotGuild extends Guild {
+ constructor(client: BotClient, data: Record<string, unknown>) {
+ super(client, data);
+ }
+ static install(): void {
+ Structures.extend('Guild', () => BotGuild);
+ }
+ public settings = new GuildSettings(this);
+ public client: BotClient;
+}