Para que Seyfert funcione correctamente debes actualizar tu archivo tsconfig.json y añadir emitDecoratorMetadata y experimentalDecorators para poder utilizar decoradores:
Seyfert ofrece soporte para dos tipos de aplicaciones que interactúan con la API de Discord: una basada en la gateway (websocket) y otra basada en el sistema de interacción HTTP.
Cada tipo tiene un propósito distinto, y es crucial comprender sus diferencias para elegir el que mejor se adapte a tus necesidades. Si no estás seguro de qué tipo de bot elegir, te recomendamos usar la opción Gateway.
El cliente Gateway maneja todos los eventos emitidos por Discord, como messageCreate, interactionCreate, guildCreate, ready, entre otros.
Los eventos disponibles dependen de los intents configurados en el cliente.
A diferencia del gateway, el cliente HTTP no maneja eventos.
Su funcionalidad se limita a recibir interacciones (comandos y componentes) a través de peticiones HTTP enviadas desde Discord.
Configuración
Una vez modificado el tsconfig.json para soportar decoradores, aún nos quedan algunos pasos antes de poder ejecutar la aplicación. Seyfert se ajusta para cargar tus comandos, eventos, componentes e idioma de forma automática.
Para ello es necesario crear un archivo llamado seyfert.config.mjs en la carpeta raíz de tu proyecto y añadir la configuración según el tipo de bot que elegiste:
It is possible to modify this object, but such modifications will not be
reflected outside the Node.js process, or (unless explicitly requested)
to other Worker threads.
In other words, the following example would not work:
Assigning a property on process.env will implicitly convert the value
to a string. This behavior is deprecated. Future versions of Node.js may
throw an error when the value is not a string, number, or boolean.
import { env } from'node:process';
env.test=null;
console.log(env.test);
// => 'null'
env.test=undefined;
console.log(env.test);
// => 'undefined'
Use delete to delete a property from process.env.
import { env } from'node:process';
env.TEST=1;
deleteenv.TEST;
console.log(env.TEST);
// => undefined
On Windows operating systems, environment variables are case-insensitive.
import { env } from'node:process';
env.TEST=1;
console.log(env.test);
// => 1
Unless explicitly specified when creating a Worker instance,
each Worker thread has its own copy of process.env, based on its
parent thread's process.env, or whatever was specified as the env option
to the Worker constructor. Changes to process.env will not be visible
across Worker threads, and only the main thread can make changes that
are visible to the operating system or to native add-ons. On Windows, a copy of process.env on a Worker instance operates in a case-sensitive manner
unlike the main thread.
@since ― v0.1.27
env.
string|undefined
BOT_TOKEN??"",
locations: RCLocations
locations: {
RCLocations.base: string
base:"dist", // reemplazar por "src" en caso de usar bun
RCLocations.commands?:string
commands:"commands"
},
intents?:number|IntentStrings|number[]
intents: ["Guilds"],
// Esta configuración es opcional, por si desea recibir las interacciones por HTTP
// Así se puede usar tanto la gateway como el HTTP webhook
publicKey?:string
publicKey:"...", // reemplazar por tu clave pública
port?:number
port:4444, // reemplazar por el puerto de tu aplicación
It is possible to modify this object, but such modifications will not be
reflected outside the Node.js process, or (unless explicitly requested)
to other Worker threads.
In other words, the following example would not work:
Assigning a property on process.env will implicitly convert the value
to a string. This behavior is deprecated. Future versions of Node.js may
throw an error when the value is not a string, number, or boolean.
import { env } from'node:process';
env.test=null;
console.log(env.test);
// => 'null'
env.test=undefined;
console.log(env.test);
// => 'undefined'
Use delete to delete a property from process.env.
import { env } from'node:process';
env.TEST=1;
deleteenv.TEST;
console.log(env.TEST);
// => undefined
On Windows operating systems, environment variables are case-insensitive.
import { env } from'node:process';
env.TEST=1;
console.log(env.test);
// => 1
Unless explicitly specified when creating a Worker instance,
each Worker thread has its own copy of process.env, based on its
parent thread's process.env, or whatever was specified as the env option
to the Worker constructor. Changes to process.env will not be visible
across Worker threads, and only the main thread can make changes that
are visible to the operating system or to native add-ons. On Windows, a copy of process.env on a Worker instance operates in a case-sensitive manner
unlike the main thread.
@param ― data - The runtime configuration data for http server.
@returns ― The internal runtime configuration for HTTP.
http({
token: string
token:
constBOT_TOKEN:string
BOT_TOKEN,
locations: Omit<RCLocations, "events">
locations: {
base: string
base:"dist", // reemplazar por "src" en caso de usar bun
commands?:string
commands:"commands"
},
applicationId: string
applicationId:
constBOT_APP_ID:string
BOT_APP_ID,
port?:number
port:3000, // por defecto es 8080
publicKey: string
publicKey:
constBOT_PUBLIC_KEY:string
BOT_PUBLIC_KEY,
});
Esto no es todo, también necesitas crear un archivo principal llamado index.ts dentro de la carpeta src (especificada como base en la configuración) y empezar a usar