API クライアント
Client は 8 つの RPC メソッドを提供する gRPC API クライアントです。
セットアップ
Section titled “セットアップ”// ESMimport { OAuth2Authenticator, Client, MediaUploadType, LanguageCode } from 'mixi2-js';// CJSconst { OAuth2Authenticator, Client, MediaUploadType, LanguageCode } = require('mixi2-js');import { OAuth2Authenticator, Client, MediaUploadType, LanguageCode } from '@otoneko1102/mixi2-js';const authenticator = new OAuth2Authenticator({ clientId: process.env.CLIENT_ID!, clientSecret: process.env.CLIENT_SECRET!, tokenUrl: process.env.TOKEN_URL!,});
const client = new Client({ apiAddress: process.env.API_ADDRESS!, authenticator,});| プロパティ | 型 | 必須 | 説明 |
|---|---|---|---|
apiAddress | string | ○ | API サーバーアドレス |
authenticator | Authenticator | ○ | 認証インスタンス |
RPC メソッド一覧
Section titled “RPC メソッド一覧”| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
getUsers(userIdList) | string[] | Promise<User[]> | ユーザー情報を一括取得 |
getPosts(postIdList) | string[] | Promise<Post[]> | ポスト情報を一括取得 |
createPost(request) | CreatePostRequest | Promise<Post> | ポストを作成(返信/引用/メディア添付対応) |
initiatePostMediaUpload(request) | InitiatePostMediaUploadRequest | Promise<InitiatePostMediaUploadResponse> | メディアアップロードを開始 |
getPostMediaStatus(mediaId) | string | Promise<GetPostMediaStatusResponse> | メディアの処理状況を取得 |
sendChatMessage(request) | SendChatMessageRequest | Promise<ChatMessage> | チャットメッセージを送信 |
getStamps(request?) | GetStampsRequest? | Promise<OfficialStampSet[]> | スタンプ一覧を取得 |
addStampToPost(postId, stampId) | string, string | Promise<Post> | ポストにスタンプを付与 |
close() | - | void | gRPC 接続を閉じる |
ユーザー情報取得
Section titled “ユーザー情報取得”const users = await client.getUsers(['user-id-1', 'user-id-2']);const post = await client.createPost({ text: 'Hello mixi2!' });CreatePostRequest
Section titled “CreatePostRequest”| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
text | string | ○ | ポスト本文(最大 149 文字) |
inReplyToPostId | string | - | 返信先ポスト ID |
quotedPostId | string | - | 引用対象ポスト ID |
mediaIdList | string[] | - | 添付メディア ID(最大 4 件) |
postMask | PostMask | - | マスク設定(センシティブ/ネタバレ) |
publishingType | PostPublishingType | - | 配信設定 |
メディアアップロード → ポスト添付
Section titled “メディアアップロード → ポスト添付”const upload = await client.initiatePostMediaUpload({ contentType: 'image/png', dataSize: 1024, mediaType: MediaUploadType.IMAGE,});// upload.uploadUrl に POST でメディアデータを送信const status = await client.getPostMediaStatus(upload.mediaId);// status.status === MediaUploadStatus.COMPLETED になったら添付可能await client.createPost({ text: '画像付き!', mediaIdList: [upload.mediaId] });InitiatePostMediaUploadRequest
Section titled “InitiatePostMediaUploadRequest”| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
contentType | string | ○ | Content-Type(例: image/jpeg) |
dataSize | number | ○ | データサイズ(バイト) |
mediaType | MediaUploadType | ○ | メディア種別(IMAGE / VIDEO) |
description | string | - | メディアの説明 |
チャットメッセージ送信
Section titled “チャットメッセージ送信”const message = await client.sendChatMessage({ roomId: 'room-id', text: 'Hello!',});SendChatMessageRequest
Section titled “SendChatMessageRequest”| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
roomId | string | ○ | 送信先ルーム ID |
text | string | △ | テキスト(text または mediaId のいずれか必須) |
mediaId | string | △ | 添付メディア ID |
// スタンプ一覧取得const stamps = await client.getStamps({ officialStampLanguage: LanguageCode.JP });
// ポストにスタンプを付与await client.addStampToPost('post-id', 'stamp-id');client.close();各 RPC メソッドの詳細は 公式 API 仕様 を参照してください。