Переглянути джерело

Use dynamic phrases in the Slack annoy message

Fela Maslen 7 роки тому
батько
коміт
3827aa1508
2 змінених файлів з 18 додано та 8 видалено
  1. 12 5
      src/server/modules/slack.js
  2. 6 3
      src/server/routes/annoy.js

+ 12 - 5
src/server/modules/slack.js

@@ -4,7 +4,7 @@ const { sprintf } = require('sprintf-js');
 
 const EMAIL_REGEX = /^(.*)@(.*)$/;
 
-function generateAnnoyMessage(config, now, usersList) {
+function generateAnnoyMessage(config, now, usersList, phrases) {
     if (!usersList.length) {
         const isMonday = now.weekday() === 1;
         if (isMonday) {
@@ -14,13 +14,19 @@ function generateAnnoyMessage(config, now, usersList) {
         return null;
     }
 
-    return sprintf(config.annoyMessage, usersList.join(', '));
+    let phrase = config.annoyMessage;
+
+    if (phrases.length) {
+        phrase = phrases[Math.floor(Math.random() * phrases.length)].phrase;
+    }
+
+    return sprintf(phrase, usersList.join(', '));
 }
 
-function annoySlackUsers(config, logger, now, users) {
-    const usersList = users.map(({ id }) => `<@${id}>`);
+function annoySlackUsers(config, logger, now, users, phrases) {
+    const usersList = ['foo', 'bar']; // users.map(({ id }) => `<@${id}>`);
 
-    const message = generateAnnoyMessage(config, now, usersList);
+    const message = generateAnnoyMessage(config, now, usersList, phrases);
 
     if (!message) {
         logger.debug('[SLACK] Not annoying users');
@@ -29,6 +35,7 @@ function annoySlackUsers(config, logger, now, users) {
     }
 
     logger.debug('[SLACK] Annoying users...');
+
     const t0 = Date.now();
 
     const webhook = new IncomingWebhook(config.slack.webhookUrl);

+ 6 - 3
src/server/routes/annoy.js

@@ -1,6 +1,7 @@
 const moment = require('moment');
 
 const { makeUserCrud } = require('server/modules/users');
+const { makePhraseCrud } = require('server/modules/phrases');
 
 const {
     getAllSlackUsersWithNames,
@@ -29,14 +30,16 @@ function getPreviousWeekPeriod(now) {
 }
 
 function annoyUsers(config, db, logger) {
-    const crud = makeUserCrud();
+    const userCrud = makeUserCrud();
+    const phraseCrud = makePhraseCrud();
 
     return async (req, res) => {
         const now = moment();
 
         const range = getPreviousWeekPeriod(now);
 
-        const validUsers = await crud.getDocs(db);
+        const validUsers = await userCrud.getDocs(db);
+        const phrases = await phraseCrud.getDocs(db);
 
         const validUserEmails = validUsers.map(({ email }) => email.toLowerCase());
 
@@ -52,7 +55,7 @@ function annoyUsers(config, db, logger) {
 
         const usersMissingTimesheet = await getUsersWithMissingTimesheets(config, logger, range, users);
 
-        await annoySlackUsers(config, logger, now, usersMissingTimesheet);
+        await annoySlackUsers(config, logger, now, usersMissingTimesheet, phrases);
 
         res.json({ ok: true });
     };