diff --git a/package.json b/package.json
index 8781b7a..238c61c 100644
--- a/package.json
+++ b/package.json
@@ -37,7 +37,7 @@
         "@typescript-eslint/parser": "^7.2.0",
         "@vencord/types": "^1.8.4",
         "dotenv": "^16.4.5",
-        "electron": "^29.1.1",
+        "electron": "^31.0.1",
         "electron-builder": "^24.13.3",
         "esbuild": "^0.20.1",
         "eslint": "^8.57.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 344b1cd..1bb71cc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -38,8 +38,8 @@ importers:
         specifier: ^16.4.5
         version: 16.4.5
       electron:
-        specifier: ^29.1.1
-        version: 29.1.1
+        specifier: ^31.0.1
+        version: 31.0.1
       electron-builder:
         specifier: ^24.13.3
         version: 24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
@@ -1080,8 +1080,8 @@ packages:
   electron-publish@24.13.1:
     resolution: {integrity: sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==}
 
-  electron@29.1.1:
-    resolution: {integrity: sha512-cXN15NgCi7MkzGo5/23ZQbii+0UfhmUiDjACunmzcUofYCjF42XhFbL7JZnwgI0qtBCCeJU8qZNZt9lU91gUFw==}
+  electron@31.0.1:
+    resolution: {integrity: sha512-2eBcp4iqLkTsml6mMq+iqrS5u3kJ/2mpOLP7Mj7lo0uNK3OyfNqRS9z1ArsHjBF2/HV250Te/O9nKrwQRTX/+g==}
     engines: {node: '>= 12.20.55'}
     hasBin: true
 
@@ -3654,7 +3654,7 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  electron@29.1.1:
+  electron@31.0.1:
     dependencies:
       '@electron/get': 2.0.3
       '@types/node': 20.11.26
diff --git a/src/main/mediaPermissions.ts b/src/main/mediaPermissions.ts
index 1f6cf46..f7765be 100644
--- a/src/main/mediaPermissions.ts
+++ b/src/main/mediaPermissions.ts
@@ -12,11 +12,13 @@ export function registerMediaPermissionsHandler() {
     session.defaultSession.setPermissionRequestHandler(async (_webContents, permission, callback, details) => {
         let granted = true;
 
-        if (details.mediaTypes?.includes("audio")) {
-            granted = await systemPreferences.askForMediaAccess("microphone");
-        }
-        if (details.mediaTypes?.includes("video")) {
-            granted &&= await systemPreferences.askForMediaAccess("camera");
+        if ("mediaTypes" in details) {
+            if (details.mediaTypes?.includes("audio")) {
+                granted &&= await systemPreferences.askForMediaAccess("microphone");
+            }
+            if (details.mediaTypes?.includes("video")) {
+                granted &&= await systemPreferences.askForMediaAccess("camera");
+            }
         }
 
         callback(granted);