aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/permissionFreeWill/README.md9
-rw-r--r--src/plugins/permissionFreeWill/index.ts56
2 files changed, 65 insertions, 0 deletions
diff --git a/src/plugins/permissionFreeWill/README.md b/src/plugins/permissionFreeWill/README.md
new file mode 100644
index 0000000..ca30575
--- /dev/null
+++ b/src/plugins/permissionFreeWill/README.md
@@ -0,0 +1,9 @@
+# PermissionFreeWill
+
+Removes the client-side restrictions that prevent editing channel permissions, such as permission lockouts ("Pretty sure
+you don't want to do this") and onboarding requirements ("Making this change will make your server incompatible [...]")
+
+## Warning
+
+This plugin will let you create permissions in servers that **WILL** lock you out of channels until an administrator
+can resolve it for you. Please be careful with the overwrites you are making and check carefully.
diff --git a/src/plugins/permissionFreeWill/index.ts b/src/plugins/permissionFreeWill/index.ts
new file mode 100644
index 0000000..f3fdf15
--- /dev/null
+++ b/src/plugins/permissionFreeWill/index.ts
@@ -0,0 +1,56 @@
+/*
+ * Vencord, a Discord client mod
+ * Copyright (c) 2023 Vendicated and contributors
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+import { definePluginSettings } from "@api/Settings";
+import { Devs } from "@utils/constants";
+import definePlugin, { OptionType } from "@utils/types";
+
+const settings = definePluginSettings({
+ lockout: {
+ type: OptionType.BOOLEAN,
+ default: true,
+ description: 'Bypass the permission lockout prevention ("Pretty sure you don\'t want to do this")',
+ restartNeeded: true
+ },
+ onboarding: {
+ type: OptionType.BOOLEAN,
+ default: true,
+ description: 'Bypass the onboarding requirements ("Making this change will make your server incompatible [...]")',
+ restartNeeded: true
+ }
+});
+
+export default definePlugin({
+ name: "PermissionFreeWill",
+ description: "Disables the client-side restrictions for channel permission management.",
+ authors: [Devs.lewisakura],
+
+ patches: [
+ // Permission lockout, just set the check to true
+ {
+ find: "Messages.SELF_DENY_PERMISSION_BODY",
+ replacement: [
+ {
+ match: /case"DENY":.{0,50}if\((?=\i\.\i\.can)/,
+ replace: "$&true||"
+ }
+ ],
+ predicate: () => settings.store.lockout
+ },
+ // Onboarding, same thing but we need to prevent the check
+ {
+ find: "Messages.ONBOARDING_CHANNEL_THRESHOLD_WARNING",
+ replacement: [
+ {
+ match: /case 1:if\((?=!\i\.sent.{20,30}Messages\.CANNOT_CHANGE_CHANNEL_PERMS)/,
+ replace: "$&false&&"
+ }
+ ],
+ predicate: () => settings.store.onboarding
+ }
+ ],
+ settings
+});