Skip to content

Commit

Permalink
refactor: say() to check chatters so its not checked manually elsewhere
Browse files Browse the repository at this point in the history
  • Loading branch information
Geczy committed Sep 9, 2023
1 parent 16bff04 commit 0bb3246
Show file tree
Hide file tree
Showing 16 changed files with 88 additions and 142 deletions.
3 changes: 0 additions & 3 deletions docker-compose-dev.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
services:
twitch-chat:
platform: linux/arm64
image: "ghcr.io/dotabod/twitch-chat:v2.0"
volumes:
- ./packages/twitch/chat/src:/app/packages/twitch/chat/src

twitch-events:
platform: linux/arm64
image: "ghcr.io/dotabod/twitch-events:v2.0"
volumes:
- ./packages/twitch/events/src:/app/packages/twitch/events/src

dota:
platform: linux/arm64
image: "ghcr.io/dotabod/dota:v2.0"
volumes:
- ./packages/dota/src:/app/packages/dota/src
Expand Down
48 changes: 20 additions & 28 deletions packages/dota/src/dota/GSIHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ export class GSIHandler {
.then(({ record }) => {
server.io.to(this.client.token).emit('update-wl', record)
})
.catch((e) => {
.catch(() => {
// Stream not live
// console.error('[MMR] emitWLUpdate Error getting WL', {e: e?.message || e})
})
Expand Down Expand Up @@ -230,7 +230,7 @@ export class GSIHandler {
}, 60 * 2000)
}
})
.catch((e) => {
.catch(() => {
// stream not live
})
}
Expand Down Expand Up @@ -544,14 +544,10 @@ export class GSIHandler {
return
}

const tellChatBets = getValueOrDefault(DBSettings.tellChatBets, client.settings)
const chattersEnabled = getValueOrDefault(DBSettings.chatter, client.settings)

if (chattersEnabled && tellChatBets) {
say(client, t('bets.open', { emote: 'peepoGamble', lng: client.locale }), {
delay: false,
})
}
say(client, t('bets.open', { emote: 'peepoGamble', lng: client.locale }), {
delay: false,
key: DBSettings.tellChatBets,
})
this.openingBets = false
logger.info('[BETS] open bets', {
event: 'open_bets',
Expand Down Expand Up @@ -642,11 +638,15 @@ export class GSIHandler {
})

if (this.client.stream_online) {
const tellChatBets = getValueOrDefault(DBSettings.tellChatBets, this.client.settings)
const chattersEnabled = getValueOrDefault(DBSettings.chatter, this.client.settings)
if (chattersEnabled && tellChatBets) {
say(this.client, t('bets.notScored', { emote: 'D:', lng: this.client.locale, matchId }))
}
say(
this.client,
t('bets.notScored', {
emote: 'D:',
lng: this.client.locale,
matchId,
key: DBSettings.tellChatBets,
}),
)
await refundTwitchBet(this.getChannelId())
}
await this.resetClientState()
Expand Down Expand Up @@ -707,10 +707,12 @@ export class GSIHandler {
? t('bets.won', { lng: this.client.locale, emote: 'Happi' })
: t('bets.lost', { lng: this.client.locale, emote: 'Happi' })

say(this.client, message, { delay: false })
say(this.client, message, { delay: false, chattersKey: 'matchOutcome' })

if (!betsEnabled) {
logger.info('Bets are not enabled, stopping here', { name: this.client.name })
logger.info('Bets are not enabled, stopping here', {
name: this.client.name,
})
this.resetClientState().catch(() => {
//
})
Expand Down Expand Up @@ -739,15 +741,6 @@ export class GSIHandler {
this.resetClientState().catch((e) => {
logger.error('Error resetting client state', { e })
})

const chattersEnabled = getValueOrDefault(DBSettings.chatter, this.client.settings)
const {
matchOutcome: { enabled: chatterEnabled },
} = getValueOrDefault(DBSettings.chatters, this.client.settings)

if (!chattersEnabled || !chatterEnabled) {
return
}
})
}, getStreamDelay(this.client.settings))
}
Expand Down Expand Up @@ -780,8 +773,7 @@ export class GSIHandler {

if (this.client.stream_online) {
const tellChatBets = getValueOrDefault(DBSettings.tellChatBets, this.client.settings)
const chattersEnabled = getValueOrDefault(DBSettings.chatter, this.client.settings)
if (chattersEnabled && tellChatBets) {
if (tellChatBets) {
say(
this.client,
t('bets.notScored', { emote: 'D:', lng: this.client.locale, matchId }),
Expand Down
16 changes: 5 additions & 11 deletions packages/dota/src/dota/events/gsi-events/event.aegis_denied.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { DBSettings, getValueOrDefault } from '@dotabod/settings'
import { t } from 'i18next'

import { DotaEvent, DotaEventTypes } from '../../../types.js'
Expand All @@ -18,15 +17,10 @@ eventHandler.registerEvent(`event:${DotaEventTypes.AegisDenied}`, {

const heroName = getHeroNameOrColor(matchPlayers[event.player_id]?.heroid ?? 0, event.player_id)

const chattersEnabled = getValueOrDefault(DBSettings.chatter, dotaClient.client.settings)
const {
roshDeny: { enabled: chatterEnabled },
} = getValueOrDefault(DBSettings.chatters, dotaClient.client.settings)

if (chattersEnabled && chatterEnabled)
say(
dotaClient.client,
t('aegis.denied', { lng: dotaClient.client.locale, heroName, emote: 'ICANT' }),
)
say(
dotaClient.client,
t('aegis.denied', { lng: dotaClient.client.locale, heroName, emote: 'ICANT' }),
{ chattersKey: 'roshDeny' },
)
},
})
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { DBSettings, getValueOrDefault } from '@dotabod/settings'
import { t } from 'i18next'

import RedisClient from '../../../db/RedisClient.js'
Expand Down Expand Up @@ -82,14 +81,9 @@ eventHandler.registerEvent(`event:${DotaEventTypes.AegisPickedUp}`, {
const redisClient = RedisClient.getInstance()
await redisClient.client.json.set(`${dotaClient.getToken()}:aegis`, '$', res)

const chattersEnabled = getValueOrDefault(DBSettings.chatter, dotaClient.client.settings)
const {
roshPickup: { enabled: chatterEnabled },
} = getValueOrDefault(DBSettings.chatters, dotaClient.client.settings)

if (chattersEnabled && chatterEnabled) {
say(dotaClient.client, generateAegisMessage(res, dotaClient.client.locale))
}
say(dotaClient.client, generateAegisMessage(res, dotaClient.client.locale), {
chattersKey: 'roshPickup',
})

emitAegisEvent(res, dotaClient.getToken())
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { DBSettings, getValueOrDefault } from '@dotabod/settings'
import { t } from 'i18next'

import { DotaEvent, DotaEventTypes } from '../../../types.js'
Expand All @@ -15,12 +14,6 @@ eventHandler.registerEvent(`event:${DotaEventTypes.BountyPickup}`, {
if (!dotaClient.client.stream_online) return
if (Number(dotaClient.client.gsi?.map?.clock_time) > 120) return

const chattersEnabled = getValueOrDefault(DBSettings.chatter, dotaClient.client.settings)
const {
bounties: { enabled: chatterEnabled },
} = getValueOrDefault(DBSettings.chatters, dotaClient.client.settings)
if (!chattersEnabled || !chatterEnabled) return

const playingTeam =
(await redisClient.client.get(`${dotaClient.client.token}:playingTeam`)) ??
dotaClient.client.gsi?.player?.team_name
Expand Down Expand Up @@ -80,6 +73,7 @@ eventHandler.registerEvent(`event:${DotaEventTypes.BountyPickup}`, {
totalBounties: dotaClient.bountyHeroNames.length,
heroNames: bountyHeroNamesString,
}),
{ chattersKey: 'bounties' },
)
dotaClient.bountyHeroNames = []
}, 15000)
Expand Down
12 changes: 3 additions & 9 deletions packages/dota/src/dota/events/gsi-events/event.roshan_killed.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { DBSettings, getValueOrDefault } from '@dotabod/settings'
import { t } from 'i18next'

import RedisClient from '../../../db/RedisClient.js'
Expand Down Expand Up @@ -100,11 +99,6 @@ eventHandler.registerEvent(`event:${DotaEventTypes.RoshanKilled}`, {
const minDate = dotaClient.addSecondsToNow(minS)
const maxDate = dotaClient.addSecondsToNow(maxS)

const chattersEnabled = getValueOrDefault(DBSettings.chatter, dotaClient.client.settings)
const {
roshanKilled: { enabled: chatterEnabled },
} = getValueOrDefault(DBSettings.chatters, dotaClient.client.settings)

const redisClient = RedisClient.getInstance()
// TODO: move this to a redis handler
const redisJson = (await redisClient.client.json.get(
Expand All @@ -123,9 +117,9 @@ eventHandler.registerEvent(`event:${DotaEventTypes.RoshanKilled}`, {

await redisClient.client.json.set(`${dotaClient.getToken()}:roshan`, '$', res)

if (chattersEnabled && chatterEnabled) {
say(dotaClient.client, generateRoshanMessage(res, dotaClient.client.locale))
}
say(dotaClient.client, generateRoshanMessage(res, dotaClient.client.locale), {
chattersKey: 'roshanKilled',
})

emitRoshEvent(res, dotaClient.getToken())
},
Expand Down
10 changes: 2 additions & 8 deletions packages/dota/src/dota/events/gsi-events/event.tip.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { DBSettings, getValueOrDefault } from '@dotabod/settings'
import { t } from 'i18next'

import { DotaEvent, DotaEventTypes } from '../../../types.js'
Expand All @@ -14,13 +13,6 @@ eventHandler.registerEvent(`event:${DotaEventTypes.Tip}`, {
if (!dotaClient.client.stream_online) return
if (!isPlayingMatch(dotaClient.client.gsi)) return

const chattersEnabled = getValueOrDefault(DBSettings.chatter, dotaClient.client.settings)
const {
tip: { enabled: chatterEnabled },
} = getValueOrDefault(DBSettings.chatters, dotaClient.client.settings)

if (!chattersEnabled || !chatterEnabled) return

const { matchPlayers } = await getAccountsFromMatch({ gsi: dotaClient.client.gsi })

const heroName = getHeroNameOrColor(
Expand All @@ -35,6 +27,7 @@ eventHandler.registerEvent(`event:${DotaEventTypes.Tip}`, {
say(
dotaClient.client,
t('tip.from', { emote: 'ICANT', lng: dotaClient.client.locale, heroName }),
{ chattersKey: 'tip' },
)
}

Expand All @@ -47,6 +40,7 @@ eventHandler.registerEvent(`event:${DotaEventTypes.Tip}`, {
say(
dotaClient.client,
t('tip.to', { emote: 'PepeLaugh', lng: dotaClient.client.locale, heroName: toHero }),
{ chattersKey: 'tip' },
)
}
},
Expand Down
3 changes: 1 addition & 2 deletions packages/dota/src/dota/events/gsi-events/hero.name.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ eventHandler.registerEvent(`hero:name`, {
}

const tellChatBets = getValueOrDefault(DBSettings.tellChatBets, dotaClient.client.settings)
const chattersEnabled = getValueOrDefault(DBSettings.chatter, dotaClient.client.settings)
if (tellChatBets && chattersEnabled)
if (tellChatBets)
say(
dotaClient.client,
t('bets.remade', {
Expand Down
8 changes: 1 addition & 7 deletions packages/dota/src/dota/events/gsi-events/hero.smoked.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { DBSettings, getValueOrDefault } from '@dotabod/settings'
import { t } from 'i18next'

import { GSIHandler, redisClient } from '../../GSIHandler.js'
Expand All @@ -11,12 +10,6 @@ eventHandler.registerEvent(`hero:smoked`, {
handler: async (dotaClient: GSIHandler, isSmoked: boolean) => {
if (!dotaClient.client.stream_online) return
if (!isPlayingMatch(dotaClient.client.gsi)) return
const chatterEnabled = getValueOrDefault(DBSettings.chatter, dotaClient.client.settings)
if (!chatterEnabled) return

const chatters = getValueOrDefault(DBSettings.chatters, dotaClient.client.settings)

if (!chatters.smoke.enabled) return

if (isSmoked) {
const playingHero = (await redisClient.client.get(
Expand All @@ -29,6 +22,7 @@ eventHandler.registerEvent(`hero:smoked`, {
say(
dotaClient.client,
t('chatters.smoked', { emote: 'Shush', heroName, lng: dotaClient.client.locale }),
{ chattersKey: 'smoke' },
)
}
},
Expand Down
8 changes: 2 additions & 6 deletions packages/dota/src/dota/events/gsi-events/map.paused.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { DBSettings, getValueOrDefault } from '@dotabod/settings'
import { t } from 'i18next'

import { GSIHandler } from '../../GSIHandler.js'
Expand All @@ -12,18 +11,15 @@ eventHandler.registerEvent(`map:paused`, {
if (!dotaClient.client.stream_online) return

if (!isPlayingMatch(dotaClient.client.gsi)) return
const chattersEnabled = getValueOrDefault(DBSettings.chatter, dotaClient.client.settings)
const {
pause: { enabled: chatterEnabled },
} = getValueOrDefault(DBSettings.chatters, dotaClient.client.settings)

// Necessary to let the frontend know, so we can pause any rosh / aegis / etc timers
server.io.to(dotaClient.getToken()).emit('paused', isPaused)

if (isPaused && chattersEnabled && chatterEnabled) {
if (isPaused) {
say(
dotaClient.client,
t('chatters.pause', { emote: 'PauseChamp', lng: dotaClient.client.locale }),
{ chattersKey: 'pause' },
)
}
},
Expand Down
18 changes: 8 additions & 10 deletions packages/dota/src/dota/events/gsi-events/newdata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,15 @@ function chatterMatchFound(client: SocketClient) {

const commands = DelayedCommands.filter((cmd) => getValueOrDefault(cmd.key, client.settings))

const chattersEnabled = getValueOrDefault(DBSettings.chatter, client.settings)
const {
commandsReady: { enabled: chatterEnabled },
} = getValueOrDefault(DBSettings.chatters, client.settings)

if (commands.length && chattersEnabled && chatterEnabled) {
if (commands.length) {
say(
client,
t('matchFound', {
commandList: commands.map((c) => c.command).join(' · '),
lng: client.locale,
}),
{
chattersKey: 'commandsReady',
delay: false,
},
)
Expand All @@ -53,12 +49,15 @@ async function saveMatchData(client: SocketClient) {
if (!client.steam32Id) return

// did we already come here before?
let [steamServerId, lobbyType] = await redisClient.client
const res = await redisClient.client
.multi()
.get(`${matchId}:steamServerId`)
.get(`${matchId}:lobbyType`)
.exec()

let [steamServerId] = res
const [, lobbyType] = res

if (steamServerId && lobbyType) return

if (!steamServerId && !lobbyType) {
Expand Down Expand Up @@ -134,13 +133,12 @@ eventHandler.registerEvent(`newdata`, {
return
}

const chattersEnabled = getValueOrDefault(DBSettings.chatter, dotaClient.client.settings)
const {
powerTreads: { enabled: treadsChatterEnabled },
} = getValueOrDefault(DBSettings.chatters, dotaClient.client.settings)
if (chattersEnabled && treadsChatterEnabled) {
if (treadsChatterEnabled) {
try {
void calculateManaSaved(dotaClient)
await calculateManaSaved(dotaClient)
} catch (e) {
logger.error('err calculateManaSaved', { e })
}
Expand Down
Loading

0 comments on commit 0bb3246

Please sign in to comment.