MemberEventRouter
MemberEventRouter は、CommunityMemberChangedEvent を参加(COMMUNITY_MEMBER_JOINED)と退出(COMMUNITY_MEMBER_LEFT)に分けてルーティングする EventHandler 実装です。
インストール
Section titled “インストール”追加インストールは不要です。mixi2-js に同梱されています。
// ESMimport { MemberEventRouter } from 'mixi2-js/helpers';// CJSconst { MemberEventRouter } = require('mixi2-js/helpers');import { MemberEventRouter } from '@otoneko1102/mixi2-js/helpers';基本的な使い方
Section titled “基本的な使い方”EventRouter と組み合わせる(推奨)
Section titled “EventRouter と組み合わせる(推奨)”import { EventType, StreamWatcher } from 'mixi2-js';import { EventRouter, MemberEventRouter } from 'mixi2-js/helpers';import { EventType, StreamWatcher } from '@otoneko1102/mixi2-js';import { EventRouter, MemberEventRouter } from '@otoneko1102/mixi2-js/helpers';const memberRouter = new MemberEventRouter() .onJoined(async (member, community) => { console.log(`${member.displayName} が ${community.name} に参加しました`); // 参加時のウェルカムメッセージ送信など await client.sendDirectMessageToCommunityMember({ receiverId: member.userId, communityId: community.communityId, text: `${community.name} へようこそ!`, }); }) .onLeft(async (member, community) => { console.log(`${member.displayName} が ${community.name} から退出しました`); });
const router = new EventRouter();router.on(EventType.COMMUNITY_MEMBER_CHANGED, (event) => memberRouter.handle(event));
const watcher = new StreamWatcher({ client, handler: router });await watcher.watch();単体で EventHandler として使う
Section titled “単体で EventHandler として使う”MemberEventRouter 自体が EventHandler を実装しているため、EventRouter なしで直接使えます。ただしその場合、COMMUNITY_MEMBER_CHANGED 以外のイベントは無視されます。
const memberRouter = new MemberEventRouter() .onJoined((member) => console.log("参加:", member.displayName));
const watcher = new StreamWatcher({ client, handler: memberRouter });await watcher.watch();CommunityFilter と組み合わせる
Section titled “CommunityFilter と組み合わせる”import { EventRouter, MemberEventRouter, CommunityFilter } from 'mixi2-js/helpers';
const memberRouter = new MemberEventRouter() .onJoined((member, community) => { console.log(`${community.name}: ${member.displayName} 参加`); });
const router = new EventRouter();router.on(EventType.COMMUNITY_MEMBER_CHANGED, (e) => memberRouter.handle(e));
// 特定コミュニティのみ処理const filter = new CommunityFilter(router, ['community-id-1']);await watcher.watch(filter);API リファレンス
Section titled “API リファレンス”コンストラクタ
Section titled “コンストラクタ”new MemberEventRouter()引数はありません。
| メソッド | コールバック引数 | 戻り値 | 説明 |
|---|---|---|---|
onJoined(listener) | (member: User, community: Community, event) | this | コミュニティへの参加時に呼ばれるハンドラを登録 |
onLeft(listener) | (member: User, community: Community, event) | this | コミュニティからの退出時に呼ばれるハンドラを登録 |
handle(event) | - | - | EventHandler インターフェースの実装 |