Plugin

LoadingQuotes

Replace Discords loading quotes

Appearance Fun Customisation
index.ts
Download

Source

src/plugins/loadingQuotes/index.ts
1import { definePluginSettings } from "@api/Settings";
2import { Devs } from "@utils/constants";
3import { Logger } from "@utils/Logger";
4import definePlugin, { OptionType } from "@utils/types";
5import presetQuotesText from "file:class="ts-cmt">//quotes.txt";
6
7const presetQuotes = presetQuotesText.split("\n").map(quote => /^\s*[^#\s]/.test(quote) && quote.trim()).filter(Boolean) as string[];
8const noQuotesQuote = "Did you really disable all loading quotes? What a buffoon you are...";
9
10const 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: true
15 },
16 enablePluginPresetQuotes: {
17 description: "Enable the quotes preset by this plugin",
18 type: OptionType.BOOLEAN,
19 default: true
20 },
21 enableDiscordPresetQuotes: {
22 description: "Enable Discord's preset quotes (including event quotes, during events)",
23 type: OptionType.BOOLEAN,
24 default: false
25 },
26 additionalQuotes: {
27 description: "Additional custom quotes to possibly appear, separated by the below delimiter",
28 type: OptionType.STRING,
29 default: "",
30 multiline: true
31 },
32 additionalQuotesDelimiter: {
33 description: "Delimiter for additional quotes",
34 type: OptionType.STRING,
35 default: "|",
36 },
37});
38
39export 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.replaceEvents
59 }
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