コンテンツにスキップ

MemberEventRouter

MemberEventRouter は、CommunityMemberChangedEvent を参加(COMMUNITY_MEMBER_JOINED)と退出(COMMUNITY_MEMBER_LEFT)に分けてルーティングする EventHandler 実装です。

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

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

EventRouter と組み合わせる(推奨)

Section titled “EventRouter と組み合わせる(推奨)”
import { EventType, StreamWatcher } from 'mixi2-js';
import { EventRouter, MemberEventRouter } from '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();

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();
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);
new MemberEventRouter()

引数はありません。

メソッドコールバック引数戻り値説明
onJoined(listener)(member: User, community: Community, event)thisコミュニティへの参加時に呼ばれるハンドラを登録
onLeft(listener)(member: User, community: Community, event)thisコミュニティからの退出時に呼ばれるハンドラを登録
handle(event)--EventHandler インターフェースの実装