discord-bot-shared 0.9.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022 Adam
3
+ Copyright (c) 2023 adamhl8
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # discord-bot-shared
2
2
 
3
+ **This readme is currently out of date.**
4
+
3
5
  A module that makes creating discord.js bots a bit easier.
4
6
 
5
7
  ## Installation/Usage
package/dist/bot.js CHANGED
@@ -1,26 +1,27 @@
1
- import { REST } from "@discordjs/rest"
2
- import { Client } from "discord.js"
3
- import { CommandManager } from "./command-manager.js"
4
- import { EventManager } from "./event-manager.js"
1
+ import { Client, Events, REST } from "discord.js";
2
+ import { CommandManager } from "./command-manager.js";
3
+ import { EventManager } from "./event-manager.js";
5
4
  export class Bot {
6
- #discord
7
- commands
8
- events
9
- constructor(options) {
10
- this.#discord = {
11
- applicationId: options.applicationId,
12
- token: options.token,
13
- client: new Client(options.clientOptions),
14
- rest: new REST().setToken(options.token),
5
+ #discord;
6
+ commands;
7
+ events;
8
+ constructor(options) {
9
+ this.#discord = {
10
+ applicationId: options.applicationId,
11
+ token: options.token,
12
+ client: new Client(options.clientOptions),
13
+ rest: new REST().setToken(options.token),
14
+ };
15
+ this.commands = new CommandManager(this.#discord);
16
+ this.events = new EventManager(this.#discord);
17
+ }
18
+ async login() {
19
+ this.#discord.client.once(Events.ClientReady, () => {
20
+ console.log("Client is ready.");
21
+ });
22
+ await this.commands._register();
23
+ this.commands._listen();
24
+ await this.#discord.client.login(this.#discord.token);
15
25
  }
16
- this.commands = new CommandManager(this.#discord)
17
- this.events = new EventManager(this.#discord)
18
- }
19
- async login() {
20
- this.#discord.client.once("ready", () => console.log("Client is ready."))
21
- await this.commands._register()
22
- this.commands._listen()
23
- await this.#discord.client.login(this.#discord.token)
24
- }
25
26
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2JvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBaUIsTUFBTSxZQUFZLENBQUE7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQWVqRCxNQUFNLE9BQU8sR0FBRztJQUNkLFFBQVEsQ0FBZ0I7SUFFZixRQUFRLENBQWdCO0lBQ3hCLE1BQU0sQ0FBYztJQUU3QixZQUFZLE9BQW1CO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDcEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3pDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ3pDLENBQUE7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNqRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFBO1FBRXpFLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRXZCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdkQsQ0FBQztDQUNGIn0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2JvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFpQixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFlakQsTUFBTSxPQUFPLEdBQUc7SUFDZCxRQUFRLENBQWdCO0lBRWYsUUFBUSxDQUFnQjtJQUN4QixNQUFNLENBQWM7SUFFN0IsWUFBWSxPQUFtQjtRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztZQUNwQixNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUN6QyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUN6QyxDQUFBO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1lBQ2pELE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUNqQyxDQUFDLENBQUMsQ0FBQTtRQUVGLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRXZCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdkQsQ0FBQztDQUNGIn0=
@@ -1,65 +1,75 @@
1
- import { Routes } from "discord-api-types/v10"
2
- import { Collection } from "discord.js"
1
+ import { Collection, Events, Routes, } from "discord.js";
3
2
  export class CommandManager {
4
- discord
5
- #commands = new Collection()
6
- #globalPreRunHook
7
- constructor(discord) {
8
- this.discord = discord
9
- }
10
- /*
11
- * Add a command
12
- */
13
- add(command) {
14
- if (!command.command.name) {
15
- throw new Error("a command is missing a name")
3
+ discord;
4
+ #commands = new Collection();
5
+ #globalPreRunHook;
6
+ constructor(discord) {
7
+ this.discord = discord;
16
8
  }
17
- this.#commands.set(command.command.name, command)
18
- }
19
- setGlobalPreRunHook(hook) {
20
- this.#globalPreRunHook = hook
21
- }
22
- async _register() {
23
- const payload = this.#commands.map((c) => c.command)
24
- const route = Routes.applicationCommands(this.discord.applicationId)
25
- await this.discord.rest.put(route, { body: payload })
26
- console.log(`Registered ${this.#commands.size} (/) commands.`)
27
- }
28
- _listen() {
29
- this.discord.client.on("interactionCreate", async (interaction) => {
30
- if (!interaction.guildId) return
31
- if (!interaction.isChatInputCommand()) return
32
- const command = this.#commands.get(interaction.commandName)
33
- if (!command) return this.interactionReply(interaction, "Unable to get command.")
34
- if (!(await this.checkRoles(command, interaction)))
35
- return this.interactionReply(interaction, "You do not have one of the required roles to run this command.")
36
- try {
37
- const guild = await this.discord.client.guilds.fetch(interaction.guildId)
38
- const context = {
39
- guild,
9
+ /*
10
+ * Add a command
11
+ */
12
+ add(command) {
13
+ if (!command.command.name) {
14
+ throw new Error("a command is missing a name");
40
15
  }
41
- const shouldContinue = this.#globalPreRunHook ? await this.#globalPreRunHook(context, interaction) : true
42
- if (!shouldContinue) return
43
- await command.run(context, interaction)
44
- } catch (error) {
45
- const errorMessage = error instanceof Error ? error.message : ""
46
- this.interactionReply(interaction, `There was an error while running this command.\n${errorMessage}`)
47
- }
48
- })
49
- }
50
- async checkRoles(command, interaction) {
51
- if (!command.requiredRoles) return true
52
- if (command.requiredRoles.length > 0) {
53
- const member = await interaction.guild?.members.fetch(interaction.user).catch(console.error)
54
- if (!member) return
55
- return member.roles.cache.some((role) => (command.requiredRoles ? command.requiredRoles.includes(role.name) : false))
16
+ this.#commands.set(command.command.name, command);
17
+ }
18
+ setGlobalPreRunHook(hook) {
19
+ this.#globalPreRunHook = hook;
20
+ }
21
+ async _register() {
22
+ const payload = this.#commands.map((c) => c.command);
23
+ const route = Routes.applicationCommands(this.discord.applicationId);
24
+ await this.discord.rest.put(route, { body: payload });
25
+ console.log(`Registered ${this.#commands.size} (/) commands.`);
26
+ }
27
+ _listen() {
28
+ this.discord.client.on(Events.InteractionCreate, async (interaction) => {
29
+ if (!interaction.guildId)
30
+ return;
31
+ if (!interaction.isChatInputCommand())
32
+ return;
33
+ const command = this.#commands.get(interaction.commandName);
34
+ if (!command) {
35
+ this.interactionReply(interaction, "Unable to get command.");
36
+ return;
37
+ }
38
+ if (!(await this.checkRoles(command, interaction))) {
39
+ this.interactionReply(interaction, "You do not have one of the required roles to run this command.");
40
+ return;
41
+ }
42
+ try {
43
+ const guild = await this.discord.client.guilds.fetch(interaction.guildId);
44
+ const context = {
45
+ guild,
46
+ };
47
+ const shouldContinue = this.#globalPreRunHook ? await this.#globalPreRunHook(context, interaction) : true;
48
+ if (!shouldContinue)
49
+ return;
50
+ await command.run(context, interaction);
51
+ }
52
+ catch (error) {
53
+ const errorMessage = error instanceof Error ? error.message : "";
54
+ this.interactionReply(interaction, `There was an error while running this command.\n${errorMessage}`);
55
+ }
56
+ });
57
+ }
58
+ async checkRoles(command, interaction) {
59
+ if (!command.requiredRoles)
60
+ return true;
61
+ if (command.requiredRoles.length > 0) {
62
+ const member = await interaction.guild?.members.fetch(interaction.user).catch(console.error);
63
+ if (!member)
64
+ return;
65
+ return member.roles.cache.some((role) => command.requiredRoles ? command.requiredRoles.includes(role.name) : false);
66
+ }
67
+ return false;
68
+ }
69
+ interactionReply(interaction, message) {
70
+ interaction.deferred
71
+ ? void interaction.editReply(message).catch(console.error)
72
+ : void interaction.reply({ content: message, ephemeral: true }).catch(console.error);
56
73
  }
57
- return false
58
- }
59
- interactionReply(interaction, message) {
60
- interaction.deferred
61
- ? void interaction.editReply(message).catch(console.error)
62
- : void interaction.reply({ content: message, ephemeral: true }).catch(console.error)
63
- }
64
74
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1hbmQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1ELE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQy9GLE9BQU8sRUFBK0IsVUFBVSxFQUFTLE1BQU0sWUFBWSxDQUFBO0FBZTNFLE1BQU0sT0FBTyxjQUFjO0lBSUw7SUFIcEIsU0FBUyxHQUFHLElBQUksVUFBVSxFQUFtQixDQUFBO0lBQzdDLGlCQUFpQixDQUFjO0lBRS9CLFlBQW9CLE9BQXVCO1FBQXZCLFlBQU8sR0FBUCxPQUFPLENBQWdCO0lBQUcsQ0FBQztJQUUvQzs7T0FFRztJQUNILEdBQUcsQ0FBQyxPQUFnQjtRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1NBQy9DO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQWlCO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUE7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNwRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJ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
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1hbmQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsVUFBVSxFQUNWLE1BQU0sRUFHTixNQUFNLEdBQ1AsTUFBTSxZQUFZLENBQUE7QUFlbkIsTUFBTSxPQUFPLGNBQWM7SUFJTDtJQUhwQixTQUFTLEdBQUcsSUFBSSxVQUFVLEVBQW1CLENBQUE7SUFDN0MsaUJBQWlCLENBQWM7SUFFL0IsWUFBb0IsT0FBdUI7UUFBdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7SUFBRyxDQUFDO0lBRS9DOztPQUVHO0lBQ0gsR0FBRyxDQUFDLE9BQWdCO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUE7U0FDL0M7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBaUI7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQTtJQUMvQixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3BELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ3BFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFB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
@@ -1,18 +1,18 @@
1
1
  export class EventManager {
2
- discord
3
- constructor(discord) {
4
- this.discord = discord
5
- }
6
- /*
7
- * Add an event listener
8
- */
9
- add(event) {
10
- this.discord.client.on(event.name, (...args) => {
11
- const context = {
12
- client: this.discord.client,
13
- }
14
- void event.handler(context, ...args).catch(console.error)
15
- })
16
- }
2
+ discord;
3
+ constructor(discord) {
4
+ this.discord = discord;
5
+ }
6
+ /*
7
+ * Add an event listener
8
+ */
9
+ add(event) {
10
+ this.discord.client.on(event.event, (...args) => {
11
+ const context = {
12
+ client: this.discord.client,
13
+ };
14
+ void event.handler(context, ...args).catch(console.error);
15
+ });
16
+ }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ldmVudC1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sT0FBTyxZQUFZO0lBQ0g7SUFBcEIsWUFBb0IsT0FBdUI7UUFBdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7SUFBRyxDQUFDO0lBRS9DOztPQUVHO0lBQ0gsR0FBRyxDQUErQixLQUFlO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUM3QyxNQUFNLE9BQU8sR0FBRztnQkFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2FBQzVCLENBQUE7WUFDRCxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzRCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiJ9
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ldmVudC1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE1BQU0sT0FBTyxZQUFZO0lBQ0g7SUFBcEIsWUFBb0IsT0FBdUI7UUFBdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7SUFBRyxDQUFDO0lBRS9DOztPQUVHO0lBQ0gsR0FBRyxDQUF3QixLQUFlO1FBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FBRztnQkFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2FBQzVCLENBQUE7WUFDRCxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzRCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiJ9
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Bot } from "./bot.js"
2
- export { getChannel, isCategoryChannel, isTextChannel, throwError } from "./util.js"
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUc5QixPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUEifQ==
1
+ export { Bot } from "./bot.js";
2
+ export { getChannel, isCategoryChannel, isTextChannel, throwError } from "./util.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUc5QixPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUEifQ==
@@ -1,22 +1,21 @@
1
- import { REST } from "@discordjs/rest"
2
- import { Client, ClientOptions } from "discord.js"
3
- import { CommandManager } from "./command-manager.js"
4
- import { EventManager } from "./event-manager.js"
1
+ import { Client, ClientOptions, REST } from "discord.js";
2
+ import { CommandManager } from "./command-manager.js";
3
+ import { EventManager } from "./event-manager.js";
5
4
  export interface BotOptions {
6
- applicationId: string
7
- token: string
8
- clientOptions: ClientOptions
5
+ applicationId: string;
6
+ token: string;
7
+ clientOptions: ClientOptions;
9
8
  }
10
9
  export interface DiscordContext {
11
- applicationId: string
12
- token: string
13
- client: Client
14
- rest: REST
10
+ applicationId: string;
11
+ token: string;
12
+ client: Client;
13
+ rest: REST;
15
14
  }
16
15
  export declare class Bot {
17
- #private
18
- readonly commands: CommandManager
19
- readonly events: EventManager
20
- constructor(options: BotOptions)
21
- login(): Promise<void>
16
+ #private;
17
+ readonly commands: CommandManager;
18
+ readonly events: EventManager;
19
+ constructor(options: BotOptions);
20
+ login(): Promise<void>;
22
21
  }
@@ -1,23 +1,22 @@
1
- import { RESTPostAPIChatInputApplicationCommandsJSONBody } from "discord-api-types/v10"
2
- import { ChatInputCommandInteraction, Guild } from "discord.js"
3
- import { DiscordContext } from "./bot.js"
1
+ import { ChatInputCommandInteraction, Guild, RESTPostAPIChatInputApplicationCommandsJSONBody } from "discord.js";
2
+ import { DiscordContext } from "./bot.js";
4
3
  export interface Command {
5
- requiredRoles?: string[]
6
- command: RESTPostAPIChatInputApplicationCommandsJSONBody
7
- run: (context: CommandContext, interaction: ChatInputCommandInteraction) => void | Promise<void>
4
+ requiredRoles?: string[];
5
+ command: RESTPostAPIChatInputApplicationCommandsJSONBody;
6
+ run: (context: CommandContext, interaction: ChatInputCommandInteraction) => void | Promise<void>;
8
7
  }
9
8
  export interface CommandContext {
10
- guild: Guild
9
+ guild: Guild;
11
10
  }
12
- export type CommandHook = (context: CommandContext, interaction: ChatInputCommandInteraction) => Promise<boolean>
11
+ export type CommandHook = (context: CommandContext, interaction: ChatInputCommandInteraction) => Promise<boolean>;
13
12
  export declare class CommandManager {
14
- #private
15
- private discord
16
- constructor(discord: DiscordContext)
17
- add(command: Command): void
18
- setGlobalPreRunHook(hook: CommandHook): void
19
- _register(): Promise<void>
20
- _listen(): void
21
- private checkRoles
22
- private interactionReply
13
+ #private;
14
+ private discord;
15
+ constructor(discord: DiscordContext);
16
+ add(command: Command): void;
17
+ setGlobalPreRunHook(hook: CommandHook): void;
18
+ _register(): Promise<void>;
19
+ _listen(): void;
20
+ private checkRoles;
21
+ private interactionReply;
23
22
  }
@@ -1,14 +1,16 @@
1
- import { Client, ClientEvents } from "discord.js"
2
- import { DiscordContext } from "./bot.js"
3
- export interface Event<K extends keyof ClientEvents> {
4
- name: K
5
- handler: (context: EventContext, ...args: ClientEvents[K]) => Promise<void>
1
+ import { Client, ClientEvents, Events } from "discord.js";
2
+ import { DiscordContext } from "./bot.js";
3
+ type ValidEvents = Exclude<Events, Events.VoiceServerUpdate | Events.Raw>;
4
+ export interface Event<N extends ValidEvents = ValidEvents> {
5
+ event: N;
6
+ handler: (context: EventContext, ...args: ClientEvents[N]) => Promise<void>;
6
7
  }
7
8
  export interface EventContext {
8
- client: Client
9
+ client: Client;
9
10
  }
10
11
  export declare class EventManager {
11
- private discord
12
- constructor(discord: DiscordContext)
13
- add<K extends keyof ClientEvents>(event: Event<K>): void
12
+ private discord;
13
+ constructor(discord: DiscordContext);
14
+ add<N extends ValidEvents>(event: Event<N>): void;
14
15
  }
16
+ export {};
@@ -1,4 +1,4 @@
1
- export { Bot } from "./bot.js"
2
- export { Command, CommandContext, CommandHook } from "./command-manager.js"
3
- export { Event, EventContext } from "./event-manager.js"
4
- export { getChannel, isCategoryChannel, isTextChannel, throwError } from "./util.js"
1
+ export { Bot } from "./bot.js";
2
+ export type { Command, CommandContext, CommandHook } from "./command-manager.js";
3
+ export type { Event, EventContext } from "./event-manager.js";
4
+ export { getChannel, isCategoryChannel, isTextChannel, throwError } from "./util.js";
@@ -1,16 +1,7 @@
1
- import { APIPartialChannel, BaseChannel, CategoryChannel, ChannelType, Guild, NonThreadGuildBasedChannel, TextChannel } from "discord.js"
2
- type NonThreadGuildBasedChannelType =
3
- | ChannelType.GuildText
4
- | ChannelType.GuildVoice
5
- | ChannelType.GuildNews
6
- | ChannelType.GuildStageVoice
7
- | ChannelType.GuildCategory
8
- declare function getChannel<T extends NonThreadGuildBasedChannel>(
9
- guild: Guild,
10
- channelNameOrId: string,
11
- channelType: NonThreadGuildBasedChannelType,
12
- ): Promise<T | undefined>
13
- declare function isTextChannel(channel: BaseChannel | APIPartialChannel): channel is TextChannel
14
- declare function isCategoryChannel(channel: BaseChannel): channel is CategoryChannel
15
- declare function throwError(error: string): never
16
- export { getChannel, isTextChannel, isCategoryChannel, throwError }
1
+ import { APIPartialChannel, BaseChannel, CategoryChannel, ChannelType, Guild, NonThreadGuildBasedChannel, TextChannel } from "discord.js";
2
+ type NonThreadGuildBasedChannelType = ChannelType.GuildText | ChannelType.GuildVoice | ChannelType.GuildAnnouncement | ChannelType.GuildStageVoice | ChannelType.GuildCategory;
3
+ declare function getChannel<T extends NonThreadGuildBasedChannel>(guild: Guild, channelNameOrId: string, channelType: NonThreadGuildBasedChannelType): Promise<T>;
4
+ declare function isTextChannel(channel: BaseChannel | APIPartialChannel): channel is TextChannel;
5
+ declare function isCategoryChannel(channel: BaseChannel): channel is CategoryChannel;
6
+ declare function throwError(error: string): never;
7
+ export { getChannel, isCategoryChannel, isTextChannel, throwError };
package/dist/util.js CHANGED
@@ -1,20 +1,23 @@
1
- import { ChannelType } from "discord.js"
1
+ import { ChannelType, } from "discord.js";
2
2
  async function getChannel(guild, channelNameOrId, channelType) {
3
- const channels = await guild.channels.fetch()
4
- let channel
5
- channel = channels.find((channel) => (channel ? channel.name === channelNameOrId : false))
6
- if (channel) return channel.type === channelType ? channel : undefined
7
- channel = channels.get(channelNameOrId)
8
- if (channel) return channel.type === channelType ? channel : undefined
3
+ const channels = await guild.channels.fetch();
4
+ let channel;
5
+ channel = channels.find((channel) => (channel ? channel.name === channelNameOrId : false));
6
+ if (channel && channel.type === channelType)
7
+ return channel;
8
+ channel = channels.get(channelNameOrId);
9
+ if (channel && channel.type === channelType)
10
+ return channel;
11
+ throw new Error(`Unable to get channel: ${channelNameOrId}`);
9
12
  }
10
13
  function isTextChannel(channel) {
11
- return channel.type === ChannelType.GuildText
14
+ return channel.type === ChannelType.GuildText;
12
15
  }
13
16
  function isCategoryChannel(channel) {
14
- return channel.type === ChannelType.GuildCategory
17
+ return channel.type === ChannelType.GuildCategory;
15
18
  }
16
19
  function throwError(error) {
17
- throw new Error(error)
20
+ throw new Error(error);
18
21
  }
19
- export { getChannel, isTextChannel, isCategoryChannel, throwError }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUQsV0FBVyxFQUFrRCxNQUFNLFlBQVksQ0FBQTtBQVN6SSxLQUFLLFVBQVUsVUFBVSxDQUN2QixLQUFZLEVBQ1osZUFBdUIsRUFDdkIsV0FBMkM7SUFFM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBRTdDLElBQUksT0FBc0QsQ0FBQTtJQUMxRCxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQzFGLElBQUksT0FBTztRQUFFLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFFLE9BQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBRTdFLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQ3ZDLElBQUksT0FBTztRQUFFLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFFLE9BQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0FBQy9FLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxPQUF3QztJQUM3RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLFNBQVMsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxPQUFvQjtJQUM3QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLGFBQWEsQ0FBQTtBQUNuRCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBYTtJQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3hCLENBQUM7QUFFRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsQ0FBQSJ9
22
+ export { getChannel, isCategoryChannel, isTextChannel, throwError };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxXQUFXLEdBSVosTUFBTSxZQUFZLENBQUE7QUFTbkIsS0FBSyxVQUFVLFVBQVUsQ0FDdkIsS0FBWSxFQUNaLGVBQXVCLEVBQ3ZCLFdBQTJDO0lBRTNDLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUU3QyxJQUFJLE9BQXNELENBQUE7SUFDMUQsT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUMxRixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVc7UUFBRSxPQUFPLE9BQVksQ0FBQTtJQUVoRSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUN2QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVc7UUFBRSxPQUFPLE9BQVksQ0FBQTtJQUVoRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixlQUFlLEVBQUUsQ0FBQyxDQUFBO0FBQzlELENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxPQUF3QztJQUM3RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLFNBQVMsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxPQUFvQjtJQUM3QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLGFBQWEsQ0FBQTtBQUNuRCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBYTtJQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3hCLENBQUM7QUFFRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsQ0FBQSJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "discord-bot-shared",
3
- "version": "0.9.1",
3
+ "version": "0.10.0",
4
4
  "type": "module",
5
5
  "description": "Modules for creating discord bots.",
6
6
  "repository": "github:adamhl8/discord-bot-shared",
@@ -13,31 +13,28 @@
13
13
  "README.md",
14
14
  "LICENSE"
15
15
  ],
16
- "dependencies": {
17
- "@discordjs/rest": "^1.5.0",
18
- "discord-api-types": "^0.37.23",
19
- "discord.js": "^14.7.1"
16
+ "peerDependencies": {
17
+ "discord.js": ">14.0.0"
20
18
  },
21
19
  "devDependencies": {
22
- "@types/node": "^18.11.17",
23
- "@typescript-eslint/eslint-plugin": "^5.46.1",
24
- "@typescript-eslint/parser": "^5.46.1",
25
- "eslint": "^8.30.0",
26
- "eslint-config-prettier": "^8.5.0",
27
- "eslint-formatter-pretty": "^4.1.0",
28
- "eslint-plugin-eslint-comments": "^3.2.0",
29
- "eslint-plugin-sonarjs": "^0.17.0",
30
- "eslint-plugin-unicorn": "^45.0.2",
31
- "prettier": "^2.8.1",
32
- "prettier-plugin-organize-imports": "^3.2.1",
33
- "prettier-plugin-pkg": "^0.17.1",
34
- "prettier-plugin-sh": "^0.12.8",
35
- "typescript": "^4.9.4"
20
+ "@types/node": "^20.5.1",
21
+ "@typescript-eslint/eslint-plugin": "^6.4.0",
22
+ "@typescript-eslint/parser": "^6.4.0",
23
+ "discord.js": "^14.13.0",
24
+ "eslint": "^8.47.0",
25
+ "eslint-config-prettier": "^9.0.0",
26
+ "eslint-plugin-sonarjs": "^0.20.0",
27
+ "eslint-plugin-unicorn": "^48.0.1",
28
+ "prettier": "^3.0.2",
29
+ "prettier-plugin-organize-imports": "^3.2.3",
30
+ "prettier-plugin-pkg": "^0.18.0",
31
+ "prettier-plugin-sh": "^0.13.1",
32
+ "typescript": "^5.1.6"
36
33
  },
37
34
  "scripts": {
38
- "build": "rm -rf dist && pnpm lint && tsc && pnpm format",
35
+ "build": "rm -rf dist && tsc",
39
36
  "format": "prettier --write .",
40
- "lint": "eslint -f pretty .",
37
+ "lint": "eslint ./src/",
41
38
  "prepublish": "pnpm build"
42
39
  }
43
40
  }