diff --git a/.vscode/settings.json b/.vscode/settings.json
index 2ad46d58c..dc30511ba 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,6 +1,6 @@
{
"editor.codeActionsOnSave": {
- "source.fixAll.eslint": true
+ "source.fixAll.eslint": "explicit"
},
"eslint.validate": ["javascript"]
}
diff --git a/package.json b/package.json
index 0200f5ace..c8c29fdf2 100644
--- a/package.json
+++ b/package.json
@@ -50,7 +50,7 @@
"js-beautify": "^1.13.5",
"jszip": "^3.8.0",
"localforage": "^1.10.0",
- "node": "^16.10.0",
+ "node": "20",
"npm": "^8.11.0",
"promises": "^0.2.5",
"sass-loader": "^10",
diff --git a/src/blocks/Monaco/index.js b/src/blocks/Monaco/index.js
index f6bab63ff..6c55d37e6 100644
--- a/src/blocks/Monaco/index.js
+++ b/src/blocks/Monaco/index.js
@@ -18,4 +18,5 @@ import "./memberswithrole"
import "./robloxbuy"
import "./timeoutuntil"
import "./timeoutuntiltimestamp"
-import "./slowmo"
\ No newline at end of file
+import "./slowmo"
+import "./permissionsaddarray"
diff --git a/src/blocks/Monaco/permissionsaddarray.js b/src/blocks/Monaco/permissionsaddarray.js
new file mode 100644
index 000000000..ed74bfe36
--- /dev/null
+++ b/src/blocks/Monaco/permissionsaddarray.js
@@ -0,0 +1,66 @@
+import * as Blockly from "blockly/core";
+
+const blockName = "monaco_edit_permissions";
+
+
+const blockData = {
+ "message0": "in channel %1 %2 permissions to member/role with id %3 %4",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "channel",
+ "check": "Channel"
+ },
+ {
+ "type": "field_dropdown",
+ "name": "action",
+ "options": [
+ [
+ "allow",
+ "allow"
+ ],
+ [
+ "deny",
+ "deny"
+ ]
+ ]
+ },
+ {
+ "type": "input_value",
+ "name": "member",
+ "check": "String"
+ },
+ {
+ "type": "input_statement",
+ "name": "then"
+ }
+ ],
+ "colour": "#4C97FF",
+"previousStatement": null,
+"nextStatement": null,
+ "tooltip": "Edit more than one permission of a role/member.",
+ "helpUrl": ""
+};
+
+Blockly.Blocks[blockName] = {
+ init: function() {
+ this.jsonInit(blockData);
+ }
+};
+
+Blockly.JavaScript['monaco_edit_permissions'] = function(block) {
+ var value_channel = Blockly.JavaScript.valueToCode(block, 'channel', Blockly.JavaScript.ORDER_ATOMIC);
+ var value_action = block.getFieldValue('action');
+ var value_member = Blockly.JavaScript.valueToCode(block, 'member', Blockly.JavaScript.ORDER_ATOMIC);
+ var statements = Blockly.JavaScript.statementToCode(block, 'then');
+ // TODO: Assemble JavaScript into code variable.
+ var guilder = `s4d.clients.channels.cache.get('${value_channel}').edit(
+ {
+ permissionOverwrites:
+ id: '${value_member}',
+ ${value_action}: [
+${statements}
+ ]
+ })`;
+ return guilder;
+};
diff --git a/src/blocks/discord/channels/set_perms_parent.js b/src/blocks/discord/channels/set_perms_parent.js
index c64d97711..921e85c0e 100644
--- a/src/blocks/discord/channels/set_perms_parent.js
+++ b/src/blocks/discord/channels/set_perms_parent.js
@@ -10,82 +10,41 @@ const blockData = {
"type": "field_dropdown",
"name": "SEARCH",
"options": [
- [
- "View channel",
- "VIEW_CHANNEL"
- ],
- [
- "Manage channel",
- "MANAGE_CHANNEL"
- ],
- [
- "Manage webhooks",
- "MANAGE_WEBHOOKS"
- ],
- [
- "Manage permissions",
- "MANAGE_PERMISSIONS"
- ],
- [
- "Create invite",
- "CREATE_INSTANT_INVITE"
- ],
- [
- "Send messages",
- "SEND_MESSAGES"
- ],
- [
- "Embed links",
- "EMBED_LINKS"
- ],
- [
- "Attach files",
- "ATTACH_FILES"
- ],
- [
- "Add reactions",
- "ADD_REACTIONS"
- ],
- [
- "Send Messages",
- "USE_EXTERNAL_EMOJIS"
- ],
- [
- "Mention everyone",
- "MENTION_EVERYONE"
- ],
- [
- "Manage messages",
- "MANAGE_MESSAGES "
- ],
- [
- "Read message history",
- "READ_MESSAGE_HISTORY"
- ],
- [
- "Atach files",
- "ATTACH_FILES"
- ],
- [
- "Read message history",
- "READ_MESSAGE_HISTORY"
- ],
- [
- "Use external emojis",
- "USE_EXTERNAL_EMOJIS"
- ],
- [
- "View server insights",
- "VIEW_GUILD_INSIGHTS"
- ],
- [
- "Use slash commands",
- "USE_SLASH_COMMANDS"
- ],
- [
- "Send TTS messages",
- "SEND_TTS_MESSAGES"
- ],
+ ["CREATE_INSTANT_INVITE", "CREATE_INSTANT_INVITE"],
+ ["MANAGE_CHANNELS", "MANAGE_CHANNELS"],
+ ["ADD_REACTIONS", "ADD_REACTIONS"],
+ ["PRIORITY_SPEAKER", "PRIORITY_SPEAKER"],
+ ["STREAM", "STREAM"],
+ ["VIEW_CHANNEL", "VIEW_CHANNEL"],
+ ["SEND_MESSAGES", "SEND_MESSAGES"],
+ ["SEND_TTS_MESSAGES","SEND_TTS_MESSAGES"],
+ ["MANAGE_MESSAGES", "MANAGE_MESSAGES"],
+ ["EMBED_LINKS", "EMBED_LINKS"],
+ ["ATTACH_FILES", "ATTACH_FILES"],
+ ["READ_MESSAGE_HISTORY", "READ_MESSAGE_HISTORY"],
+ ["MENTION_EVERYONE", "MENTION_EVERYONE"],
+ ["USE_EXTERNAL_EMOJIS", "USE_EXTERNAL_EMOJIS"],
+ ["CONNECT", "CONNECT"],
+ ["SPEAK", "SPEAK"],
+ ["MUTE_MEMBERS", "MUTE_MEMBERS"],
+ ["DEAFEN_MEMBERS", "DEAFEN_MEMBERS"],
+ ["MOVE_MEMBERS", "MOVE_MEMBERS"],
+ ["USE_VAD", "USE_VAD"],
+ ["MANAGE_ROLES", "MANAGE_ROLES"],
+ ["MANAGE_WEBHOOKS", "MANAGE_WEBHOOKS"],
+ ["USE_APPLICATION_COMMANDS", "USE_APPLICATION_COMMANDS"],
+ ["REQUEST_TO_SPEAK", "REQUEST_TO_SPEAK"],
+ ["MANAGE_EVENTS", "MANAGE_EVENTS"],
+ ["MANAGE_THREADS", "MANAGE_THREADS"],
+ ["CREATE_PUBLIC_THREADS", "CREATE_PUBLIC_THREADS"],
+ ["CREATE_PRIVATE_THREADS", "CREATE_PRIVATE_THREADS"],
+ ["USE_EXTERNAL_STICKERS", "USE_EXTERNAL_STICKERS"],
+ ["SEND_MESSAGES_IN_THREADS", "SEND_MESSAGES_IN_THREADS"],
+ ["USE_EMBEDDED_ACTIVITIES", "USE_EMBEDDED_ACTIVITIES"],
+ ["USE_SOUNDBOARD", "USE_SOUNDBOARD"],
+ ["CREATE_EVENTS", "CREATE_EVENTS"],
+ ["USE_EXTERNAL_SOUNDS", "USE_EXTERNAL_SOUNDS"],
+ ["SEND_VOICE_MESSAGES", "SEND_VOICE_MESSAGES"]
]
}
],
@@ -104,7 +63,7 @@ Blockly.Blocks[blockName] = {
Blockly.JavaScript[blockName] = function(block){
const searchType = block.getFieldValue("SEARCH");
- const code = `['${searchType}'],`
+ const code = `Permissions.FLAGS.${searchType},`
return code;
-};
\ No newline at end of file
+};
diff --git a/src/toolbox.js b/src/toolbox.js
index be7b4abac..0217e3676 100644
--- a/src/toolbox.js
+++ b/src/toolbox.js
@@ -1943,6 +1943,7 @@ export default (favorites) => {
+
diff --git a/yarn.lock b/yarn.lock
index 8fda1897c..91525c293 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7147,10 +7147,10 @@ node-releases@^1.1.71:
resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz"
integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==
-node@^16.10.0:
- version "16.10.0"
- resolved "https://registry.npmjs.org/node/-/node-16.10.0.tgz"
- integrity sha512-SXcqz3j4AOFMPPsd0bXDpQY95Xm8mnJ7PbBhJKEvp+aPYoVH38QAHha59EAuRaiASaSLWt5sP0oDCMzzaSmEAA==
+node@20:
+ version "20.11.1"
+ resolved "https://registry.yarnpkg.com/node/-/node-20.11.1.tgz#41822e4cc4439a525b776ae7619279204ba00610"
+ integrity sha512-Xn8PkfFD6TYj/zqL2iK6ENtpEWvEymEHTycYdZydZNkzdqXwopqQKG+Yz+8xDsAJO15Db7VFNzRPVpYk0cbBJg==
dependencies:
node-bin-setup "^1.0.0"