Просмотр исходного кода

add codes refer to 'Customizing a receiver' in docs

kaori 5 лет назад
Родитель
Сommit
2c1b9f5762
1 измененных файлов с 64 добавлено и 9 удалено
  1. 64 9
      src/server/routes/apiv3/slack-bot.js

+ 64 - 9
src/server/routes/apiv3/slack-bot.js

@@ -1,4 +1,8 @@
+
+const { EventEmitter } = require('events');
+const { createServer } = require('http');
 const express = require('express');
+
 const { App, ExpressReceiver } = require('@slack/bolt');
 
 const router = express.Router();
@@ -7,19 +11,70 @@ const receiver = new ExpressReceiver({ signingSecret: process.env.SLACK_SIGNING_
 module.exports = (crowi) => {
 
   router.get('/', async(req, res) => {
-  });
 
-  const app = new App({
-    token: process.env.SLACK_BOT_TOKEN,
-    receiver,
-  });
+    class simpleReceiver extends EventEmitter {
+
+      constructor(signingSecret, endpoints) {
+        super();
+        this.app = express();
+        this.server = createServer(this.app);
+
+        for (const endpoint of endpoints) {
+          this.app.post(endpoint, this.requestHandler.bind(this));
+        }
+      }
+
+      init(app) {
+        this.bolt = app;
+      }
 
-  console.log('bbb');
+      // start(port) {
+      //   return new Promise((resolve, reject) => {
+      //     try {
+      //       this.server.listen(port, () => {
+      //         resolve(this.server);
+      //       });
+      //     }
+      //     catch (error) {
+      //       reject(error);
+      //     }
+      //   });
+      // }
 
-  app.message('あ', async({ message, say }) => {
-    await say('aaaaaa');
+      stop() {
+        return new Promise((resolve, reject) => {
+          this.server.close((error) => {
+            if (error) {
+              reject(error);
+              return;
+            }
+            resolve();
+          });
+        });
+      }
+
+    }
+
+    res.send('iii');
+
+    const app = new App({
+      token: process.env.SLACK_BOT_TOKEN,
+      receiver,
+    });
+
+    // app.post('/postMessage', async(req, res) => {
+    //   res.send('iii');
+    // });
+
+    // app.event('message', async({ event, client }) => {
+    //   // Do some slack-specific stuff here
+    //   await client.chat.postMessage({
+    //     channel: 'growi_bot',
+    //     text: 'hiiii',
+    //   });
+    // });
   });
-  console.log('ccc');
+
 
   return router;
 };