const axios = require('axios') const config = require('@config/index') const client = axios.create({ baseURL: 'https://api.line.me/v2/bot', headers: { Authorization: `Bearer ${config.line.access}` } }) /** * push message to group or room or user * @param {string} target target id (groupid, userid, roomid) * @param {string} message push message */ const pushMessage = async (target, message = '') => { if (typeof target !== 'string' || target.trim().length === 0) return if (typeof message !== 'string' || message.trim().length === 0) return let data = { to: target, messages: [ { type: 'text', text: message } ] } let opts = { method: 'post', url: '/message/push', data } await client(opts) } const textObject = (txt = '') => { if (typeof txt !== 'string' || txt.trim().length === 0) return null return { type: 'text', text: txt } } const imageObject = (txt = '') => { if (typeof txt !== 'string' || txt.trim().length === 0) return null txt = txt.split(';') return { type: 'image', originalContentUrl: txt[0], previewImageUrl: txt[1] } } /** * send reply message * @param {string} replyToken line message reply token * @param {string} message reply message */ const replyMessage = async (replyToken, message) => { let url = '/message/reply' let regex = /^\$(.+?)\$/ let m = message.match(regex) let obj = null message = message.replace(/^\$.+?\$/, '') if (m !== null && m.length > 1) { switch (m[1]) { case 'image': obj = imageObject(message) break case 'text': obj = textObject(message) break default: obj = textObject(message) } } if (obj !== null) { let opts = { method: 'post', url, data: { replyToken, messages: [obj] } } await client(opts) } } module.exports = { pushMessage, replyMessage }