From 9d971073d24ec99eae39720ba33d847a34a1eda6 Mon Sep 17 00:00:00 2001 From: Augsorn Chanklad Date: Tue, 9 Jul 2019 20:14:34 +0700 Subject: [PATCH] Add support configuration --- README.md | 3 +++ global_config.json | 18 ++++++++++++++++++ index.js | 2 ++ sample/app.json | 17 +++++++++++++++++ src/firebase.js | 34 ++++++++++++++++++++++++++++++++++ src/kafra.cmd.js | 3 ++- src/message.default.js | 5 +++-- 7 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 global_config.json create mode 100644 sample/app.json diff --git a/README.md b/README.md index 51768e9..97ba7c2 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,9 @@ Access your Dyno and check at tab **settings** and **Reveal Config Vars**. you c - Webhook URL: __https://{your_heroku_app_name}.herokuapp.com/callback__. - If you wish your bot can join group chats. Then enable __Allow bot to join group chats__. +## Global config +Any config can put here as you want. You can overwrite global_config.json via Firebase too. Sample structure is in sample/app.json. Restart is need for update config. + ## Usage ### Query item from poporing.life diff --git a/global_config.json b/global_config.json new file mode 100644 index 0000000..e1e035c --- /dev/null +++ b/global_config.json @@ -0,0 +1,18 @@ +{ + "message": { + "prefix_help": "ทุกคำสั่งกรุณาใส่เครื่องหมาย ! นำหน้าด้วยนะคะ (เช่น !taming)", + "command_not_found": [ + "ไม่รู้จัก{}เลยค่ะ","{}คืออะไรคะ? ' ')?", + "ไม่มี{}นะคะ","{}ไม่มีในความทรงจำของฉันเลยค่ะ", + "ไม่พบคำสั่ง{} ค่ะ ลองพิมพ์ !help เพื่อดูคำสั่งที่ถูกต้องนะคะ" + ], + "item_not_found": [ + "ไม่รู้จัก{}เลยค่ะ", + "{}คืออะไรคะ? ' ')?", + "ไม่มี{}นะคะ", + "{}ไม่มีในความทรงจำของฉันเลยค่ะ", + "ไม่พบไอเท็ม{} ค่ะ", + "ไอ้นี่มันมีอยู่จริงๆเหรอคะ?" + ] + } +} \ No newline at end of file diff --git a/index.js b/index.js index ec29dc4..43c765f 100644 --- a/index.js +++ b/index.js @@ -3,6 +3,7 @@ const lineConfig = require('./src/line.config'); const eventMessageHandler = require('./src/event-message.handler'); const express = require('express'); +const firebase = require('./src/firebase'); const app = express(); @@ -38,4 +39,5 @@ app.get('/',(req, res) => { const port = process.env.PORT || 3200; app.listen(port, () => { console.log(`listening on ${port}`); + firebase.getAppConfig(); }); \ No newline at end of file diff --git a/sample/app.json b/sample/app.json new file mode 100644 index 0000000..15a9cd3 --- /dev/null +++ b/sample/app.json @@ -0,0 +1,17 @@ +{ + "app": { + "message": { + "item_not_found": [ + "ไม่รู้จัก{}เลยค่ะ","{}คืออะไรคะ? ' ')?", + "ไม่มี{}นะคะ","{}ไม่มีในความทรงจำของฉันเลยค่ะ", + "ไม่พบไอเท็ม{} ค่ะ","ไอ้นี่มันมีอยู่จริงๆเหรอคะ?" + ], + "prefix_help": "ทุกคำสั่งกรุณาใส่เครื่องหมาย ! นำหน้าด้วยนะคะ (เช่น !taming)", + "command_not_found": [ + "ไม่รู้จัก{}เลยค่ะ","{}คืออะไรคะ? ' ')?", + "ไม่มี{}นะคะ","{}ไม่มีในความทรงจำของฉันเลยค่ะ", + "ไม่พบคำสั่ง{} ค่ะ ลองพิมพ์ !help เพื่อดูคำสั่งที่ถูกต้องนะคะ" + ] + } + } +} \ No newline at end of file diff --git a/src/firebase.js b/src/firebase.js index a24bcd0..be0eb3a 100644 --- a/src/firebase.js +++ b/src/firebase.js @@ -3,6 +3,7 @@ const axios = require('axios'); const cache = require('./cache'); const moment = require('moment'); const romEvents = require('./rom.events'); +const fs = require('fs'); // For local development // var serviceAccount = require('./../serviceAccountKey.json'); @@ -220,6 +221,39 @@ module.exports = { }); }); }, + getAppConfig: () => { + + const key = 'firebase_get_app_config'; + + return cache.get(key) + .then(value => { + + if(value) { + console.log('Cache [' + key + '] exists. Get config from cache.'); + return value; + } + + console.log('Cache [' + key + '] not found. Get config from firebase'); + + return db.collection('app').get() + .then((snapshot) => { + + let appConfig = {} + snapshot.docs.forEach((doc) => { + appConfig[doc.id] = doc.data(); + }) + + fs.writeFileSync(__dirname + '/../global_config.json', JSON.stringify(appConfig),{encoding:'utf8',flag:'w'}); + + console.log('config updated!'); + + return appConfig; + }) + .catch((err) => { + console.log('Error getting documents', err); + }); + }); + }, downloadFile: filename => { return admin.storage().bucket().file(filename).download({ destination: './ref/' + filename diff --git a/src/kafra.cmd.js b/src/kafra.cmd.js index 9183731..647c9ed 100644 --- a/src/kafra.cmd.js +++ b/src/kafra.cmd.js @@ -6,6 +6,7 @@ const Chance = require('chance') const chance = new Chance(); const fs = require('fs'); const customCmd = require('./custom.cmd'); +const globalConfig = require('./../global_config.json'); const compare = (a,b) => { if (a.name < b.name) @@ -16,7 +17,7 @@ const compare = (a,b) => { } const generateHelp = cmdList => { - let content = 'ทุกคำสั่งกรุณาใส่เครื่องหมาย ! นำหน้าด้วยนะคะ (เช่น !taming)\n'; + let content = globalConfig.message.prefix_help + '\n'; content += cmdList .sort(compare) diff --git a/src/message.default.js b/src/message.default.js index 313a2db..ea67cf1 100644 --- a/src/message.default.js +++ b/src/message.default.js @@ -1,6 +1,7 @@ const Chance = require('chance') +const config = require('./../global_config.json'); module.exports = { - "command_not_found": [ "ไม่รู้จัก{}เลยค่ะ", "{}คืออะไรคะ? ' ')? ", "ไม่มี{}นะคะ", "{}ไม่มีในความทรงจำของฉันเลยค่ะ", "ไม่พบคำสั่ง{} ค่ะ ลองพิมพ์ !help เพื่อดูคำสั่งที่ถูกต้องนะคะ"], - "item_not_found": [ "ไม่รู้จัก{}เลยค่ะ", "{}คืออะไรคะ? ' ')? ", "ไม่มี{}นะคะ", "{}ไม่มีในความทรงจำของฉันเลยค่ะ", "ไม่พบไอเท็ม{} ค่ะ", "ไอ้นี่มันมีอยู่จริงๆเหรอคะ?"] + "command_not_found": config.message.command_not_found, + "item_not_found": config.message.item_not_found } \ No newline at end of file