Traducción automáticaEsta página se tradujo automáticamente. El original en inglés es la versión de referencia.Leer esta página en inglés
Cliente JavaScript — `@disband/bot`
El cliente oficial JavaScript. Sin dependencias de tiempo de ejecución cero: solo utiliza fetch y globales estándar, y funciona desde Node.js 18+, Deno, Bun y el navegador.
instalar
npm install @disband/bot
O, desde este monorepo:
npm install /path/to/packages/bot
Inicio rápido
import { Client } from "@disband/bot";
const client = new Client({ token: process.env.DISBAND_BOT_TOKEN });
client.on("ready", (me) => {
console.log(`Logged in as ${me.name} (${me.scopes.join(", ")})`);
});
client.on("messageCreate", async (message) => {
if (message.author?.is_bot) return;
if (message.content !== "!ping") return;
await message.reply("pong");
});
await client.connect();
Constructor
`new Client({ token, baseUrl?, gatewayTimeout? })`
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
token |
string |
(obligatorio) | El token del bot de Configuración → Bots. |
baseUrl |
string |
"https://www.disband.dev" |
API raíz (cambia para un dominio personalizado). |
gatewayTimeout |
number |
20 |
Segundos por encuesta de puerta de enlace (1-20). |
Ciclo de vida
| Método | Descripción |
|---|---|
connect() |
Resuelve la identidad del bot (GET /api/bot/me), emite ready y inicia el bucle del gateway. Resuelve una vez conectado. |
close() |
Detiene el bucle del gateway. |
connected |
Booleano: si el bucle está actualmente en ejecución. |
Eventos
Regístrese con client.on(name, handler); algunos son async. once y off funcionan de la misma manera que lo hacen en EventEmitter de Node.
| Evento | Argumentos | Notas |
|---|---|---|
ready |
user |
user.id, user.userId, user.name, user.username, user.avatarUrl, user.scopes. |
messageCreate |
message |
Un nuevo mensaje en un servidor que el bot puede ver. |
messageUpdate |
message |
Se ha editado un mensaje (content, editedAt actualizado). |
messageDelete |
message |
Se ha eliminado un mensaje (content vacío; id/channelId válido). |
error |
error |
Errores del gateway. El bucle intenta de nuevo automáticamente a menos que el token sea inválido, en cuyo caso se detiene. |
debug |
* |
Observabilidad de bajo nivel. |
`Message`
| Campo | Tipo | Descripción |
|---|---|---|
id |
string |
ID del mensaje. |
channelId |
string |
ID del canal. |
serverId |
string | null |
ID del servidor. |
author |
object | null |
{ id, username, display_name, avatar_url, is_bot }. |
content |
string |
Texto del mensaje. |
replyToId |
string | null |
El mensaje a al que responde, si corresponde. |
mentions |
array |
Usuarios mencionados. |
attachment |
object | null |
{ url, type } cuando el mensaje tiene un archivo. |
createdAt |
string | null |
Fecha y hora ISO. |
editedAt |
string | null |
Fecha y hora ISO de la última edición. |
displayId |
number | null |
El número de visualización secuencial. |
Métodos — message.reply(content) (respuestas en el mismo canal) y el recuperador de message.authorIsBot (verdadero cuando el remitente era un bot).
Métodos
await client.sendMessage(channelId, "Deploy finished"); // send
await message.reply("pong"); // reply to a received message
const messages = await client.listMessages(channelId, { limit: 25, before: "…" });
const channels = await client.listChannels(serverId);
const members = await client.listMembers(serverId);
const channelId = await client.createChannel(serverId, "deploys", { type: "text", categoryId: null });
await client.renameChannel(channelId, "deploys-2");
await client.deleteChannel(channelId);
await client.leaveServer(serverId);
const invite = await client.createInvite(serverId, ["messages.read", "messages.write"]);
// invite.invite_url -> send to the server owner
Errores
Los errores lanzados llevan el estado y el cuerpo:
| Error | Cuando |
|---|---|
AuthError |
401 - token inválido o revocado. El bucle del gateway se detiene en este punto. |
PermissionError |
403 - falta de permiso de alcance o rol. |
RateLimitError |
429 - incluye segundos retryAfter. |
HttpError |
Cualquier otro estado no 2xx. |
Internamente, el cliente es un envoltorio delgado sobre el Referencia de la API: REST.get/post/patch/delete con Authorization: Bot <token>.
Disband