diff --git a/api/bots/mother.ts b/api/bots/mother.ts
index 3c5bda1..334c3f7 100644
--- a/api/bots/mother.ts
+++ b/api/bots/mother.ts
@@ -6,9 +6,12 @@ import * as WelcomeBot from './welcome'
import * as BitcoinBot from './btc'
import * as LoopBot from './loop'
import { models } from '../models'
+import fetch from 'node-fetch'
const msg_types = Sphinx.MSG_TYPE
+const env = process.env.NODE_ENV || 'development'
const constants = require(path.join(__dirname, '../../config/constants.json'))
+const config = require(path.join(__dirname, '../../config/app.json'))[env]
const builtinBots = [
'welcome', 'btc', 'loopout'
@@ -42,12 +45,22 @@ export function init() {
case 'install':
if (arr.length < 3) return
const botName = arr[2]
+
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,
+ }})
+ if (existing) {
+ const embed = new Sphinx.MessageEmbed()
+ .setAuthor('MotherBot')
+ .setDescription(botName + ' already installed')
+ return message.channel.send({ embed })
+ }
const msgTypes = builtInBotMsgTypes[botName] || [
constants.message_types.message
]
@@ -74,12 +87,42 @@ export function init() {
.setDescription(theName+' has been installed!')
message.channel.send({ embed })
} else {
- // message.reply('No built-in bot by that name')
+ const bot = await getBotByName(botName)
+ if(bot && bot.uuid) {
+ console.log('=> FOUDN BOT', bot)
+ // send msg to bot owner
+ // await models.ChatBot.create(chatBot)
+ } else {
+ const embed = new Sphinx.MessageEmbed()
+ .setAuthor('MotherBot')
+ .setDescription('No bot with that name')
+ message.channel.send({ embed })
+ }
+ }
+ return true
+
+ case 'search':
+ if (arr.length < 2) return
+ const query = arr[2]
+ const bots = await searchBots(query)
+ if(bots.length===0) {
const embed = new Sphinx.MessageEmbed()
.setAuthor('MotherBot')
- .setDescription('No bot with that name')
- message.channel.send({ embed })
+ .setDescription('No bots found')
+ return message.channel.send({ embed })
}
+ const embed3 = new Sphinx.MessageEmbed()
+ .setAuthor('MotherBot')
+ .setTitle('Bots:')
+ .addFields(bots.map(b=> {
+ const maxLength = 35
+ const value = b.description.length>maxLength ?
+ b.description.substr(0,maxLength)+'...' :
+ b.description
+ return {name:b.unique_name, value}
+ }))
+ .setThumbnail(botSVG)
+ message.channel.send({ embed:embed3 })
return true
default:
@@ -98,4 +141,26 @@ export function init() {
const botSVG = ``
\ No newline at end of file
+`
+
+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) {
+ return []
+ }
+}
+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_pub_key) {
+ return j
+ }
+ return null
+ } catch(e) {
+ return null
+ }
+}
\ No newline at end of file
diff --git a/dist/api/bots/mother.js b/dist/api/bots/mother.js
index 21b720a..d183421 100644
--- a/dist/api/bots/mother.js
+++ b/dist/api/bots/mother.js
@@ -17,8 +17,11 @@ const WelcomeBot = require("./welcome");
const BitcoinBot = require("./btc");
const LoopBot = require("./loop");
const models_1 = require("../models");
+const node_fetch_1 = require("node-fetch");
const msg_types = Sphinx.MSG_TYPE;
+const env = process.env.NODE_ENV || 'development';
const constants = require(path.join(__dirname, '../../config/constants.json'));
+const config = require(path.join(__dirname, '../../config/app.json'))[env];
const builtinBots = [
'welcome', 'btc', 'loopout'
];
@@ -55,6 +58,15 @@ function init() {
} });
if (!chat)
return;
+ const existing = yield models_1.models.ChatBot.findOne({ where: {
+ chatId: chat.id, botPrefix: '/' + botName,
+ } });
+ if (existing) {
+ const embed = new Sphinx.MessageEmbed()
+ .setAuthor('MotherBot')
+ .setDescription(botName + ' already installed');
+ return message.channel.send({ embed });
+ }
const msgTypes = builtInBotMsgTypes[botName] || [
constants.message_types.message
];
@@ -82,12 +94,43 @@ function init() {
message.channel.send({ embed });
}
else {
- // message.reply('No built-in bot by that name')
+ const bot = yield getBotByName(botName);
+ if (bot && bot.uuid) {
+ console.log('=> FOUDN BOT', bot);
+ // send msg to bot owner
+ // await models.ChatBot.create(chatBot)
+ }
+ else {
+ const embed = new Sphinx.MessageEmbed()
+ .setAuthor('MotherBot')
+ .setDescription('No bot with that name');
+ message.channel.send({ embed });
+ }
+ }
+ return true;
+ case 'search':
+ if (arr.length < 2)
+ return;
+ const query = arr[2];
+ const bots = yield searchBots(query);
+ if (bots.length === 0) {
const embed = new Sphinx.MessageEmbed()
.setAuthor('MotherBot')
- .setDescription('No bot with that name');
- message.channel.send({ embed });
+ .setDescription('No bots found');
+ return message.channel.send({ embed });
}
+ const embed3 = new Sphinx.MessageEmbed()
+ .setAuthor('MotherBot')
+ .setTitle('Bots:')
+ .addFields(bots.map(b => {
+ const maxLength = 35;
+ const value = b.description.length > maxLength ?
+ b.description.substr(0, maxLength) + '...' :
+ b.description;
+ return { name: b.unique_name, value };
+ }))
+ .setThumbnail(botSVG);
+ message.channel.send({ embed: embed3 });
return true;
default:
const embed = new Sphinx.MessageEmbed()
@@ -106,4 +149,31 @@ exports.init = init;
const botSVG = ``;
+function searchBots(q) {
+ return __awaiter(this, void 0, void 0, function* () {
+ try {
+ const r = yield node_fetch_1.default(`https://${config.tribes_host}/search/bots/${q}`);
+ const j = yield r.json();
+ return Array.isArray(j) ? j : [];
+ }
+ catch (e) {
+ return [];
+ }
+ });
+}
+function getBotByName(name) {
+ return __awaiter(this, void 0, void 0, function* () {
+ try {
+ const r = yield node_fetch_1.default(`https://${config.tribes_host}/bot/${name}`);
+ const j = yield r.json();
+ if (j && j.uuid && j.owner_pub_key) {
+ return j;
+ }
+ return null;
+ }
+ catch (e) {
+ return null;
+ }
+ });
+}
//# sourceMappingURL=mother.js.map
\ No newline at end of file
diff --git a/dist/api/bots/mother.js.map b/dist/api/bots/mother.js.map
index e3a9d8f..58b4d53 100644
--- a/dist/api/bots/mother.js.map
+++ b/dist/api/bots/mother.js.map
@@ -1 +1 @@
-{"version":3,"file":"mother.js","sourceRoot":"","sources":["../../../api/bots/mother.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"mother.js","sourceRoot":"","sources":["../../../api/bots/mother.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,oDAAoD;AACpD,qCAAoC;AACpC,oDAAoD;AACpD,6BAA4B;AAC5B,wCAAuC;AACvC,oCAAmC;AACnC,kCAAiC;AACjC,sCAAkC;AAClC,2CAA8B;AAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAA;AAEjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC,CAAA;AAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE1E,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,KAAK,EAAE,SAAS;CAC5B,CAAA;AAED,MAAM,kBAAkB,GAAG;IACzB,SAAS,EAAC;QACR,SAAS,CAAC,aAAa,CAAC,OAAO;QAC/B,SAAS,CAAC,aAAa,CAAC,UAAU;KACnC;CACF,CAAA;AAED,MAAM,eAAe,GAAG;IACtB,OAAO,EAAC,YAAY;IACpB,GAAG,EAAC,YAAY;IAChB,OAAO,EAAC,SAAS;CAClB,CAAA;AAED,SAAgB,IAAI;IAElB,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,KAAG,MAAM;YAAE,OAAM;QAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAClB,QAAQ,GAAG,EAAE;YAEX,KAAK,SAAS;gBACZ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAM;gBAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;gBAEtB,IAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;oBAChC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;oBAC/B,MAAM,IAAI,GAAG,MAAM,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC,KAAK,EAAC;4BAC5C,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;yBACzB,EAAC,CAAC,CAAA;oBACH,IAAG,CAAC,IAAI;wBAAE,OAAM;oBAChB,MAAM,QAAQ,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,KAAK,EAAC;4BACnD,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,GAAC,OAAO;yBACxC,EAAC,CAAC,CAAA;oBACH,IAAI,QAAQ,EAAE;wBACZ,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;6BACpC,SAAS,CAAC,WAAW,CAAC;6BACtB,cAAc,CAAC,OAAO,GAAG,oBAAoB,CAAC,CAAA;wBACjD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;qBACvC;oBACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI;wBAC9C,SAAS,CAAC,aAAa,CAAC,OAAO;qBAChC,CAAA;oBACD,MAAM,OAAO,GAAG;wBACd,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,SAAS,EAAE,GAAG,GAAC,OAAO;wBACtB,OAAO,EAAC,SAAS,CAAC,SAAS,CAAC,OAAO;wBACnC,QAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;wBACjC,WAAW,EAAC,CAAC;qBACd,CAAA;oBACD,MAAM,eAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;oBACpC,IAAG,OAAO,KAAG,SAAS,EAAE;wBACtB,UAAU,CAAC,IAAI,EAAE,CAAA;qBAClB;oBACD,IAAG,OAAO,KAAG,KAAK,EAAE;wBAClB,UAAU,CAAC,IAAI,EAAE,CAAA;qBAClB;oBACD,IAAG,OAAO,KAAG,SAAS,EAAE;wBACtB,OAAO,CAAC,IAAI,EAAE,CAAA;qBACf;oBACD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,KAAK,CAAA;oBACjD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;yBACpC,SAAS,CAAC,WAAW,CAAC;yBACtB,cAAc,CAAC,OAAO,GAAC,sBAAsB,CAAC,CAAA;oBACjD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;iBAChC;qBAAM;oBACL,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAA;oBACvC,IAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;wBAClB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;wBAChC,wBAAwB;wBACxB,uCAAuC;qBACxC;yBAAM;wBACL,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;6BACpC,SAAS,CAAC,WAAW,CAAC;6BACtB,cAAc,CAAC,uBAAuB,CAAC,CAAA;wBAC1C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;qBAChC;iBACF;gBACD,OAAO,IAAI,CAAA;YAEb,KAAK,QAAQ;gBACX,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAM;gBAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;gBACpB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAA;gBACpC,IAAG,IAAI,CAAC,MAAM,KAAG,CAAC,EAAE;oBAClB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;yBACpC,SAAS,CAAC,WAAW,CAAC;yBACtB,cAAc,CAAC,eAAe,CAAC,CAAA;oBAClC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;iBACvC;gBACD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;qBACrC,SAAS,CAAC,WAAW,CAAC;qBACtB,QAAQ,CAAC,OAAO,CAAC;qBACjB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE;oBACrB,MAAM,SAAS,GAAG,EAAE,CAAA;oBACpB,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,GAAC,SAAS,CAAC,CAAC;wBAC5C,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAC,SAAS,CAAC,GAAC,KAAK,CAAC,CAAC;wBACzC,CAAC,CAAC,WAAW,CAAA;oBACf,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC,WAAW,EAAE,KAAK,EAAC,CAAA;gBACpC,CAAC,CAAC,CAAC;qBACF,YAAY,CAAC,MAAM,CAAC,CAAA;gBACvB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAC,MAAM,EAAE,CAAC,CAAA;gBACtC,OAAO,IAAI,CAAA;YAEb;gBACE,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE;qBACpC,SAAS,CAAC,WAAW,CAAC;qBACtB,QAAQ,CAAC,eAAe,CAAC;qBACzB,SAAS,CAAC;oBACT,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,wBAAwB,EAAE;oBAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;iBACrC,CAAC;qBACD,YAAY,CAAC,MAAM,CAAC,CAAA;gBACvB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;SAClC;IACH,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC;AA3GD,oBA2GC;AAED,MAAM,MAAM,GAAG;;OAER,CAAA;AAEP,SAAe,UAAU,CAAC,CAAQ;;QAChC,IAAI;YACF,MAAM,CAAC,GAAG,MAAM,oBAAK,CAAC,WAAW,MAAM,CAAC,WAAW,gBAAgB,CAAC,EAAE,CAAC,CAAA;YACvE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;YACxB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;SACjC;QAAC,OAAM,CAAC,EAAE;YACT,OAAO,EAAE,CAAA;SACV;IACH,CAAC;CAAA;AACD,SAAe,YAAY,CAAC,IAAW;;QACrC,IAAI;YACF,MAAM,CAAC,GAAG,MAAM,oBAAK,CAAC,WAAW,MAAM,CAAC,WAAW,QAAQ,IAAI,EAAE,CAAC,CAAA;YAClE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;YACxB,IAAG,CAAC,IAAE,CAAC,CAAC,IAAI,IAAE,CAAC,CAAC,aAAa,EAAE;gBAC7B,OAAO,CAAC,CAAA;aACT;YACD,OAAO,IAAI,CAAA;SACZ;QAAC,OAAM,CAAC,EAAE;YACT,OAAO,IAAI,CAAA;SACZ;IACH,CAAC;CAAA"}
\ No newline at end of file