Discord Gateway API

WebSocket 経由で Discord ゲートウェイに接続し、メッセージ、プレゼンス、ギルド、ボイス状態イベントにリアルタイムで反応するボットを構築できます。

TsgcWSAPI_Discord

Discord ゲートウェイ WebSocket API 向けの型付き Delphi/C++ Builder クライアント — ハートビート、識別、インテント、シャーディング、イベントディスパッチを処理します。

コンポーネントクラス

TsgcWSAPI_Discord

プロトコル

Discord Gateway

プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Standard / Professional / Enterprise

コンポーネントを配置してトークンを設定し、イベントを待ち受ける

TsgcWebSocketClient と組み合わせて Discord.Token と Discord.Intents を設定し、OnDiscordMessageCreate / OnDiscordReady でゲートウェイイベントを処理します。

uses
  sgcWebSocket, sgcWebSocket_API_Discord;

var
  WSClient: TsgcWebSocketClient;
  Discord: TsgcWSAPI_Discord;
begin
  WSClient := TsgcWebSocketClient.Create(nil);

  Discord := TsgcWSAPI_Discord.Create(nil);
  Discord.Client := WSClient;
  Discord.Discord.Token := 'your-bot-token';

  Discord.OnDiscordReady := procedure(Connection: TsgcWSConnection;
    const aPayload: string)
  begin
    Memo1.Lines.Add('Discord ready');
  end;

  Discord.OnDiscordMessageCreate := procedure(Connection: TsgcWSConnection;
    const aMessage: string)
  begin
    Memo1.Lines.Add(aMessage);
  end;

  WSClient.Active := True;
end;
// uses: sgcWebSocket, sgcWebSocket_API_Discord
TsgcWebSocketClient *WSClient = new TsgcWebSocketClient(this);
TsgcWSAPI_Discord *Discord = new TsgcWSAPI_Discord(this);
Discord->Client = WSClient;
Discord->Discord->Token = "your-bot-token";

WSClient->Active = true;

主な機能

TsgcWebSocketClient 上に Discord ゲートウェイプロトコルを実装しています:IDENTIFY、RESUME、HEARTBEAT、ディスパッチルーティング。

ゲートウェイハンドシェイク

接続時にコンポーネントはトークン、インテント、プロパティとともに IDENTIFY を送信します。切断時には最後のシーケンス番号とともに RESUME を送信してイベントが失われないようにします。

ハートビート

Discord は HELLO でゲートウェイが返す間隔でオペコード 1 の HEARTBEAT メッセージを要求します。コンポーネントはこれをスケジュールし、HEARTBEAT_ACK を監視してゾンビ接続を検出します。

インテント

Discord.Intents でゲートウェイが配信するイベントカテゴリを選択します(GUILD_MESSAGES、GUILD_MEMBERS、MESSAGE_CONTENT、VOICE_STATES — 完全なインテントビットマスク)。

イベントディスパッチ

各ゲートウェイディスパッチイベントは型付きプロパティとして公開されます:OnDiscordReadyOnDiscordMessageCreateOnDiscordGuildCreateOnDiscordPresenceUpdate など。

ボイスゲートウェイフック

VOICE_STATE_UPDATEVOICE_SERVER_UPDATE イベントを受信します — ボイス WebSocket エンドポイントと組み合わせてボイスチャネルの自動化に活用できます。

シャーディング対応

ボットが推奨ギルド数を超えた場合に Discord のシャーディングゲートウェイに参加するには、Discord.ShardDiscord.ShardCount を設定します。

仕様とリファレンス

本コンポーネントが実装する API の公式情報源です。

ドキュメントとデモ

コンポーネントリファレンスへのディープリンク、すぐに実行できるデモプロジェクト、体験版のダウンロードをご利用ください。

オンラインヘルプ — API_Discord 本コンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
体験版 — sgcWebSockets sgcWebSockets 体験版パッケージで Discord ボットを構築できます。
技術ドキュメント (PDF) 機能、クイックスタート、Delphi および C++ Builder のコードサンプルと一次情報源リファレンス — 本コンポーネントのみ。
ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した包括的なマニュアルです。

Discord ボットを構築する準備はできましたか?

体験版をダウンロードして、Delphi アプリケーションから Discord ゲートウェイに接続してみてください。