diff --git a/AppData.zip b/AppData.zip index 2c1423b..b72835b 100644 Binary files a/AppData.zip and b/AppData.zip differ diff --git a/AppData/Actions/editInteractionReply.js b/AppData/Actions/editInteractionReply.js index a52841d..5c29086 100644 --- a/AppData/Actions/editInteractionReply.js +++ b/AppData/Actions/editInteractionReply.js @@ -2,11 +2,13 @@ module.exports = { data: { messageContent: "", storeAs: "", + interactionFrom: "", interaction: "", actionRows: [], name: "Edit Interaction Reply", ExtraData: "", sendTo: "", + editMessageContent: true }, UI: { compatibleWith: ["Text", "Event"], @@ -14,6 +16,10 @@ module.exports = { sepbar: "", btext: "Message Content", largeInput: "messageContent", + toggle: { + name: "Edit Message Content?", + storeAs: "editMessageContent" + }, sepbar0: "", customMenu: { name: "Components", @@ -229,6 +235,10 @@ module.exports = { }, storeAs: "actionRows", }, + toggle0: { + name: "Edit Message Components?", + storeAs: "editMessageComponents" + }, sepbar1: "", customMenu0: { name: "Embeds", @@ -308,11 +318,15 @@ module.exports = { }, storeAs: "embeds", }, + toggle1: { + name: "Edit Message Embeds?", + storeAs: "editMessageEmbeds" + }, sepbar2: "", btext0: "Interaction Variable", input_direct: "interaction" }, - subtitle: "Content: $[messageContent]$ - Interaction From: $[messageVariable]$", + subtitle: "Content: $[messageContent]$ - Interaction From: $[interactionFrom]$", async run(values, message, client, bridge) { let actionRunner = bridge.runner const { @@ -592,22 +606,33 @@ module.exports = { } }; - let messageToEdit = bridge.variables[varTools.transf(values.interaction, bridge.variables)] + let messageToEdit = await bridge.variables[varTools.transf(values.interaction, bridge.variables)] - let msg = await messageToEdit - .editOriginal({ - content: varTools.transf(values.messageContent, bridge.variables), - embeds: embeds, - components: endComponents, - }) + let original = await messageToEdit.getOriginal() - if (values.storeAs != "") { - bridge.variables[values.storeAs] = msg; - } - messageStorage = msg; - client.on("interactionCreate", handleInteraction); - setTimeout(() => { - client.off("interactionCreate", handleInteraction); - }, highestTimeDenominator * 1000); + let msg = await messageToEdit + .editOriginal({ + content: values.editMessageContent ? varTools.transf(values.messageContent, bridge.variables) : original.content, + embeds: values.editMessageEmbeds ? embeds : original.embeds, + components: values.editMessageComponents ? endComponents : original.components, + }) + + + + if (values.storeAs != "") { + bridge.variables[values.storeAs] = msg; + } + messageStorage = msg; + + if (!values.editMessageComponents) return; + + client.off("interactionCreate", bridge.variables.globalActionCache[msg.id]) + + bridge.variables.globalActionCache[msg.id] = handleInteraction; + + client.on("interactionCreate", handleInteraction); + setTimeout(() => { + client.off("interactionCreate", handleInteraction); + }, highestTimeDenominator * 1000); }, -}; +}; \ No newline at end of file diff --git a/AppData/Actions/editInteractionReply_slash.js b/AppData/Actions/editInteractionReply_slash.js index 732c5ee..0190c3a 100644 --- a/AppData/Actions/editInteractionReply_slash.js +++ b/AppData/Actions/editInteractionReply_slash.js @@ -8,6 +8,7 @@ module.exports = { name: "Edit Interaction Reply", ExtraData: "", sendTo: "", + editMessageContent: true }, UI: { compatibleWith: ["Slash"], @@ -15,6 +16,10 @@ module.exports = { sepbar: "", btext: "Message Content", largeInput: "messageContent", + toggle: { + name: "Edit Message Content?", + storeAs: "editMessageContent" + }, sepbar0: "", customMenu: { name: "Components", @@ -230,6 +235,10 @@ module.exports = { }, storeAs: "actionRows", }, + toggle0: { + name: "Edit Message Components?", + storeAs: "editMessageComponents" + }, sepbar1: "", customMenu0: { name: "Embeds", @@ -309,6 +318,10 @@ module.exports = { }, storeAs: "embeds", }, + toggle1: { + name: "Edit Message Embeds?", + storeAs: "editMessageEmbeds" + }, sepbar2: "", btext0: "Get Interaction Via", menuBar: { @@ -323,7 +336,7 @@ module.exports = { } } }, - subtitle: "Content: $[messageContent]$ - Interaction From: $[messageVariable]$", + subtitle: "Content: $[messageContent]$ - Interaction From: $[interactionFrom]$", async run(values, message, client, bridge) { let actionRunner = bridge.runner const { @@ -604,27 +617,38 @@ module.exports = { }; let messageToEdit; - if (values.interactionFrom == 'Command Interaction') { - messageToEdit = message; + messageToEdit = await message; } else { - messageToEdit = bridge.variables[varTools.transf(values.interaction, bridge.variables)] + messageToEdit = await bridge.variables[varTools.transf(values.interaction, bridge.variables)] } - let msg = await messageToEdit - .editOriginal({ - content: varTools.transf(values.messageContent, bridge.variables), - embeds: embeds, - components: endComponents, - }) - if (values.storeAs != "") { - bridge.variables[values.storeAs] = msg; - } - messageStorage = msg; - client.on("interactionCreate", handleInteraction); - setTimeout(() => { - client.off("interactionCreate", handleInteraction); - }, highestTimeDenominator * 1000); + let original = await messageToEdit.getOriginal() + + let msg = await messageToEdit + .editOriginal({ + content: values.editMessageContent ? varTools.transf(values.messageContent, bridge.variables) : original.content, + embeds: values.editMessageEmbeds ? embeds : original.embeds, + components: values.editMessageComponents ? endComponents : original.components, + }) + + + if (values.storeAs != "") { + bridge.variables[values.storeAs] = msg; + } + + messageStorage = msg; + + if (!values.editMessageComponents) return; + + client.off("interactionCreate", bridge.variables.globalActionCache[msg.id]) + + bridge.variables.globalActionCache[msg.id] = handleInteraction; + + client.on("interactionCreate", handleInteraction); + setTimeout(() => { + client.off("interactionCreate", handleInteraction); + }, highestTimeDenominator * 1000); }, }; diff --git a/AppData/Actions/editMessage.js b/AppData/Actions/editMessage.js index a0a5380..578ef91 100644 --- a/AppData/Actions/editMessage.js +++ b/AppData/Actions/editMessage.js @@ -14,6 +14,10 @@ module.exports = { sepbar: "", btext: "Message Content", largeInput: "messageContent", + toggle: { + name: "Edit Message Content?", + storeAs: "editMessageContent" + }, sepbar0: "", customMenu: { name: "Components", @@ -229,6 +233,10 @@ module.exports = { }, storeAs: "actionRows", }, + toggle0: { + name: "Edit Message Components?", + storeAs: "editMessageComponents" + }, sepbar1: "", customMenu0: { name: "Embeds", @@ -308,6 +316,10 @@ module.exports = { }, storeAs: "embeds", }, + toggle1: { + name: "Edit Message Embeds?", + storeAs: "editMessageEmbeds" + }, sepbar2: "", btext0: "Message Variable", input_direct: "messageVariable" @@ -594,19 +606,31 @@ module.exports = { let messageToEdit = bridge.variables[varTools.transf(values.messageVariable, bridge.variables)] let msg = await messageToEdit - msg.edit({ - content: varTools.transf(values.messageContent, bridge.variables), - embeds: embeds, - components: endComponents, + + let original = msg; /* yes im lazying out cry ab it */ + await msg.edit({ + content: values.editMessageContent ? varTools.transf(values.messageContent, bridge.variables) : original.content, + embeds: values.editMessageEmbeds ? embeds : original.embeds, + components: values.editMessageComponents ? endComponents : original.components, }) + bridge.data.global[msg.id] = handleInteraction; + if (values.storeAs != "") { - bridge.variables[values.storeAs] = msg; + bridge.variables[values.storeAs] = {...msg, handleInteractionMethod: handleInteraction}; } + messageStorage = msg; + + if (!values.editMessageComponents) return; + + client.off("interactionCreate", bridge.variables.globalActionCache[msg.id]) + + bridge.variables.globalActionCache[msg.id] = handleInteraction; + client.on("interactionCreate", handleInteraction); setTimeout(() => { client.off("interactionCreate", handleInteraction); }, highestTimeDenominator * 1000); }, -}; +}; \ No newline at end of file diff --git a/AppData/Actions/getGuildChannelList.js b/AppData/Actions/getGuildChannelList.js index f8f1395..6494b8f 100644 --- a/AppData/Actions/getGuildChannelList.js +++ b/AppData/Actions/getGuildChannelList.js @@ -2,7 +2,7 @@ module.exports = { data: { name: "Get Guild Channels List", storeAs: "", get: "IDs" }, UI: { - compatibleWith: ["Text", "Slash"], + compatibleWith: ["Any"], text: "Get Guild Channels List", sepbar: "", diff --git a/AppData/Actions/getGuildData.js b/AppData/Actions/getGuildData.js new file mode 100644 index 0000000..8699003 --- /dev/null +++ b/AppData/Actions/getGuildData.js @@ -0,0 +1,61 @@ +module.exports = { + data: {"name":"Get Guild Data", + "dataName":"", + "storeAs":"", + "guildFrom":"Command Author", + "guild":""}, + + UI: {"compatibleWith":["Any"], + + "text":"Get Guild Data", + + "sepbar":"", + + "btext":"Get Guild Via", + "menuBar":{"choices":["Command Guild", "ID*", "Variable*"], storeAs:"guildFrom", extraField:"guild"}, + + "sepbar1":"", + + "btext0":"Data Name", + "input*":"dataName", + + "sepbar0":"", + + "btext1":"Store As", + "input!":"storeAs", + + "variableSettings":{ + "guild": { + "Variable*": "direct", + "Command Author": "novars" + } + } + }, + subtitle: "Guild: $[guildFrom]$ - Data Name: $[dataName]$ - Store As: $[storeAs]$", + async run(values, message, client, bridge) { + let varTools = require(`../Toolkit/variableTools.js`) + + var storedData = bridge.data.IO.get() + if (values.guildFrom == 'Command Guild') { + guild = message.guild + } + if (values.guildFrom == 'Variable*') { + guild = bridge.variables[varTools.transf(values.guild, bridge.variables)] + } + if (values.guildFrom == 'ID*') { + guild = client.guilds.get(varTools.transf(values.guild, bridge.variables)) + } + + let guildData = undefined; + + try { + guildData = storedData.guilds[guild.id][varTools.transf(values.dataName, bridge.variables)]; + } catch (error) { + guildData = '' + storedData.guilds[guild.id] = {} + bridge.data.IO.write(storedData) + } + + bridge.variables[varTools.transf(values.storeAs, bridge.variables)] = guildData + } +} \ No newline at end of file diff --git a/AppData/Actions/getGuildMembersList.js b/AppData/Actions/getGuildMembersList.js index 420569f..4f74bb3 100644 --- a/AppData/Actions/getGuildMembersList.js +++ b/AppData/Actions/getGuildMembersList.js @@ -2,7 +2,7 @@ module.exports = { data: { name: "Get Guild Members List", storeAs: "", get: "IDs" }, UI: { - compatibleWith: ["Text", "Slash"], + compatibleWith: ["Any"], text: "Get Guild Members List", sepbar: "", diff --git a/AppData/Actions/getGuildRolesList.js b/AppData/Actions/getGuildRolesList.js index 5f21003..d6032a8 100644 --- a/AppData/Actions/getGuildRolesList.js +++ b/AppData/Actions/getGuildRolesList.js @@ -2,7 +2,7 @@ module.exports = { data: { name: "Get Guild Roles List", storeAs: "", get: "IDs" }, UI: { - compatibleWith: ["Text", "Slash"], + compatibleWith: ["Any"], text: "Get Guild Roles List", sepbar: "", diff --git a/AppData/Actions/interactionReply.js b/AppData/Actions/interactionReply.js index e8db168..588fcc4 100644 --- a/AppData/Actions/interactionReply.js +++ b/AppData/Actions/interactionReply.js @@ -622,11 +622,13 @@ module.exports = { components: endComponents, flags: values.ephemeral == true ? 64 : null }) - .then(async (inter) => { + .then(async () => { let msg = await interactionPendingReply.getOriginal(); if (values.storeAs != "") { - bridge.variables[values.storeAs] = msg; + bridge.variables[values.storeAs] = {...msg, handleInteractionMethod: handleInteraction}; } + bridge.variables.globalActionCache[msg.id] = handleInteraction; + messageStorage = msg; client.on("interactionCreate", handleInteraction); setTimeout(() => { @@ -634,4 +636,4 @@ module.exports = { }, highestTimeDenominator * 1000); }); }, -}; +}; \ No newline at end of file diff --git a/AppData/Actions/interactionReply_text.js b/AppData/Actions/interactionReply_text.js index d1fe9b1..43b9b04 100644 --- a/AppData/Actions/interactionReply_text.js +++ b/AppData/Actions/interactionReply_text.js @@ -599,18 +599,20 @@ module.exports = { let interactionPendingReply = bridge.variables[varTools.transf(values.to, bridge.variables)]; - await interactionPendingReply + await interactionPendingReply .createMessage({ content: varTools.transf(values.messageContent, bridge.variables), embeds: embeds, components: endComponents, flags: values.ephemeral == true ? 64 : null }) - .then(async (inter) => { + .then(async () => { let msg = await interactionPendingReply.getOriginal(); if (values.storeAs != "") { - bridge.variables[values.storeAs] = msg; + bridge.variables[values.storeAs] = {...msg, handleInteractionMethod: handleInteraction}; } + bridge.variables.globalActionCache[msg.id] = handleInteraction; + messageStorage = msg; client.on("interactionCreate", handleInteraction); setTimeout(() => { diff --git a/AppData/Actions/sendmessage.js b/AppData/Actions/sendmessage.js index 9d77f10..363bd02 100644 --- a/AppData/Actions/sendmessage.js +++ b/AppData/Actions/sendmessage.js @@ -332,6 +332,16 @@ module.exports = { "User Variable*": "direct", }, }, + guide: { + largeInput: "Your Message's Content", + customMenu: "Your Message's Components - Can be either dropdowns, or buttons.", + customMenu0: "Your Message's Embeds - The containers that can have descriptions, authors, fields, and hyperlinks!", + menuBar: ` + The place your message goes to. By default, it's "Command Channel" - Meaning your message goes to where the command was ran. \n + You can send messages to an user by using either their variable or ID. \n + An extra-field can pop up if you select any options that ask for a variable or ID. You can learn more about filling them in with variables here: [Context Menus] \n + ` + } }, subtitle: "Content: $[messageContent]$ - Get Channel Via: $[sendTo]$", async run(values, message, client, bridge) { @@ -646,10 +656,12 @@ module.exports = { components: endComponents, }) .then(async (msg) => { + bridge.variables.globalActionCache[msg.id] = handleInteraction; if (values.storeAs != "") { - bridge.variables[values.storeAs] = msg; + bridge.variables[values.storeAs] = {...msg, handleInteractionMethod: handleInteraction}; } messageStorage = msg; + client.on("interactionCreate", handleInteraction); setTimeout(() => { client.off("interactionCreate", handleInteraction); diff --git a/AppData/Actions/sendmessage_event.js b/AppData/Actions/sendmessage_event.js index 115f956..4a05518 100644 --- a/AppData/Actions/sendmessage_event.js +++ b/AppData/Actions/sendmessage_event.js @@ -644,10 +644,12 @@ module.exports = { components: endComponents, }) .then(async (msg) => { + bridge.variables.globalActionCache[msg.id] = handleInteraction; if (values.storeAs != "") { - bridge.variables[values.storeAs] = msg; + bridge.variables[values.storeAs] = {...msg, handleInteractionMethod: handleInteraction}; } messageStorage = msg; + client.on("interactionCreate", handleInteraction); setTimeout(() => { client.off("interactionCreate", handleInteraction); diff --git a/AppData/Actions/storeGuildData.js b/AppData/Actions/storeGuildData.js new file mode 100644 index 0000000..dea0947 --- /dev/null +++ b/AppData/Actions/storeGuildData.js @@ -0,0 +1,58 @@ +module.exports = { + data: {"name":"Store Guild Data", + "dataName":"", + "dataValue": "", + "guildFrom":"Command Author", + "guild":""}, + + UI: {"compatibleWith":["Any"], + + "text":"Store Guild Data", + + "sepbar":"", + + "btext":"Get Guild Via", + "menuBar":{"choices":["Command Guild", "ID*", "Variable*"], storeAs:"guildFrom", extraField:"guild"}, + + "sepbar*":"", + + "btext0":"Data Name", + "input*":"dataName", + + "sepbar0":"", + + "btext1":"Data Value", + "input0*":"dataValue", + + "variableSettings":{ + "guild": { + "Variable*": "direct", + "Command Author": "novars" + } + } + }, + subtitle: "Guild: $[guildFrom]$ - Data Name: $[dataName]$ - Store: $[dataValue]$", + async run(values, message, client, bridge) { + let varTools = require(`../Toolkit/variableTools.js`) + + var storedData = bridge.data.IO.get() + + if (values.guildFrom == 'Command Guild') { + guild = message.guild + } + if (values.guildFrom == 'Variable*') { + guild = bridge.variables[varTools.transf(values.guild, bridge.variables)] + } + if (values.guildFrom == 'ID*') { + guild = client.guilds.get(varTools.transf(values.guild, bridge.variables)) + } + + if (!storedData.guilds[guild.id]) { + storedData.guilds[guild.id] = {} + } + + storedData.guilds[guild.id][varTools.transf(values.dataName, bridge.variables)] = varTools.transf(values.dataValue, bridge.variables) + + bridge.data.IO.write(storedData) + } +} \ No newline at end of file diff --git a/AppData/Events/bot_ready.js b/AppData/Events/bot_ready.js index bd9f662..1cd7d82 100644 --- a/AppData/Events/bot_ready.js +++ b/AppData/Events/bot_ready.js @@ -1,7 +1,6 @@ module.exports = { name: "Bot Ready", - nameSchemes: ["Store Client As"], - inputSchemes: 1, + nameSchemes: [], run(UI, client, fs, actionRunner, atWhat) { client.on( "ready", diff --git a/AppData/Events/button_interaction.js b/AppData/Events/bulk_delete_messages.js similarity index 59% rename from AppData/Events/button_interaction.js rename to AppData/Events/bulk_delete_messages.js index 0ead76c..189d8f6 100644 --- a/AppData/Events/button_interaction.js +++ b/AppData/Events/bulk_delete_messages.js @@ -1,12 +1,12 @@ module.exports = { - name: "Button Interaction", - nameSchemes: ["Store Interaction As"], + name: "Messages Bulk Delete", + nameSchemes: ["Store Deleted Messages List As"], inputSchemes: 1, run(UI, client, fs, actionRunner, atWhat) { - client.on("channelCreate", (msg) => { + client.on("messageDeleteBulk", (msg) => { actionRunner( atWhat, - msg, + msg[0], client, { [UI[0]]: msg, @@ -15,4 +15,4 @@ module.exports = { ); }); }, -}; +}; \ No newline at end of file diff --git a/AppData/Events/channel_create.js b/AppData/Events/channel_create.js index 57b389d..4edcc65 100644 --- a/AppData/Events/channel_create.js +++ b/AppData/Events/channel_create.js @@ -3,13 +3,13 @@ module.exports = { nameSchemes: ["Store Channel As"], inputSchemes: 1, run(UI, client, fs, actionRunner, atWhat) { - client.on("channelCreate", (msg) => { + client.on("channelCreate", (channel) => { actionRunner( atWhat, - msg, + channel, client, { - [UI[0]]: msg, + [UI[0]]: channel, }, true, ); diff --git a/AppData/Events/channel_delete.js b/AppData/Events/channel_delete.js index 96ee447..f0d2dd0 100644 --- a/AppData/Events/channel_delete.js +++ b/AppData/Events/channel_delete.js @@ -3,13 +3,13 @@ module.exports = { nameSchemes: ["Store Channel As"], inputSchemes: 1, run(UI, client, fs, actionRunner, atWhat) { - client.on("channelDelete", (msg) => { + client.on("channelDelete", (channel) => { actionRunner( atWhat, - msg, + channel, client, { - [UI[0]]: msg, + [UI[0]]: channel, }, true, ); diff --git a/AppData/Events/channel_update.js b/AppData/Events/channel_update.js index 702edfa..0b6000f 100644 --- a/AppData/Events/channel_update.js +++ b/AppData/Events/channel_update.js @@ -1,6 +1,6 @@ module.exports = { name: "Channel Update", - nameSchemes: ["Store Before As", "Store After As"], + nameSchemes: ["Store Channel Before Update As", "Store After Update As"], inputSchemes: 2, run(UI, client, fs, actionRunner, atWhat) { client.on("channelUpdate", (msg1, msg2) => { diff --git a/AppData/Events/guildCreate.js b/AppData/Events/guildCreate.js index dbf3772..75bf6cf 100644 --- a/AppData/Events/guildCreate.js +++ b/AppData/Events/guildCreate.js @@ -5,9 +5,9 @@ module.exports = { run(UI, client, fs, actionRunner, atWhat) { client.on( "guildCreate", - (msg) => { - actionRunner(atWhat, msg, client, { - [UI[0]]: msg, + (guild) => { + actionRunner(atWhat, {...guild, guild: guild}, client, { + [UI[0]]: guild, }); }, true, diff --git a/AppData/Events/guildLeave.js b/AppData/Events/guildLeave.js index 2aef1b0..ca900ee 100644 --- a/AppData/Events/guildLeave.js +++ b/AppData/Events/guildLeave.js @@ -5,9 +5,9 @@ module.exports = { run(UI, client, fs, actionRunner, atWhat) { client.on( "guildDelete", - (msg) => { - actionRunner(atWhat, msg, client, { - [UI[0]]: msg, + (guild) => { + actionRunner(atWhat, {...guild, guild: guild}, client, { + [UI[0]]: guild, }); }, true, diff --git a/AppData/Events/member_leave_guild.js b/AppData/Events/member_leave_guild.js index b05b1af..d7940aa 100644 --- a/AppData/Events/member_leave_guild.js +++ b/AppData/Events/member_leave_guild.js @@ -1,6 +1,6 @@ module.exports = { name: "Member Leave Guild", - nameSchemes: ["Guild", "Member"], + nameSchemes: ["Store Guild As", "Store Member As"], inputSchemes: 2, run(UI, client, fs, actionRunner, atWhat) { client.on("guildMemberRemove", (member) => { diff --git a/AppData/Events/message_delete.js b/AppData/Events/message_delete.js index 4284687..1de909a 100644 --- a/AppData/Events/message_delete.js +++ b/AppData/Events/message_delete.js @@ -15,4 +15,4 @@ module.exports = { ); }); }, -}; +}; \ No newline at end of file diff --git a/AppData/Events/reaction_add.js b/AppData/Events/reaction_add.js index b074e0f..f618031 100644 --- a/AppData/Events/reaction_add.js +++ b/AppData/Events/reaction_add.js @@ -6,7 +6,7 @@ module.exports = { client.on("messageReactionAdd", (reaction_origin, author) => { actionRunner( atWhat, - msg1, + reaction_origin, client, { [UI[0]]: reaction_origin, diff --git a/AppData/Events/reaction_remove.js b/AppData/Events/reaction_remove.js index 61babc6..0d14533 100644 --- a/AppData/Events/reaction_remove.js +++ b/AppData/Events/reaction_remove.js @@ -6,7 +6,7 @@ module.exports = { client.on("messageReactionRemove", (reaction_origin, author) => { actionRunner( atWhat, - msg1, + reaction_origin, client, { [UI[0]]: reaction_origin, @@ -16,4 +16,4 @@ module.exports = { ); }); }, -}; +}; \ No newline at end of file diff --git a/AppData/Events/role_create.js b/AppData/Events/role_create.js index 66b635a..603ec48 100644 --- a/AppData/Events/role_create.js +++ b/AppData/Events/role_create.js @@ -6,7 +6,7 @@ module.exports = { client.on("roleCreate", (role) => { actionRunner( atWhat, - msg, + {...role, guild: role.guild}, client, { [UI[0]]: role, diff --git a/AppData/Events/setInterval.js b/AppData/Events/setInterval.js new file mode 100644 index 0000000..d9c770f --- /dev/null +++ b/AppData/Events/setInterval.js @@ -0,0 +1,12 @@ +module.exports = { + name: "Set Interval", + nameSchemes: ["Call Every ? Seconds", "Emulated Guild ID"], + preventStorage: ["Call Every ? Seconds"], + run(UI, client, fs, actionRunner, atWhat) { + setInterval(() => { + actionRunner(atWhat, {guild: client.guilds.get(UI[1])}, client, {}); + }, + parseFloat(UI[0]) + ); + }, +}; \ No newline at end of file diff --git a/AppData/Events/thread_delete.js b/AppData/Events/thread_delete.js new file mode 100644 index 0000000..f00ca96 --- /dev/null +++ b/AppData/Events/thread_delete.js @@ -0,0 +1,19 @@ +module.exports = { + name: "Thread Delete", + nameSchemes: ["Store Thread As"], + run(UI, client, fs, actionRunner, atWhat, globalEventStorage) { + client.on("threadDelete", (thread) => { + if (globalEventStorage["threadDeleted" + thread.id]) { delete globalEventStorage["threadDeleted" + thread.id]; return }; + actionRunner( + atWhat, + thread, + client, + { + [UI[0]]: thread + }, + true, + ); + globalEventStorage["threadDeleted" + thread.id] = true + }); + }, +}; \ No newline at end of file diff --git a/AppData/Events/thread_members_update.js b/AppData/Events/thread_members_update.js new file mode 100644 index 0000000..218c297 --- /dev/null +++ b/AppData/Events/thread_members_update.js @@ -0,0 +1,21 @@ +module.exports = { + name: "Thread Members Update", + nameSchemes: ["Store Thread As", "Store Thread Added Members List As", "Store Thread Removed Members List As"], + run(UI, client, fs, actionRunner, atWhat, globalEventStorage) { + client.on("threadMembersUpdate", (thread, addedMembers, removedMembers) => { + if (globalEventStorage["threadMembersUpdated" + thread.id]) { delete globalEventStorage["threadMembersUpdated" + thread.id]; return }; + actionRunner( + atWhat, + thread, + client, + { + [UI[0]]: thread, + [UI[1]]: addedMembers, + [UI[2]]: removedMembers + }, + true, + ); + globalEventStorage["threadMembersUpdated" + thread.id] = true + }); + }, +}; \ No newline at end of file diff --git a/AppData/Events/thread_update.js b/AppData/Events/thread_update.js new file mode 100644 index 0000000..97d585d --- /dev/null +++ b/AppData/Events/thread_update.js @@ -0,0 +1,20 @@ +module.exports = { + name: "Thread Update", + nameSchemes: ["Store Thread Before Update As", "Store Thread After Update As"], + run(UI, client, fs, actionRunner, atWhat, globalEventStorage) { + client.on("threadUpdate", (thread, oldThread) => { + if (globalEventStorage["threadUpdate" + thread.id]) { delete globalEventStorage["threadUpdate" + thread.id]; return }; + actionRunner( + atWhat, + thread, + client, + { + [UI[0]]: thread, + [UI[1]]: oldThread + }, + true, + ); + globalEventStorage["threadUpdate" + thread.id] = true + }); + }, +}; \ No newline at end of file diff --git a/AppData/Events/update_message.js b/AppData/Events/update_message.js index 4796d06..8a674e5 100644 --- a/AppData/Events/update_message.js +++ b/AppData/Events/update_message.js @@ -1,6 +1,6 @@ module.exports = { name: "Message Update", - nameSchemes: ["Store Before As", "Store After As"], + nameSchemes: ["Store Old Message As", "Store New Message As"], inputSchemes: 2, run(UI, client, fs, actionRunner, atWhat) { client.on("messageUpdate", (msg1, msg2) => { @@ -16,4 +16,4 @@ module.exports = { ); }); }, -}; +}; \ No newline at end of file diff --git a/AppData/Kits/EditorBones.js b/AppData/Kits/EditorBones.js index 6eddd58..aaf9fdb 100644 --- a/AppData/Kits/EditorBones.js +++ b/AppData/Kits/EditorBones.js @@ -34,14 +34,12 @@ function editAction() { if (botData.commands[lastObj].type == "event") { actionType = "event"; try { - if ( - require(processPath + "/AppData/Events/" + botData.commands[lastObj].eventFile) - .inputSchemes == 2 - ) { - variables.push(botData.commands[lastObj].eventData[0]); - variables.push(botData.commands[lastObj].eventData[1]); - } else { - variables.push(botData.commands[lastObj].eventData[0]); + let event = require(processPath + "/AppData/Events/" + botData.commands[lastObj].eventFile) + for (let eventVariableStorageName in event.nameSchemes) { + console.log(event) + if (event.preventStorage && event.preventStorage.includes(event.nameSchemes[eventVariableStorageName])) {} else { + variables.push(botData.commands[lastObj].eventData[eventVariableStorageName]) + } } } catch (err) { null; diff --git a/AppData/Kits/EditorScripts.js b/AppData/Kits/EditorScripts.js index 220c18c..7baef2e 100644 --- a/AppData/Kits/EditorScripts.js +++ b/AppData/Kits/EditorScripts.js @@ -130,11 +130,15 @@ function closeWindowMenu() { }); }, 500); } + +let lastOpenedMenu = {} + function mbSelect(storeAs, menu, extraField, UIreference) { /* storeAs = the storeAs stored as value defined by the action */ /* menu = the menu element */ /* extraField = the input that appears when only a certain part of an input is selected */ /* UIreference = how the menu is defined as in the action UI file */ + lastOpenedMenu = {} cancelMenu = true; action.data[actionUI[UIreference].storeAs] = storeAs.innerText; @@ -182,8 +186,8 @@ function mbSelect(storeAs, menu, extraField, UIreference) { setTimeout(() => { storeAs.parentNode.innerHTML = storeAs.innerText; - if (pending != "" && cachedParentNode.nextSibling.className !== "selectBar") { - pending.appendAfter(cachedParentNode); + if (pending != "" && cachedParentNode.parentElement.nextSibling.className !== "selectBar") { + pending.appendAfter(cachedParentNode.parentElement); pending.addEventListener('input', (event) => { saveField(extraField, menu); setTimeout(() => { @@ -209,6 +213,9 @@ function mbSelect(storeAs, menu, extraField, UIreference) { } } } + + cachedParentNode.style.zIndex = '' + cachedParentNode.parentElement.style.zIndex = '' }, 100); setTimeout(() => { @@ -245,13 +252,25 @@ function closeMenu(elmett, nht, storesAs) { } // 32.8 let cancelMenu = false; -function openChoices(storesAs, pElm, dElement, elementStores) { + + +function openChoices(storesAs, pElm, inputStoredAs, elementStoredAs) { + if (lastOpenedMenu.storesAs) { + closeMenu(lastOpenedMenu.storesAs, lastOpenedMenu.pElm, lastOpenedMenu.inputStoredAs, lastOpenedMenu.elementStoredAs) + } + lastOpenedMenu.storesAs = storesAs; + lastOpenedMenu.pElm = pElm; + lastOpenedMenu.inputStoredAs = inputStoredAs; + lastOpenedMenu.elementStoredAs = elementStoredAs; + pElm.style.transition = "all 0.5s ease"; - let choices = actionUI[elementStores].choices; - for (let option in actionUI[elementStores].choices) { + pElm.style.zIndex = '1000' + pElm.parentElement.style.zIndex = '1000' + let choices = actionUI[elementStoredAs].choices; + for (let option in actionUI[elementStoredAs].choices) { if (choices[option] != action.data[storesAs]) { pElm.onclick = () => { - closeMenu(storesAs, pElm, dElement, elementStores); + closeMenu(storesAs, pElm, inputStoredAs, elementStoredAs); }; let menuElement = document.createElement("div"); menuElement.className = "menuBar flexbox"; @@ -260,22 +279,25 @@ function openChoices(storesAs, pElm, dElement, elementStores) { menuElement.style.alignItems = "left"; menuElement.innerHTML = `
${choices[option]} `; menuElement.onclick = () => { - mbSelect(menuElement, storesAs, dElement, elementStores); + mbSelect(menuElement, storesAs, inputStoredAs, elementStoredAs); }; pElm.appendChild(menuElement); - menuElement.style.animationName = "inittl"; - menuElement.style.animationDuration = "0.5s"; + menuElement.style.animationName = "menuBarSelectionFadeIn"; + menuElement.style.animationDuration = "0.2s"; } } } function closeMenu(storesAs, pElm, inputStoredAs, elementStoredAs) { if (cancelMenu == true) return; + lastOpenedMenu = {} pElm.style.animationName = ""; const innerHeight = pElm.clientHeight; pElm.style.animationDuration = ""; pElm.style.setProperty("--inner-height", innerHeight + "px"); pElm.style.animationName = "shrink"; pElm.style.animationDuration = "300ms"; + pElm.style.zIndex = '' + pElm.parentElement.style.zIndex = '' pElm.onclick = () => { openChoices(storesAs, pElm, inputStoredAs, elementStoredAs); }; @@ -1005,4 +1027,136 @@ function isCaretAtEnd(divElement) { function validateLargeInput(event) { +} + +let postGuideHTML = '' + +function openGuide() { + let editorContent = document.getElementById('editorContent'); + editorContent.style.transition = `all 0.${editorSettings.commonAnimation}s ease` + editorContent.style.opacity = '0' + postGuideHTML = editorContent.innerHTML + setTimeout(() => { + let UIdata = actionUI + let newBar = document.createElement('div') + newBar.classList = 'flexbox' + + newBar.style = `width: 100vw; height: 0vh; background-color: #FFFFFF07; transition: all 0.${editorSettings.commonAnimation}s ease; justify-content: left; overflow: auto` + + newBar.innerHTML = ` + + + + ` + if (document.getElementById('windowCloseButton')) { + let windowCloseButton = document.getElementById('windowCloseButton') + windowCloseButton.style.display = 'none' + } + + let selectorMenu = document.getElementById('selectorMenu') + selectorMenu.style.transition = `all 0.${editorSettings.commonAnimation}s ease` + + + + newBar.appendBefore(editorContent) + newBar.id = 'editorGuideBar' + setTimeout(() => { + selectorMenu.style.height = '0vh' + selectorMenu.style.overflow = 'auto' + newBar.style.height = '10vh' + }, 10); + + + editorContent.innerHTML = ` + +