Skip to content

Commit

Permalink
system/points: Add points per message for offline
Browse files Browse the repository at this point in the history
  • Loading branch information
sogehige committed Aug 16, 2018
1 parent 7eca3ce commit 31e87f2
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 32 deletions.
2 changes: 1 addition & 1 deletion cluster.js
Expand Up @@ -134,7 +134,7 @@ function cluster () {
global.events.fire('keyword-send-x-times', { username: sender.username, message: message })
if (message.startsWith('!')) {
global.events.fire('command-send-x-times', { username: sender.username, message: message })
} else if (!message.startsWith('!') && await global.cache.isOnline()) global.db.engine.insert('users.messages', { username: sender.username, messages: 1 })
} else if (!message.startsWith('!')) global.db.engine.insert('users.messages', { username: sender.username, messages: 1 })
}

DEBUG_CLUSTER_WORKER_ONMESSAGE_ID('Process parser')
Expand Down
10 changes: 0 additions & 10 deletions locales/cs.json
Expand Up @@ -903,16 +903,6 @@
"add": "{core.command-parse} !points add [username] [amount]",
"remove": "{core.command-parse} !points remove [username] [amount]"
},
"settings": {
"pointsName": "Pojmenovani bodu nastaveno na $value format",
"pointsResponse": "Odpoved na body nastavena na: $value",
"pointsInterval": "Interval ziskavani bodu online je $value minut",
"pointsPerInterval": "Pocet bodu ziskano za interval online je $value",
"pointsMessageInterval": "Interval zprav pro ziskani bodu je $value",
"pointsPerMessageInterval": "Pocet bodu ziskanych za interval zprav je $value",
"pointsIntervalOffline": "Interval ziskavani bodu offline je $value minut",
"pointsPerIntervalOffline": "Pocet bodu ziskano za interval offline je $value"
},
"defaults": {
"pointsName": {
"single": "bod",
Expand Down
4 changes: 3 additions & 1 deletion locales/cs/ui.systems.points.json
Expand Up @@ -8,8 +8,10 @@
"interval": "Minutový interval pro přidání bodů online uživatelům při online streamu",
"offlineInterval": "Minutový interval pro přidání bodů online uživatelům při offline streamu",
"messageInterval": "Kolik zpráv pro přidání body",
"messageOfflineInterval": "Kolik zpráv pro přidání body při offline streamu",
"perInterval": "Kolik bodů přidat na online interval",
"perOfflineInterval": "Kolik bodů přidat na offline interval",
"perMessageInterval": "Kolik bodů přidat na interval zpráv"
"perMessageInterval": "Kolik bodů přidat na interval zpráv",
"perMessageOfflineInterval": "Kolik bodů přidat na offline interval zpráv"
}
}
10 changes: 0 additions & 10 deletions locales/en.json
Expand Up @@ -898,16 +898,6 @@
"add": "{core.command-parse} !points add [username] [amount]",
"remove": "{core.command-parse} !points remove [username] [amount]"
},
"settings": {
"pointsName": "Points name was set to $value format",
"pointsResponse": "Points response was changed to: $value",
"pointsInterval": "Points online interval set to $value minutes",
"pointsPerInterval": "Points when online was set to $value per online interval",
"pointsMessageInterval": "Points interval message set to $value",
"pointsPerMessageInterval": "Points per message interval set to $value",
"pointsIntervalOffline": "Points offline interval set to $value minutes",
"pointsPerIntervalOffline": "Points when offline was set to $value per offline interval"
},
"defaults": {
"pointsName": {
"single": "point",
Expand Down
4 changes: 3 additions & 1 deletion locales/en/ui.systems.points.json
Expand Up @@ -8,8 +8,10 @@
"interval": "Minutes interval to add points to online users when stream online",
"offlineInterval": "Minutes interval to add points to online users when stream offline",
"messageInterval": "How many messages to add points",
"messageOfflineInterval": "How many messages to add points when stream offline",
"perInterval": "How many points to add per online interval",
"perOfflineInterval": "How many points to add per offline interval",
"perMessageInterval": "How many points to add per message interval"
"perMessageInterval": "How many points to add per message interval",
"perMessageOfflineInterval": "How many points to add per message offline interval"
}
}
29 changes: 20 additions & 9 deletions src/bot/systems/points.js
Expand Up @@ -19,7 +19,9 @@ class Points extends System {
offlineInterval: 30,
perOfflineInterval: 1,
messageInterval: 5,
perMessageInterval: 1
perMessageInterval: 1,
messageOfflineInterval: 5,
perMessageOfflineInterval: 0
},
parsers: [
{ name: 'messagePoints', fireAndForget: true }
Expand Down Expand Up @@ -96,18 +98,27 @@ class Points extends System {
async messagePoints (opts) {
if (opts.skip || opts.message.startsWith('!')) return true

let [perMessageInterval, messageInterval] = await Promise.all([
this.settings.perMessageInterval,
this.settings.messageInterval
let [perMessageInterval, messageInterval, perMessageOfflineInterval, messageOfflineInterval, isOnline] = await Promise.all([
this.settings.points.perMessageInterval,
this.settings.points.messageInterval,
this.settings.points.perMessageOfflineInterval,
this.settings.points.messageOfflineInterval,
global.cache.isOnline()
])

const user = await global.users.get(opts.sender.username)
if (perMessageInterval === 0 || messageInterval === 0) return
const interval = isOnline ? messageInterval : messageOfflineInterval
const ptsPerInterval = isOnline ? perMessageInterval : perMessageOfflineInterval

if (interval === 0 || ptsPerInterval === 0) return

let [user, userMessages] = await Promise.all([
global.users.get(opts.sender.username),
global.users.getMessagesOf(opts.sender.username)
])
let lastMessageCount = _.isNil(user.custom.lastMessagePoints) ? 0 : user.custom.lastMessagePoints
const userMessages = await global.users.getMessagesOf(opts.sender.username)

if (lastMessageCount + messageInterval <= userMessages) {
await global.db.engine.insert('users.points', { username: user.username, points: parseInt(perMessageInterval, 10) })
if (lastMessageCount + interval <= userMessages) {
await global.db.engine.insert('users.points', { username: user.username, points: parseInt(ptsPerInterval, 10) })
await global.db.engine.update('users', { username: user.username }, { custom: { lastMessagePoints: userMessages } })
}
return true
Expand Down

0 comments on commit 31e87f2

Please sign in to comment.