discord-bot-shared 0.5.2 → 0.6.1

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/commands.js CHANGED
@@ -1,26 +1,25 @@
1
- import { REST } from '@discordjs/rest';
2
- import { Routes } from 'discord-api-types/v10';
3
- import { Collection } from 'discord.js';
4
- import { readdir } from 'node:fs/promises';
5
- import { fileURLToPath } from 'node:url';
1
+ import { REST } from "@discordjs/rest"
2
+ import { Routes } from "discord-api-types/v10"
3
+ import { Collection } from "discord.js"
4
+ import { readdir } from "node:fs/promises"
5
+ import { fileURLToPath } from "node:url"
6
6
  async function registerCommands(botToken, clientId, projectMetaURL, guildId) {
7
- const commands = new Collection();
8
- const commandData = [];
9
- const commandsDirectory = fileURLToPath(new URL('commands', projectMetaURL));
10
- const commandFiles = await readdir(commandsDirectory);
11
- if (!commandFiles)
12
- return commands;
13
- for (const file of commandFiles) {
14
- const { default: command } = (await import(`${commandsDirectory}/${file}`));
15
- commands.set(command.command.name, command);
16
- commandData.push(command.command.toJSON());
17
- }
18
- const rest = new REST().setToken(botToken);
19
- guildId
20
- ? await rest.put(Routes.applicationGuildCommands(clientId, guildId), { body: commandData })
21
- : await rest.put(Routes.applicationCommands(clientId), { body: commandData });
22
- console.log('Registered application (/) commands.');
23
- return commands;
7
+ const commands = new Collection()
8
+ const commandData = []
9
+ const commandsDirectory = fileURLToPath(new URL("commands", projectMetaURL))
10
+ const commandFiles = await readdir(commandsDirectory)
11
+ if (!commandFiles) return commands
12
+ for (const file of commandFiles) {
13
+ const { default: command } = await import(`${commandsDirectory}/${file}`)
14
+ commands.set(command.command.name, command)
15
+ commandData.push(command.command.toJSON())
16
+ }
17
+ const rest = new REST().setToken(botToken)
18
+ guildId
19
+ ? await rest.put(Routes.applicationGuildCommands(clientId, guildId), { body: commandData })
20
+ : await rest.put(Routes.applicationCommands(clientId), { body: commandData })
21
+ console.log("Registered application (/) commands.")
22
+ return commands
24
23
  }
25
- export default registerCommands;
26
- //# sourceMappingURL=commands.js.map
24
+ export default registerCommands
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3RDLE9BQU8sRUFBMEMsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDdEYsT0FBTyxFQUErQixVQUFVLEVBQXVCLE1BQU0sWUFBWSxDQUFBO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBY3hDLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxRQUFnQixFQUFFLFFBQWdCLEVBQUUsY0FBc0IsRUFBRSxPQUFnQjtJQUMxRyxNQUFNLFFBQVEsR0FBdUIsSUFBSSxVQUFVLEVBQUUsQ0FBQTtJQUNyRCxNQUFNLFdBQVcsR0FBNkMsRUFBRSxDQUFBO0lBRWhFLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFBO0lBQzVFLE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDckQsSUFBSSxDQUFDLFlBQVk7UUFBRSxPQUFPLFFBQVEsQ0FBQTtJQUVsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLFlBQVksRUFBRTtRQUMvQixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsR0FBRyxpQkFBaUIsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFrQixDQUFBO1FBQzVGLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDM0MsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7S0FDM0M7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMxQyxPQUFPO1FBQ0wsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzNGLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDL0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFBO0lBRW5ELE9BQU8sUUFBUSxDQUFBO0FBQ2pCLENBQUM7QUFFRCxlQUFlLGdCQUFnQixDQUFBIn0=
package/dist/events.js CHANGED
@@ -1,13 +1,12 @@
1
- import { readdir } from 'node:fs/promises';
2
- import { fileURLToPath } from 'node:url';
1
+ import { readdir } from "node:fs/promises"
2
+ import { fileURLToPath } from "node:url"
3
3
  async function registerEvents(projectMetaURL) {
4
- const eventsDirectory = fileURLToPath(new URL('events', projectMetaURL));
5
- const eventFiles = await readdir(eventsDirectory).catch(console.error);
6
- if (!eventFiles)
7
- return;
8
- for (const file of eventFiles) {
9
- await import(`${eventsDirectory}/${file}`);
10
- }
4
+ const eventsDirectory = fileURLToPath(new URL("events", projectMetaURL))
5
+ const eventFiles = await readdir(eventsDirectory).catch(console.error)
6
+ if (!eventFiles) return
7
+ for (const file of eventFiles) {
8
+ await import(`${eventsDirectory}/${file}`)
9
+ }
11
10
  }
12
- export default registerEvents;
13
- //# sourceMappingURL=events.js.map
11
+ export default registerEvents
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2V2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUV4QyxLQUFLLFVBQVUsY0FBYyxDQUFDLGNBQXNCO0lBQ2xELE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQTtJQUN4RSxNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3RFLElBQUksQ0FBQyxVQUFVO1FBQUUsT0FBTTtJQUN2QixLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRTtRQUM3QixNQUFNLE1BQU0sQ0FBQyxHQUFHLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0tBQzNDO0FBQ0gsQ0FBQztBQUVELGVBQWUsY0FBYyxDQUFBIn0=
@@ -0,0 +1,29 @@
1
+ let bot
2
+ function setBot(botClient) {
3
+ bot = botClient
4
+ }
5
+ async function getGuildCache() {
6
+ if (!bot) return
7
+ const guilds = await bot.guilds.fetch()
8
+ if (!guilds) return
9
+ const guild = await guilds.first()?.fetch()
10
+ if (!guild) return
11
+ const channels = await guild.channels.fetch()
12
+ if (!channels) return
13
+ const emojis = await guild.emojis.fetch()
14
+ if (!emojis) return
15
+ const members = await guild.members.fetch()
16
+ if (!members) return
17
+ const roles = await guild.roles.fetch()
18
+ if (!roles) return
19
+ return {
20
+ guild,
21
+ channels,
22
+ emojis,
23
+ members,
24
+ roles,
25
+ }
26
+ }
27
+ export default getGuildCache
28
+ export { setBot }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpbGQtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ3VpbGQtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsSUFBSSxHQUFXLENBQUE7QUFFZixTQUFTLE1BQU0sQ0FBQyxTQUFpQjtJQUMvQixHQUFHLEdBQUcsU0FBUyxDQUFBO0FBQ2pCLENBQUM7QUFFRCxLQUFLLFVBQVUsYUFBYTtJQUMxQixJQUFJLENBQUMsR0FBRztRQUFFLE9BQU07SUFFaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3ZDLElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTTtJQUNuQixNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQTtJQUMzQyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU07SUFFbEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzdDLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTTtJQUVyQixNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDekMsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFNO0lBRW5CLE1BQU0sT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUMzQyxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU07SUFFcEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3ZDLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTTtJQUVsQixPQUFPO1FBQ0wsS0FBSztRQUNMLFFBQVE7UUFDUixNQUFNO1FBQ04sT0FBTztRQUNQLEtBQUs7S0FDTixDQUFBO0FBQ0gsQ0FBQztBQUVELGVBQWUsYUFBYSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQSJ9
package/dist/index.js CHANGED
@@ -1,23 +1,23 @@
1
- import { Client } from 'discord.js';
2
- import registerCommands from './commands.js';
3
- import registerEvents from './events.js';
4
- import { setBot } from './guildCache.js';
5
- import registerInteractionCreate from './interactionCreate.js';
6
- import registerReady from './ready.js';
7
- const botToken = process.env.BOT_TOKEN || '';
8
- const clientId = process.env.CLIENT_ID || '';
9
- const guildId = process.env.GUILD_ID || '';
1
+ import { Client } from "discord.js"
2
+ import registerCommands from "./commands.js"
3
+ import registerEvents from "./events.js"
4
+ import { setBot } from "./guild-cache.js"
5
+ import registerInteractionCreate from "./interaction-create.js"
6
+ import registerReady from "./ready.js"
7
+ const botToken = process.env.BOT_TOKEN || ""
8
+ const clientId = process.env.CLIENT_ID || ""
9
+ const guildId = process.env.GUILD_ID || ""
10
10
  async function login(botIntents, projectMetaURL, interactionCheck) {
11
- const bot = new Client(botIntents);
12
- const commands = await registerCommands(botToken, clientId, projectMetaURL, guildId);
13
- registerReady(bot);
14
- registerInteractionCreate(bot, commands, interactionCheck);
15
- void registerEvents(projectMetaURL);
16
- setBot(bot);
17
- void bot.login(botToken);
18
- return bot;
11
+ const bot = new Client(botIntents)
12
+ const commands = await registerCommands(botToken, clientId, projectMetaURL, guildId)
13
+ registerReady(bot)
14
+ registerInteractionCreate(bot, commands, interactionCheck)
15
+ void registerEvents(projectMetaURL)
16
+ setBot(bot)
17
+ void bot.login(botToken)
18
+ return bot
19
19
  }
20
- export default login;
21
- export { default as getGuildCache } from './guildCache.js';
22
- export { getChannel, isCategoryChannel, isTextChannel, throwError } from './util.js';
23
- //# sourceMappingURL=index.js.map
20
+ export default login
21
+ export { default as getGuildCache } from "./guild-cache.js"
22
+ export { getChannel, isCategoryChannel, isTextChannel, throwError } from "./util.js"
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBaUIsTUFBTSxZQUFZLENBQUE7QUFDbEQsT0FBTyxnQkFBZ0IsTUFBTSxlQUFlLENBQUE7QUFDNUMsT0FBTyxjQUFjLE1BQU0sYUFBYSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLHlCQUErQyxNQUFNLHlCQUF5QixDQUFBO0FBQ3JGLE9BQU8sYUFBYSxNQUFNLFlBQVksQ0FBQTtBQUV0QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUE7QUFDNUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFBO0FBQzVDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQTtBQUUxQyxLQUFLLFVBQVUsS0FBSyxDQUFDLFVBQXlCLEVBQUUsY0FBc0IsRUFBRSxnQkFBbUM7SUFDekcsTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDbEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUVwRixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDbEIseUJBQXlCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzFELEtBQUssY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBRW5DLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUVYLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN4QixPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUM7QUFFRCxlQUFlLEtBQUssQ0FBQTtBQUVwQixPQUFPLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTNELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQSJ9
@@ -0,0 +1,33 @@
1
+ function registerInteractionCreate(bot, commands, interactionCheck) {
2
+ bot.on("interactionCreate", async (interaction) => {
3
+ if (!interaction.isChatInputCommand()) return
4
+ const command = commands.get(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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpb24tY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ludGVyYWN0aW9uLWNyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxTQUFTLHlCQUF5QixDQUFDLEdBQVcsRUFBRSxRQUE0QixFQUFFLGdCQUFtQztJQUMvRyxHQUFHLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFO1lBQUUsT0FBTTtRQUU3QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNyRCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxFQUFFLHdCQUF3QixDQUFDLENBQUE7UUFFNUUsSUFBSSxDQUFDLENBQUMsTUFBTSxVQUFVLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzNDLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGdFQUFnRSxDQUFDLENBQUE7UUFFeEcsSUFBSTtZQUNGLE1BQU0sc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtZQUM1RixJQUFJLENBQUMsc0JBQXNCO2dCQUFFLE9BQU07WUFFbkMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1NBQy9CO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLFlBQVksR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7WUFDaEUsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLG1EQUFtRCxZQUFZLEVBQUUsQ0FBQyxDQUFBO1NBQ2pHO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxPQUFnQixFQUFFLFdBQXdDO0lBQ2xGLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXZDLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzVGLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTTtRQUVuQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7S0FDdEg7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFdBQXdDLEVBQUUsT0FBZTtJQUNqRixXQUFXLENBQUMsUUFBUTtRQUNsQixDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzFELENBQUMsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDeEYsQ0FBQztBQUVELGVBQWUseUJBQXlCLENBQUEifQ==
package/dist/ready.js CHANGED
@@ -1,7 +1,7 @@
1
1
  function registerReady(bot) {
2
- bot.once('ready', () => {
3
- console.log('I am ready!');
4
- });
2
+ bot.once("ready", () => {
3
+ console.log("I am ready!")
4
+ })
5
5
  }
6
- export default registerReady;
7
- //# sourceMappingURL=ready.js.map
6
+ export default registerReady
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVhZHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsU0FBUyxhQUFhLENBQUMsR0FBVztJQUNoQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUM1QixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxlQUFlLGFBQWEsQ0FBQSJ9
@@ -0,0 +1,10 @@
1
+ import { ChatInputCommandInteraction, Collection, SlashCommandBuilder } from "discord.js"
2
+ interface Command {
3
+ requiredRoles?: string[]
4
+ command: SlashCommandBuilder
5
+ run: (interaction: ChatInputCommandInteraction) => void | Promise<void>
6
+ }
7
+ declare type CommandsCollection = Collection<string, Command>
8
+ declare function registerCommands(botToken: string, clientId: string, projectMetaURL: string, guildId?: string): Promise<CommandsCollection>
9
+ export default registerCommands
10
+ export { Command, CommandsCollection }
@@ -1,2 +1,2 @@
1
- declare function registerEvents(projectMetaURL: string): Promise<void>;
2
- export default registerEvents;
1
+ declare function registerEvents(projectMetaURL: string): Promise<void>
2
+ export default registerEvents
@@ -0,0 +1,14 @@
1
+ import { Client } from "discord.js"
2
+ declare function setBot(botClient: Client): void
3
+ declare function getGuildCache(): Promise<
4
+ | {
5
+ guild: import("discord.js").Guild
6
+ channels: import("discord.js").Collection<string, import("discord.js").NonThreadGuildBasedChannel | null>
7
+ emojis: import("discord.js").Collection<string, import("discord.js").GuildEmoji>
8
+ members: import("discord.js").Collection<string, import("discord.js").GuildMember>
9
+ roles: import("discord.js").Collection<string, import("discord.js").Role>
10
+ }
11
+ | undefined
12
+ >
13
+ export default getGuildCache
14
+ export { setBot }
@@ -0,0 +1,8 @@
1
+ import { Client, ClientOptions } from "discord.js"
2
+ import { InteractionCheck } from "./interaction-create.js"
3
+ declare function login(botIntents: ClientOptions, projectMetaURL: string, interactionCheck?: InteractionCheck): Promise<Client>
4
+ export default login
5
+ export { Command } from "./commands.js"
6
+ export { default as getGuildCache } from "./guild-cache.js"
7
+ export { InteractionCheck } from "./interaction-create.js"
8
+ export { getChannel, isCategoryChannel, isTextChannel, throwError } from "./util.js"
@@ -0,0 +1,6 @@
1
+ import { ChatInputCommandInteraction, Client } from "discord.js"
2
+ import { CommandsCollection } from "./commands.js"
3
+ declare type InteractionCheck = (interaction: ChatInputCommandInteraction) => Promise<boolean | void>
4
+ declare function registerInteractionCreate(bot: Client, commands: CommandsCollection, interactionCheck?: InteractionCheck): void
5
+ export default registerInteractionCreate
6
+ export { InteractionCheck }
@@ -0,0 +1,3 @@
1
+ import { Client } from "discord.js"
2
+ declare function registerReady(bot: Client): void
3
+ export default registerReady
@@ -0,0 +1,15 @@
1
+ import { APIPartialChannel, BaseChannel, CategoryChannel, ChannelType, NonThreadGuildBasedChannel, TextChannel } from "discord.js"
2
+ declare 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
+ channelNameOrId: string,
10
+ channelType: NonThreadGuildBasedChannelType,
11
+ ): Promise<T | undefined>
12
+ declare function isTextChannel(channel: BaseChannel | APIPartialChannel): channel is TextChannel
13
+ declare function isCategoryChannel(channel: BaseChannel): channel is CategoryChannel
14
+ declare function throwError(error: string): never
15
+ export { getChannel, isTextChannel, isCategoryChannel, throwError }
package/dist/util.js CHANGED
@@ -1,23 +1,21 @@
1
- import { ChannelType } from 'discord.js';
2
- import getGuildCache from './guildCache.js';
1
+ import { ChannelType } from "discord.js"
2
+ import getGuildCache from "./guild-cache.js"
3
3
  async function getChannel(channelNameOrId, channelType) {
4
- const { channels } = (await getGuildCache()) || throwError('Unable to get guild cache.');
5
- let channel;
6
- channel = channels.find((channel) => (channel ? channel.name === channelNameOrId : false));
7
- if (channel)
8
- return channel.type === channelType ? channel : undefined;
9
- channel = channels.get(channelNameOrId);
10
- if (channel)
11
- return channel.type === channelType ? channel : undefined;
4
+ const { channels } = (await getGuildCache()) || throwError("Unable to get guild cache.")
5
+ let channel
6
+ channel = channels.find((channel) => (channel ? channel.name === channelNameOrId : false))
7
+ if (channel) return channel.type === channelType ? channel : undefined
8
+ channel = channels.get(channelNameOrId)
9
+ if (channel) return channel.type === channelType ? channel : undefined
12
10
  }
13
11
  function isTextChannel(channel) {
14
- return channel.type === ChannelType.GuildText;
12
+ return channel.type === ChannelType.GuildText
15
13
  }
16
14
  function isCategoryChannel(channel) {
17
- return channel.type === ChannelType.GuildCategory;
15
+ return channel.type === ChannelType.GuildCategory
18
16
  }
19
17
  function throwError(error) {
20
- throw new Error(error);
18
+ throw new Error(error)
21
19
  }
22
- export { getChannel, isTextChannel, isCategoryChannel, throwError };
23
- //# sourceMappingURL=util.js.map
20
+ export { getChannel, isTextChannel, isCategoryChannel, throwError }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUQsV0FBVyxFQUEyQyxNQUFNLFlBQVksQ0FBQTtBQUNsSSxPQUFPLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQTtBQVM1QyxLQUFLLFVBQVUsVUFBVSxDQUN2QixlQUF1QixFQUN2QixXQUEyQztJQUUzQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxNQUFNLGFBQWEsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLDRCQUE0QixDQUFDLENBQUE7SUFFeEYsSUFBSSxPQUFzRCxDQUFBO0lBQzFELE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDMUYsSUFBSSxPQUFPO1FBQUUsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUUsT0FBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFFN0UsT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDdkMsSUFBSSxPQUFPO1FBQUUsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUUsT0FBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7QUFDL0UsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLE9BQXdDO0lBQzdELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsU0FBUyxDQUFBO0FBQy9DLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE9BQW9CO0lBQzdDLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsYUFBYSxDQUFBO0FBQ25ELENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUFhO0lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDeEIsQ0FBQztBQUVELE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxDQUFBIn0=
package/package.json CHANGED
@@ -1,43 +1,42 @@
1
1
  {
2
2
  "name": "discord-bot-shared",
3
- "version": "0.5.2",
3
+ "version": "0.6.1",
4
4
  "type": "module",
5
5
  "description": "Modules for creating discord bots.",
6
6
  "repository": "github:adamhl8/discord-bot-shared",
7
7
  "author": "adamhl8",
8
8
  "license": "MIT",
9
9
  "main": "dist/index.js",
10
+ "types": "dist/types/index.d.ts",
10
11
  "files": [
11
12
  "dist/",
12
13
  "README.md",
13
14
  "LICENSE"
14
15
  ],
15
- "scripts": {
16
- "build": "tsc",
17
- "format": "prettier --write .",
18
- "lint": "eslint -f pretty"
19
- },
20
16
  "dependencies": {
21
- "@discordjs/rest": "^1.1.0",
22
- "discord-api-types": "^0.37.10",
23
- "discord.js": "^14.4.0"
17
+ "@discordjs/rest": "^1.2.0",
18
+ "discord-api-types": "^0.37.12",
19
+ "discord.js": "^14.5.0"
24
20
  },
25
21
  "devDependencies": {
26
- "@types/eslint": "^8.4.6",
27
- "@types/node": "^18.7.18",
28
- "@types/prettier": "^2.7.0",
29
- "@typescript-eslint/eslint-plugin": "^5.38.0",
30
- "@typescript-eslint/parser": "^5.38.0",
31
- "eslint": "^8.23.1",
22
+ "@types/node": "^18.8.3",
23
+ "@typescript-eslint/eslint-plugin": "^5.39.0",
24
+ "@typescript-eslint/parser": "^5.39.0",
25
+ "eslint": "^8.24.0",
32
26
  "eslint-config-prettier": "^8.5.0",
33
27
  "eslint-formatter-pretty": "^4.1.0",
34
28
  "eslint-plugin-eslint-comments": "^3.2.0",
35
29
  "eslint-plugin-sonarjs": "^0.15.0",
36
- "eslint-plugin-unicorn": "^43.0.2",
30
+ "eslint-plugin-unicorn": "^44.0.1",
37
31
  "prettier": "^2.7.1",
38
32
  "prettier-plugin-organize-imports": "^3.1.1",
39
33
  "prettier-plugin-pkg": "^0.17.1",
40
34
  "prettier-plugin-sh": "^0.12.8",
41
- "typescript": "^4.8.3"
35
+ "typescript": "^4.8.4"
36
+ },
37
+ "scripts": {
38
+ "build": "rm -rf dist && pnpm lint && tsc && pnpm format",
39
+ "format": "prettier --write .",
40
+ "lint": "eslint -f pretty ."
42
41
  }
43
- }
42
+ }
@@ -1,10 +0,0 @@
1
- import { ChatInputCommandInteraction, Collection, SlashCommandBuilder } from 'discord.js';
2
- interface Command {
3
- requiredRoles?: string[];
4
- command: SlashCommandBuilder;
5
- run: (interaction: ChatInputCommandInteraction) => void | Promise<void>;
6
- }
7
- declare type CommandsCollection = Collection<string, Command>;
8
- declare function registerCommands(botToken: string, clientId: string, projectMetaURL: string, guildId?: string): Promise<CommandsCollection>;
9
- export default registerCommands;
10
- export { Command, CommandsCollection };
@@ -1 +0,0 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAA0C,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,EAA+B,UAAU,EAAuB,MAAM,YAAY,CAAA;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAcxC,KAAK,UAAU,gBAAgB,CAAC,QAAgB,EAAE,QAAgB,EAAE,cAAsB,EAAE,OAAgB;IAC1G,MAAM,QAAQ,GAAuB,IAAI,UAAU,EAAE,CAAA;IACrD,MAAM,WAAW,GAA6C,EAAE,CAAA;IAEhE,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAA;IAC5E,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACrD,IAAI,CAAC,YAAY;QAAE,OAAO,QAAQ,CAAA;IAElC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;QAC/B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,iBAAiB,IAAI,IAAI,EAAE,CAAC,CAAkB,CAAA;QAC5F,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3C,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;KAC3C;IAED,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC1C,OAAO;QACL,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC3F,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;IAC/E,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;IAEnD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,eAAe,gBAAgB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,KAAK,UAAU,cAAc,CAAC,cAAsB;IAClD,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAA;IACxE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACtE,IAAI,CAAC,UAAU;QAAE,OAAM;IACvB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;QAC7B,MAAM,MAAM,CAAC,GAAG,eAAe,IAAI,IAAI,EAAE,CAAC,CAAA;KAC3C;AACH,CAAC;AAED,eAAe,cAAc,CAAA"}
@@ -1,11 +0,0 @@
1
- import { Client } from 'discord.js';
2
- declare function setBot(botClient: Client): void;
3
- declare function getGuildCache(): Promise<{
4
- guild: import("discord.js").Guild;
5
- channels: import("discord.js").Collection<string, import("discord.js").NonThreadGuildBasedChannel | null>;
6
- emojis: import("discord.js").Collection<string, import("discord.js").GuildEmoji>;
7
- members: import("discord.js").Collection<string, import("discord.js").GuildMember>;
8
- roles: import("discord.js").Collection<string, import("discord.js").Role>;
9
- } | undefined>;
10
- export default getGuildCache;
11
- export { setBot };
@@ -1,36 +0,0 @@
1
- let bot;
2
- function setBot(botClient) {
3
- bot = botClient;
4
- }
5
- async function getGuildCache() {
6
- if (!bot)
7
- return;
8
- const guilds = await bot.guilds.fetch();
9
- if (!guilds)
10
- return;
11
- const guild = await guilds.first()?.fetch();
12
- if (!guild)
13
- return;
14
- const channels = await guild.channels.fetch();
15
- if (!channels)
16
- return;
17
- const emojis = await guild.emojis.fetch();
18
- if (!emojis)
19
- return;
20
- const members = await guild.members.fetch();
21
- if (!members)
22
- return;
23
- const roles = await guild.roles.fetch();
24
- if (!roles)
25
- return;
26
- return {
27
- guild,
28
- channels,
29
- emojis,
30
- members,
31
- roles,
32
- };
33
- }
34
- export default getGuildCache;
35
- export { setBot };
36
- //# sourceMappingURL=guildCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guildCache.js","sourceRoot":"","sources":["../src/guildCache.ts"],"names":[],"mappings":"AAEA,IAAI,GAAW,CAAA;AAEf,SAAS,MAAM,CAAC,SAAiB;IAC/B,GAAG,GAAG,SAAS,CAAA;AACjB,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC,GAAG;QAAE,OAAM;IAEhB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACvC,IAAI,CAAC,MAAM;QAAE,OAAM;IACnB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAM;IAElB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAM;IAErB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACzC,IAAI,CAAC,MAAM;QAAE,OAAM;IAEnB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAM;IAEpB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACvC,IAAI,CAAC,KAAK;QAAE,OAAM;IAElB,OAAO;QACL,KAAK;QACL,QAAQ;QACR,MAAM;QACN,OAAO;QACP,KAAK;KACN,CAAA;AACH,CAAC;AAED,eAAe,aAAa,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,CAAA"}
package/dist/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import { Client, ClientOptions } from 'discord.js';
2
- import { InteractionCheck } from './interactionCreate.js';
3
- declare function login(botIntents: ClientOptions, projectMetaURL: string, interactionCheck?: InteractionCheck): Promise<Client>;
4
- export default login;
5
- export { Command } from './commands.js';
6
- export { default as getGuildCache } from './guildCache.js';
7
- export { InteractionCheck } from './interactionCreate.js';
8
- export { getChannel, isCategoryChannel, isTextChannel, throwError } from './util.js';
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,YAAY,CAAA;AAClD,OAAO,gBAAgB,MAAM,eAAe,CAAA;AAC5C,OAAO,cAAc,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,yBAA+C,MAAM,wBAAwB,CAAA;AACpF,OAAO,aAAa,MAAM,YAAY,CAAA;AAEtC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAA;AAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAA;AAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAA;AAE1C,KAAK,UAAU,KAAK,CAAC,UAAyB,EAAE,cAAsB,EAAE,gBAAmC;IACzG,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;IAEpF,aAAa,CAAC,GAAG,CAAC,CAAA;IAClB,yBAAyB,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAA;IAC1D,KAAK,cAAc,CAAC,cAAc,CAAC,CAAA;IAEnC,MAAM,CAAC,GAAG,CAAC,CAAA;IAEX,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACxB,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,eAAe,KAAK,CAAA;AAEpB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA"}
@@ -1,6 +0,0 @@
1
- import { ChatInputCommandInteraction, Client } from 'discord.js';
2
- import { CommandsCollection } from './commands.js';
3
- declare type InteractionCheck = (interaction: ChatInputCommandInteraction) => Promise<boolean | void>;
4
- declare function registerInteractionCreate(bot: Client, commands: CommandsCollection, interactionCheck?: InteractionCheck): void;
5
- export default registerInteractionCreate;
6
- export { InteractionCheck };
@@ -1,39 +0,0 @@
1
- function registerInteractionCreate(bot, commands, interactionCheck) {
2
- bot.on('interactionCreate', async (interaction) => {
3
- if (!interaction.isChatInputCommand())
4
- return;
5
- const command = commands.get(interaction.commandName);
6
- if (!command)
7
- return interactionReply(interaction, 'Unable to get command.');
8
- if (!(await checkRoles(command, interaction)))
9
- return interactionReply(interaction, 'You do not have one of the required roles to run this command.');
10
- try {
11
- const interactionCheckPassed = interactionCheck ? await interactionCheck(interaction) : true;
12
- if (!interactionCheckPassed)
13
- return;
14
- await command.run(interaction);
15
- }
16
- catch (error) {
17
- const errorMessage = error instanceof Error ? error.message : '';
18
- interactionReply(interaction, `There was an error while running this command.\n${errorMessage}`);
19
- }
20
- });
21
- }
22
- async function checkRoles(command, interaction) {
23
- if (!command.requiredRoles)
24
- return true;
25
- if (command.requiredRoles.length > 0) {
26
- const member = await interaction.guild?.members.fetch(interaction.user).catch(console.error);
27
- if (!member)
28
- return;
29
- return member.roles.cache.some((role) => (command.requiredRoles ? command.requiredRoles.includes(role.name) : false));
30
- }
31
- return false;
32
- }
33
- function interactionReply(interaction, message) {
34
- interaction.deferred
35
- ? void interaction.editReply(message).catch(console.error)
36
- : void interaction.reply({ content: message, ephemeral: true }).catch(console.error);
37
- }
38
- export default registerInteractionCreate;
39
- //# sourceMappingURL=interactionCreate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactionCreate.js","sourceRoot":"","sources":["../src/interactionCreate.ts"],"names":[],"mappings":"AAKA,SAAS,yBAAyB,CAAC,GAAW,EAAE,QAA4B,EAAE,gBAAmC;IAC/G,GAAG,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;QAChD,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE;YAAE,OAAM;QAE7C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QACrD,IAAI,CAAC,OAAO;YAAE,OAAO,gBAAgB,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAA;QAE5E,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3C,OAAO,gBAAgB,CAAC,WAAW,EAAE,gEAAgE,CAAC,CAAA;QAExG,IAAI;YACF,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAC5F,IAAI,CAAC,sBAAsB;gBAAE,OAAM;YAEnC,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;SAC/B;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;YAChE,gBAAgB,CAAC,WAAW,EAAE,mDAAmD,YAAY,EAAE,CAAC,CAAA;SACjG;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAgB,EAAE,WAAwC;IAClF,IAAI,CAAC,OAAO,CAAC,aAAa;QAAE,OAAO,IAAI,CAAA;IAEvC,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QACpC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5F,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;KACtH;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAwC,EAAE,OAAe;IACjF,WAAW,CAAC,QAAQ;QAClB,CAAC,CAAC,KAAK,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1D,CAAC,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACxF,CAAC;AAED,eAAe,yBAAyB,CAAA"}
package/dist/ready.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { Client } from 'discord.js';
2
- declare function registerReady(bot: Client): void;
3
- export default registerReady;
package/dist/ready.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ready.js","sourceRoot":"","sources":["../src/ready.ts"],"names":[],"mappings":"AAEA,SAAS,aAAa,CAAC,GAAW;IAChC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,eAAe,aAAa,CAAA"}
package/dist/util.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import { APIPartialChannel, BaseChannel, CategoryChannel, ChannelType, NonThreadGuildBasedChannel, TextChannel } from 'discord.js';
2
- declare type NonThreadGuildBasedChannelType = ChannelType.GuildText | ChannelType.GuildVoice | ChannelType.GuildNews | ChannelType.GuildStageVoice | ChannelType.GuildCategory;
3
- declare function getChannel<T extends NonThreadGuildBasedChannel>(channelNameOrId: string, channelType: NonThreadGuildBasedChannelType): Promise<T | undefined>;
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, isTextChannel, isCategoryChannel, throwError };
package/dist/util.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,WAAW,EAA2C,MAAM,YAAY,CAAA;AAClI,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAS3C,KAAK,UAAU,UAAU,CACvB,eAAuB,EACvB,WAA2C;IAE3C,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,aAAa,EAAE,CAAC,IAAI,UAAU,CAAC,4BAA4B,CAAC,CAAA;IAExF,IAAI,OAAsD,CAAA;IAC1D,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1F,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAE,OAAa,CAAC,CAAC,CAAC,SAAS,CAAA;IAE7E,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACvC,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAE,OAAa,CAAC,CAAC,CAAC,SAAS,CAAA;AAC/E,CAAC;AAED,SAAS,aAAa,CAAC,OAAwC;IAC7D,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,SAAS,CAAA;AAC/C,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAoB;IAC7C,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,aAAa,CAAA;AACnD,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;AACxB,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAA"}