@sapphire/framework
Version:
Discord bot framework built for advanced and amazing bots.
100 lines (97 loc) • 4.92 kB
JavaScript
'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