Plugin
LoadingQuotes
Replace Discords loading quotes
1
/*2
* FiveCord — a Discord client mod3
* Copyright (c) 2025 FiveCord4
* SPDX-License-Identifier: GPL-3.0-or-later5
*/6
7
import { definePluginSettings } from "@api/Settings";8
import { Devs } from "@utils/constants";9
import { Logger } from "@utils/Logger";10
import definePlugin, { OptionType } from "@utils/types";11
import presetQuotesText from "file:class="ts-cmt">//quotes.txt";12
13
const presetQuotes = presetQuotesText.split("\n").map(quote => /^\s*[^#\s]/.test(quote) && quote.trim()).filter(Boolean) as string[];14
const noQuotesQuote = "Did you really disable all loading quotes? What a buffoon you are...";15
16
const settings = definePluginSettings({17
replaceEvents: {18
description: "Should this plugin also apply during events with special event themed quotes? (e.g. Halloween)",19
type: OptionType.BOOLEAN,20
default: true21
},22
enablePluginPresetQuotes: {23
description: "Enable the quotes preset by this plugin",24
type: OptionType.BOOLEAN,25
default: true26
},27
enableDiscordPresetQuotes: {28
description: "Enable Discord039;s preset quotes (including event quotes, during events)",29
type: OptionType.BOOLEAN,30
default: false31
},32
additionalQuotes: {33
description: "Additional custom quotes to possibly appear, separated by the below delimiter",34
type: OptionType.STRING,35
default: "",36
multiline: true37
},38
additionalQuotesDelimiter: {39
description: "Delimiter for additional quotes",40
type: OptionType.STRING,41
default: "|",42
},43
});44
45
export default definePlugin({46
name: "LoadingQuotes",47
description: "Replace Discords loading quotes",48
tags: ["Appearance", "Fun", "Customisation"],49
authors: [Devs.Ven, Devs.KraXen72, Devs.UlyssesZhan],50
51
settings,52
53
patches: [54
{55
find: "#{intl::LOADING_DID_YOU_KNOW}",56
replacement: [57
{58
match: /_loadingText.+?(?=(\i)\[.{0,10}\.random)/,59
replace: "$&$self.mutateQuotes($1),"60
},61
{62
match: /_eventLoadingText.+?(?=(\i)\[.{0,10}\.random)/,63
replace: "$&$self.mutateQuotes($1),",64
predicate: () => settings.store.replaceEvents65
}66
]67
},68
],69
70
mutateQuotes(quotes: string[]) {71
try {72
const { enableDiscordPresetQuotes, additionalQuotes, additionalQuotesDelimiter, enablePluginPresetQuotes } = settings.store;73
74
if (!enableDiscordPresetQuotes)75
quotes.length = 0;76
77
78
if (enablePluginPresetQuotes)79
quotes.push(...presetQuotes);80
81
quotes.push(...additionalQuotes.split(additionalQuotesDelimiter).filter(Boolean));82
83
if (!quotes.length)84
quotes.push(noQuotesQuote);85
} catch (e) {86
new Logger("LoadingQuotes").error("Failed to mutate quotes", e);87
}88
}89
});90