aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/extensions/BushCommand.ts2
-rw-r--r--src/lib/extensions/BushGuild.ts20
-rw-r--r--src/lib/extensions/BushGuildMember.ts13
-rw-r--r--src/lib/extensions/BushInhibitor.ts2
-rw-r--r--src/lib/extensions/BushMessage.ts12
-rw-r--r--src/lib/extensions/BushSlashMessage.ts (renamed from src/lib/extensions/BushInteractionMessage.ts)4
-rw-r--r--src/lib/extensions/BushUser.ts17
-rw-r--r--src/lib/utils/BushConstants.ts36
8 files changed, 101 insertions, 5 deletions
diff --git a/src/lib/extensions/BushCommand.ts b/src/lib/extensions/BushCommand.ts
index b62d26e..f22a628 100644
--- a/src/lib/extensions/BushCommand.ts
+++ b/src/lib/extensions/BushCommand.ts
@@ -4,8 +4,8 @@ import { ArgumentGenerator, ArgumentOptions, ArgumentPromptOptions, Command, Com
import { Snowflake } from 'discord.js';
import { BushClient } from './BushClient';
import { BushCommandHandler } from './BushCommandHandler';
-import { BushSlashMessage } from './BushInteractionMessage';
import { BushMessage } from './BushMessage';
+import { BushSlashMessage } from './BushSlashMessage';
export interface BushArgumentOptions extends ArgumentOptions {
id: string;
diff --git a/src/lib/extensions/BushGuild.ts b/src/lib/extensions/BushGuild.ts
new file mode 100644
index 0000000..470e93a
--- /dev/null
+++ b/src/lib/extensions/BushGuild.ts
@@ -0,0 +1,20 @@
+import { Guild } from 'discord.js';
+import { Guild as GuildDB, GuildModel } from '../models/Guild';
+import { BushClient } from './BushClient';
+
+export class BushGuild extends Guild {
+ public declare client: BushClient;
+ public constructor(client: BushClient, data: unknown) {
+ super(client, data);
+ }
+
+ public async getSetting(setting: keyof GuildModel) {
+ return ((await GuildDB.findByPk(this.id)) ?? GuildDB.build({ id: this.id })).get(setting);
+ }
+
+ public async setSetting<K extends keyof GuildModel>(setting: K, value: GuildDB[K]) {
+ const row = (await GuildDB.findByPk(this.id)) ?? GuildDB.build({ id: this.id });
+ row[setting] = value;
+ return await row.save();
+ }
+}
diff --git a/src/lib/extensions/BushGuildMember.ts b/src/lib/extensions/BushGuildMember.ts
new file mode 100644
index 0000000..d193f9e
--- /dev/null
+++ b/src/lib/extensions/BushGuildMember.ts
@@ -0,0 +1,13 @@
+import { GuildMember } from 'discord.js';
+import { BushClient } from './BushClient';
+import { BushGuild } from './BushGuild';
+import { BushUser } from './BushUser';
+
+export class BushGuildMember extends GuildMember {
+ public declare client: BushClient;
+ public declare guild: BushGuild;
+ public declare BushUser: BushUser;
+ public constructor(client: BushClient, data: unknown, guild: BushGuild) {
+ super(client, data, guild);
+ }
+}
diff --git a/src/lib/extensions/BushInhibitor.ts b/src/lib/extensions/BushInhibitor.ts
index 8a31abf..602ff65 100644
--- a/src/lib/extensions/BushInhibitor.ts
+++ b/src/lib/extensions/BushInhibitor.ts
@@ -2,8 +2,8 @@
import { Inhibitor } from 'discord-akairo';
import { BushClient } from './BushClient';
import { BushCommand } from './BushCommand';
-import { BushSlashMessage } from './BushInteractionMessage';
import { BushMessage } from './BushMessage';
+import { BushSlashMessage } from './BushSlashMessage';
export class BushInhibitor extends Inhibitor {
public declare client: BushClient;
diff --git a/src/lib/extensions/BushMessage.ts b/src/lib/extensions/BushMessage.ts
index afa6bde..7dbeeb2 100644
--- a/src/lib/extensions/BushMessage.ts
+++ b/src/lib/extensions/BushMessage.ts
@@ -1,11 +1,17 @@
import { DMChannel, Message, NewsChannel, TextChannel } from 'discord.js';
import { BushClient } from './BushClient';
import { BushCommandUtil } from './BushCommandUtil';
+import { BushGuild } from './BushGuild';
+import { BushGuildMember } from './BushGuildMember';
+import { BushUser } from './BushUser';
export class BushMessage extends Message {
- declare client: BushClient;
- declare util: BushCommandUtil;
- constructor(client: BushClient, data: unknown, channel: TextChannel | DMChannel | NewsChannel) {
+ public declare client: BushClient;
+ public declare util: BushCommandUtil;
+ public declare guild: BushGuild;
+ public declare member: BushGuildMember;
+ public declare author: BushUser;
+ public constructor(client: BushClient, data: unknown, channel: TextChannel | DMChannel | NewsChannel) {
super(client, data, channel);
this.client = client;
this.channel = channel;
diff --git a/src/lib/extensions/BushInteractionMessage.ts b/src/lib/extensions/BushSlashMessage.ts
index 62d2519..33ca11f 100644
--- a/src/lib/extensions/BushInteractionMessage.ts
+++ b/src/lib/extensions/BushSlashMessage.ts
@@ -2,10 +2,14 @@ import { AkairoMessage } from 'discord-akairo';
import { CommandInteraction } from 'discord.js';
import { BushClient } from './BushClient';
import { BushCommandUtil } from './BushCommandUtil';
+import { BushGuild } from './BushGuild';
+import { BushUser } from './BushUser';
export class BushSlashMessage extends AkairoMessage {
public declare client: BushClient;
public declare util: BushCommandUtil;
+ public declare guild: BushGuild;
+ public declare author: BushUser;
public constructor(
client: BushClient,
interaction: CommandInteraction,
diff --git a/src/lib/extensions/BushUser.ts b/src/lib/extensions/BushUser.ts
new file mode 100644
index 0000000..dd07b7d
--- /dev/null
+++ b/src/lib/extensions/BushUser.ts
@@ -0,0 +1,17 @@
+import { User } from 'discord.js';
+import { BushClient } from './BushClient';
+
+export class BushUser extends User {
+ public declare client: BushClient;
+ public constructor(client: BushClient, data: unknown) {
+ super(client, data);
+ }
+
+ public isOwner(): boolean {
+ return this.client.isOwner(this);
+ }
+
+ public isSuperUser(): boolean {
+ return this.client.isSuperUser(this);
+ }
+}
diff --git a/src/lib/utils/BushConstants.ts b/src/lib/utils/BushConstants.ts
index 1015229..0e3f6bb 100644
--- a/src/lib/utils/BushConstants.ts
+++ b/src/lib/utils/BushConstants.ts
@@ -1,4 +1,40 @@
export class BushConstants {
+ // Stolen from @Mzato0001 (pr to discord akairo that hasn't been merged yet)
+ public static TimeUnits = {
+ years: {
+ label: '(?:years?|y)',
+ value: 1000 * 60 * 60 * 24 * 365
+ },
+ months: {
+ label: '(?:months?|mon|mo?)',
+ value: 1000 * 60 * 60 * 24 * 30
+ },
+ weeks: {
+ label: '(?:weeks?|w)',
+ value: 1000 * 60 * 60 * 24 * 7
+ },
+ days: {
+ label: '(?:days?|d)',
+ value: 1000 * 60 * 60 * 24
+ },
+ hours: {
+ label: '(?:hours?|hrs?|h)',
+ value: 1000 * 60 * 60
+ },
+ minutes: {
+ label: '(?:minutes?|mins?)',
+ value: 1000 * 60
+ },
+ seconds: {
+ label: '(?:seconds?|secs?|s)',
+ value: 1000
+ },
+ milliseconds: {
+ label: '(?:milliseconds?|msecs?|ms)',
+ value: 1
+ }
+ };
+
/** A bunch of mappings */
public static mappings = {
guilds: {