diff --git a/default.config.json b/default.config.json index 28e1357..7255dd4 100644 --- a/default.config.json +++ b/default.config.json @@ -2,5 +2,8 @@ "token": "DISCORD TOKEN", "client": "DISCORD CLIENT ID", "alerts": "YOUR DISCORD USER ID", - "torn": "TORN API KEY" + "torn": "TORN API KEY", + "channels": { + "ocAlert": "000000000000000000" + } } \ No newline at end of file diff --git a/tasks/example.js b/tasks/example.js deleted file mode 100644 index e57fc76..0000000 --- a/tasks/example.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = async (client, torn, config, state) => { - //console.log(`example log ${client.user.tag}`); - //const alertChannel = client.channels.resolve(config.alerts) - //alertChannel.send('test') -}; -module.exports.schedule = '*/5 * * * * *'; \ No newline at end of file diff --git a/tasks/organizedCrime.js b/tasks/organizedCrime.js new file mode 100644 index 0000000..a6a2e93 --- /dev/null +++ b/tasks/organizedCrime.js @@ -0,0 +1,60 @@ +module.exports = async (client, torn, config, state) => { + const { EmbedBuilder } = require('discord.js'); + const fs = require('fs'); + const channel = client.channels.resolve(config.channels.ocAlert); + state = require('../state.json'); + let crimes = { + difficulty: [ + { + name: '1/10', + count: 0 + }, + { + name: '2/10', + count: 0 + }, + { + name: '3/10', + count: 0 + }, + { + name: '4/10', + count: 0 + }, + ] + }; + let embed = new EmbedBuilder() + .setTitle('Crime Availability Check') + await torn.api(`https://api.torn.com/v2/faction/crimes?cat=recruiting&offset=0&sort=DESC`).then(data => { + data.crimes.forEach(crime => { + crimes.difficulty[crime.difficulty - 1].count++ + }); + let isSomethingZero = false; + crimes.difficulty.forEach(difficulty => { + if (difficulty.count === 0) { + isSomethingZero = true; + embed.addFields({ + name: `Difficulty ${difficulty.name}`, + value: `Nobody can sign up for ${difficulty.name} crimes!` + }) + } else { + embed.addFields({ + name: `Difficulty ${difficulty.name}`, + value: `There are ${difficulty.count} ${difficulty.name} crimes!` + }) + } + }); + if (isSomethingZero) { + const now = new Date(); + const then = new Date(state.ocAlertLast); + const twelveHours = 12 * 60 * 60 * 1000; + if (now.getTime() - then.getTime() > twelveHours) { + channel.send({ embeds: [embed] }); + state.ocAlertLast = now.toISOString(); + fs.writeFile('./state.json', JSON.stringify(state, null, 4), err => {if (err) {console.error(err)}}); + } + } + }); +}; + +module.exports.schedule = '* * * * *'; \ No newline at end of file