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"