Update NotificationSounds.plugin.js

This commit is contained in:
Mirco Wittrien 2024-01-25 10:50:38 +01:00
parent d5c9133dc3
commit 5cb12da056
1 changed files with 28 additions and 47 deletions

View File

@ -2,7 +2,7 @@
* @name NotificationSounds
* @author DevilBro
* @authorId 278543574059057154
* @version 3.8.8
* @version 3.8.9
* @description Allows you to replace the native Sounds with custom Sounds
* @invite Jx3TjNS
* @donate https://www.paypal.me/MircoWittrien
@ -14,7 +14,9 @@
module.exports = (_ => {
const changeLog = {
"added": {
"Current Channel": "Added Option to change the sound for the current channel notification, (note: Discord added an option in the THEIR notification settings to play a different sound when a message is sent in the current channel, you need to have this enabled in order to be able to change the sound in the plugin settings"
}
};
return !window.BDFDB_Global || (!window.BDFDB_Global.loaded && !window.BDFDB_Global.started) ? class {
@ -72,13 +74,13 @@ module.exports = (_ => {
let types = {};
const message1Types = {
dm: {src: "./message3.mp3", name: "Message (Direct Message)", force: null, focus: true},
groupdm: {src: "./message3.mp3", name: "Message (Group Message)", force: null, focus: true},
mentioned: {src: "./message2.mp3", name: "Message Mentioned", force: false, focus: true},
reply: {src: "./message2.mp3", name: "Message Mentioned (reply)", force: false, focus: true},
role: {src: "./mention1.mp3", name: "Message Mentioned (role)", force: false, focus: true},
everyone: {src: "./mention2.mp3", name: "Message Mentioned (@everyone)", force: false, focus: true},
here: {src: "./mention3.mp3", name: "Message Mentioned (@here)", force: false, focus: true}
dm: {src: "./message3.mp3", name: "Message (Direct Message)"},
groupdm: {src: "./message3.mp3", name: "Message (Group Message)"},
mentioned: {src: "./message2.mp3", name: "Message Mentioned"},
reply: {src: "./message2.mp3", name: "Message Mentioned (reply)"},
role: {src: "./mention1.mp3", name: "Message Mentioned (role)"},
everyone: {src: "./mention2.mp3", name: "Message Mentioned (@everyone)"},
here: {src: "./mention3.mp3", name: "Message Mentioned (@here)"}
};
const namePrefixes = {
@ -88,6 +90,7 @@ module.exports = (_ => {
};
const nameSynonymes = {
"message3": "Message (Current Channel)",
"reconnect": "Invited To Speak"
};
@ -177,7 +180,7 @@ module.exports = (_ => {
this.defaults = {
volumes: {
globalVolume: {value: 100, description: "Global Notification Sounds Volume"}
globalVolume: {value: 100, description: "Global Notification Sounds Volume"}
}
};
@ -204,9 +207,7 @@ module.exports = (_ => {
src: src,
mute: id.startsWith("call_") ? null : false,
streamMute: false,
invisibleMute: false,
force: id == "message1" ? false : null,
focus: id == "message1" ? true : false
invisibleMute: false
};
if (id == "message1") {
types[id].mute = true;
@ -217,9 +218,7 @@ module.exports = (_ => {
src: BDFDB.LibraryModules.SoundParser(message1Types[subType].src),
mute: true,
streamMute: false,
invisibleMute: false,
force: message1Types[subType].force,
focus: message1Types[subType].focus
invisibleMute: false
}
}
}
@ -252,12 +251,10 @@ module.exports = (_ => {
if (BDFDB.ObjectUtils.is(e.methodArguments[0]) && e.methodArguments[0].type == "MESSAGE_CREATE" && e.methodArguments[0].message) {
const message = e.methodArguments[0].message;
const guildId = message.guild_id || null;
if (message.author.id != BDFDB.UserUtils.me.id && !BDFDB.LibraryStores.RelationshipStore.isBlocked(message.author.id)) {
if (message.author.id != BDFDB.UserUtils.me.id && !BDFDB.LibraryStores.RelationshipStore.isBlocked(message.author.id) && (BDFDB.LibraryStores.SelectedChannelStore.getChannelId() != message.channel_id || !BDFDB.LibraryStores.NotificationSettingsStore.getNotifyMessagesInSelectedChannel())) {
const channel = BDFDB.LibraryStores.ChannelStore.getChannel(message.channel_id);
const isGroupDM = channel.isGroupDM();
const muted = BDFDB.ChannelUtils.isThread(channel) ? BDFDB.LibraryStores.JoinedThreadsStore.isMuted(channel.id) : BDFDB.LibraryStores.UserGuildSettingsStore.isGuildOrCategoryOrChannelMuted(guildId, channel.id);
const focused = document.hasFocus() && BDFDB.LibraryStores.SelectedChannelStore.getChannelId() == channel.id;
if (!guildId && !muted && !(choices[isGroupDM ? "groupdm" : "dm"].focus && focused)) {
if (!guildId) {
this.fireEvent(isGroupDM ? "groupdm" : "dm");
this.playAudio(isGroupDM ? "groupdm" : "dm");
return;
@ -265,18 +262,18 @@ module.exports = (_ => {
else if (guildId) {
if (BDFDB.LibraryModules.MentionUtils.isRawMessageMentioned({rawMessage: message, userId: BDFDB.UserUtils.me.id})) {
if (message.mentions.length && !this.isSuppressMentionsEnabled(guildId, channel.id)) for (const mention of message.mentions) if (mention.id == BDFDB.UserUtils.me.id) {
if (message.message_reference && !message.interaction && (!muted || choices.reply.force) && !(choices.reply.focus && focused)) {
if (message.message_reference && !message.interaction) {
this.fireEvent("reply");
this.playAudio("reply");
return;
}
if (!message.message_reference && (!muted || choices.mentioned.force) && !(choices.mentioned.focus && focused)) {
if (!message.message_reference) {
this.fireEvent("mentioned");
this.playAudio("mentioned");
return;
}
}
if (message.mention_roles.length && !BDFDB.LibraryStores.UserGuildSettingsStore.isSuppressRolesEnabled(guildId, channel.id) && (!muted || choices.role.force) && !(choices.role.focus && focused)) {
if (message.mention_roles.length && !BDFDB.LibraryStores.UserGuildSettingsStore.isSuppressRolesEnabled(guildId, channel.id)) {
const member = BDFDB.LibraryStores.GuildMemberStore.getMember(guildId, BDFDB.UserUtils.me.id);
if (member && member.roles.length) for (const roleId of message.mention_roles) if (member.roles.includes(roleId)) {
this.fireEvent("role");
@ -285,19 +282,20 @@ module.exports = (_ => {
}
}
if (message.mention_everyone && !BDFDB.LibraryStores.UserGuildSettingsStore.isSuppressEveryoneEnabled(guildId, channel.id)) {
if (message.content.indexOf("@everyone") > -1 && (!muted || choices.everyone.force) && !(choices.everyone.focus && focused)) {
if (message.content.indexOf("@everyone") > -1) {
this.fireEvent("everyone");
this.playAudio("everyone");
return;
}
if (message.content.indexOf("@here") > -1 && (!muted || choices.here.force) && !(choices.here.focus && focused)) {
if (message.content.indexOf("@here") > -1) {
this.fireEvent("here");
this.playAudio("here");
return;
}
}
}
if (BDFDB.LibraryStores.UserGuildSettingsStore.allowAllMessages(channel) && (!muted || choices.message1.force) && !(choices.message1.focus && focused)) {
if (BDFDB.LibraryStores.UserGuildSettingsStore.allowAllMessages(channel) && !((channel.type == BDFDB.DiscordConstants.ChannelTypes.PUBLIC_THREAD || channel.type == BDFDB.DiscordConstants.ChannelTypes.PRIVATE_THREAD) && !BDFDB.LibraryStores.JoinedThreadsStore.hasJoined(BDFDB.UserUtils.me.id))) {
console.log(channel);
this.fireEvent("message1");
this.playAudio("message1");
return;
@ -455,7 +453,7 @@ module.exports = (_ => {
settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.CollapseContainer, {
title: "Sound Configuration",
collapseStates: collapseStates,
children: Object.keys(types).map(type => [
children: Object.keys(types).map(type => type == "message3" && !BDFDB.LibraryStores.NotificationSettingsStore.getNotifyMessagesInSelectedChannel() ? null : [
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Flex, {
className: BDFDB.disCN.marginbottom8,
align: BDFDB.LibraryComponents.Flex.Align.CENTER,
@ -464,25 +462,9 @@ module.exports = (_ => {
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsLabel, {
label: types[type].name
}),
["force", "focus", "mute", "streamMute", "invisibleMute"].some(n => types[type][n] !== null) && BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, {
["mute", "streamMute", "invisibleMute"].some(n => types[type][n] !== null) && BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, {
onClick: event => BDFDB.ContextMenuUtils.open(this, event, BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuGroup, {
children: [
{key: "force", label: "Force Play", hint: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, {
text: "Plays the Message Sound even if the Channel of the Message is muted",
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
name: BDFDB.LibraryComponents.SvgIcon.Names.QUESTIONMARK,
width: 18,
height: 18
})
})},
{key: "focus", label: "Focus Mute", hint: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, {
text: "Does not play the Message Sound when the Channel of the Message is currently opened",
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
name: BDFDB.LibraryComponents.SvgIcon.Names.QUESTIONMARK,
width: 18,
height: 18
})
})},
{key: "mute", label: ["Mute in", BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.StatusComponents.Status, {style: {marginLeft: 6}, size: 12, status: BDFDB.LibraryComponents.StatusComponents.Types.DND})]},
{key: "invisibleMute", label: ["Mute in", BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.StatusComponents.Status, {style: {marginLeft: 6}, size: 12, status: BDFDB.LibraryComponents.StatusComponents.Types.INVISIBLE})]},
{key: "streamMute", label: ["Mute while", BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.StatusComponents.Status, {style: {marginLeft: 6}, size: 12, status: BDFDB.LibraryComponents.StatusComponents.Types.STREAMING})]}
@ -703,8 +685,7 @@ module.exports = (_ => {
volume: 100,
mute: types[type].mute,
streamMute: types[type].streamMute,
invisibleMute: types[type].invisibleMute,
focus: types[type].focus
invisibleMute: types[type].invisibleMute
};
choices[type] = choice;
this.saveChoice(type, false);
@ -743,7 +724,7 @@ module.exports = (_ => {
}
isSoundUsedAnywhere (type) {
return type && type.indexOf("poggermode_") != 0 && type != "human_man" && type != "robot_man" && type != "discodo" && type != "overlayunlock" && type != "call_ringing_beat" && !(type != "message1" && /\d$/.test(type));
return type && type.indexOf("poggermode_") != 0 && type != "human_man" && type != "robot_man" && type != "discodo" && type != "overlayunlock" && type != "call_ringing_beat" && !(type != "message1" && type != "message3" && /\d$/.test(type));
}
};
})(window.BDFDB_Global.PluginUtils.buildPlugin(changeLog));