const DB = require('../../database') const actions = require('./actions') const parseCMD = async (text = '', source = {}) => { if (typeof text !== 'string' || text.trim().length === 0) return null if (!source || typeof source !== 'object' || !('type' in source)) return null let txt = text.trim() let arr = txt.split(' ').map(t => t.trim()) if (arr.length === 0) return null if (arr[0][0] !== '!') return null let cmd = arr[0].replace(/^!/, '') cmd = cmd.toLowerCase() let db = await DB.connect() let reply = null try { let result = await db.query({ text: `select "message", "group" from "public"."commands" where "cmd" = $1 and ("group" = '' or "group" = $2)`, values: [cmd, source.groupId] }) if (result.rowCount > 0) { let obj = result.rows.filter(t => t.group === source.groupId) if (obj.length === 0) obj = result.rows[0] else obj = obj[0] let content = obj.message let m = content.match(/{{(.+?)}}/g) if (m !== null && m.length > 0) { for (let i = 0; i < m.length; i++) { let c = m[i].replace(/^{{/, '').replace(/}}$/, '') let res = await actions(c, arr.slice(1).join(' '), source) content = content.replace(m[i], res || '') } } if (content.trim().length > 0) { reply = { reply: content } } } } catch (err) { console.log(err) } db.release() return reply } module.exports = parseCMD