自動翻訳このページは自動翻訳されました。英語の原文が正式な情報源です。このページを英語で読む
JavaScript クライアント — `@disband/bot`
公式のJavaScript クライアント。ゼロランタイム依存関係 - fetchと標準グローバルのみを使用し、Node.js 18+、Deno、Bun、およびブラウザから動作します。
設置する
npm install @disband/bot
または、このモノリポジトリから:
npm install /path/to/packages/bot
クイックスタート
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();
建設者
`new Client({ token, baseUrl?, gatewayTimeout? })`
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
token |
string |
(必須) | 設定 → ボットからのボットトークン。 |
baseUrl |
string |
"https://www.disband.dev" |
API root (カスタムドメインに変更してください)。 |
gatewayTimeout |
number |
20 |
ゲートウェイのポーリングあたりの秒数 (1–20)。 |
ライフサイクル
| 方法 | 説明 |
|---|---|
connect() |
ボットアイデンティティ(GET /api/bot/me)を解決し、readyを発射し、ゲートウェイループを開始します。接続されると一度解決します。 |
close() |
ゲートウェイループを停止します。 |
connected |
ボolean:ループが現在実行されているかどうか。 |
イベント
client.on(name, handler)に登録してください。一部はasyncです。onceとoffはNodeのEventEmitterと同じように機能します。
| イベント | 引数 | メモ |
|---|---|---|
ready |
user |
user.id, user.userId, user.name, user.username, user.avatarUrl, user.scopes. |
messageCreate |
message |
ボットが見ることができるサーバー内の新しいメッセージ。 |
messageUpdate |
message |
メッセージが編集されました(content、editedAtが更新されました)。 |
messageDelete |
message |
メッセージが削除されました(contentは空で、id/channelIdは有効です)。 |
error |
error |
ゲートウェイエラー。トークンが無効でない限り、ループは自動的に再試行され、その場合、停止します。 |
debug |
* |
低レベルの可観測性。 |
`Message`
| フィールド | タイプ | 説明 |
|---|---|---|
id |
string |
メッセージID。 |
channelId |
string |
チャンネルID。 |
serverId |
string | null |
サーバーID。 |
author |
object | null |
{ id, username, display_name, avatar_url, is_bot }. |
content |
string |
メッセージテキスト。 |
replyToId |
string | null |
このメッセージに返信するメッセージ(該当する場合)。 |
mentions |
array |
言及されたユーザー。 |
attachment |
object | null |
{ url, type } メッセージにファイルがある場合。 |
createdAt |
string | null |
ISOタイムスタンプ。 |
editedAt |
string | null |
最後の編集時のISOタイムスタンプ。 |
displayId |
number | null |
順次表示番号。 |
方法 — message.reply(content)(同じチャンネルでの返信)とmessage.authorIsBotゲッター(送信者がボットであった場合の真)。
方法
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
エラー
スローされたエラーには、ステータスとボディが含まれます。
| エラー | いつ |
|---|---|
AuthError |
401 — 無効または取り消されたトークンです。ゲートウェイループはこの時点で停止します。 |
PermissionError |
403 — 範囲または役割の権限がありません。 |
RateLimitError |
429 — retryAfter秒を含みます。 |
HttpError |
他の2xx以外のステータス。 |
内部的には、クライアントはAPIリファレンスの上に薄いラップラーです。REST.get/post/patch/deleteとAuthorization: Bot <token>があります。
Disband