Skip to content

Commit

Permalink
Add RaidEventHandler event sub to bot
Browse files Browse the repository at this point in the history
  • Loading branch information
itanex committed Mar 5, 2024
1 parent 59bd8d1 commit 3867694
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 0 deletions.
17 changes: 17 additions & 0 deletions bot/chat-bot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
EventSubChannelCheerEvent,
EventSubChannelFollowEvent,
EventSubChannelModeratorEvent,
EventSubChannelRaidEvent,
EventSubChannelRedemptionAddEvent,
EventSubChannelUnbanEvent,
EventSubStreamOfflineEvent,
Expand All @@ -39,6 +40,7 @@ import {
CheerEventHandler,
FollowerEventHandler,
ModeratorEventHandler,
RaidEventHandler,
StreamEventHandler,
} from './event-sub-handlers';
import InjectionTypes from '../dependency-management/types';
Expand All @@ -57,6 +59,7 @@ export default class ChatBot {
@inject(CheerEventHandler) private cheerEventHandler: CheerEventHandler,
@inject(FollowerEventHandler) private followerEventHandler: FollowerEventHandler,
@inject(ModeratorEventHandler) private moderatorEventHandler: ModeratorEventHandler,
@inject(RaidEventHandler) private raidEventHandler: RaidEventHandler,
@inject(StreamEventHandler) private streamEventHandler: StreamEventHandler,
@inject(InjectionTypes.Logger) private logger: winston.Logger,
) {
Expand Down Expand Up @@ -156,6 +159,20 @@ export default class ChatBot {
},
);

this.eventSubWsListener.onChannelRaidTo(
environment.twitchBot.broadcaster.id,
(event: EventSubChannelRaidEvent): void => {
this.raidEventHandler.raid(event);
},
);

this.eventSubWsListener.onChannelRaidFrom(
environment.twitchBot.broadcaster.id,
(event: EventSubChannelRaidEvent): void => {
this.raidEventHandler.raid(event);
},
);

this.eventSubWsListener.onStreamOnline(
environment.twitchBot.broadcaster.id,
(event: EventSubStreamOnlineEvent): void => {
Expand Down
2 changes: 2 additions & 0 deletions bot/event-sub-handlers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import ChannelPointEventHandler from './channel-point-event.handler';
import CheerEventHandler from './cheer-event.handler';
import FollowerEventHandler from './follow-event.handler';
import ModeratorEventHandler from './moderator-event.handler';
import RaidEventHandler from './raid-event.handler';
import StreamEventHandler from './stream-event.handler';

export {
Expand All @@ -11,5 +12,6 @@ export {
CheerEventHandler,
FollowerEventHandler,
ModeratorEventHandler,
RaidEventHandler,
StreamEventHandler,
};
28 changes: 28 additions & 0 deletions bot/event-sub-handlers/raid-event.handler.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { EventSubChannelRaidEvent } from '@twurple/eventsub-base';
import { inject, injectable } from 'inversify';
import winston from 'winston';
import InjectionTypes from '../../dependency-management/types';
import { FollowEvent, RaidEvent } from '../../database';

@injectable()
export default class RaidEventHandler {
constructor(
@inject(InjectionTypes.Logger) private logger: winston.Logger,
) {
}

/**
* Records the event of a user being added as a moderator to the channel
* @param event Raid Event
*/
async raid(event: EventSubChannelRaidEvent): Promise<void> {
return RaidEvent
.raid(event)
.catch((reason: any) => {
this.logger.error(`Unable to store Raid event in DB >> ${reason}`);
})
.then(() => {
this.logger.info(`${event.raidingBroadcasterDisplayName} raided ${event.raidedBroadcasterDisplayName} on ${(new Date()).toDateString()}`);
});
}
}
2 changes: 2 additions & 0 deletions dependency-management/inversify.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ import {
CheerEventHandler,
FollowerEventHandler,
ModeratorEventHandler,
RaidEventHandler,
StreamEventHandler,
} from '../bot/event-sub-handlers';
import Broadcaster from '../bot/utilities/broadcaster';
Expand Down Expand Up @@ -117,6 +118,7 @@ SAContainer.bind(ChannelPointEventHandler).toSelf();
SAContainer.bind(CheerEventHandler).toSelf();
SAContainer.bind(FollowerEventHandler).toSelf();
SAContainer.bind(ModeratorEventHandler).toSelf();
SAContainer.bind(RaidEventHandler).toSelf();
SAContainer.bind(StreamEventHandler).toSelf();

// Bind dependencies to container
Expand Down

0 comments on commit 3867694

Please sign in to comment.