コンテンツにスキップ

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リクエストオブジェクトを構築