diff --git a/server.js b/server.js index 276b0a5..6e52503 100644 --- a/server.js +++ b/server.js @@ -1,9 +1,7 @@ import express from 'express'; import dotenv from 'dotenv'; -import { summon } from './src/summon.js'; -import { sendMessage } from "./src/lib/sendMessage.js"; -import { sender } from "./src/constants/sender.js"; -import { stop } from "./src/lib/stop.js"; + +import router from './routes/index.js'; dotenv.config(); const port = process.env.PORT || 8080; @@ -13,61 +11,7 @@ const app = express(); app.use(express.json()); app.use(express.urlencoded({ extended: false })); -const botName = 'DevKor'; - -app.post('/select', async (res) => { - try { - const { body } = res; - const { event, entity } = body; - const { plainText = '', personType = '', chatId: groupId } = entity; - - const isPushEvent = event === 'push'; - const keyword = 'λͺ…'; - const hasKeyword = plainText.includes(keyword); - const isManager = personType === 'manager'; - - const needToSummon = isPushEvent && hasKeyword && isManager; - - if (needToSummon) { - summon(plainText, keyword, groupId, botName); - } - } catch (err) { - console.log(err); - } -}); - -app.post('/stop', async (res) => { - try { - const { body } = res; - const { event, entity } = body; - const { plainText = '', personType = '', chatId: groupId } = entity; - - const isPushEvent = event === 'push'; - const keyword = '/멈좰'; - const hasKeyword = plainText.includes(keyword); - const isManager = personType === 'manager'; - - const needToSummon = isPushEvent && hasKeyword && isManager; - - if (needToSummon) { - const body = { - blocks: [ - { - type: 'text', - value: "Okay! I will stop it!", - }, - ], - options: ['actAsManager'], - }; - sendMessage(sender.GROUP, groupId, 'messages', { botName: botName }, body, 'post'); - setTimeout(() => { - stop() - }, 5000); - } - } catch (err) { - console.log(err); - } -}) +app.use('/', router); app.listen(port, () => { console.log(`Listening on port ${port}...`); diff --git a/src/celebrate.js b/src/celebrate.js deleted file mode 100644 index 3805597..0000000 --- a/src/celebrate.js +++ /dev/null @@ -1,30 +0,0 @@ -import { sendMessage } from './lib/sendMessage.js'; -import { sender } from './constants/sender.js'; - -export const celebrate = (msg, groupId, botName) => { - const body = { - blocks: [ - { - type: 'text', - value: msg, - }, - ], - options: ['actAsManager'], - }; - - sendMessage(sender.GROUP, groupId, 'messages', { botName: botName }, body, 'post'); -}; - -export const personalAnnounce = (managerId, botName) => { - const body = { - blocks: [ - { - type: 'text', - value: 'πŸŽ‰λ‹Ήμ²¨πŸŽ‰ μΆ•ν•˜λ“œλ¦½λ‹ˆλ‹€!', - }, - ], - options: ['actAsManager'], - }; - - sendMessage(sender.ANNOUNCEMENTS, undefined, 'announce', { botName: botName, managerIds: managerId }, body, 'post'); -}; diff --git a/src/randomSelect.js b/src/lib/selectRandomMem.js similarity index 100% rename from src/randomSelect.js rename to src/lib/selectRandomMem.js diff --git a/src/lib/stop.js b/src/lib/stop.js deleted file mode 100755 index ac6d73e..0000000 --- a/src/lib/stop.js +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env node -import shell from "shelljs"; - -export const stop = () => { - shell.cd('~'); - - if (shell.exec("heroku ps:stop run").code !== 0) { - shell.echo("Error: Heroku server down failed"); - shell.exit(1); - } -} \ No newline at end of file diff --git a/src/routes/index.js b/src/routes/index.js new file mode 100644 index 0000000..aff4778 --- /dev/null +++ b/src/routes/index.js @@ -0,0 +1,8 @@ +import express from 'express'; + +const router = express.Router(); + +router.use('/select', require('./select')); +router.use('/stop', require('./stop')); + +module.exports = router; diff --git a/src/routes/select/index.js b/src/routes/select/index.js new file mode 100644 index 0000000..6216083 --- /dev/null +++ b/src/routes/select/index.js @@ -0,0 +1,28 @@ +import express from 'express'; +import { select } from './select.js'; + +const router = express.Router(); +const botName = 'DevKor'; + +router.post('/select', async (res) => { + try { + const { body } = res; + const { event, entity } = body; + const { plainText = '', personType = '', chatId: groupId } = entity; + + const isPushEvent = event === 'push'; + const keyword = 'λͺ…'; + const hasKeyword = plainText.includes(keyword); + const isManager = personType === 'manager'; + + const needToSummon = isPushEvent && hasKeyword && isManager; + + if (needToSummon) { + select(plainText, keyword, groupId, botName); + } + } catch (err) { + console.log(err); + } +}); + +module.exports = router; diff --git a/src/summon.js b/src/routes/select/select.js similarity index 75% rename from src/summon.js rename to src/routes/select/select.js index ff694c8..34c8c95 100644 --- a/src/summon.js +++ b/src/routes/select/select.js @@ -1,10 +1,37 @@ import { sender } from './constants/sender.js'; import { sendMessage } from './lib/sendMessage.js'; -import { getMembers, selectMembers } from './randomSelect.js'; -import { celebrate, personalAnnounce } from './celebrate.js'; +import { getMembers, selectMembers } from '../../lib/selectRandomMem.js'; import { checkText } from './lib/checkText.js'; -export const summon = async (plainText, keyword, groupId, botName) => { +const celebrate = (msg, groupId, botName) => { + const body = { + blocks: [ + { + type: 'text', + value: msg, + }, + ], + options: ['actAsManager'], + }; + + sendMessage(sender.GROUP, groupId, 'messages', { botName: botName }, body, 'post'); +}; + +const personalAnnounce = (managerId, botName) => { + const body = { + blocks: [ + { + type: 'text', + value: 'πŸŽ‰λ‹Ήμ²¨πŸŽ‰ μΆ•ν•˜λ“œλ¦½λ‹ˆλ‹€!', + }, + ], + options: ['actAsManager'], + }; + + sendMessage(sender.ANNOUNCEMENTS, undefined, 'announce', { botName: botName, managerIds: managerId }, body, 'post'); +}; + +export const select = async (plainText, keyword, groupId, botName) => { const [n, isInt, msg] = checkText(plainText, keyword); // negative number or real numbers diff --git a/src/routes/stop/index.js b/src/routes/stop/index.js new file mode 100644 index 0000000..3f727fe --- /dev/null +++ b/src/routes/stop/index.js @@ -0,0 +1,42 @@ +import express from 'express'; +import { sendMessage } from './src/lib/sendMessage.js'; +import { sender } from './src/constants/sender.js'; +import { stop } from './stop.js'; + +const router = express.Router(); +const botName = 'DevKor'; + +router.post('/stop', async (res) => { + try { + const { body } = res; + const { event, entity } = body; + const { plainText = '', personType = '', chatId: groupId } = entity; + + const isPushEvent = event === 'push'; + const keyword = '/멈좰'; + const hasKeyword = plainText.includes(keyword); + const isManager = personType === 'manager'; + + const needToSummon = isPushEvent && hasKeyword && isManager; + + if (needToSummon) { + const body = { + blocks: [ + { + type: 'text', + value: 'Okay! I will stop it!', + }, + ], + options: ['actAsManager'], + }; + sendMessage(sender.GROUP, groupId, 'messages', { botName: botName }, body, 'post'); + setTimeout(() => { + stop(); + }, 5000); + } + } catch (err) { + console.log(err); + } +}); + +module.exports = router; diff --git a/src/routes/stop/stop.js b/src/routes/stop/stop.js new file mode 100755 index 0000000..0c5337c --- /dev/null +++ b/src/routes/stop/stop.js @@ -0,0 +1,11 @@ +#!/usr/bin/env node +import shell from 'shelljs'; + +export const stop = () => { + shell.cd('~'); + + if (shell.exec('heroku ps:stop run').code !== 0) { + shell.echo('Error: Heroku server down failed'); + shell.exit(1); + } +};