Tradução automáticaEsta página foi traduzida automaticamente. O original em inglês é a versão de referência.Leia esta página em inglês
Cliente JavaScript — `@disband/bot`
O cliente oficial JavaScript. Zero dependências de tempo de execução - ele usa apenas fetch e globais padrão - e funciona a partir de Node.js 18+, Deno, Bun e o navegador.
instalar
npm install @disband/bot
Ou, deste monorepo:
npm install /path/to/packages/bot
Início 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();
construtor
`new Client({ token, baseUrl?, gatewayTimeout? })`
| Opção | Tipo | Padrão | Descrição |
|---|---|---|---|
token |
string |
(obrigatório) | O token do bot de Configurações → Bots. |
baseUrl |
string |
"https://www.disband.dev" |
API raiz (mude para um domínio personalizado). |
gatewayTimeout |
number |
20 |
Segundos por pesquisa de gateway (1-20). |
Ciclo de vida
| Método | Descrição |
|---|---|
connect() |
Resolve a identidade do robô (GET /api/bot/me), emite ready e inicia o loop do gateway. Resolve uma vez conectado. |
close() |
Para o loop do gateway. |
connected |
Booleano: se o loop está atualmente em execução. |
Eventos
Registre-se com client.on(name, handler); alguns são async. once e off funcionam da mesma forma que funcionam em EventEmitter de Node.
| Evento | Argumentos | Notas |
|---|---|---|
ready |
user |
user.id, user.userId, user.name, user.username, user.avatarUrl, user.scopes. |
messageCreate |
message |
Uma nova mensagem em um servidor que o bot pode ver. |
messageUpdate |
message |
Uma mensagem foi editada (content, editedAt atualizada). |
messageDelete |
message |
Uma mensagem foi excluída (content vazio; id/channelId válido). |
error |
error |
Erros do gateway. O loop tenta novamente automaticamente, a menos que o token seja inválido, no qual caso ele para. |
debug |
* |
Observabilidade de baixo nível. |
`Message`
| Campo | Tipo | Descrição |
|---|---|---|
id |
string |
ID da mensagem. |
channelId |
string |
ID do canal. |
serverId |
string | null |
ID do servidor. |
author |
object | null |
{ id, username, display_name, avatar_url, is_bot }. |
content |
string |
Texto da mensagem. |
replyToId |
string | null |
A mensagem para a qual esta resposta está sendo feita, se houver. |
mentions |
array |
Usuários mencionados. |
attachment |
object | null |
{ url, type } quando a mensagem tem um arquivo. |
createdAt |
string | null |
Timestamp ISO. |
editedAt |
string | null |
Timestamp ISO da última edição. |
displayId |
number | null |
O número de exibição sequencial. |
Métodos — message.reply(content) (respostas no mesmo canal) e o recuperador message.authorIsBot (verdadeiro quando o remetente foi um robô).
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
Erros
Erros lançados carregam o status e o corpo:
| Erro | Quando |
|---|---|
AuthError |
401 — token inválido ou revogado. O loop do gateway para com isso. |
PermissionError |
403 — falta permissão de escopo ou função. |
RateLimitError |
429 — inclui segundos retryAfter. |
HttpError |
Qualquer outro status não 2xx. |
Internamente, o cliente é um invólucro fino sobre o Referência da API: REST.get/post/patch/delete com Authorization: Bot <token>.
Disband