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