trivious 2.0.4 → 2.0.5

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.
@@ -1,4 +1,4 @@
1
- import { T as TriviousClient } from '../../modules.types-uNvWKT4j.js';
1
+ import { T as TriviousClient } from '../../modules.types-Czzl6XR9.js';
2
2
  import 'discord.js';
3
3
  import './client.types.js';
4
4
 
@@ -1,3 +1,3 @@
1
1
  import 'discord.js';
2
2
  import './client.types.js';
3
- export { T as default } from '../../modules.types-uNvWKT4j.js';
3
+ export { T as default } from '../../modules.types-Czzl6XR9.js';
@@ -1,3 +1,3 @@
1
1
  import 'discord.js';
2
- export { B as BaseChatInputCommandData, a as BaseCommandData, b as BaseContextCommandData, C as ChatInputCommandContext, c as CommandFlags, d as CommandFunction, i as ContextCommandData, M as MessageCommandData, S as SlashCommandData, k as SlashSubcommandData, l as SlashSubcommandGroupData, U as UserCommandData } from '../../modules.types-uNvWKT4j.js';
2
+ export { B as BaseChatInputCommandData, a as BaseCommandData, b as BaseContextCommandData, C as ChatInputCommandContext, c as CommandFlags, d as CommandFunction, i as ContextCommandData, M as MessageCommandData, S as SlashCommandData, k as SlashSubcommandData, l as SlashSubcommandGroupData, U as UserCommandData } from '../../modules.types-Czzl6XR9.js';
3
3
  import '../client/client.types.js';
@@ -1,6 +1,6 @@
1
1
  import * as discord_js from 'discord.js';
2
2
  import { ChatInputCommandInteraction, Interaction, CacheType, InteractionReplyOptions, InteractionEditReplyOptions, MessagePayload } from 'discord.js';
3
- import { T as TriviousClient, S as SlashCommandData, c as CommandFlags } from '../../modules.types-uNvWKT4j.js';
3
+ import { T as TriviousClient, S as SlashCommandData, c as CommandFlags } from '../../modules.types-Czzl6XR9.js';
4
4
  import '../client/client.types.js';
5
5
 
6
6
  declare function interactionReply(options: {
@@ -1,4 +1,4 @@
1
- import { T as TriviousClient } from '../../modules.types-uNvWKT4j.js';
1
+ import { T as TriviousClient } from '../../modules.types-Czzl6XR9.js';
2
2
  import 'discord.js';
3
3
  import '../client/client.types.js';
4
4
 
@@ -34,7 +34,8 @@ async function parseSlashCommand(file, parentDir, subdirectories) {
34
34
  const indexFile = path.resolve(subdir.parentPath, subdir.name, "index.js");
35
35
  if (!existsSync(indexFile)) continue;
36
36
  const group = await importFile(indexFile);
37
- if (!group || !("context" in group) || group.context !== "SlashSubcommandGroup") continue;
37
+ if (!group || !("context" in group && "addSubcommandGroup" in command.data) || group.context !== "SlashSubcommandGroup")
38
+ continue;
38
39
  group.parent = command;
39
40
  if (!command.subcommandGroups) command.subcommandGroups = new Collection();
40
41
  await parseSlashSubcommands(join(subdir.parentPath, subdir.name), group);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/commands/registry.commands.ts"],"names":["fs"],"mappings":"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","file":"registry.commands.js","sourcesContent":["import {\n\tBaseChatInputCommandData,\n\tBaseContextCommandData,\n\tMessageCommandData,\n\tSlashCommandData,\n\tSlashSubcommandData,\n\tSlashSubcommandGroupData,\n\tTriviousClient,\n\tUserCommandData,\n} from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\nimport { importFile } from \"#utility/functions.js\";\nimport { ApplicationCommandType, Collection } from \"discord.js\";\nimport { Dirent, existsSync, promises as fs } from \"fs\";\nimport path, { join } from \"path\";\n\nfunction validateCommand<T extends BaseChatInputCommandData | BaseContextCommandData>(\n\tcommand: T,\n\texpects: (command: Partial<T>) => boolean\n): boolean {\n\tif (!(\"active\" in command && \"commandType\" in command)) return false;\n\tif (!command.active) return false;\n\treturn expects(command);\n}\n\nasync function parseSlashSubcommands(\n\tdirectory: string,\n\tdata: SlashCommandData | SlashSubcommandGroupData<boolean>\n) {\n\tconst _parentType = \"context\" in data ? \"command\" : \"group\";\n\tconst subcommands = new Collection<string, SlashSubcommandData<true, typeof _parentType>>();\n\n\tif (!(\"addSubcommand\" in data.data)) return subcommands;\n\n\tconst files = fs.glob(join(directory, \"./*.js\"));\n\tfor await (const file of files) {\n\t\tconst subcommand = await importFile<SlashSubcommandData<true, typeof _parentType>>(file);\n\t\tif (\n\t\t\t!subcommand ||\n\t\t\t!validateCommand(subcommand, (subcmd) => subcmd.context === \"SlashSubcommand\")\n\t\t)\n\t\t\tcontinue;\n\n\t\tsubcommand.parent = data;\n\t\tdata.data.addSubcommand(subcommand.data);\n\t\tsubcommands.set(subcommand.data.name, subcommand);\n\t}\n\n\tif (subcommands.size > 0) data.subcommands = subcommands;\n\treturn subcommands;\n}\n\nasync function parseSlashCommand(\n\tfile: string,\n\tparentDir: string,\n\tsubdirectories: Dirent<string>[]\n) {\n\tif (!existsSync(file)) return;\n\n\tconst command = await importFile<SlashCommandData>(file);\n\tif (\n\t\t!command ||\n\t\t!validateCommand(command, (cmd) => cmd.context === \"SlashCommand\") ||\n\t\t!(\"addSubcommand\" in command.data)\n\t)\n\t\treturn;\n\n\tawait parseSlashSubcommands(parentDir, command);\n\n\tfor (const subdir of subdirectories) {\n\t\tconst indexFile = path.resolve(subdir.parentPath, subdir.name, \"index.js\");\n\t\tif (!existsSync(indexFile)) continue;\n\n\t\tconst group = await importFile<SlashSubcommandGroupData<true>>(indexFile);\n\t\tif (!group || !(\"context\" in group) || group.context !== \"SlashSubcommandGroup\") continue;\n\n\t\tgroup.parent = command;\n\t\tif (!command.subcommandGroups) command.subcommandGroups = new Collection();\n\t\tawait parseSlashSubcommands(join(subdir.parentPath, subdir.name), group);\n\n\t\tif (group.subcommands.size > 0) {\n\t\t\tcommand.data.addSubcommandGroup(group.data);\n\t\t\tcommand.subcommandGroups.set(group.data.name, group);\n\t\t}\n\t}\n\n\treturn command;\n}\n\nasync function parseContextCommands(parentDir: string) {\n\tconst collection = new Collection<string, MessageCommandData | UserCommandData>();\n\tconst files = fs.glob(join(parentDir, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst contextCommand = await importFile<MessageCommandData | UserCommandData>(file);\n\t\tif (\n\t\t\t!contextCommand ||\n\t\t\t!validateCommand(\n\t\t\t\tcontextCommand,\n\t\t\t\t(cmd) =>\n\t\t\t\t\tcmd.commandType === ApplicationCommandType.Message ||\n\t\t\t\t\tcmd.commandType === ApplicationCommandType.User\n\t\t\t)\n\t\t)\n\t\t\tcontinue;\n\n\t\tcontextCommand.data.setType(contextCommand.commandType);\n\t\tcollection.set(contextCommand.data.name, contextCommand);\n\t}\n\n\treturn collection;\n}\n\nasync function registerDirectory(client: TriviousClient, parentDir: string) {\n\tconst entries = await fs.readdir(parentDir, { withFileTypes: true });\n\tconst subdirectories = entries.filter((entry) => entry.isDirectory());\n\n\tconst indexFile = path.resolve(parentDir, \"index.js\");\n\tconst slashCommand = await parseSlashCommand(indexFile, parentDir, subdirectories);\n\tif (slashCommand) client.stores.commands.chatInput.set(slashCommand.data.name, slashCommand);\n\n\tconst contextCommands = await parseContextCommands(parentDir);\n\tcontextCommands.forEach((cmd) => client.stores.commands.context.set(cmd.data.name, cmd));\n}\n\nexport default async function registerCommands(client: TriviousClient, directory: string) {\n\tif (!existsSync(directory))\n\t\tthrow new TriviousError(\n\t\t\t`Could not register commands; passed directory '${directory}' does not exist!`,\n\t\t\t\"Nonexistant directory passed\"\n\t\t);\n\n\tconst processedDirectories = new Set<string>();\n\n\tconst files = fs.glob(join(directory, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst parentDir = path.dirname(file);\n\n\t\tif (processedDirectories.has(parentDir)) continue;\n\t\tprocessedDirectories.add(parentDir);\n\n\t\tawait registerDirectory(client, parentDir);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/features/commands/registry.commands.ts"],"names":["fs"],"mappings":"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","file":"registry.commands.js","sourcesContent":["import {\n\tBaseChatInputCommandData,\n\tBaseContextCommandData,\n\tMessageCommandData,\n\tSlashCommandData,\n\tSlashSubcommandData,\n\tSlashSubcommandGroupData,\n\tTriviousClient,\n\tUserCommandData,\n} from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\nimport { importFile } from \"#utility/functions.js\";\nimport { ApplicationCommandType, Collection, SlashCommandBuilder } from \"discord.js\";\nimport { Dirent, existsSync, promises as fs } from \"fs\";\nimport path, { join } from \"path\";\n\nfunction validateCommand<T extends BaseChatInputCommandData | BaseContextCommandData>(\n\tcommand: T,\n\texpects: (command: Partial<T>) => boolean\n): boolean {\n\tif (!(\"active\" in command && \"commandType\" in command)) return false;\n\tif (!command.active) return false;\n\treturn expects(command);\n}\n\nasync function parseSlashSubcommands(\n\tdirectory: string,\n\tdata: SlashCommandData | SlashSubcommandGroupData<boolean>\n) {\n\tconst _parentType = \"context\" in data ? \"command\" : \"group\";\n\tconst subcommands = new Collection<string, SlashSubcommandData<true, typeof _parentType>>();\n\n\tif (!(\"addSubcommand\" in data.data)) return subcommands;\n\n\tconst files = fs.glob(join(directory, \"./*.js\"));\n\tfor await (const file of files) {\n\t\tconst subcommand = await importFile<SlashSubcommandData<true, typeof _parentType>>(file);\n\t\tif (\n\t\t\t!subcommand ||\n\t\t\t!validateCommand(subcommand, (subcmd) => subcmd.context === \"SlashSubcommand\")\n\t\t)\n\t\t\tcontinue;\n\n\t\tsubcommand.parent = data;\n\t\tdata.data.addSubcommand(subcommand.data);\n\t\tsubcommands.set(subcommand.data.name, subcommand);\n\t}\n\n\tif (subcommands.size > 0) data.subcommands = subcommands;\n\treturn subcommands;\n}\n\nasync function parseSlashCommand(\n\tfile: string,\n\tparentDir: string,\n\tsubdirectories: Dirent<string>[]\n) {\n\tif (!existsSync(file)) return;\n\n\tconst command = await importFile<SlashCommandData>(file);\n\tif (\n\t\t!command ||\n\t\t!validateCommand(command, (cmd) => cmd.context === \"SlashCommand\") ||\n\t\t!(\"addSubcommand\" in command.data)\n\t)\n\t\treturn;\n\n\tawait parseSlashSubcommands(parentDir, command);\n\n\tfor (const subdir of subdirectories) {\n\t\tconst indexFile = path.resolve(subdir.parentPath, subdir.name, \"index.js\");\n\t\tif (!existsSync(indexFile)) continue;\n\n\t\tconst group = await importFile<SlashSubcommandGroupData<true>>(indexFile);\n\t\tif (\n\t\t\t!group ||\n\t\t\t!(\"context\" in group && \"addSubcommandGroup\" in command.data) ||\n\t\t\tgroup.context !== \"SlashSubcommandGroup\"\n\t\t)\n\t\t\tcontinue;\n\n\t\tgroup.parent = command;\n\t\tif (!command.subcommandGroups) command.subcommandGroups = new Collection();\n\t\tawait parseSlashSubcommands(join(subdir.parentPath, subdir.name), group);\n\n\t\tif (group.subcommands.size > 0) {\n\t\t\t(command.data as SlashCommandBuilder).addSubcommandGroup(group.data);\n\t\t\tcommand.subcommandGroups.set(group.data.name, group);\n\t\t}\n\t}\n\n\treturn command;\n}\n\nasync function parseContextCommands(parentDir: string) {\n\tconst collection = new Collection<string, MessageCommandData | UserCommandData>();\n\tconst files = fs.glob(join(parentDir, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst contextCommand = await importFile<MessageCommandData | UserCommandData>(file);\n\t\tif (\n\t\t\t!contextCommand ||\n\t\t\t!validateCommand(\n\t\t\t\tcontextCommand,\n\t\t\t\t(cmd) =>\n\t\t\t\t\tcmd.commandType === ApplicationCommandType.Message ||\n\t\t\t\t\tcmd.commandType === ApplicationCommandType.User\n\t\t\t)\n\t\t)\n\t\t\tcontinue;\n\n\t\tcontextCommand.data.setType(contextCommand.commandType);\n\t\tcollection.set(contextCommand.data.name, contextCommand);\n\t}\n\n\treturn collection;\n}\n\nasync function registerDirectory(client: TriviousClient, parentDir: string) {\n\tconst entries = await fs.readdir(parentDir, { withFileTypes: true });\n\tconst subdirectories = entries.filter((entry) => entry.isDirectory());\n\n\tconst indexFile = path.resolve(parentDir, \"index.js\");\n\tconst slashCommand = await parseSlashCommand(indexFile, parentDir, subdirectories);\n\tif (slashCommand) client.stores.commands.chatInput.set(slashCommand.data.name, slashCommand);\n\n\tconst contextCommands = await parseContextCommands(parentDir);\n\tcontextCommands.forEach((cmd) => client.stores.commands.context.set(cmd.data.name, cmd));\n}\n\nexport default async function registerCommands(client: TriviousClient, directory: string) {\n\tif (!existsSync(directory))\n\t\tthrow new TriviousError(\n\t\t\t`Could not register commands; passed directory '${directory}' does not exist!`,\n\t\t\t\"Nonexistant directory passed\"\n\t\t);\n\n\tconst processedDirectories = new Set<string>();\n\n\tconst files = fs.glob(join(directory, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst parentDir = path.dirname(file);\n\n\t\tif (processedDirectories.has(parentDir)) continue;\n\t\tprocessedDirectories.add(parentDir);\n\n\t\tawait registerDirectory(client, parentDir);\n\t}\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  import 'discord.js';
2
- export { e as Component, f as ComponentContext, g as ComponentFlags, h as ComponentInteraction } from '../../modules.types-uNvWKT4j.js';
2
+ export { e as Component, f as ComponentContext, g as ComponentFlags, h as ComponentInteraction } from '../../modules.types-Czzl6XR9.js';
3
3
  import '../client/client.types.js';
@@ -1,4 +1,4 @@
1
- import { T as TriviousClient } from '../../modules.types-uNvWKT4j.js';
1
+ import { T as TriviousClient } from '../../modules.types-Czzl6XR9.js';
2
2
  import 'discord.js';
3
3
  import '../client/client.types.js';
4
4
 
@@ -1,5 +1,5 @@
1
1
  import '../client/client.types.js';
2
- import { f as ComponentContext } from '../../modules.types-uNvWKT4j.js';
2
+ import { f as ComponentContext } from '../../modules.types-Czzl6XR9.js';
3
3
  import 'discord.js';
4
4
 
5
5
  type ComponentTag = "awaited";
@@ -1,7 +1,7 @@
1
1
  import { ComponentCustomId } from './customid.types.js';
2
2
  import '../client/client.types.js';
3
3
  import 'discord.js';
4
- import '../../modules.types-uNvWKT4j.js';
4
+ import '../../modules.types-Czzl6XR9.js';
5
5
 
6
6
  /**
7
7
  * Decode a customId into its parts
@@ -1,3 +1,3 @@
1
1
  import 'discord.js';
2
- export { E as Event } from '../../modules.types-uNvWKT4j.js';
2
+ export { E as Event } from '../../modules.types-Czzl6XR9.js';
3
3
  import '../client/client.types.js';
@@ -1,4 +1,4 @@
1
- import { T as TriviousClient } from '../../../modules.types-uNvWKT4j.js';
1
+ import { T as TriviousClient } from '../../../modules.types-Czzl6XR9.js';
2
2
  import 'discord.js';
3
3
  import '../../client/client.types.js';
4
4
 
@@ -1,5 +1,5 @@
1
1
  import * as discord_js from 'discord.js';
2
- import { T as TriviousClient } from '../../../modules.types-uNvWKT4j.js';
2
+ import { T as TriviousClient } from '../../../modules.types-Czzl6XR9.js';
3
3
  import '../../client/client.types.js';
4
4
 
5
5
  declare const _default: {
@@ -1,4 +1,4 @@
1
- import { T as TriviousClient } from '../../modules.types-uNvWKT4j.js';
1
+ import { T as TriviousClient } from '../../modules.types-Czzl6XR9.js';
2
2
  import 'discord.js';
3
3
  import '../client/client.types.js';
4
4
 
@@ -1,3 +1,3 @@
1
1
  import 'discord.js';
2
- export { j as Module } from '../../modules.types-uNvWKT4j.js';
2
+ export { j as Module } from '../../modules.types-Czzl6XR9.js';
3
3
  import '../client/client.types.js';
@@ -1,4 +1,4 @@
1
- import { T as TriviousClient } from '../../modules.types-uNvWKT4j.js';
1
+ import { T as TriviousClient } from '../../modules.types-Czzl6XR9.js';
2
2
  import 'discord.js';
3
3
  import '../client/client.types.js';
4
4
 
package/dist/index.d.ts CHANGED
@@ -2,6 +2,6 @@ export { createActionRow, createEmbed } from './features/builders/utility.builde
2
2
  export { handleSlashCommand, interactionReply } from './features/commands/methods.commands.js';
3
3
  export { decodeCustomId, encodeCustomId } from './features/customId/methods.customid.js';
4
4
  export { CommandHashConfiguration, FeatureBasedStructure, TriviousClientCredentials, TriviousClientOptions, TriviousStructure, TypeBasedStructure } from './features/client/client.types.js';
5
- export { B as BaseChatInputCommandData, a as BaseCommandData, b as BaseContextCommandData, C as ChatInputCommandContext, c as CommandFlags, d as CommandFunction, e as Component, f as ComponentContext, g as ComponentFlags, h as ComponentInteraction, i as ContextCommandData, E as Event, M as MessageCommandData, j as Module, S as SlashCommandData, k as SlashSubcommandData, l as SlashSubcommandGroupData, T as TriviousClient, U as UserCommandData } from './modules.types-uNvWKT4j.js';
5
+ export { B as BaseChatInputCommandData, a as BaseCommandData, b as BaseContextCommandData, C as ChatInputCommandContext, c as CommandFlags, d as CommandFunction, e as Component, f as ComponentContext, g as ComponentFlags, h as ComponentInteraction, i as ContextCommandData, E as Event, M as MessageCommandData, j as Module, S as SlashCommandData, k as SlashSubcommandData, l as SlashSubcommandGroupData, T as TriviousClient, U as UserCommandData } from './modules.types-Czzl6XR9.js';
6
6
  export { ComponentCustomId, ComponentTag } from './features/customId/customid.types.js';
7
7
  import 'discord.js';
@@ -1,4 +1,4 @@
1
- import { Client, Collection, ApplicationCommandType, Interaction, SlashCommandBuilder, SlashCommandOptionsOnlyBuilder, SlashCommandSubcommandsOnlyBuilder, SlashCommandSubcommandBuilder, ChatInputCommandInteraction, SlashCommandSubcommandGroupBuilder, ContextMenuCommandBuilder, MessageContextMenuCommandInteraction, UserContextMenuCommandInteraction, AnySelectMenuInteraction, ButtonInteraction, ModalSubmitInteraction, ClientEvents } from 'discord.js';
1
+ import { Client, Collection, ApplicationCommandType, Interaction, SharedSlashCommand, SlashCommandSubcommandBuilder, ChatInputCommandInteraction, SlashCommandSubcommandGroupBuilder, ContextMenuCommandBuilder, MessageContextMenuCommandInteraction, UserContextMenuCommandInteraction, AnySelectMenuInteraction, ButtonInteraction, ModalSubmitInteraction, ClientEvents } from 'discord.js';
2
2
  import { TriviousClientOptions } from './features/client/client.types.js';
3
3
 
4
4
  declare class TriviousClient extends Client {
@@ -68,7 +68,7 @@ interface BaseContextCommandData extends BaseCommandData {
68
68
  */
69
69
  interface SlashCommandData extends BaseChatInputCommandData {
70
70
  context: "SlashCommand";
71
- data: SlashCommandBuilder | SlashCommandOptionsOnlyBuilder | SlashCommandSubcommandsOnlyBuilder;
71
+ data: SharedSlashCommand;
72
72
  subcommands?: Collection<string, SlashSubcommandData<true, "command">>;
73
73
  subcommandGroups?: Collection<string, SlashSubcommandGroupData<true>>;
74
74
  run?: CommandFunction<ChatInputCommandInteraction>;
@@ -2,7 +2,7 @@ import registerCommands from '../features/commands/registry.commands.js';
2
2
  import registerComponents from '../features/components/registry.components.js';
3
3
  import registerEvents, { bindEvents } from '../features/events/registry.events.js';
4
4
  import registerModules, { bindModules } from '../features/modules/registry.modules.js';
5
- import '../modules.types-uNvWKT4j.js';
5
+ import '../modules.types-Czzl6XR9.js';
6
6
  import 'discord.js';
7
7
  import '../features/client/client.types.js';
8
8
 
@@ -1,4 +1,4 @@
1
1
  export { CommandHashConfiguration, FeatureBasedStructure, TriviousClientCredentials, TriviousClientOptions, TriviousStructure, TypeBasedStructure } from '../features/client/client.types.js';
2
- export { B as BaseChatInputCommandData, a as BaseCommandData, b as BaseContextCommandData, C as ChatInputCommandContext, c as CommandFlags, d as CommandFunction, e as Component, f as ComponentContext, g as ComponentFlags, h as ComponentInteraction, i as ContextCommandData, E as Event, M as MessageCommandData, j as Module, S as SlashCommandData, k as SlashSubcommandData, l as SlashSubcommandGroupData, T as TriviousClient, U as UserCommandData } from '../modules.types-uNvWKT4j.js';
2
+ export { B as BaseChatInputCommandData, a as BaseCommandData, b as BaseContextCommandData, C as ChatInputCommandContext, c as CommandFlags, d as CommandFunction, e as Component, f as ComponentContext, g as ComponentFlags, h as ComponentInteraction, i as ContextCommandData, E as Event, M as MessageCommandData, j as Module, S as SlashCommandData, k as SlashSubcommandData, l as SlashSubcommandGroupData, T as TriviousClient, U as UserCommandData } from '../modules.types-Czzl6XR9.js';
3
3
  export { ComponentCustomId, ComponentTag } from '../features/customId/customid.types.js';
4
4
  import 'discord.js';
@@ -1,4 +1,4 @@
1
- import { a as BaseCommandData, S as SlashCommandData } from '../modules.types-uNvWKT4j.js';
1
+ import { a as BaseCommandData, S as SlashCommandData } from '../modules.types-Czzl6XR9.js';
2
2
  import 'discord.js';
3
3
  import '../features/client/client.types.js';
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trivious",
3
- "version": "2.0.4",
3
+ "version": "2.0.5",
4
4
  "type": "module",
5
5
  "keywords": [
6
6
  "discord-bot",