Traduction automatiqueCette page a été traduite automatiquement. L’original anglais fait foi.Lire cette page en anglais
Client JavaScript — `@disband/bot`
Le client JavaScript officiel. Aucune dépendance de temps d'exécution - il utilise uniquement fetch et les globaux standard - et fonctionne à partir de Node.js 18+, Deno, Bun et le navigateur.
installer
npm install @disband/bot
Ou, à partir de ce monorepo :
npm install /path/to/packages/bot
Début rapide
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();
constructeur
`new Client({ token, baseUrl?, gatewayTimeout? })`
| Option | Type | Définitif | Description |
|---|---|---|---|
token |
string |
(obligatoire) | Le jeton bot de Paramètres → Bots. |
baseUrl |
string |
"https://www.disband.dev" |
API racine (modifier pour un domaine personnalisé). |
gatewayTimeout |
number |
20 |
Secondes par sondage de gateway (1-20). |
Cycle de vie
| Méthode | Description |
|---|---|
connect() |
Résout l'identité du bot (GET /api/bot/me), émet ready et lance la boucle de gateway. Résout une fois connecté. |
close() |
Arrête la boucle de gateway. |
connected |
Booléen : si la boucle est actuellement en cours d'exécution. |
Événements
Inscrivez-vous avec client.on(name, handler) ; certains sont async. once et off fonctionnent de la même manière qu'eux dans EventEmitter de Node.
| Événement | Arguments | Notes |
|---|---|---|
ready |
user |
user.id, user.userId, user.name, user.username, user.avatarUrl, user.scopes. |
messageCreate |
message |
Un nouveau message dans un serveur que le bot peut voir. |
messageUpdate |
message |
Un message a été modifié (content, editedAt mis à jour). |
messageDelete |
message |
Un message a été supprimé (content vide ; id/channelId valide). |
error |
error |
Erreurs de gateway. La boucle réessaye automatiquement à moins que le jeton ne soit invalide, auquel cas il s'arrête. |
debug |
* |
Observabilité à faible niveau. |
`Message`
| Champ | Type | Description |
|---|---|---|
id |
string |
Identifiant du message. |
channelId |
string |
Identifiant du canal. |
serverId |
string | null |
Identifiant du serveur. |
author |
object | null |
{ id, username, display_name, avatar_url, is_bot }. |
content |
string |
Texte du message. |
replyToId |
string | null |
Le message auquel cela répond, le cas échéant. |
mentions |
array |
Utilisateurs mentionnés. |
attachment |
object | null |
{ url, type } lorsque le message contient un fichier. |
createdAt |
string | null |
Heure ISO. |
editedAt |
string | null |
Heure ISO de la dernière modification. |
displayId |
number | null |
Le numéro d'affichage séquentiel. |
Méthodes - message.reply(content) (réponses dans le même canal) et le getter message.authorIsBot (vrai lorsque l'expéditeur était un bot).
Méthodes
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
Erreurs
Les erreurs lancées portent le statut et le corps :
| Erreur | Quand |
|---|---|
AuthError |
401 - jeton invalide ou révoqué. La boucle de gateway s'arrête à ce stade. |
PermissionError |
403 - manquant de portée ou de permission de rôle. |
RateLimitError |
429 - comprend des secondes retryAfter. |
HttpError |
Tout autre statut non 2xx. |
Internement, le client est un enveloppe mince sur le Référence de l’API : REST.get/post/patch/delete avec Authorization: Bot <token>.
Disband