Im done adding stuff

This commit is contained in:
thororen1234 2024-07-18 03:07:01 -04:00
parent 167612920b
commit ee6a447c6f
57 changed files with 78068 additions and 4 deletions

View file

@ -0,0 +1,402 @@
/*
* Vencord, a Discord client mod
* Copyright (c) 2024 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 soundFileMapping: { [key: string]: string[]; } = {
discodoDetuneURL: ["c9bfe03395cf2616891f.mp3", "9b8b7e8c94287d5491a8.mp3"],
activitiesRocketTimeURL: ["cd402df20cddf4d85b4b.mp3"],
activityEndURL: ["37530244cdcd5141095b.mp3"],
activityLaunchURL: ["267f72c6f838aac3be94.mp3"],
activityUserJoinURL: ["74c606872cea9803e310.mp3"],
activityUserLeftURL: ["99bd2585703114d2df64.mp3"],
asmrMessage1URL: ["d04d1ee13ab2d7d04e97.mp3"],
bitMessage1URL: ["fd9f21c60424f7bbe603.mp3"],
bopMessage1URL: ["f9b3c218d2bac00a50a5.mp3"],
callCallingURL: ["11b68eb8f243b5f6c8d7.mp3", "ec09898a0bd65dfaa768.mp3"],
callRingingURL: ["986703daecf955ce3ce3.mp3", "6345bccfecdfa67fdb97.mp3"],
callRingingBeatURL: ["3b3a2f5f29b9cb656efb.mp3"],
callRingingHalloweenURL: ["feb12b25f1200b97c4eb.mp3"],
callRingingSnowHalationURL: ["99b1d8a6fe0b95e99827.mp3"],
callRingingSnowsgivingURL: ["54527e70cf0ddaeff76f.mp3"],
clipErrorURL: ["4185e05ac87668c95db7.mp3"],
clipSaveURL: ["f96b272b4140be6ce8a9.mp3"],
ddrDownURL: ["60b2fa578027733f07b2.mp3"],
ddrLeftURL: ["6a2283291b8468b5dcbc.mp3"],
ddrRightURL: ["ede3b86253bb4aa1615b.mp3"],
ddrUpURL: ["89547833e1e1ebb138a4.mp3"],
deafenURL: ["763976e8bc7c745f1bbb.mp3", "1e63dc2f54bef5c5003c.mp3"],
disconnectDetuneURL: ["752b32be8f41b5ef55c4.mp3"],
duckyMessage1URL: ["7732a4c7760789c64269.mp3"],
hangStatusSelectURL: ["6f82a1ced41ffba7e474.mp3"],
highfiveClapURL: ["b6765c41e5305ed3ccbf.mp3"],
highfiveWhistleURL: ["ea499ca7cb948b4e89f3.mp3"],
humanManURL: ["ba335c8e058cf0edef0c.mp3"],
lofiMessage1URL: ["8fd01840800c5b8d5d40.mp3"],
mention1URL: ["72d6195de7af6f6c522f.mp3"],
mention2URL: ["5746c97822ddd998ecaa.mp3"],
mention3URL: ["90268f54ea2962dd9a9d.mp3"],
message1DetuneURL: ["70ae9d5bc54e4e0954f9.mp3", "ed256a76f3fe748177de.mp3"],
message2URL: ["94d97da9d3ca65ca5c48.mp3"],
message3URL: ["647a0cfe7a004fa8b20d.mp3"],
muteDetuneURL: ["ad1365b07daf20cf62d5.mp3", "e8ffe6892e47d655e796.mp3"],
overlayunlockURL: ["cf5424f20c2a9c65b6bc.mp3"],
poggermodeAchievementUnlockURL: ["156fff4a60f8bd215dd9.mp3"],
poggermodeApplauseURL: ["07ff9c560f9ba1c99cc8.mp3"],
poggermodeEnabledURL: ["73eaa6460d4bdb9dcd4d.mp3"],
poggermodeMessageSendURL: ["7e01b5cb50d9d1941f16.mp3"],
pttStartDetuneURL: ["369f4aaf35687b9f986d.mp3", "3d1f7316482d3b37e947.mp3"],
pttStopDetuneURL: ["b843a42563e5f3144483.mp3", "1e1af3535e94d2143b69.mp3"],
reconnectURL: ["da2dc3239ecd9ab74be1.mp3"],
robotManURL: ["76ff191944dd58f4835f.mp3"],
stageWaitingURL: ["e23b4d3cf753989097f4.mp3"],
streamEndedDetuneURL: ["9b12ba39365fff66dd95.mp3", "8f4bc39481c815b02e4c.mp3"],
streamStartedDetuneURL: ["d954d7bfa51d58a25610.mp3", "7868133f107297d09719.mp3"],
streamUserJoinedDetuneURL: ["e9fa25653b507623acbd.mp3", "5320b9eae726f7c7b3f5.mp3"],
streamUserLeftDetuneURL: ["0fdb31ebfdaf7e86e7ff.mp3", "b45e91a78a4377b853b8.mp3"],
successURL: ["1cc608397adb2bb151de.mp3"],
undeafenDetuneURL: ["2f7089b0d3e66e7d6d67.mp3", "c87a93fd4b6918f21b8d.mp3"],
unmuteDetuneURL: ["80f50a0752b5cd6028ac.mp3", "1bf3e7ad8588f290f1d8.mp3"],
userJoinDetuneURL: ["93034ac8d9eba50e3354.mp3", "376a8b2b79947dabac6d.mp3"],
userLeaveDetuneURL: ["fea7a918aecf33a04116.mp3", "9ea3b5ecbcad19a243e6.mp3"],
userMovedDetuneURL: ["e490f52f12a18334ae94.mp3", "af380400eb22d2fa80dc.mp3"],
vibingWumpusURL: ["38b1c58d275e828aa9b6.mp3"]
};
const settings = definePluginSettings({
discodoDetuneURL: {
description: "Audio URL for discodo sound",
type: OptionType.STRING,
default: "https://www.myinstants.com/media/sounds/explosion-m.mp3",
restartNeeded: true
},
activitiesRocketTimeURL: {
description: "Audio URL for activities rocket time sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
activityEndURL: {
description: "Audio URL for activity end sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
activityLaunchURL: {
description: "Audio URL for activity launch sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
activityUserJoinURL: {
description: "Audio URL for activity user join sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
activityUserLeftURL: {
description: "Audio URL for activity user left sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
asmrMessage1URL: {
description: "Audio URL for asmr message1 sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
bitMessage1URL: {
description: "Audio URL for bit message1 sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
bopMessage1URL: {
description: "Audio URL for bop message1 sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
callCallingURL: {
description: "Audio URL for call calling sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
callRingingURL: {
description: "Audio URL for call ringing sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
callRingingBeatURL: {
description: "Audio URL for call ringing beat sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
callRingingHalloweenURL: {
description: "Audio URL for call ringing halloween sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
callRingingSnowHalationURL: {
description: "Audio URL for call ringing snow halation sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
callRingingSnowsgivingURL: {
description: "Audio URL for call ringing snowsgiving sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
clipErrorURL: {
description: "Audio URL for clip error sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
clipSaveURL: {
description: "Audio URL for clip save sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
ddrDownURL: {
description: "Audio URL for ddr down sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
ddrLeftURL: {
description: "Audio URL for ddr left sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
ddrRightURL: {
description: "Audio URL for ddr right sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
ddrUpURL: {
description: "Audio URL for ddr up sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
deafenURL: {
description: "Audio URL for deafen sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
disconnectDetuneURL: {
description: "Audio URL for disconnect sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
duckyMessage1URL: {
description: "Audio URL for ducky message1 sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
hangStatusSelectURL: {
description: "Audio URL for hang status select sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
highfiveClapURL: {
description: "Audio URL for highfive clap sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
highfiveWhistleURL: {
description: "Audio URL for highfive whistle sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
humanManURL: {
description: "Audio URL for human man sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
lofiMessage1URL: {
description: "Audio URL for lofi message1 sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
mention1URL: {
description: "Audio URL for mention1 sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
mention2URL: {
description: "Audio URL for mention2 sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
mention3URL: {
description: "Audio URL for mention3 sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
message2URL: {
description: "Audio URL for message2 sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
message3URL: {
description: "Audio URL for message3 sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
muteDetuneURL: {
description: "Audio URL for mute sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
overlayunlockURL: {
description: "Audio URL for overlay unlock sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
poggermodeAchievementUnlockURL: {
description: "Audio URL for poggermode achievement unlock sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
poggermodeApplauseURL: {
description: "Audio URL for poggermode applause sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
poggermodeEnabledURL: {
description: "Audio URL for poggermode enabled sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
poggermodeMessageSendURL: {
description: "Audio URL for poggermode message send sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
pttStartDetuneURL: {
description: "Audio URL for ptt start sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
pttStopDetuneURL: {
description: "Audio URL for ptt stop sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
reconnectURL: {
description: "Audio URL for reconnect sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
robotManURL: {
description: "Audio URL for robot man sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
stageWaitingURL: {
description: "Audio URL for stage waiting sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
successURL: {
description: "Audio URL for success sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
},
vibingWumpusURL: {
description: "Audio URL for vibing wumpus sound",
type: OptionType.STRING,
default: "",
restartNeeded: true
}
});
function getSoundURL(settingKey: string) {
const url = settings.store[settingKey];
const knownAudioExtensions = [".mp3", ".wav", ".ogg", ".flac", ".aac", ".m4a"];
const isValidURL = (url: string) => {
try {
new URL(url);
return true;
} catch (_) {
return false;
}
};
const hasValidExtension = (url: string) => {
return knownAudioExtensions.some(ext => url.toLowerCase().endsWith(ext));
};
const addHttpsIfMissing = (url: string) => {
if (!/^https?:\/\//i.test(url)) {
return `https://${url}`;
}
return url;
};
const correctedURL = addHttpsIfMissing(url);
if (correctedURL && isValidURL(correctedURL) && hasValidExtension(correctedURL)) {
return correctedURL;
}
return url;
}
export default definePlugin({
name: "CustomSounds",
description: "Replace Discord sounds with a custom ones",
authors: [Devs.ScattrdBlade],
settings,
patches: Object.keys(soundFileMapping).flatMap(settingKey =>
soundFileMapping[settingKey].map(file => ({
find: file,
replacement: {
match: /e\.exports\s*=\s*n\.p\s*\+\s*"[a-zA-Z0-9]+\.(mp3|wav|ogg|flac|aac|m4a)"/,
replace: () => `e.exports="${getSoundURL(settingKey)}"`
}
}))
)
});