UNPKG

@sapphire/framework

Version:

Discord bot framework built for advanced and amazing bots.

100 lines (97 loc) 4.92 kB
'use strict'; var pieces = require('@sapphire/pieces'); var discord_js = require('discord.js'); var _load_cjs = require('../optional-listeners/application-command-registries-listeners/_load.cjs'); var _load_cjs$1 = require('../optional-listeners/error-listeners/_load.cjs'); var _load_cjs$2 = require('../optional-listeners/message-command-listeners/_load.cjs'); var PluginManager_cjs = require('./plugins/PluginManager.cjs'); var ArgumentStore_cjs = require('./structures/ArgumentStore.cjs'); var CommandStore_cjs = require('./structures/CommandStore.cjs'); var InteractionHandlerStore_cjs = require('./structures/InteractionHandlerStore.cjs'); var ListenerStore_cjs = require('./structures/ListenerStore.cjs'); var PreconditionStore_cjs = require('./structures/PreconditionStore.cjs'); var Enums_cjs = require('./types/Enums.cjs'); var Events_cjs = require('./types/Events.cjs'); var ApplicationCommandRegistries_cjs = require('./utils/application-commands/ApplicationCommandRegistries.cjs'); var ILogger_cjs = require('./utils/logger/ILogger.cjs'); var Logger_cjs = require('./utils/logger/Logger.cjs'); require('../arguments/_load.cjs'); require('../listeners/_load.cjs'); require('../preconditions/_load.cjs'); var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); pieces.container.applicationCommandRegistries = { acquire: ApplicationCommandRegistries_cjs.acquire }; var _SapphireClient = class _SapphireClient extends discord_js.Client { constructor(options) { super(options); /** * The client's ID, used for the user prefix. * @since 1.0.0 */ this.id = null; pieces.container.client = this; for (const plugin of _SapphireClient.plugins.values(Enums_cjs.PluginHook.PreGenericsInitialization)) { plugin.hook.call(this, options); this.emit(Events_cjs.Events.PluginLoaded, plugin.type, plugin.name); } this.logger = options.logger?.instance ?? new Logger_cjs.Logger(options.logger?.level ?? ILogger_cjs.LogLevel.Info); pieces.container.logger = this.logger; if (options.enableLoaderTraceLoggings ?? pieces.container.logger.has(ILogger_cjs.LogLevel.Trace)) { pieces.Store.logger = pieces.container.logger.trace.bind(pieces.container.logger); } this.stores = pieces.container.stores; this.fetchPrefix = options.fetchPrefix ?? (() => this.options.defaultPrefix ?? null); this.disableMentionPrefix = options.disableMentionPrefix; for (const plugin of _SapphireClient.plugins.values(Enums_cjs.PluginHook.PreInitialization)) { plugin.hook.call(this, options); this.emit(Events_cjs.Events.PluginLoaded, plugin.type, plugin.name); } this.id = options.id ?? null; this.stores.register(new ArgumentStore_cjs.ArgumentStore()).register(new CommandStore_cjs.CommandStore()).register(new InteractionHandlerStore_cjs.InteractionHandlerStore()).register(new ListenerStore_cjs.ListenerStore()).register(new PreconditionStore_cjs.PreconditionStore()); if (options.loadApplicationCommandRegistriesStatusListeners !== false) { _load_cjs.loadApplicationCommandRegistriesListeners(); } if (options.loadDefaultErrorListeners !== false) { _load_cjs$1.loadErrorListeners(); } if (options.loadMessageCommandListeners === true) { _load_cjs$2.loadMessageCommandListeners(); } for (const plugin of _SapphireClient.plugins.values(Enums_cjs.PluginHook.PostInitialization)) { plugin.hook.call(this, options); this.emit(Events_cjs.Events.PluginLoaded, plugin.type, plugin.name); } } /** * Loads all pieces, then logs the client in, establishing a websocket connection to Discord. * @since 1.0.0 * @param token Token of the account to log in with. * @return Token of the account used. */ async login(token) { if (this.options.baseUserDirectory !== null) { this.stores.registerPath(this.options.baseUserDirectory); } for (const plugin of _SapphireClient.plugins.values(Enums_cjs.PluginHook.PreLogin)) { await plugin.hook.call(this, this.options); this.emit(Events_cjs.Events.PluginLoaded, plugin.type, plugin.name); } await Promise.all([...this.stores.values()].map((store) => store.loadAll())); const login = await super.login(token); for (const plugin of _SapphireClient.plugins.values(Enums_cjs.PluginHook.PostLogin)) { await plugin.hook.call(this, this.options); this.emit(Events_cjs.Events.PluginLoaded, plugin.type, plugin.name); } return login; } static use(plugin) { this.plugins.use(plugin); return this; } }; __name(_SapphireClient, "SapphireClient"); _SapphireClient.plugins = new PluginManager_cjs.PluginManager(); var SapphireClient = _SapphireClient; exports.SapphireClient = SapphireClient; //# sourceMappingURL=SapphireClient.cjs.map //# sourceMappingURL=SapphireClient.cjs.map