added support for multiple count-to-a-million channels at once
This commit is contained in:
parent
6d02676b77
commit
e6c91a6619
1 changed files with 34 additions and 23 deletions
57
api/app.js
57
api/app.js
|
@ -3,8 +3,9 @@ const { App } = require("@slack/bolt");
|
||||||
const keep_alive = require('./keep_alive.js')
|
const keep_alive = require('./keep_alive.js')
|
||||||
const schedule = require('node-schedule');
|
const schedule = require('node-schedule');
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
|
const main = "CDJMS683D";
|
||||||
|
const thread = "C01BZ7V0207";
|
||||||
const token = process.env.SLACK_BOT_TOKEN;
|
const token = process.env.SLACK_BOT_TOKEN;
|
||||||
const channel = "CDJMS683D";
|
|
||||||
const Airtable = require('airtable');
|
const Airtable = require('airtable');
|
||||||
Airtable.configure({
|
Airtable.configure({
|
||||||
endpointUrl: 'https://api.airtable.com',
|
endpointUrl: 'https://api.airtable.com',
|
||||||
|
@ -62,11 +63,15 @@ async function fetchOldest(id) {
|
||||||
|
|
||||||
async function publishMessage(id, text) {
|
async function publishMessage(id, text) {
|
||||||
try {
|
try {
|
||||||
const result = await app.client.chat.postMessage({
|
let options = {
|
||||||
token: token,
|
token: token,
|
||||||
channel: id,
|
channel: id,
|
||||||
text: text
|
text: text
|
||||||
});
|
}
|
||||||
|
if (id == "CDJMS683D") {
|
||||||
|
options['thread_ts'] = 1602496865003000
|
||||||
|
}
|
||||||
|
const result = await app.client.chat.postMessage(options);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
}
|
}
|
||||||
|
@ -106,7 +111,7 @@ function findMean(arr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function addData(db, object) {
|
async function addData(db, object) {
|
||||||
base(db).create(object, function(err, record){
|
base(db).create(object, function(err, record) {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
return;
|
return;
|
||||||
|
@ -115,30 +120,35 @@ async function addData(db, object) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getStats() {
|
async function getStats(id) {
|
||||||
try {
|
try {
|
||||||
let obj = await base('stats').find('rec2XI8QAsPr7EMVB');
|
if (id == "CDJMS683D") {
|
||||||
|
let obj = await base('stats').find('rec2XI8QAsPr7EMVB');
|
||||||
|
} else if (id == "C01BZ7V0207") {
|
||||||
|
let obj = await base('thread stats').find('recBljY8vBdaNK8kq');
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
id: obj.id,
|
id: obj.id,
|
||||||
fields: obj.fields,
|
fields: obj.fields,
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function report() {
|
async function report(channel) {
|
||||||
let oldest = await fetchOldest(channel);
|
let oldest = await fetchOldest(channel);
|
||||||
let latest = await fetchLatest(channel);
|
let latest = await fetchLatest(channel);
|
||||||
let diff = latest - oldest;
|
let diff = latest - oldest;
|
||||||
// addData('increase', {
|
let db = channel == "CDJMS683D" ? 'increase' : 'thread';
|
||||||
// "Date": moment().subtract(1, "days").format("YYYY-MM-DD"),
|
addData(db, {
|
||||||
// "increase": diff,
|
"Date": moment().subtract(1, "days").format("YYYY-MM-DD"),
|
||||||
// "stats": [
|
"increase": diff,
|
||||||
// "rec2XI8QAsPr7EMVB"
|
"stats": [
|
||||||
// ]
|
"rec2XI8QAsPr7EMVB"
|
||||||
// })
|
]
|
||||||
let newStats = await getStats();
|
});
|
||||||
|
let newStats = await getStats(channel);
|
||||||
averageSpeed = newStats.fields.average.toFixed(3);
|
averageSpeed = newStats.fields.average.toFixed(3);
|
||||||
let thousandsGoal = Math.ceil(latest / 1000) * 1000;
|
let thousandsGoal = Math.ceil(latest / 1000) * 1000;
|
||||||
let thousandsTime = predictTime(thousandsGoal, latest);
|
let thousandsTime = predictTime(thousandsGoal, latest);
|
||||||
|
@ -205,9 +215,10 @@ app.event('message', async (body) => {
|
||||||
// Start your app
|
// Start your app
|
||||||
try {
|
try {
|
||||||
await app.start(process.env.PORT || 3000);
|
await app.start(process.env.PORT || 3000);
|
||||||
let j = schedule.scheduleJob('0 0 * * *', report); // */15 * * * * * for debugging, 0 0 * * * actual
|
let j = schedule.scheduleJob('0 0 * * *', () => { report(main) }); // */15 * * * * * for debugging, 0 0 * * * actual
|
||||||
publishMessage('C017W4PHYKS', 'running every midnight!')
|
let k = schedule.scheduleJob('0 0 * * *', () => { report(thread) });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
|
publishMessage('C017W4PHYKS', error)
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
Loading…
Add table
Reference in a new issue