mixi2 Developer Platform
開発ガイド

コミュニティプラグイン

コミュニティにインストールして使う Plugin アプリケーションの作成・設定・運用方法を解説します。

Plugin(コミュニティプラグイン)は、mixi2 のコミュニティにインストールして動作する拡張型アプリケーションです。Bot の機能に加え、コミュニティ固有のイベント受信や API 操作が行えます。

Bot との違い

項目BotPlugin
提供対象ユーザーユーザー + コミュニティ
受信できるイベントリプライ・メンション・DMリプライ・メンション・DM・コミュニティ内のポスト・メンバー参加/退出・インストール/アンインストール
使える API基本 API基本 API + コミュニティ操作 API
インストール不要コミュニティ管理者がインストール(最大 10 コミュニティ)

Plugin は Bot のすべての機能を持ちつつ、コミュニティ固有の機能も利用できるアプリケーションです。コミュニティに対してポストしたい、コミュニティメンバーに DM を送りたい、コミュニティのタイムラインを取得したいといった用途には Plugin を選択してください。

前提条件

Plugin アプリケーションを作成する

「アプリケーションを作成」フォームで、インストールタイプに Plugin を選択します。Plugin を選択すると「インストール範囲」の設定が表示されるので、適切なインストール範囲を選択してください。

mixi2 Developer Platform アプリケーション作成画面

インストール範囲

選択肢説明
全てのコミュニティでインストール可能任意のコミュニティ管理者がインストールできます
自分が管理人のコミュニティのみインストール可能開発者自身が管理するコミュニティのみにインストールできます

Requirement を設定する

Requirement は Plugin 固有の概念で、Plugin がコミュニティに要求するパーミッションと受信したいイベントのセットです。

Requirement の設定は「Requirement」設定画面から行います。必要なパーミッションとイベントを選択してください。

パーミッション

コミュニティに対する操作権限です。使用する API に対応したパーミッションを宣言する必要があります。

パーミッション説明対応 API
Community.Post.Readコミュニティのタイムラインを閲覧できますGetCommunityTimeline
Community.Post.Createコミュニティへポストを投稿できますCreatePostcommunity_id 指定時)
Community.Post.Restrictコミュニティのポストを非表示にできますRestrictCommunityPost
Community.MemberList.Readコミュニティのメンバー一覧を取得できますGetCommunityMemberList
Community.Post.Stamp.Createコミュニティのポストにスタンプを付与できますAddStampToPost
Community.Member.DirectMessage.Createコミュニティのメンバーに DM を送信できますSendDirectMessageToCommunityMember

イベント

受信したいイベントを宣言します。宣言していないイベントは配信されません。

イベント説明
Reaction.Post.Replied作成したポストにリプライが付いたとき
Reaction.Post.Mentionedメンション付きのポストが作成されたとき
Reaction.DirectMessage.ReceivedDM を受け取ったとき
Community.Post.Createdインストール済みコミュニティにポストが作成されたとき
Community.Member.Joinedインストール済みコミュニティにメンバーが参加・退出したとき

Plugin のインストール・アンインストールイベント(CommunityPluginManagedEvent)は Requirement への宣言なしに、Plugin アプリケーション全てに自動で配信されます。詳しくは イベント を参照してください。

バージョン管理と後方互換性

Requirement を保存するたびに新しいバージョンが作成されます。

新しいバージョンを作成しても、すでに Plugin をインストール済みのコミュニティは、コミュニティ管理者がアップデートを行うまで古いバージョンの権限のままで動作します。Requirement を変更する際は後方互換性を維持してください。

インストール済みのコミュニティとそのコミュニティが利用しているバージョンは GetCommunitiesUsingApplication で確認できます。

コミュニティへのインストール

Plugin のインストールはコミュニティ管理者が行います。Plugin のプロフィールページに表示されるインストール動線から、自身が管理するコミュニティを選択してインストールします。

開発者がコミュニティの管理者を務めている場合は、自身でインストールできます。

mixi2 アプリケーションプロフィール画面

インストール動線はモバイルアプリ(iOS / Android)でのみ表示されます。Web ブラウザ版では表示されません。

開発時の動作確認には、自身が管理するコミュニティにインストールして確認するのが有効です。

Plugin 固有の API

サンプルコードは API の使い方 と同じクライアント・認証の初期化が完了している前提で記述しています。

インストール済みコミュニティの一覧を取得する(GetCommunitiesUsingApplication)

Plugin がインストールされているコミュニティの一覧と、各コミュニティが使用しているバージョンを取得します。

resp, err := client.GetCommunitiesUsingApplication(authCtx, &application_apiv1.GetCommunitiesUsingApplicationRequest{})

ページングが必要な場合は、レスポンスの next_cursor を次のリクエストの cursor に指定してください。

コミュニティのタイムラインを取得する(GetCommunityTimeline)

インストール済みコミュニティのタイムライン(ポスト一覧)を取得します。Community.Post.Read パーミッションが必要です。

resp, err := client.GetCommunityTimeline(authCtx, &application_apiv1.GetCommunityTimelineRequest{
    CommunityId: "YOUR_COMMUNITY_ID",
    // UntilCursor: &cursor, // 古いページを取得する場合
})
フィールド説明
community_idstringタイムラインを取得するコミュニティ ID
until_cursoroptional string指定したポストより古いポストを返します
since_cursoroptional string指定したポストより新しいポストを返します

コミュニティのメンバー一覧を取得する(GetCommunityMemberList)

インストール済みコミュニティのメンバー一覧を取得します。Community.MemberList.Read パーミッションが必要です。

resp, err := client.GetCommunityMemberList(authCtx, &application_apiv1.GetCommunityMemberListRequest{
    CommunityId: "YOUR_COMMUNITY_ID",
    // PaginationCursor: &cursor, // 次ページを取得する場合
})

次ページを取得する場合は、レスポンスの next_pagination_cursorpagination_cursor に指定してください。

コミュニティのポストを非表示にする(RestrictCommunityPost)

指定したポストをコミュニティのタイムラインから非表示にします。ポストは削除されません。Community.Post.Restrict パーミッションが必要です。

_, err := client.RestrictCommunityPost(authCtx, &application_apiv1.RestrictCommunityPostRequest{
    PostId: "YOUR_POST_ID",
})

コミュニティメンバーに DM を送信する(SendDirectMessageToCommunityMember)

インストール済みコミュニティのメンバーにダイレクトメッセージを送信します。Community.Member.DirectMessage.Create パーミッションが必要です。text または media_ids のいずれかは必須です。

resp, err := client.SendDirectMessageToCommunityMember(authCtx, &application_apiv1.SendDirectMessageToCommunityMemberRequest{
    ReceiverId:  "YOUR_USER_ID",
    CommunityId: "YOUR_COMMUNITY_ID",
    Text:        proto.String("メッセージ本文"),
})

コミュニティスタンプを取得する(GetStamps)

インストール済みコミュニティ固有のスタンプを取得します。community_ids に対象コミュニティの ID を指定します。指定コミュニティには Plugin がインストールされている必要があります。

resp, err := client.GetStamps(authCtx, &application_apiv1.GetStampsRequest{
    CommunityIds: []string{"YOUR_COMMUNITY_ID"},
})

取得したコミュニティスタンプは AddStampToPost でポストに付与できます(Community.Post.Stamp.Create パーミッションが必要です)。詳しくは API の使い方 - スタンプの付与 を参照してください。

レート制限

Plugin 固有の API を含む全 RPC は、1 分あたり 20 リクエストの制限が適用されます。制限に達した場合の対処方法は レート制限 を参照してください。

次のステップ

On this page