diff --git a/AppData.zip b/AppData.zip
index 4e0557b..807676e 100644
Binary files a/AppData.zip and b/AppData.zip differ
diff --git a/AppData/Actions/createList.js b/AppData/Actions/createList.js
index 60aa539..209aeb9 100644
--- a/AppData/Actions/createList.js
+++ b/AppData/Actions/createList.js
@@ -18,7 +18,7 @@ module.exports = {
let transferVariables = require(`../Toolkit/variableTools.js`).transf;
const transf = (value) => {
- transferVariables(value, bridge.variables);
+ return transferVariables(value, bridge.variables);
};
bridge.variables[transf(values.listName)] = [];
diff --git a/AppData/Actions/deleteChannel.js b/AppData/Actions/deleteChannel.js
new file mode 100644
index 0000000..7016a25
--- /dev/null
+++ b/AppData/Actions/deleteChannel.js
@@ -0,0 +1,47 @@
+module.exports = {
+ data: {
+ name: "Delete Channel",
+ channel: "",
+ channelFrom: "Command channel",
+ threadName: "",
+ autoArchive: "",
+ storeAs: "",
+ },
+ UI: {
+ compatibleWith: ["Text", "Slash"],
+ text: "Delete Channel",
+ sepbar:"",
+
+ btext: "Get Channel Via",
+ menuBar: {choices: ["Command Channel", "Variable*", "ID*"], storeAs: "channelFrom", extraField: "channel"},
+
+ variableSettings: {
+ channel: {
+ "Variable*": "direct"
+ }
+ }
+ },
+ subtitle: "Get Channel Via: $[channelFrom]$",
+ async run(values, message, client, bridge) {
+ let transferVariables = require(`../Toolkit/variableTools.js`).transf;
+
+ const transf = (value) => {
+ return transferVariables(value, bridge.variables);
+ };
+
+ let channel;
+
+ if (values.channelFrom == 'Command Channel') {
+ channel = message.channel;
+ }
+ if (values.channelFrom == 'Variable*') {
+ let chan = bridge.variables[transf(values.channel)]
+ channel = chan.channel || client.getChannel(chan.id)
+ }
+ if (values.channelFrom == 'ID*') {
+ channel = client.getChannel(transf(values.channel))
+ }
+
+ channel.delete()
+ },
+};
diff --git a/AppData/Actions/deleteChannel_event.js b/AppData/Actions/deleteChannel_event.js
new file mode 100644
index 0000000..732dd56
--- /dev/null
+++ b/AppData/Actions/deleteChannel_event.js
@@ -0,0 +1,44 @@
+module.exports = {
+ data: {
+ name: "Delete Channel",
+ channel: "",
+ channelFrom: "Variable*",
+ threadName: "",
+ autoArchive: "",
+ storeAs: "",
+ },
+ UI: {
+ compatibleWith: ["Text", "Slash"],
+ text: "Delete Channel",
+ sepbar:"",
+
+ btext: "Get Channel Via",
+ menuBar: {choices: ["Variable*", "ID*"], storeAs: "channelFrom", extraField: "channel"},
+
+ variableSettings: {
+ channel: {
+ "Variable*": "direct"
+ }
+ }
+ },
+ subtitle: "Get Channel Via: $[channelFrom]$",
+ async run(values, message, client, bridge) {
+ let transferVariables = require(`../Toolkit/variableTools.js`).transf;
+
+ const transf = (value) => {
+ return transferVariables(value, bridge.variables);
+ };
+
+ let channel;
+
+ if (values.channelFrom == 'Variable*') {
+ let chan = bridge.variables[transf(values.channel)]
+ channel = chan.channel || client.getChannel(chan.id)
+ }
+ if (values.channelFrom == 'ID*') {
+ channel = client.getChannel(transf(values.channel))
+ }
+
+ channel.delete()
+ },
+};
diff --git a/AppData/Actions/sendmessage.js b/AppData/Actions/sendmessage.js
index 63db067..6772e8a 100644
--- a/AppData/Actions/sendmessage.js
+++ b/AppData/Actions/sendmessage.js
@@ -496,9 +496,8 @@ module.exports = {
channel = DMchannel;
}
if (values.sendTo == "Channel Variable*") {
- channel = client.getChannel(
- bridge.variables[varTools.transf(values.to, bridge.variables)].id,
- );
+ let chan = bridge.variables[varTools.transf(values.to, bridge.variables)]
+ channel = chan.channel || client.getChannel(chan.id)
}
if (values.sendTo == "Channel ID*") {
channel = client.getChannel(varTools.transf(values.to, bridge.variables));
diff --git a/AppData/Actions/sendmessage_event.js b/AppData/Actions/sendmessage_event.js
index f200266..8038b54 100644
--- a/AppData/Actions/sendmessage_event.js
+++ b/AppData/Actions/sendmessage_event.js
@@ -486,9 +486,8 @@ module.exports = {
let channel;
if (values.sendTo == "Channel Variable*") {
- channel = client.getChannel(
- bridge.variables[varTools.transf(values.to, bridge.variables)].id,
- );
+ let chan = bridge.variables[varTools.transf(values.to, bridge.variables)]
+ channel = chan.channel || client.getChannel(chan.id)
}
if (values.sendTo == "Channel ID*") {
channel = client.getChannel(varTools.transf(values.to, bridge.variables));
diff --git a/AppData/Actions/startThread.js b/AppData/Actions/startThread.js
new file mode 100644
index 0000000..2045998
--- /dev/null
+++ b/AppData/Actions/startThread.js
@@ -0,0 +1,79 @@
+module.exports = {
+ data: {
+ name: "Start Thread",
+ message: "",
+ messageFrom: "Command Message",
+ threadName: "",
+ autoArchive: "",
+ storeAs: "",
+ },
+ UI: {
+ compatibleWith: ["Text"],
+ text: "Start Thread",
+ sepbar:"",
+ btext: "Get Thread Parent Message Via",
+ menuBar: {choices: ["Command Message", "Variable*"], storeAs: "messageFrom", extraField: "message"},
+
+ sepbar0:"",
+
+ btext0: "Thread Name",
+ input: "threadName",
+
+ sepbar1: "",
+
+ btext1: "Thread Auto-Archive Duration",
+ menuBar0: {choices: ["1 Hour", "24 Hours", "3 Days", "1 Week"], storeAs: "autoArchive"},
+
+ sepbar2:"",
+
+ btext2: "Store Thread As",
+ "input!":"storeAs",
+
+ variableSettings: {
+ message: {
+ "Variable*": "direct"
+ }
+ }
+ },
+ subtitle: "Message: $[messageFrom]$ - Archive After: $[autoArchive]$",
+ async run(values, message, client, bridge) {
+ let transferVariables = require(`../Toolkit/variableTools.js`).transf;
+
+ const transf = (value) => {
+ return transferVariables(value, bridge.variables);
+ };
+
+
+ let threadName = transf(values.threadName)
+
+ let autoArchive;
+
+ switch(values.autoArchive) {
+ case '1 Hour':
+ autoArchive = 60;
+ break
+ case '24 Hours':
+ autoArchive = 1440
+ break
+ case '3 Days':
+ autoArchive = 4320
+ break
+ case '1 Week':
+ autoArchive = 10080
+ break
+ }
+
+ let msg;
+
+ if (values.messageFrom == 'Command Message') {
+ msg = message
+ } else {
+ msg = bridge.variables[transf(values.message)]
+ }
+ let thread = await msg.startThread({
+ name: threadName,
+ autoArchiveDuration: autoArchive
+ })
+ bridge.variables[transf(values.storeAs)] = thread
+ },
+};
diff --git a/AppData/Actions/startThread_event.js b/AppData/Actions/startThread_event.js
new file mode 100644
index 0000000..519f254
--- /dev/null
+++ b/AppData/Actions/startThread_event.js
@@ -0,0 +1,73 @@
+module.exports = {
+ data: {
+ name: "Start Thread",
+ message: "",
+ threadName: "",
+ autoArchive: "",
+ storeAs: "",
+ },
+ UI: {
+ compatibleWith: ["Slash", "Event"],
+ text: "Start Thread",
+ sepbar:"",
+ btext: "Parent Message Variable",
+ "input_direct": "message",
+
+ sepbar0:"",
+
+ btext0: "Thread Name",
+ input: "threadName",
+
+ sepbar1: "",
+
+ btext1: "Thread Auto-Archive Duration",
+ menuBar0: {choices: ["1 Hour", "24 Hours", "3 Days", "1 Week"], storeAs: "autoArchive"},
+
+ sepbar2:"",
+
+ btext2: "Store Thread As",
+ "input!":"storeAs",
+
+ variableSettings: {
+ message: {
+ "Variable*": "direct"
+ }
+ }
+ },
+ subtitle: "Message: $[messageFrom]$ - Archive After: $[autoArchive]$",
+ async run(values, message, client, bridge) {
+ let transferVariables = require(`../Toolkit/variableTools.js`).transf;
+
+ const transf = (value) => {
+ return transferVariables(value, bridge.variables);
+ };
+
+
+ let threadName = transf(values.threadName)
+
+ let autoArchive;
+
+ switch(values.autoArchive) {
+ case '1 Hour':
+ autoArchive = 60;
+ break
+ case '24 Hours':
+ autoArchive = 1440
+ break
+ case '3 Days':
+ autoArchive = 4320
+ break
+ case '1 Week':
+ autoArchive = 10080
+ break
+ }
+
+ let msg = bridge.variables[transf(values.message)]
+
+ let thread = await msg.startThread({
+ name: threadName,
+ autoArchiveDuration: autoArchive
+ })
+ bridge.variables[transf(values.storeAs)] = thread
+ },
+};
diff --git a/AppData/Kits/EditorBones.js b/AppData/Kits/EditorBones.js
index 267f324..011abc9 100644
--- a/AppData/Kits/EditorBones.js
+++ b/AppData/Kits/EditorBones.js
@@ -3,6 +3,35 @@ const { app, ipcRenderer } = require("electron");
let selectedGroupType = "text";
let copiedAction;
+const { Worker } = require('worker_threads');
+
+function runInWorker(method) {
+ return new Promise((resolve, reject) => {
+ const worker = new Worker(`
+ const { parentPort } = require('worker_threads');
+ parentPort.on('message', (method) => {
+ try {
+ method();
+ parentPort.postMessage('Code execution completed.');
+ } catch (error) {
+ parentPort.postMessage({ error: error.message });
+ }
+ });
+ `);
+
+ worker.on('message', (message) => {
+ if (typeof message === 'string') {
+ resolve(message);
+ } else {
+ reject(new Error(message.error));
+ }
+ worker.terminate();
+ });
+
+ worker.postMessage(method.toString());
+ });
+}
+
function editAction() {
let variables = [];
let actionType = "text";
@@ -82,6 +111,7 @@ const fs = require("fs");
const processPath = require("process").cwd();
const path = require("path");
var botData = JSON.parse(fs.readFileSync(processPath + "/AppData/data.json"));
+document.getElementById('titlebar').innerText = `Studio Bot Maker - Editing ${botData.name}`
let lastType = 0; // 0 = Command; 1 = Actions;
let lastObj = "1";
let lastAct = "1";
@@ -739,27 +769,7 @@ function modcolor() {
sidebar.style.width = "40vw";
sidebar.innerHTML = `
-