コンテンツにスキップ

PostBuilder

PostBuilderCreatePostRequest をメソッドチェーンで直感的に組み立てるビルダーです。

追加インストールは不要です。mixi2-js に同梱されています。

// ESM
import { PostBuilder } from 'mixi2-js/helpers';
// CJS
const { PostBuilder } = require('mixi2-js/helpers');

通常のオブジェクトリテラルでは、返信と引用を同時に指定してしまうミスや、マスクの設定漏れなどが起きがちです。

// ❌ inReplyToPostId と quotedPostId を同時に指定するミス
await client.createPost({
text: "Hello!",
inReplyToPostId: "p1",
quotedPostId: "p2", // 同時指定は不可
});

PostBuilderreply() を呼ぶと自動的に quote をクリアし、逆も同様です。

// ✅ 安全に構築
const request = new PostBuilder("Hello!").reply("p1").build();
import { PostBuilder } from 'mixi2-js/helpers';
// シンプルなポスト
const simple = new PostBuilder("Hello mixi2!").build();
// 返信ポスト
const reply = new PostBuilder("返信です").reply("target-post-id").build();
// 引用ポスト
const quote = new PostBuilder("引用コメント").quote("quoted-post-id").build();
// メディア付きポスト
const withMedia = new PostBuilder("画像付き!").media(["media-id-1", "media-id-2"]).build();
// センシティブマスク付き
const sensitive = new PostBuilder("NSFW コンテンツ")
.sensitive("注意: 刺激的な内容を含みます")
.build();
// ネタバレ防止マスク付き
const spoiler = new PostBuilder("ネタバレあり").spoiler("映画のネタバレを含みます").build();
// Client に渡す
await client.createPost(simple);

すべてのメソッドは this を返すため、チェーンで呼び出せます。

const request = new PostBuilder("複合ポスト")
.reply("post-id")
.media(["m1", "m2"])
.sensitive("注意")
.build();
new PostBuilder(text: string)
引数説明
textstringポスト本文(最大 149 文字)
メソッド引数戻り値説明
reply(postId)stringthis返信先を設定(quote をクリア)
quote(postId)stringthis引用先を設定(reply をクリア)
media(mediaIdList)string[]this添付メディア ID を設定(最大 4 件)
sensitive(caption?)string?thisセンシティブマスクを設定
spoiler(caption?)string?thisネタバレマスクを設定
mask(postMask)PostMaskthisカスタムマスクを設定
publishing(type)PostPublishingTypethis配信設定を変更
build()-CreatePostRequestリクエストオブジェクトを構築