Browse Source

network interceptors to test msgs as bots commands, new SQL BotMember table, new fields on ChatMember and Bot, new msg types bot_install, bot_cmd, bot_res

push-params
Evan Feenstra 4 years ago
parent
commit
bcf127a44e
  1. 31
      api/controllers/bots.ts
  2. 3
      api/models/ts/bot.ts
  3. 21
      api/models/ts/botMember.ts
  4. 12
      api/models/ts/chatMember.ts
  5. 30
      api/network/intercept.ts
  6. 5
      api/network/receive.ts
  7. 7
      api/network/send.ts
  8. 17
      api/utils/setup.ts
  9. 6
      config/constants.json
  10. 40
      dist/api/controllers/bots.js
  11. 1
      dist/api/controllers/bots.js.map
  12. 4
      dist/api/models/ts/bot.js
  13. 2
      dist/api/models/ts/bot.js.map
  14. 39
      dist/api/models/ts/botMember.js
  15. 1
      dist/api/models/ts/botMember.js.map
  16. 16
      dist/api/models/ts/chatMember.js
  17. 2
      dist/api/models/ts/chatMember.js.map
  18. 16
      dist/api/network/intercept.js
  19. 1
      dist/api/network/intercept.js.map
  20. 5
      dist/api/network/receive.js
  21. 2
      dist/api/network/receive.js.map
  22. 10
      dist/api/network/send.js
  23. 2
      dist/api/network/send.js.map
  24. 16
      dist/api/utils/setup.js
  25. 2
      dist/api/utils/setup.js.map
  26. 6
      dist/config/constants.json

31
api/controllers/bots.ts

@ -0,0 +1,31 @@
import * as path from 'path'
const constants = require(path.join(__dirname, '../../config/constants.json'))
/* intercept */
export const installBot = async (req,res) => {
// need bot uuid and maker pubkey
// send bot_install to bot maker
// mqtt sub to the bot uuid (dont need this actually)
// generate ChatMember with bot=true
// bot_maker_pubkey, bot_uuid, bot_prefix
}
export async function receiveBotInstall(payload) {
console.log('=> receiveBotInstall')
// const dat = payload.content || payload
// const sender_pub_key = dat.sender.pub_key
// const tribe_uuid = dat.chat.uuid
// verify tribe ownership (verify signed timestamp)
// create BotMember for publishing to mqtt
}
// type BotResType = 'install' | 'message' | 'broadcast' | 'keysend'
export async function receiveBotRes(payload) {
console.log(constants.message_types.bot_res)
}

3
api/models/ts/bot.ts

@ -19,6 +19,9 @@ export default class Bot extends Model<Bot> {
@Column
secret: string
@Column
webhook: string
@Column
createdAt: Date

21
api/models/ts/botMember.ts

@ -0,0 +1,21 @@
import { Table, Column, Model } from 'sequelize-typescript';
@Table({tableName: 'sphinx_bot_members', underscored: true})
export default class BotMember extends Model<BotMember> {
@Column
memberPubkey: string
@Column
tribeUuid: string
@Column
msgCount: number
@Column
createdAt: Date
@Column
updatedAt: Date
}

12
api/models/ts/chatMember.ts

@ -26,4 +26,16 @@ export default class ChatMember extends Model<ChatMember> {
@Column
status: number
@Column
bot: boolean
@Column
botPrefix: string
@Column
botMakerPubkey: string
@Column
botUuid: string
}

30
api/network/intercept.ts

@ -0,0 +1,30 @@
/*
process if bot message
AND return true if it is, and forward to bot
*/
export interface Msg {
type: number,
message: {
content: string
},
chat: {
uuid: string
},
sender: {
pub_key: string,
alias: string,
}
}
// msg.message.content
export function isBotMsg(msg:Msg, sentByMe:boolean){
return false
// check if bot msg
// check my ChatMembers to see if its here
// OR check my Bots if im the maker
// process it "bot_cmd"
}

5
api/network/receive.ts

@ -11,6 +11,7 @@ import {modifyPayloadAndSaveMediaKey,purchaseFromOriginalSender,sendFinalMemeIfF
import {decryptMessage,encryptTribeBroadcast} from '../utils/msg'
import { Op } from 'sequelize'
import * as timers from '../utils/timers'
import * as intercept from './intercept'
/*
delete type:
@ -130,6 +131,10 @@ async function doTheAction(data){
/* decrypt and re-encrypt with phone's pubkey for storage */
const chat = await models.Chat.findOne({where:{uuid:payload.chat.uuid}})
const pld = await decryptMessage(data, chat)
const isBotMsg = intercept.isBotMsg(pld, false)
if(isBotMsg===true) {
return // DO NOT FORWARD TO TRIBE, forwarded to bot instead
}
const me = await models.Contact.findOne({where:{isOwner:true}})
payload = await encryptTribeBroadcast(pld, me, true) // true=isTribeOwner
if(ogContent) payload.message.remoteContent = JSON.stringify({'chat':ogContent}) // this is the key

7
api/network/send.ts

@ -6,6 +6,7 @@ import * as path from 'path'
import * as tribes from '../utils/tribes'
import {tribeOwnerAutoConfirmation} from '../controllers/confirmations'
import {typesToForward} from './receive'
import * as intercept from './intercept'
const constants = require(path.join(__dirname,'../../config/constants.json'))
@ -48,6 +49,10 @@ export async function sendMessage(params) {
networkType = 'mqtt' // broadcast to all
// decrypt message.content and message.mediaKey w groupKey
msg = await decryptMessage(msg, chat)
const isBotMsg = intercept.isBotMsg(msg, true)
if(isBotMsg===true) {
return // DO NOT FORWARD TO TRIBE, forwarded to bot instead
}
// post last_active to tribes server
tribes.putActivity(chat.uuid, chat.host)
} else {
@ -163,7 +168,7 @@ export function newmsg(type, chat, sender, message){
message: message,
sender: {
pub_key: sender.publicKey,
...includeAlias && {alias: sender.alias},
alias: includeAlias ? sender.alias : '',
// ...includePhotoUrl && {photo_url: sender.photoUrl},
// ...sender.contactKey && {contact_key: sender.contactKey}
}

17
api/utils/setup.ts

@ -31,6 +31,23 @@ async function setVersion(){
}
async function migrate(){
addTableColumn('sphinx_chat_members', 'bot', 'BOOLEAN')
addTableColumn('sphinx_chat_members', 'bot_prefix')
addTableColumn('sphinx_chat_members', 'bot_maker_pubkey')
addTableColumn('sphinx_chat_members', 'bot_uuid')
addTableColumn('sphinx_bots', 'webhook')
try{
await sequelize.query(`
CREATE TABLE sphinx_bot_members (
member_pubkey TEXT,
tribe_uuid TEXT,
msg_count BIGINT,
created_at DATETIME,
updated_at DATETIME
)`)
} catch(e){}
try{
await sequelize.query(`

6
config/constants.json

@ -47,7 +47,11 @@
"repayment": 18,
"member_request": 19,
"member_approve": 20,
"member_reject": 21
"member_reject": 21,
"tribe_delete": 22,
"bot_install": 23,
"bot_cmd": 24,
"bot_res": 25
},
"payment_errors": {
"timeout": "Timed Out",

40
dist/api/controllers/bots.js

@ -0,0 +1,40 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const constants = require(path.join(__dirname, '../../config/constants.json'));
/* intercept */
exports.installBot = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
// need bot uuid and maker pubkey
// send bot_install to bot maker
// mqtt sub to the bot uuid (dont need this actually)
// generate ChatMember with bot=true
// bot_maker_pubkey, bot_uuid, bot_prefix
});
function receiveBotInstall(payload) {
return __awaiter(this, void 0, void 0, function* () {
console.log('=> receiveBotInstall');
// const dat = payload.content || payload
// const sender_pub_key = dat.sender.pub_key
// const tribe_uuid = dat.chat.uuid
// verify tribe ownership (verify signed timestamp)
// create BotMember for publishing to mqtt
});
}
exports.receiveBotInstall = receiveBotInstall;
// type BotResType = 'install' | 'message' | 'broadcast' | 'keysend'
function receiveBotRes(payload) {
return __awaiter(this, void 0, void 0, function* () {
console.log(constants.message_types.bot_res);
});
}
exports.receiveBotRes = receiveBotRes;
//# sourceMappingURL=bots.js.map

1
dist/api/controllers/bots.js.map

@ -0,0 +1 @@
{"version":3,"file":"bots.js","sourceRoot":"","sources":["../../../api/controllers/bots.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,6BAA4B;AAE5B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC,CAAA;AAE9E,eAAe;AAEF,QAAA,UAAU,GAAG,CAAO,GAAG,EAAC,GAAG,EAAE,EAAE;IAC1C,iCAAiC;IACjC,gCAAgC;IAChC,qDAAqD;IAErD,oCAAoC;IACpC,yCAAyC;AAC3C,CAAC,CAAA,CAAA;AAED,SAAsB,iBAAiB,CAAC,OAAO;;QAC7C,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QACnC,yCAAyC;QACzC,4CAA4C;QAC5C,mCAAmC;QAEnC,mDAAmD;QAEnD,0CAA0C;IAC5C,CAAC;CAAA;AATD,8CASC;AAED,oEAAoE;AAEpE,SAAsB,aAAa,CAAC,OAAO;;QACzC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;CAAA;AAFD,sCAEC"}

4
dist/api/models/ts/bot.js

@ -32,6 +32,10 @@ __decorate([
sequelize_typescript_1.Column,
__metadata("design:type", String)
], Bot.prototype, "secret", void 0);
__decorate([
sequelize_typescript_1.Column,
__metadata("design:type", String)
], Bot.prototype, "webhook", void 0);
__decorate([
sequelize_typescript_1.Column,
__metadata("design:type", Date)

2
dist/api/models/ts/bot.js.map

@ -1 +1 @@
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../../../api/models/ts/bot.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,GAAG,GAAxB,MAAqB,GAAI,SAAQ,4BAAU;CAwB1C,CAAA;AAjBC;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;KACb,CAAC;;+BACQ;AAGV;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;mCACV;AAGd;IADC,6BAAM;;iCACK;AAGZ;IADC,6BAAM;;mCACO;AAGd;IADC,6BAAM;8BACI,IAAI;sCAAA;AAGf;IADC,6BAAM;8BACI,IAAI;sCAAA;AAtBI,GAAG;IADvB,4BAAK,CAAC,EAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GAChC,GAAG,CAwBvB;kBAxBoB,GAAG"}
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../../../api/models/ts/bot.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,GAAG,GAAxB,MAAqB,GAAI,SAAQ,4BAAU;CA2B1C,CAAA;AApBC;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;KACb,CAAC;;+BACQ;AAGV;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;mCACV;AAGd;IADC,6BAAM;;iCACK;AAGZ;IADC,6BAAM;;mCACO;AAGd;IADC,6BAAM;;oCACQ;AAGf;IADC,6BAAM;8BACI,IAAI;sCAAA;AAGf;IADC,6BAAM;8BACI,IAAI;sCAAA;AAzBI,GAAG;IADvB,4BAAK,CAAC,EAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GAChC,GAAG,CA2BvB;kBA3BoB,GAAG"}

39
dist/api/models/ts/botMember.js

@ -0,0 +1,39 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
const sequelize_typescript_1 = require("sequelize-typescript");
let BotMember = class BotMember extends sequelize_typescript_1.Model {
};
__decorate([
sequelize_typescript_1.Column,
__metadata("design:type", String)
], BotMember.prototype, "memberPubkey", void 0);
__decorate([
sequelize_typescript_1.Column,
__metadata("design:type", String)
], BotMember.prototype, "tribeUuid", void 0);
__decorate([
sequelize_typescript_1.Column,
__metadata("design:type", Number)
], BotMember.prototype, "msgCount", void 0);
__decorate([
sequelize_typescript_1.Column,
__metadata("design:type", Date)
], BotMember.prototype, "createdAt", void 0);
__decorate([
sequelize_typescript_1.Column,
__metadata("design:type", Date)
], BotMember.prototype, "updatedAt", void 0);
BotMember = __decorate([
sequelize_typescript_1.Table({ tableName: 'sphinx_bot_members', underscored: true })
], BotMember);
exports.default = BotMember;
//# sourceMappingURL=botMember.js.map

1
dist/api/models/ts/botMember.js.map

@ -0,0 +1 @@
{"version":3,"file":"botMember.js","sourceRoot":"","sources":["../../../../api/models/ts/botMember.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAA4D;AAG5D,IAAqB,SAAS,GAA9B,MAAqB,SAAU,SAAQ,4BAAgB;CAiBtD,CAAA;AAdC;IADC,6BAAM;;+CACa;AAGpB;IADC,6BAAM;;4CACU;AAGjB;IADC,6BAAM;;2CACS;AAGhB;IADC,6BAAM;8BACI,IAAI;4CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;4CAAA;AAfI,SAAS;IAD7B,4BAAK,CAAC,EAAC,SAAS,EAAE,oBAAoB,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACvC,SAAS,CAiB7B;kBAjBoB,SAAS"}

16
dist/api/models/ts/chatMember.js

@ -40,6 +40,22 @@ __decorate([
sequelize_typescript_1.Column,
__metadata("design:type", Number)
], ChatMember.prototype, "status", void 0);
__decorate([
sequelize_typescript_1.Column,
__metadata("design:type", Boolean)
], ChatMember.prototype, "bot", void 0);
__decorate([
sequelize_typescript_1.Column,
__metadata("design:type", String)
], ChatMember.prototype, "botPrefix", void 0);
__decorate([
sequelize_typescript_1.Column,
__metadata("design:type", String)
], ChatMember.prototype, "botMakerPubkey", void 0);
__decorate([
sequelize_typescript_1.Column,
__metadata("design:type", String)
], ChatMember.prototype, "botUuid", void 0);
ChatMember = __decorate([
sequelize_typescript_1.Table({ tableName: 'sphinx_chat_members', underscored: true, indexes: [
{ unique: true, fields: ['chat_id', 'contact_id'] }

2
dist/api/models/ts/chatMember.js.map

@ -1 +1 @@
{"version":3,"file":"chatMember.js","sourceRoot":"","sources":["../../../../api/models/ts/chatMember.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAA4D;AAK5D,IAAqB,UAAU,GAA/B,MAAqB,UAAW,SAAQ,4BAAiB;CAuBxD,CAAA;AApBC;IADC,6BAAM;;0CACO;AAGd;IADC,6BAAM;;6CACU;AAGjB;IADC,6BAAM;;wCACK;AAGZ;IADC,6BAAM;;8CACW;AAGlB;IADC,6BAAM;;iDACc;AAGrB;IADC,6BAAM;8BACK,IAAI;8CAAA;AAGhB;IADC,6BAAM;;0CACO;AArBK,UAAU;IAH9B,4BAAK,CAAC,EAAC,SAAS,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAC;YACnE,EAAC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,SAAS,EAAC,YAAY,CAAC,EAAC;SAC/C,EAAC,CAAC;GACkB,UAAU,CAuB9B;kBAvBoB,UAAU"}
{"version":3,"file":"chatMember.js","sourceRoot":"","sources":["../../../../api/models/ts/chatMember.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAA4D;AAK5D,IAAqB,UAAU,GAA/B,MAAqB,UAAW,SAAQ,4BAAiB;CAmCxD,CAAA;AAhCC;IADC,6BAAM;;0CACO;AAGd;IADC,6BAAM;;6CACU;AAGjB;IADC,6BAAM;;wCACK;AAGZ;IADC,6BAAM;;8CACW;AAGlB;IADC,6BAAM;;iDACc;AAGrB;IADC,6BAAM;8BACK,IAAI;8CAAA;AAGhB;IADC,6BAAM;;0CACO;AAGd;IADC,6BAAM;;uCACK;AAGZ;IADC,6BAAM;;6CACU;AAGjB;IADC,6BAAM;;kDACe;AAGtB;IADC,6BAAM;;2CACQ;AAjCI,UAAU;IAH9B,4BAAK,CAAC,EAAC,SAAS,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAC;YACnE,EAAC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,SAAS,EAAC,YAAY,CAAC,EAAC;SAC/C,EAAC,CAAC;GACkB,UAAU,CAmC9B;kBAnCoB,UAAU"}

16
dist/api/network/intercept.js

@ -0,0 +1,16 @@
"use strict";
/*
process if bot message
AND return true if it is, and forward to bot
*/
Object.defineProperty(exports, "__esModule", { value: true });
// msg.message.content
function isBotMsg(msg, sentByMe) {
return false;
// check if bot msg
// check my ChatMembers to see if its here
// OR check my Bots if im the maker
// process it "bot_cmd"
}
exports.isBotMsg = isBotMsg;
//# sourceMappingURL=intercept.js.map

1
dist/api/network/intercept.js.map

@ -0,0 +1 @@
{"version":3,"file":"intercept.js","sourceRoot":"","sources":["../../../api/network/intercept.ts"],"names":[],"mappings":";AACA;;;EAGE;;AAgBF,sBAAsB;AACtB,SAAgB,QAAQ,CAAC,GAAO,EAAE,QAAgB;IAChD,OAAO,KAAK,CAAA;IAEZ,mBAAmB;IACnB,0CAA0C;IAC1C,mCAAmC;IAEnC,uBAAuB;AACzB,CAAC;AARD,4BAQC"}

5
dist/api/network/receive.js

@ -22,6 +22,7 @@ const modify_1 = require("./modify");
const msg_1 = require("../utils/msg");
const sequelize_1 = require("sequelize");
const timers = require("../utils/timers");
const intercept = require("./intercept");
/*
delete type:
owner needs to check that the delete is the one who made the msg
@ -149,6 +150,10 @@ function doTheAction(data) {
/* decrypt and re-encrypt with phone's pubkey for storage */
const chat = yield models_1.models.Chat.findOne({ where: { uuid: payload.chat.uuid } });
const pld = yield msg_1.decryptMessage(data, chat);
const isBotMsg = intercept.isBotMsg(pld, false);
if (isBotMsg === true) {
return; // DO NOT FORWARD TO TRIBE, forwarded to bot instead
}
const me = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
payload = yield msg_1.encryptTribeBroadcast(pld, me, true); // true=isTribeOwner
if (ogContent)

2
dist/api/network/receive.js.map

File diff suppressed because one or more lines are too long

10
dist/api/network/send.js

@ -17,6 +17,7 @@ const path = require("path");
const tribes = require("../utils/tribes");
const confirmations_1 = require("../controllers/confirmations");
const receive_1 = require("./receive");
const intercept = require("./intercept");
const constants = require(path.join(__dirname, '../../config/constants.json'));
const MIN_SATS = 3;
function sendMessage(params) {
@ -53,6 +54,10 @@ function sendMessage(params) {
networkType = 'mqtt'; // broadcast to all
// decrypt message.content and message.mediaKey w groupKey
msg = yield msg_1.decryptMessage(msg, chat);
const isBotMsg = intercept.isBotMsg(msg, true);
if (isBotMsg === true) {
return; // DO NOT FORWARD TO TRIBE, forwarded to bot instead
}
// post last_active to tribes server
tribes.putActivity(chat.uuid, chat.host);
}
@ -162,7 +167,10 @@ function newmsg(type, chat, sender, message) {
type: type,
chat: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ uuid: chat.uuid }, chat.name && { name: chat.name }), (chat.type || chat.type === 0) && { type: chat.type }), chat.members && { members: chat.members }), (includeGroupKey && chat.groupKey) && { groupKey: chat.groupKey }), (includeGroupKey && chat.host) && { host: chat.host }),
message: message,
sender: Object.assign({ pub_key: sender.publicKey }, includeAlias && { alias: sender.alias })
sender: {
pub_key: sender.publicKey,
alias: includeAlias ? sender.alias : '',
}
};
}
exports.newmsg = newmsg;

2
dist/api/network/send.js.map

File diff suppressed because one or more lines are too long

16
dist/api/utils/setup.js

@ -44,6 +44,22 @@ function setVersion() {
}
function migrate() {
return __awaiter(this, void 0, void 0, function* () {
addTableColumn('sphinx_chat_members', 'bot', 'BOOLEAN');
addTableColumn('sphinx_chat_members', 'bot_prefix');
addTableColumn('sphinx_chat_members', 'bot_maker_pubkey');
addTableColumn('sphinx_chat_members', 'bot_uuid');
addTableColumn('sphinx_bots', 'webhook');
try {
yield models_1.sequelize.query(`
CREATE TABLE sphinx_bot_members (
member_pubkey TEXT,
tribe_uuid TEXT,
msg_count BIGINT,
created_at DATETIME,
updated_at DATETIME
)`);
}
catch (e) { }
try {
yield models_1.sequelize.query(`
CREATE TABLE sphinx_bots (

2
dist/api/utils/setup.js.map

@ -1 +1 @@
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../api/utils/setup.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../api/utils/setup.ts"],"names":[],"mappings":"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"}

6
dist/config/constants.json

@ -47,7 +47,11 @@
"repayment": 18,
"member_request": 19,
"member_approve": 20,
"member_reject": 21
"member_reject": 21,
"tribe_delete": 22,
"bot_install": 23,
"bot_cmd": 24,
"bot_res": 25
},
"payment_errors": {
"timeout": "Timed Out",

Loading…
Cancel
Save