diff --git a/api/builtin/loop.ts b/api/builtin/loop.ts index 3fec928..b1a132c 100644 --- a/api/builtin/loop.ts +++ b/api/builtin/loop.ts @@ -40,18 +40,25 @@ export function init() { message.channel.send({ embed }) return } + if (message.amount!==parseInt(amt)){ + const embed = new Sphinx.MessageEmbed() + .setAuthor('LoopBot') + .setDescription('Incorrect amount') + message.channel.send({ embed }) + return + } try { - const j = await doRequest(baseurl + '/v1/loop/out/quote/'+amt) + const j = await doRequest(baseurl + '/v1/loop/out/quote/' + amt) console.log("=> LOOP QUOTE RES", j) - if(!(j&&j.swap_fee&&j.prepay_amt)){ + if (!(j && j.swap_fee && j.prepay_amt)) { return } const j2 = await doRequest(baseurl + '/v1/loop/out', { - method:'POST', + method: 'POST', body: JSON.stringify({ amt: amt, dest: addy, - outgoing_chan_set:[ + outgoing_chan_set: [ '704899103684034561' ], max_swap_fee: j.swap_fee, @@ -59,14 +66,14 @@ export function init() { }), }) console.log("=> LOOP RESPONSE", j2) - if(j2&&j2.error) { + if (j2 && j2.error) { const embed = new Sphinx.MessageEmbed() .setAuthor('LoopBot') - .setDescription('Error: '+j2.error) + .setDescription('Error: ' + j2.error) message.channel.send({ embed }) return } - if(!(j2&&j2.server_message)) { + if (!(j2 && j2.server_message)) { return } const embed = new Sphinx.MessageEmbed() @@ -121,9 +128,9 @@ const agent = new https.Agent({ }) const env = process.env.NODE_ENV || 'development'; -const config = require(path.join(__dirname,'../../config/app.json'))[env] +const config = require(path.join(__dirname, '../../config/app.json'))[env] -async function doRequest(theurl:string, params?:Object) { +async function doRequest(theurl: string, params?: Object) { const ps = params || {} try { var macaroonString = fs.readFileSync(config.macaroon_location); diff --git a/api/builtin/mother.ts b/api/builtin/mother.ts index 3837be0..b165564 100644 --- a/api/builtin/mother.ts +++ b/api/builtin/mother.ts @@ -18,15 +18,15 @@ const builtinBots = [ ] const builtInBotMsgTypes = { - 'welcome':[ + 'welcome': [ constants.message_types.message, constants.message_types.group_join ], } const builtInBotNames = { - welcome:'WelcomeBot', - loopout:'LoopBot', + welcome: 'WelcomeBot', + loopout: 'LoopBot', } export function init() { @@ -37,7 +37,7 @@ export function init() { client.on(msg_types.MESSAGE, async (message: Sphinx.Message) => { const arr = (message.content && message.content.split(' ')) || [] if (arr.length < 2) return - if (arr[0]!=='/bot') return + if (arr[0] !== '/bot') return const cmd = arr[1] switch (cmd) { @@ -45,15 +45,19 @@ export function init() { if (arr.length < 3) return const botName = arr[2] - if(builtinBots.includes(botName)) { + if (builtinBots.includes(botName)) { console.log("INSTALL", botName) - const chat = await models.Chat.findOne({where:{ - uuid: message.channel.id - }}) - if(!chat) return - const existing = await models.ChatBot.findOne({where:{ - chatId: chat.id, botPrefix: '/'+botName, - }}) + const chat = await models.Chat.findOne({ + where: { + uuid: message.channel.id + } + }) + if (!chat) return + const existing = await models.ChatBot.findOne({ + where: { + chatId: chat.id, botPrefix: '/' + botName, + } + }) if (existing) { const embed = new Sphinx.MessageEmbed() .setAuthor('MotherBot') @@ -64,32 +68,34 @@ export function init() { constants.message_types.message ] const chatBot = { - chatId: chat.id, - botPrefix: '/'+botName, - botType:constants.bot_types.builtin, - msgTypes:JSON.stringify(msgTypes), - pricePerUse:0, + chatId: chat.id, + botPrefix: '/' + botName, + botType: constants.bot_types.builtin, + msgTypes: JSON.stringify(msgTypes), + pricePerUse: 0, } await models.ChatBot.create(chatBot) - if(botName==='welcome') { + if (botName === 'welcome') { WelcomeBot.init() } - if(botName==='loopout') { + if (botName === 'loopout') { LoopBot.init() } const theName = builtInBotNames[botName] || 'Bot' const embed = new Sphinx.MessageEmbed() .setAuthor('MotherBot') - .setDescription(theName+' has been installed!') + .setDescription(theName + ' has been installed!') message.channel.send({ embed }) } else { const bot = await getBotByName(botName) - if(bot && bot.uuid) { + if (bot && bot.uuid) { console.log('=> FOUND BOT', bot.unique_name) - const chat = await models.Chat.findOne({where:{ - uuid: message.channel.id - }}) - if(!chat) return + const chat = await models.Chat.findOne({ + where: { + uuid: message.channel.id + } + }) + if (!chat) return installBot(chat.dataValues, bot) } else { const embed = new Sphinx.MessageEmbed() @@ -104,7 +110,7 @@ export function init() { if (arr.length < 2) return const query = arr[2] const bots = await searchBots(query) - if(bots.length===0) { + if (bots.length === 0) { const embed = new Sphinx.MessageEmbed() .setAuthor('MotherBot') .setDescription('No bots found') @@ -113,17 +119,17 @@ export function init() { const embed3 = new Sphinx.MessageEmbed() .setAuthor('MotherBot') .setTitle('Bots:') - .addFields(bots.map(b=> { + .addFields(bots.map(b => { const maxLength = 35 - const value = b.description.length>maxLength ? - b.description.substr(0,maxLength)+'...' : + const value = b.description.length > maxLength ? + b.description.substr(0, maxLength) + '...' : b.description - return ({name:b.unique_name, value}) + return ({ name: b.unique_name, value }) })) .setThumbnail(botSVG) - message.channel.send({ embed:embed3 }) + message.channel.send({ embed: embed3 }) return true - + default: const embed = new Sphinx.MessageEmbed() .setAuthor('MotherBot') @@ -143,24 +149,24 @@ const botSVG = ` ` -async function searchBots(q:string) { +async function searchBots(q: string) { try { const r = await fetch(`https://${config.tribes_host}/search/bots/${q}`) const j = await r.json() return Array.isArray(j) ? j : [] - } catch(e) { + } catch (e) { return [] } } -async function getBotByName(name:string) { +async function getBotByName(name: string) { try { const r = await fetch(`https://${config.tribes_host}/bot/${name}`) const j = await r.json() - if(j&&j.uuid&&j.owner_pubkey) { + if (j && j.uuid && j.owner_pubkey) { return j } return null - } catch(e) { + } catch (e) { return null } } \ No newline at end of file diff --git a/api/builtin/welcome.ts b/api/builtin/welcome.ts index f5fefe4..ab50a50 100644 --- a/api/builtin/welcome.ts +++ b/api/builtin/welcome.ts @@ -9,7 +9,7 @@ const constants = require(path.join(__dirname, '../../config/constants.json')) let initted = false export function init() { - if(initted) return + if (initted) return initted = true const client = new Sphinx.Client() @@ -17,26 +17,28 @@ export function init() { client.on(msg_types.MESSAGE, async (message: Sphinx.Message) => { const arr = (message.content && message.content.split(' ')) || [] - console.log('message.type',message.type) - const isGroupJoin = message.type===constants.message_types.group_join + console.log('message.type', message.type) + const isGroupJoin = message.type === constants.message_types.group_join if (arr.length < 2 && !isGroupJoin) return - if (arr[0]!=='/welcome' && !isGroupJoin) return + if (arr[0] !== '/welcome' && !isGroupJoin) return const cmd = arr[1] - if(isGroupJoin) { - const chat = await models.Chat.findOne({where:{uuid:message.channel.id}}) - if(!chat) return - const chatBot = await models.ChatBot.findOne({where:{ - chatId: chat.id, botPrefix:'/welcome', botType:constants.bot_types.builtin - }}) + if (isGroupJoin) { + const chat = await models.Chat.findOne({ where: { uuid: message.channel.id } }) + if (!chat) return + const chatBot = await models.ChatBot.findOne({ + where: { + chatId: chat.id, botPrefix: '/welcome', botType: constants.bot_types.builtin + } + }) let meta = 'Welcome to the tribe!' - if(chatBot && chatBot.meta) { + if (chatBot && chatBot.meta) { meta = chatBot.meta } const resEmbed = new Sphinx.MessageEmbed() .setAuthor('WelcomeBot') .setDescription(meta) - message.channel.send({ embed:resEmbed }) + message.channel.send({ embed: resEmbed }) return } @@ -45,20 +47,22 @@ export function init() { case 'setmessage': if (arr.length < 3) return console.log("setmsg", arr[2]) - const chat = await models.Chat.findOne({where:{uuid:message.channel.id}}) - if(!chat) return - const chatBot = await models.ChatBot.findOne({where:{ - chatId: chat.id, botPrefix:'/welcome', botType:constants.bot_types.builtin - }}) - if(!chatBot) return + const chat = await models.Chat.findOne({ where: { uuid: message.channel.id } }) + if (!chat) return + const chatBot = await models.ChatBot.findOne({ + where: { + chatId: chat.id, botPrefix: '/welcome', botType: constants.bot_types.builtin + } + }) + if (!chatBot) return const meta = arr.slice(2, arr.length).join(' '); - await chatBot.update({meta}) + await chatBot.update({ meta }) const resEmbed = new Sphinx.MessageEmbed() .setAuthor('WelcomeBot') .setDescription('Your welcome message has been updated') - message.channel.send({ embed:resEmbed }) + message.channel.send({ embed: resEmbed }) return - + default: const embed = new Sphinx.MessageEmbed() .setAuthor('WelcomeBot') diff --git a/api/network/intercept.ts b/api/network/intercept.ts index 1d401be..6672f68 100644 --- a/api/network/intercept.ts +++ b/api/network/intercept.ts @@ -1,11 +1,11 @@ -import {Msg} from './interfaces' +import { Msg } from './interfaces' import { models } from '../models' -import {builtinBotEmit} from '../builtin' -import {keysendBotCmd, postToBotServer} from '../controllers/bots' +import { builtinBotEmit } from '../builtin' +import { keysendBotCmd, postToBotServer } from '../controllers/bots' import * as path from 'path' import * as SphinxBot from 'sphinx-bot' -const constants = require(path.join(__dirname,'../../config/constants.json')) +const constants = require(path.join(__dirname, '../../config/constants.json')) /* default show or not @@ -13,48 +13,52 @@ restrictions (be able to toggle, or dont show chat) */ // return bool whether to skip forwarding to tribe -export async function isBotMsg(msg:Msg, sentByMe:boolean): Promise { - const txt = msg.message&&msg.message.content +export async function isBotMsg(msg: Msg, sentByMe: boolean): Promise { + const txt = msg.message && msg.message.content const msgType = msg.type - if(msgType===constants.message_types.bot_res) { + if (msgType === constants.message_types.bot_res) { return false // bot res msg type not for processing } - const chat = await models.Chat.findOne({where:{ - uuid: msg.chat.uuid - }}) - if(!chat) return false + const chat = await models.Chat.findOne({ + where: { + uuid: msg.chat.uuid + } + }) + if (!chat) return false let didEmit = false - if(txt && txt.startsWith('/bot ')) { + if (txt && txt.startsWith('/bot ')) { builtinBotEmit(msg) didEmit = true } - if(didEmit) return didEmit + if (didEmit) return didEmit - const botsInTribe = await models.ChatBot.findAll({where:{ - chatId: chat.id - }}) + const botsInTribe = await models.ChatBot.findAll({ + where: { + chatId: chat.id + } + }) // console.log('=> botsInTribe', botsInTribe) - if(!(botsInTribe && botsInTribe.length)) return false + if (!(botsInTribe && botsInTribe.length)) return false - await asyncForEach(botsInTribe, async botInTribe=>{ - if(botInTribe.msgTypes){ + await asyncForEach(botsInTribe, async botInTribe => { + if (botInTribe.msgTypes) { // console.log('=> botInTribe.msgTypes', botInTribe) try { const msgTypes = JSON.parse(botInTribe.msgTypes) - if(msgTypes.includes(msgType)){ - const isMsgAndHasText = msgType===constants.message_types.message && txt && txt.startsWith(`${botInTribe.botPrefix} `) - const isNotMsg = msgType!==constants.message_types.message - if(isMsgAndHasText || isNotMsg) { + if (msgTypes.includes(msgType)) { + const isMsgAndHasText = msgType === constants.message_types.message && txt && txt.startsWith(`${botInTribe.botPrefix} `) + const isNotMsg = msgType !== constants.message_types.message + if (isMsgAndHasText || isNotMsg) { didEmit = await emitMessageToBot(msg, botInTribe.dataValues) } } - } catch(e){} + } catch (e) { } } else { // no message types defined, do all? - if(txt && txt.startsWith(`${botInTribe.botPrefix} `)) { + if (txt && txt.startsWith(`${botInTribe.botPrefix} `)) { // console.log('=> botInTribe.msgTypes else', botInTribe.dataValues) didEmit = await emitMessageToBot(msg, botInTribe.dataValues) } @@ -71,9 +75,11 @@ async function emitMessageToBot(msg, botInTribe): Promise { builtinBotEmit(msg) return true case constants.bot_types.local: - const bot = await models.Bot.findOne({where:{ - uuid: botInTribe.botUuid - }}) + const bot = await models.Bot.findOne({ + where: { + uuid: botInTribe.botUuid + } + }) return postToBotServer(msg, bot, SphinxBot.MSG_TYPE.MESSAGE) case constants.bot_types.remote: return keysendBotCmd(msg, botInTribe) @@ -83,7 +89,7 @@ async function emitMessageToBot(msg, botInTribe): Promise { } async function asyncForEach(array, callback) { - for (let index = 0; index < array.length; index++) { - await callback(array[index], index, array); - } + for (let index = 0; index < array.length; index++) { + await callback(array[index], index, array); + } } \ No newline at end of file diff --git a/dist/api/builtin/loop.js b/dist/api/builtin/loop.js index e842711..1f0fd25 100644 --- a/dist/api/builtin/loop.js +++ b/dist/api/builtin/loop.js @@ -47,6 +47,13 @@ function init() { message.channel.send({ embed }); return; } + if (message.amount !== parseInt(amt)) { + const embed = new Sphinx.MessageEmbed() + .setAuthor('LoopBot') + .setDescription('Incorrect amount'); + message.channel.send({ embed }); + return; + } try { const j = yield doRequest(baseurl + '/v1/loop/out/quote/' + amt); console.log("=> LOOP QUOTE RES", j); diff --git a/dist/api/builtin/loop.js.map b/dist/api/builtin/loop.js.map index 7d14af6..43e29a6 100644 --- a/dist/api/builtin/loop.js.map +++ b/dist/api/builtin/loop.js.map @@ -1 +1 @@ -{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../api/builtin/loop.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qCAAoC;AACpC,oDAAoD;AACpD,2CAA8B;AAC9B,6BAA4B;AAC5B,IAAI,QAAQ,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACrD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAA;AAEjC,gEAAgE;AAEhE,IAAI,OAAO,GAAG,KAAK,CAAA;AAEnB,MAAM,OAAO,GAAG,wBAAwB,CAAA;AAExC,SAAgB,IAAI;IAClB,IAAI,OAAO;QAAE,OAAM;IACnB,OAAO,GAAG,IAAI,CAAA;IAEd,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAA;IAClC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,qBAAW,CAAC,CAAA;IAE9B,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAO,OAAuB,EAAE,EAAE;QAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAM;QAC1B,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,UAAU;YAAE,OAAM;QAEjC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO;YAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACnB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;qBACpC,SAAS,CAAC,SAAS,CAAC;qBACpB,cAAc,CAAC,qBAAqB,CAAC,CAAA;gBACxC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC/B,OAAM;aACP;YACD,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YAClB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBACxB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;qBACpC,SAAS,CAAC,SAAS,CAAC;qBACpB,cAAc,CAAC,gBAAgB,CAAC,CAAA;gBACnC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC/B,OAAM;aACP;YACD,IAAI;gBACF,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,OAAO,GAAG,qBAAqB,GAAC,GAAG,CAAC,CAAA;gBAC9D,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAA;gBACnC,IAAG,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,QAAQ,IAAE,CAAC,CAAC,UAAU,CAAC,EAAC;oBAChC,OAAM;iBACP;gBACD,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,GAAG,cAAc,EAAE;oBACnD,MAAM,EAAC,MAAM;oBACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,GAAG,EAAE,GAAG;wBACR,IAAI,EAAE,IAAI;wBACV,iBAAiB,EAAC;4BAChB,oBAAoB;yBACrB;wBACD,YAAY,EAAE,CAAC,CAAC,QAAQ;wBACxB,cAAc,EAAE,CAAC,CAAC,UAAU;qBAC7B,CAAC;iBACH,CAAC,CAAA;gBACF,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;gBACnC,IAAG,EAAE,IAAE,EAAE,CAAC,KAAK,EAAE;oBACf,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;yBACpC,SAAS,CAAC,SAAS,CAAC;yBACpB,cAAc,CAAC,SAAS,GAAC,EAAE,CAAC,KAAK,CAAC,CAAA;oBACrC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC/B,OAAM;iBACP;gBACD,IAAG,CAAC,CAAC,EAAE,IAAE,EAAE,CAAC,cAAc,CAAC,EAAE;oBAC3B,OAAM;iBACP;gBACD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;qBACpC,SAAS,CAAC,SAAS,CAAC;qBACpB,QAAQ,CAAC,mBAAmB,CAAC;qBAC7B,cAAc,CAAC,UAAU,CAAC,CAAA;gBAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC/B,OAAM;aACP;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;aAChC;SACF;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAClB,QAAQ,GAAG,EAAE;YACX,KAAK,MAAM;gBACT,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;qBACpC,SAAS,CAAC,SAAS,CAAC;qBACpB,QAAQ,CAAC,mBAAmB,CAAC;qBAC7B,SAAS,CAAC;oBACT,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,6BAA6B,EAAE;oBAC/E,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE;iBACzC,CAAC;qBACD,YAAY,CAAC,MAAM,CAAC,CAAA;gBACvB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC/B,OAAM;YACR;gBACE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;qBACrC,SAAS,CAAC,SAAS,CAAC;qBACpB,cAAc,CAAC,wBAAwB,CAAC,CAAA;gBAC3C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;gBACvC,OAAM;SACT;IACH,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC;AA1FD,oBA0FC;AAED,MAAM,MAAM,GAAG;;OAER,CAAA;AAEP,SAAS,cAAc,CAAC,SAAiB;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC/B,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,CAAA;IAClB,OAAO,EAAE,CAAA;AACX,CAAC;AAED,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AACxB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,2CAA2C;AAC3C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;IAC5B,kBAAkB,EAAE,KAAK;CAC1B,CAAC,CAAA;AAEF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;AAClD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAEzE,SAAe,SAAS,CAAC,MAAa,EAAE,MAAc;;QACpD,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;QACvB,IAAI;YACF,IAAI,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC/D,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,SAAS,mBACb,KAAK,EACL,OAAO,EAAE;oBACP,wBAAwB,EAAE,GAAG;iBAC9B,IACE,EAAE,CACN,CAAA;YACD,MAAM,CAAC,GAAG,MAAM,oBAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;YACxC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;YACxB,OAAO,CAAC,CAAA;SACT;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAA;SACR;IACH,CAAC;CAAA"} \ No newline at end of file +{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../api/builtin/loop.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/api/network/intercept.js b/dist/api/network/intercept.js index a0fb3d9..686fb2b 100644 --- a/dist/api/network/intercept.js +++ b/dist/api/network/intercept.js @@ -27,9 +27,11 @@ function isBotMsg(msg, sentByMe) { if (msgType === constants.message_types.bot_res) { return false; // bot res msg type not for processing } - const chat = yield models_1.models.Chat.findOne({ where: { + const chat = yield models_1.models.Chat.findOne({ + where: { uuid: msg.chat.uuid - } }); + } + }); if (!chat) return false; let didEmit = false; @@ -39,9 +41,11 @@ function isBotMsg(msg, sentByMe) { } if (didEmit) return didEmit; - const botsInTribe = yield models_1.models.ChatBot.findAll({ where: { + const botsInTribe = yield models_1.models.ChatBot.findAll({ + where: { chatId: chat.id - } }); + } + }); // console.log('=> botsInTribe', botsInTribe) if (!(botsInTribe && botsInTribe.length)) return false; @@ -79,9 +83,11 @@ function emitMessageToBot(msg, botInTribe) { builtin_1.builtinBotEmit(msg); return true; case constants.bot_types.local: - const bot = yield models_1.models.Bot.findOne({ where: { + const bot = yield models_1.models.Bot.findOne({ + where: { uuid: botInTribe.botUuid - } }); + } + }); return bots_1.postToBotServer(msg, bot, SphinxBot.MSG_TYPE.MESSAGE); case constants.bot_types.remote: return bots_1.keysendBotCmd(msg, botInTribe); diff --git a/dist/api/network/intercept.js.map b/dist/api/network/intercept.js.map index 8f46f47..29c2cca 100644 --- a/dist/api/network/intercept.js.map +++ b/dist/api/network/intercept.js.map @@ -1 +1 @@ -{"version":3,"file":"intercept.js","sourceRoot":"","sources":["../../../api/network/intercept.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"intercept.js","sourceRoot":"","sources":["../../../api/network/intercept.ts"],"names":[],"mappings":"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"} \ No newline at end of file