discord-bot-shared 0.8.0 → 0.9.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/dist/bot.js +26 -0
- package/dist/command-manager.js +65 -0
- package/dist/event-manager.js +18 -0
- package/dist/index.js +3 -28
- package/dist/types/bot.d.ts +22 -0
- package/dist/types/command-manager.d.ts +23 -0
- package/dist/types/event-manager.d.ts +14 -0
- package/dist/types/index.d.ts +4 -18
- package/dist/types/util.d.ts +13 -2
- package/dist/util.js +10 -2
- package/package.json +1 -1
- package/dist/events/interaction-create.js +0 -33
- package/dist/events/ready.js +0 -7
- package/dist/guild.js +0 -30
- package/dist/register-commands.js +0 -10
- package/dist/register-events.js +0 -6
- package/dist/types/events/interaction-create.d.ts +0 -6
- package/dist/types/events/ready.d.ts +0 -3
- package/dist/types/guild.d.ts +0 -21
- package/dist/types/register-commands.d.ts +0 -12
- package/dist/types/register-events.d.ts +0 -8
package/dist/bot.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
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"
|
|
5
|
+
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),
|
|
15
|
+
}
|
|
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
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2JvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBaUIsTUFBTSxZQUFZLENBQUE7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQWVqRCxNQUFNLE9BQU8sR0FBRztJQUNkLFFBQVEsQ0FBZ0I7SUFFZixRQUFRLENBQWdCO0lBQ3hCLE1BQU0sQ0FBYztJQUU3QixZQUFZLE9BQW1CO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDcEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3pDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ3pDLENBQUE7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNqRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFBO1FBRXpFLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRXZCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdkQsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Routes } from "discord-api-types/v10"
|
|
2
|
+
import { Collection } from "discord.js"
|
|
3
|
+
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")
|
|
16
|
+
}
|
|
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,
|
|
40
|
+
}
|
|
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))
|
|
56
|
+
}
|
|
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
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1hbmQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1ELE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQy9GLE9BQU8sRUFBK0IsVUFBVSxFQUFTLE1BQU0sWUFBWSxDQUFBO0FBZTNFLE1BQU0sT0FBTyxjQUFjO0lBSUw7SUFIcEIsU0FBUyxHQUFHLElBQUksVUFBVSxFQUFtQixDQUFBO0lBQzdDLGlCQUFpQixDQUFjO0lBRS9CLFlBQW9CLE9BQXVCO1FBQXZCLFlBQU8sR0FBUCxPQUFPLENBQWdCO0lBQUcsQ0FBQztJQUUvQzs7T0FFRztJQUNILEdBQUcsQ0FBQyxPQUFnQjtRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1NBQy9DO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQWlCO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUE7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNwRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJ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
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ldmVudC1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sT0FBTyxZQUFZO0lBQ0g7SUFBcEIsWUFBb0IsT0FBdUI7UUFBdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7SUFBRyxDQUFDO0lBRS9DOztPQUVHO0lBQ0gsR0FBRyxDQUErQixLQUFlO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUM3QyxNQUFNLE9BQU8sR0FBRztnQkFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2FBQzVCLENBQUE7WUFDRCxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzRCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiJ9
|
package/dist/index.js
CHANGED
|
@@ -1,28 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import Guild from "./guild.js"
|
|
5
|
-
import registerCommands from "./register-commands.js"
|
|
6
|
-
import registerEvents from "./register-events.js"
|
|
7
|
-
const botToken = process.env.BOT_TOKEN || ""
|
|
8
|
-
const clientId = process.env.CLIENT_ID || ""
|
|
9
|
-
async function login(botIntents, commands, events, interactionCheck) {
|
|
10
|
-
console.log("Logging in...")
|
|
11
|
-
const bot = new Client(botIntents)
|
|
12
|
-
await registerCommands(botToken, clientId, commands)
|
|
13
|
-
registerEvents(bot, events)
|
|
14
|
-
// Register default/built-in events
|
|
15
|
-
registerReady(bot)
|
|
16
|
-
registerInteractionCreate(bot, commands, interactionCheck)
|
|
17
|
-
await bot.login(botToken)
|
|
18
|
-
console.log("Logged in.")
|
|
19
|
-
const partialGuilds = await bot.guilds.fetch()
|
|
20
|
-
const guildPromises = partialGuilds.map((guildPartial) => guildPartial.fetch())
|
|
21
|
-
const guilds = await Promise.all(guildPromises)
|
|
22
|
-
const GuildCollection = new Collection()
|
|
23
|
-
for (const guild of guilds) GuildCollection.set(guild.id, new Guild(guild.id, guild))
|
|
24
|
-
return { GuildCollection, bot }
|
|
25
|
-
}
|
|
26
|
-
export default login
|
|
27
|
-
export { isCategoryChannel, isTextChannel, throwError } from "./util.js"
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBaUIsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzlELE9BQU8seUJBQStDLE1BQU0sZ0NBQWdDLENBQUE7QUFDNUYsT0FBTyxhQUFhLE1BQU0sbUJBQW1CLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBQzlCLE9BQU8sZ0JBQThCLE1BQU0sd0JBQXdCLENBQUE7QUFDbkUsT0FBTyxjQUEwQixNQUFNLHNCQUFzQixDQUFBO0FBRTdELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQTtBQUM1QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUE7QUFFNUMsS0FBSyxVQUFVLEtBQUssQ0FBQyxVQUF5QixFQUFFLFFBQWtCLEVBQUUsTUFBYyxFQUFFLGdCQUFtQztJQUNySCxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBRTVCLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ2xDLE1BQU0sZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUNwRCxjQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBRTNCLG1DQUFtQztJQUNuQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDbEIseUJBQXlCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0lBRTFELE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRXpCLE1BQU0sYUFBYSxHQUFHLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM5QyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUMvRSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDL0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxVQUFVLEVBQWlCLENBQUE7SUFDdkQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNO1FBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUVyRixPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFBO0FBQ2pDLENBQUM7QUFFRCxlQUFlLEtBQUssQ0FBQTtBQUdwQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQSJ9
|
|
1
|
+
export { Bot } from "./bot.js"
|
|
2
|
+
export { getChannel, isCategoryChannel, isTextChannel, throwError } from "./util.js"
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUc5QixPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUEifQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
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"
|
|
5
|
+
export interface BotOptions {
|
|
6
|
+
applicationId: string
|
|
7
|
+
token: string
|
|
8
|
+
clientOptions: ClientOptions
|
|
9
|
+
}
|
|
10
|
+
export interface DiscordContext {
|
|
11
|
+
applicationId: string
|
|
12
|
+
token: string
|
|
13
|
+
client: Client
|
|
14
|
+
rest: REST
|
|
15
|
+
}
|
|
16
|
+
export declare class Bot {
|
|
17
|
+
#private
|
|
18
|
+
readonly commands: CommandManager
|
|
19
|
+
readonly events: EventManager
|
|
20
|
+
constructor(options: BotOptions)
|
|
21
|
+
login(): Promise<void>
|
|
22
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { RESTPostAPIChatInputApplicationCommandsJSONBody } from "discord-api-types/v10"
|
|
2
|
+
import { ChatInputCommandInteraction, Guild } from "discord.js"
|
|
3
|
+
import { DiscordContext } from "./bot.js"
|
|
4
|
+
export interface Command {
|
|
5
|
+
requiredRoles?: string[]
|
|
6
|
+
command: RESTPostAPIChatInputApplicationCommandsJSONBody
|
|
7
|
+
run: (context: CommandContext, interaction: ChatInputCommandInteraction) => void | Promise<void>
|
|
8
|
+
}
|
|
9
|
+
export interface CommandContext {
|
|
10
|
+
guild: Guild
|
|
11
|
+
}
|
|
12
|
+
export type CommandHook = (context: CommandContext, interaction: ChatInputCommandInteraction) => Promise<boolean>
|
|
13
|
+
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
|
|
23
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
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>
|
|
6
|
+
}
|
|
7
|
+
export interface EventContext {
|
|
8
|
+
client: Client
|
|
9
|
+
}
|
|
10
|
+
export declare class EventManager {
|
|
11
|
+
private discord
|
|
12
|
+
constructor(discord: DiscordContext)
|
|
13
|
+
add<K extends keyof ClientEvents>(event: Event<K>): void
|
|
14
|
+
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { Events } from "./register-events.js"
|
|
6
|
-
declare function login(
|
|
7
|
-
botIntents: ClientOptions,
|
|
8
|
-
commands: Commands,
|
|
9
|
-
events: Events,
|
|
10
|
-
interactionCheck?: InteractionCheck,
|
|
11
|
-
): Promise<{
|
|
12
|
-
GuildCollection: Collection<string, Guild>
|
|
13
|
-
bot: Client<boolean>
|
|
14
|
-
}>
|
|
15
|
-
export default login
|
|
16
|
-
export { InteractionCheck } from "./events/interaction-create.js"
|
|
17
|
-
export { Command } from "./register-commands.js"
|
|
18
|
-
export { isCategoryChannel, isTextChannel, throwError } from "./util.js"
|
|
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"
|
package/dist/types/util.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
import { APIPartialChannel, BaseChannel, CategoryChannel, TextChannel } from "discord.js"
|
|
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>
|
|
2
13
|
declare function isTextChannel(channel: BaseChannel | APIPartialChannel): channel is TextChannel
|
|
3
14
|
declare function isCategoryChannel(channel: BaseChannel): channel is CategoryChannel
|
|
4
15
|
declare function throwError(error: string): never
|
|
5
|
-
export { isTextChannel, isCategoryChannel, throwError }
|
|
16
|
+
export { getChannel, isTextChannel, isCategoryChannel, throwError }
|
package/dist/util.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { ChannelType } from "discord.js"
|
|
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
|
|
9
|
+
}
|
|
2
10
|
function isTextChannel(channel) {
|
|
3
11
|
return channel.type === ChannelType.GuildText
|
|
4
12
|
}
|
|
@@ -8,5 +16,5 @@ function isCategoryChannel(channel) {
|
|
|
8
16
|
function throwError(error) {
|
|
9
17
|
throw new Error(error)
|
|
10
18
|
}
|
|
11
|
-
export { isTextChannel, isCategoryChannel, throwError }
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
export { getChannel, isTextChannel, isCategoryChannel, throwError }
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUQsV0FBVyxFQUFrRCxNQUFNLFlBQVksQ0FBQTtBQVN6SSxLQUFLLFVBQVUsVUFBVSxDQUN2QixLQUFZLEVBQ1osZUFBdUIsRUFDdkIsV0FBMkM7SUFFM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBRTdDLElBQUksT0FBc0QsQ0FBQTtJQUMxRCxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQzFGLElBQUksT0FBTztRQUFFLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFFLE9BQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBRTdFLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQ3ZDLElBQUksT0FBTztRQUFFLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFFLE9BQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0FBQy9FLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxPQUF3QztJQUM3RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLFNBQVMsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxPQUFvQjtJQUM3QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLGFBQWEsQ0FBQTtBQUNuRCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBYTtJQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3hCLENBQUM7QUFFRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsQ0FBQSJ9
|
package/package.json
CHANGED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
function registerInteractionCreate(bot, commands, interactionCheck) {
|
|
2
|
-
bot.on("interactionCreate", async (interaction) => {
|
|
3
|
-
if (!interaction.isChatInputCommand()) return
|
|
4
|
-
const command = commands[interaction.commandName]
|
|
5
|
-
if (!command) return interactionReply(interaction, "Unable to get command.")
|
|
6
|
-
if (!(await checkRoles(command, interaction)))
|
|
7
|
-
return interactionReply(interaction, "You do not have one of the required roles to run this command.")
|
|
8
|
-
try {
|
|
9
|
-
const interactionCheckPassed = interactionCheck ? await interactionCheck(interaction) : true
|
|
10
|
-
if (!interactionCheckPassed) return
|
|
11
|
-
await command.run(interaction)
|
|
12
|
-
} catch (error) {
|
|
13
|
-
const errorMessage = error instanceof Error ? error.message : ""
|
|
14
|
-
interactionReply(interaction, `There was an error while running this command.\n${errorMessage}`)
|
|
15
|
-
}
|
|
16
|
-
})
|
|
17
|
-
}
|
|
18
|
-
async function checkRoles(command, interaction) {
|
|
19
|
-
if (!command.requiredRoles) return true
|
|
20
|
-
if (command.requiredRoles.length > 0) {
|
|
21
|
-
const member = await interaction.guild?.members.fetch(interaction.user).catch(console.error)
|
|
22
|
-
if (!member) return
|
|
23
|
-
return member.roles.cache.some((role) => (command.requiredRoles ? command.requiredRoles.includes(role.name) : false))
|
|
24
|
-
}
|
|
25
|
-
return false
|
|
26
|
-
}
|
|
27
|
-
function interactionReply(interaction, message) {
|
|
28
|
-
interaction.deferred
|
|
29
|
-
? void interaction.editReply(message).catch(console.error)
|
|
30
|
-
: void interaction.reply({ content: message, ephemeral: true }).catch(console.error)
|
|
31
|
-
}
|
|
32
|
-
export default registerInteractionCreate
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpb24tY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50cy9pbnRlcmFjdGlvbi1jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsU0FBUyx5QkFBeUIsQ0FBQyxHQUFXLEVBQUUsUUFBa0IsRUFBRSxnQkFBbUM7SUFDckcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRTtZQUFFLE9BQU07UUFFN0MsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNqRCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxFQUFFLHdCQUF3QixDQUFDLENBQUE7UUFFNUUsSUFBSSxDQUFDLENBQUMsTUFBTSxVQUFVLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzNDLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGdFQUFnRSxDQUFDLENBQUE7UUFFeEcsSUFBSTtZQUNGLE1BQU0sc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtZQUM1RixJQUFJLENBQUMsc0JBQXNCO2dCQUFFLE9BQU07WUFFbkMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1NBQy9CO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLFlBQVksR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7WUFDaEUsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLG1EQUFtRCxZQUFZLEVBQUUsQ0FBQyxDQUFBO1NBQ2pHO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxPQUFnQixFQUFFLFdBQXdDO0lBQ2xGLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXZDLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzVGLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTTtRQUVuQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7S0FDdEg7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFdBQXdDLEVBQUUsT0FBZTtJQUNqRixXQUFXLENBQUMsUUFBUTtRQUNsQixDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzFELENBQUMsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDeEYsQ0FBQztBQUVELGVBQWUseUJBQXlCLENBQUEifQ==
|
package/dist/events/ready.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
function registerReady(bot) {
|
|
2
|
-
bot.once("ready", () => {
|
|
3
|
-
console.log("Client is ready.")
|
|
4
|
-
})
|
|
5
|
-
}
|
|
6
|
-
export default registerReady
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL3JlYWR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLFNBQVMsYUFBYSxDQUFDLEdBQVc7SUFDaEMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUNqQyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxlQUFlLGFBQWEsQ0FBQSJ9
|
package/dist/guild.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
class Guild {
|
|
2
|
-
id
|
|
3
|
-
guild
|
|
4
|
-
constructor(id, guild) {
|
|
5
|
-
this.id = id
|
|
6
|
-
this.guild = guild
|
|
7
|
-
}
|
|
8
|
-
get members() {
|
|
9
|
-
return this.guild.members.fetch()
|
|
10
|
-
}
|
|
11
|
-
get channels() {
|
|
12
|
-
return this.guild.channels.fetch()
|
|
13
|
-
}
|
|
14
|
-
get roles() {
|
|
15
|
-
return this.guild.roles.fetch()
|
|
16
|
-
}
|
|
17
|
-
get emojis() {
|
|
18
|
-
return this.guild.emojis.fetch()
|
|
19
|
-
}
|
|
20
|
-
async getChannel(channelNameOrId, channelType) {
|
|
21
|
-
const channels = await this.channels
|
|
22
|
-
let channel
|
|
23
|
-
channel = channels.find((channel) => (channel ? channel.name === channelNameOrId : false))
|
|
24
|
-
if (channel) return channel.type === channelType ? channel : undefined
|
|
25
|
-
channel = channels.get(channelNameOrId)
|
|
26
|
-
if (channel) return channel.type === channelType ? channel : undefined
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
export default Guild
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ3VpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxLQUFLO0lBQ0EsRUFBRSxDQUFRO0lBQ1YsS0FBSyxDQUFVO0lBRXhCLFlBQVksRUFBVSxFQUFFLEtBQWU7UUFDckMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUE7UUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FDZCxlQUF1QixFQUN2QixXQUEyQztRQUUzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUE7UUFFcEMsSUFBSSxPQUFzRCxDQUFBO1FBQzFELE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDMUYsSUFBSSxPQUFPO1lBQUUsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUUsT0FBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFFN0UsT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDdkMsSUFBSSxPQUFPO1lBQUUsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUUsT0FBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDL0UsQ0FBQztDQUNGO0FBRUQsZUFBZSxLQUFLLENBQUEifQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { REST } from "@discordjs/rest"
|
|
2
|
-
import { Routes } from "discord-api-types/v10"
|
|
3
|
-
async function registerCommands(botToken, clientId, commands) {
|
|
4
|
-
const commandData = Object.values(commands).map((command) => command.command.toJSON())
|
|
5
|
-
const rest = new REST().setToken(botToken)
|
|
6
|
-
await rest.put(Routes.applicationCommands(clientId), { body: commandData })
|
|
7
|
-
console.log("Registered (/) commands.")
|
|
8
|
-
}
|
|
9
|
-
export default registerCommands
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVnaXN0ZXItY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQWE5QyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLFFBQWtCO0lBQ3BGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7SUFFdEYsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDMUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQzNFLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtBQUN6QyxDQUFDO0FBRUQsZUFBZSxnQkFBZ0IsQ0FBQSJ9
|
package/dist/register-events.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
function registerEvents(bot, events) {
|
|
2
|
-
for (const registerEvent of Object.values(events)) registerEvent(bot)
|
|
3
|
-
console.log("Registered events.")
|
|
4
|
-
}
|
|
5
|
-
export default registerEvents
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JlZ2lzdGVyLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxTQUFTLGNBQWMsQ0FBQyxHQUFXLEVBQUUsTUFBYztJQUNqRCxLQUFLLE1BQU0sYUFBYSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3JFLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtBQUNuQyxDQUFDO0FBRUQsZUFBZSxjQUFjLENBQUEifQ==
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ChatInputCommandInteraction, Client } from "discord.js"
|
|
2
|
-
import { Commands } from "../register-commands.js"
|
|
3
|
-
type InteractionCheck = (interaction: ChatInputCommandInteraction) => Promise<boolean | void>
|
|
4
|
-
declare function registerInteractionCreate(bot: Client, commands: Commands, interactionCheck?: InteractionCheck): void
|
|
5
|
-
export default registerInteractionCreate
|
|
6
|
-
export { InteractionCheck }
|
package/dist/types/guild.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ChannelType, Guild as djsGuild, NonThreadGuildBasedChannel } from "discord.js"
|
|
2
|
-
type NonThreadGuildBasedChannelType =
|
|
3
|
-
| ChannelType.GuildText
|
|
4
|
-
| ChannelType.GuildVoice
|
|
5
|
-
| ChannelType.GuildNews
|
|
6
|
-
| ChannelType.GuildStageVoice
|
|
7
|
-
| ChannelType.GuildCategory
|
|
8
|
-
declare class Guild {
|
|
9
|
-
readonly id: string
|
|
10
|
-
readonly guild: djsGuild
|
|
11
|
-
constructor(id: string, guild: djsGuild)
|
|
12
|
-
get members(): Promise<import("@discordjs/collection").Collection<string, import("discord.js").GuildMember>>
|
|
13
|
-
get channels(): Promise<import("@discordjs/collection").Collection<string, NonThreadGuildBasedChannel | null>>
|
|
14
|
-
get roles(): Promise<import("@discordjs/collection").Collection<string, import("discord.js").Role>>
|
|
15
|
-
get emojis(): Promise<import("@discordjs/collection").Collection<string, import("discord.js").GuildEmoji>>
|
|
16
|
-
getChannel<T extends NonThreadGuildBasedChannel>(
|
|
17
|
-
channelNameOrId: string,
|
|
18
|
-
channelType: NonThreadGuildBasedChannelType,
|
|
19
|
-
): Promise<T | undefined>
|
|
20
|
-
}
|
|
21
|
-
export default Guild
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ChatInputCommandInteraction, SlashCommandBuilder } from "discord.js"
|
|
2
|
-
interface Command {
|
|
3
|
-
requiredRoles?: string[]
|
|
4
|
-
command: SlashCommandBuilder
|
|
5
|
-
run: (interaction: ChatInputCommandInteraction) => void | Promise<void>
|
|
6
|
-
}
|
|
7
|
-
interface Commands {
|
|
8
|
-
[name: string]: Command
|
|
9
|
-
}
|
|
10
|
-
declare function registerCommands(botToken: string, clientId: string, commands: Commands): Promise<void>
|
|
11
|
-
export default registerCommands
|
|
12
|
-
export { Command, Commands }
|