new alert for unpaid OC
This commit is contained in:
@@ -1,3 +0,0 @@
|
|||||||
module.exports = (client, config, state) => {
|
|
||||||
//console.log(`example log ${client.user.tag}`);
|
|
||||||
};
|
|
||||||
61
tasks/unpaidOC.js
Normal file
61
tasks/unpaidOC.js
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
module.exports = async (client, torn, config, state) => {
|
||||||
|
const { EmbedBuilder } = require('discord.js');
|
||||||
|
const fs = require('fs');
|
||||||
|
const channel = client.channels.resolve(config.channels.ocAlert);
|
||||||
|
const now = new Date();
|
||||||
|
state = require('../state.json');
|
||||||
|
let embeds = [];
|
||||||
|
const data = await torn.api(`https://api.torn.com/v2/faction/crimes?cat=successful&from=${now.getTime() / 1000 - 7 * 24 * 60 * 60}&sort=DESC`);
|
||||||
|
for (const crime of data.crimes) {
|
||||||
|
if (!crime.rewards.payout) {
|
||||||
|
const execDate = new Date(crime.executed_at * 1000);
|
||||||
|
const embed = new EmbedBuilder()
|
||||||
|
.setTitle(crime.name)
|
||||||
|
.setDescription(`Completed <t:${execDate.getTime() / 1000}:R>\nCash earned: $${crime.rewards.money}`)
|
||||||
|
.setURL(`https://www.torn.com/factions.php?step=your&type=7#/tab=crimes&crimeId=${crime.id}`);
|
||||||
|
if (crime.rewards.money === 0) {
|
||||||
|
const itemPromises = crime.rewards.items.map(item =>
|
||||||
|
torn.item(item.id).then(itemData => ({
|
||||||
|
quantity: item.quantity,
|
||||||
|
name: itemData.items[0].name,
|
||||||
|
value: itemData.items[0].value.market_price
|
||||||
|
}))
|
||||||
|
);
|
||||||
|
const resolvedItems = await Promise.all(itemPromises);
|
||||||
|
let items = `Completed <t:${execDate.getTime() / 1000}:R>\nItems earned: \n`;
|
||||||
|
resolvedItems.forEach(item => {
|
||||||
|
console.log(item);
|
||||||
|
items += `${item.quantity}x ${item.name} ($${item.value.toLocaleString()})\n`;
|
||||||
|
});
|
||||||
|
embed.setDescription(items);
|
||||||
|
}
|
||||||
|
const profilePromises = crime.slots.map(slot =>
|
||||||
|
torn.user.profile(slot.user.id).then(profile => ({
|
||||||
|
name: profile.name,
|
||||||
|
value: `Pass rate: ${slot.checkpoint_pass_rate}`,
|
||||||
|
inline: true
|
||||||
|
}))
|
||||||
|
);
|
||||||
|
const fields = await Promise.all(profilePromises);
|
||||||
|
embed.addFields(fields);
|
||||||
|
embeds.push(embed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(embeds)
|
||||||
|
if (embeds.length > 0) {
|
||||||
|
const then = new Date(state.payoutAlertLast);
|
||||||
|
const twelveHours = 12 * 60 * 60 * 1000;
|
||||||
|
if (now.getTime() - then.getTime() > twelveHours) {
|
||||||
|
channel.send({content: "# Unpaid Faction Crimes:", embeds: embeds });
|
||||||
|
state.payoutAlertLast = now.toISOString();
|
||||||
|
fs.writeFile('./state.json', JSON.stringify(state, null, 4), err => {if (err) {console.error(err)}});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const twentyFourHoursAgo = new Date(now.getTime() - 24 * 60 * 60 * 1000);
|
||||||
|
state.payoutAlertLast = twentyFourHoursAgo.toISOString();
|
||||||
|
fs.writeFile('./state.json', JSON.stringify(state, null, 4), err => {if (err) {console.error(err)}});
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.schedule = '0 * * * *';
|
||||||
6
torn.js
6
torn.js
@@ -33,6 +33,12 @@ module.exports.user = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module.exports.item = async (item) => {
|
||||||
|
const response = await fetch(`https://api.torn.com/v2/torn/${item}/items?sort=ASC&key=${config.torn}`);
|
||||||
|
const data = await response.json();
|
||||||
|
return(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
module.exports.self = {
|
module.exports.self = {
|
||||||
async id() {
|
async id() {
|
||||||
|
|||||||
Reference in New Issue
Block a user