mirror of
https://github.com/Equicord/Equicord.git
synced 2025-01-18 13:23:28 -05:00
Update To Devs and Badges Sys
This commit is contained in:
parent
e4425ca98f
commit
44109d9979
58 changed files with 295 additions and 240 deletions
|
@ -2,13 +2,15 @@
|
|||
|
||||
An enhanced version of [Vencord](https://github.com/Vendicated/Vencord) by [Vendicated](https://github.com/Vendicated) called Equicord
|
||||
|
||||
Thank you to [Suncord](https://github.com/verticalsync/Suncord) by verticalsync for letting me rob your code sometimes :3
|
||||
|
||||
![image](https://i.ibb.co/xgNr2gq/image-2023-11-24-122019133.png)
|
||||
|
||||
## Features
|
||||
|
||||
- Third-party plugins implemented into the main build.
|
||||
- 100+ plugins built-in.
|
||||
- Some highlights: SpotifyControls, MessageLogger, Experiments, GameActivityToggle, Translate, NoTrack, QuickReply, Free Emotes/Stickers, PermissionsViewer,
|
||||
- Some highlights: SpotifyControls, MessageLogger, Experiments, GameActivityToggle, Translate, NoTrack, QuickReply, Free Emotes/Stickers, PermissionsViewer,
|
||||
CustomCommands, ShowHiddenChannels, PronounDB
|
||||
- Fairly lightweight despite the many inbuilt plugins
|
||||
- Works on any Discord branch: Stable, Canary or PTB all work (though for the best experience, I recommend stable!)
|
||||
|
|
|
@ -80,7 +80,9 @@ export function _getBadges(args: BadgeUserArgs) {
|
|||
}
|
||||
}
|
||||
const donorBadges = (Plugins.BadgeAPI as unknown as typeof import("../plugins/_api/badges").default).getDonorBadges(args.user.id);
|
||||
const equicordDonorBadges = (Plugins.BadgeAPI as unknown as typeof import("../plugins/_api/badges").default).getEquicordDonorBadges(args.user.id);
|
||||
if (donorBadges) badges.unshift(...donorBadges);
|
||||
if (equicordDonorBadges) badges.unshift(...equicordDonorBadges);
|
||||
|
||||
return badges;
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ import { useAwaiter } from "@utils/react";
|
|||
import type { ThemeHeader } from "@utils/themes";
|
||||
import { getThemeInfo, stripBOM, type UserThemeHeader } from "@utils/themes/bd";
|
||||
import { usercssParse } from "@utils/themes/usercss";
|
||||
import { findByCodeLazy, findLazy } from "@webpack";
|
||||
import { findLazy } from "@webpack";
|
||||
import { Button, Card, Forms, React, showToast, TabBar, Tooltip, useEffect, useMemo, useRef, useState } from "@webpack/common";
|
||||
import type { ComponentType, Ref, SyntheticEvent } from "react";
|
||||
import type { UserstyleHeader } from "usercss-meta";
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "VCSupport",
|
||||
description: "Wumpus Dance + Support Warning",
|
||||
authors: [Devs.thororen],
|
||||
authors: [EquicordDevs.thororen],
|
||||
});
|
||||
|
|
|
@ -35,4 +35,4 @@ export function Timer({ time }: Readonly<{ time: number; }>) {
|
|||
</Tooltip>
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,4 +23,4 @@ export function TimerIcon({ height = 16, width = 16, className }: Readonly<{
|
|||
C425,186.896,387.944,124.958,332.229,90.04z M355,272.5H212.5V130h30v112.5H355V272.5z"/>
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import ErrorBoundary from "@components/ErrorBoundary";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { FluxDispatcher, GuildStore, UserStore } from "@webpack/common";
|
||||
import { PassiveUpdateState, VoiceState } from "@webpack/types";
|
||||
|
@ -101,7 +101,7 @@ let runOneTime = true;
|
|||
export default definePlugin({
|
||||
name: "AllCallTimers",
|
||||
description: "Add call timer to all users in a server voice channel.",
|
||||
authors: [Devs.MaxHerbold, Devs.D3SOX],
|
||||
authors: [EquicordDevs.MaxHerbold, Devs.D3SOX],
|
||||
|
||||
settings,
|
||||
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
|
||||
export function TimerText({ text, className }: Readonly<{ text: string; className: string; }>) {
|
||||
return <div className={`timeCounter ${className}`} style={{
|
||||
marginTop: -6, // this margin value doesn't change the default size of the user container
|
||||
marginTop: -6, // this margin value doesn't change the default size of the user container
|
||||
fontWeight: "bold",
|
||||
fontFamily: "monospace",
|
||||
fontSize: 11, // good size that doesn't touch username
|
||||
fontSize: 11, // good size that doesn't touch username
|
||||
position: "relative",
|
||||
}}>{text}</div>;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
import { addPreSendListener, MessageExtra, removePreSendListener } from "@api/MessageEvents";
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Flex } from "@components/Flex";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import { isNonNullish } from "@utils/guards";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { Alerts, GuildStore, PermissionsBits, PermissionStore } from "@webpack/common";
|
||||
|
@ -17,7 +17,7 @@ import { AllowedMentions, AllowedMentionsBar, AllowedMentionsProps, AllowedMenti
|
|||
|
||||
export default definePlugin({
|
||||
name: "AllowedMentions",
|
||||
authors: [Devs.arHSM, Devs.amia],
|
||||
authors: [EquicordDevs.arHSM, Devs.amia],
|
||||
description: "Fine grained control over whom to ping when sending or editing a message.",
|
||||
dependencies: ["MessageEventsAPI"],
|
||||
settings: definePluginSettings({
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { Clipboard, Menu, showToast, Toasts } from "@webpack/common";
|
||||
|
||||
|
@ -54,7 +54,7 @@ function getEmojiFormattedString(target: Target): string {
|
|||
export default definePlugin({
|
||||
name: "CopyEmojiAsString",
|
||||
description: "Add's button to copy emoji as formatted string!",
|
||||
authors: [Devs.HAPPY_ENDERMAN, Devs.VISHNYA_NET_CHERESHNYA],
|
||||
authors: [EquicordDevs.HAPPY_ENDERMAN, EquicordDevs.VISHNYA_NET_CHERESHNYA],
|
||||
contextMenus: {
|
||||
"expression-picker"(children, { target }: { target: Target; }) {
|
||||
if (target.dataset.type !== "emoji") return;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { NavContextMenuPatchCallback } from "@api/ContextMenu";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { Clipboard, Menu } from "@webpack/common";
|
||||
import type { Channel, User } from "discord-types/general";
|
||||
|
@ -45,7 +45,7 @@ const UserContextMenuPatch: NavContextMenuPatchCallback = (children, { user }: U
|
|||
|
||||
export default definePlugin({
|
||||
name: "CopyUserMention",
|
||||
authors: [Devs.Cortex, Devs.castdrian],
|
||||
authors: [EquicordDevs.Cortex, Devs.castdrian],
|
||||
description: "Adds a button to copy user's mention on the user context menu, works best with ValidUser.",
|
||||
contextMenus: {
|
||||
"user-context": UserContextMenuPatch
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
*/
|
||||
|
||||
import { Link } from "@components/Link";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import { localStorage } from "@utils/localStorage";
|
||||
import { closeAllModals, openModal } from "@utils/modal";
|
||||
import definePlugin from "@utils/types";
|
||||
|
@ -51,7 +51,7 @@ function removeAppIcon() {
|
|||
export default definePlugin({
|
||||
name: "CustomAppIcons",
|
||||
description: "Add/upload custom (In-)App Icons.",
|
||||
authors: [Devs.HAPPY_ENDERMAN, Devs.SerStars],
|
||||
authors: [EquicordDevs.HAPPY_ENDERMAN, EquicordDevs.SerStars],
|
||||
patches: [
|
||||
{
|
||||
find: ".PremiumUpsellTypes.APP_ICON_UPSELL",
|
||||
|
@ -99,12 +99,12 @@ export default definePlugin({
|
|||
<><Forms.FormTitle>
|
||||
<Forms.FormTitle>How to use?</Forms.FormTitle>
|
||||
</Forms.FormTitle>
|
||||
<Forms.FormText>
|
||||
<Forms.FormText>Go to <Link href="/settings/appearance" onClick={e => { e.preventDefault(); closeAllModals(); FluxDispatcher.dispatch({ type: "USER_SETTINGS_MODAL_SET_SECTION", section: "Appearance" }); }}>Appearance Settings</Link> tab.</Forms.FormText>
|
||||
<Forms.FormText>Scroll down to "In-app Icons" and click on "Preview App Icon".</Forms.FormText>
|
||||
<Forms.FormText>And upload your own custom icon!</Forms.FormText>
|
||||
<Forms.FormText>You can only use links when you are uploading your Custom Icon.</Forms.FormText>
|
||||
</Forms.FormText></>
|
||||
<Forms.FormText>
|
||||
<Forms.FormText>Go to <Link href="/settings/appearance" onClick={e => { e.preventDefault(); closeAllModals(); FluxDispatcher.dispatch({ type: "USER_SETTINGS_MODAL_SET_SECTION", section: "Appearance" }); }}>Appearance Settings</Link> tab.</Forms.FormText>
|
||||
<Forms.FormText>Scroll down to "In-app Icons" and click on "Preview App Icon".</Forms.FormText>
|
||||
<Forms.FormText>And upload your own custom icon!</Forms.FormText>
|
||||
<Forms.FormText>You can only use links when you are uploading your Custom Icon.</Forms.FormText>
|
||||
</Forms.FormText></>
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
*/
|
||||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType, StartAt } from "@utils/types";
|
||||
import { Forms, Menu, TextInput, useState } from "@webpack/common";
|
||||
|
||||
|
@ -89,7 +89,7 @@ const settings = definePluginSettings({
|
|||
export default definePlugin({
|
||||
name: "CustomScreenShare",
|
||||
description: "Stream any resolution and any FPS!",
|
||||
authors: [Devs.KawaiianPizza],
|
||||
authors: [EquicordDevs.KawaiianPizza],
|
||||
settingsAboutComponent: () => (
|
||||
<Forms.FormSection>
|
||||
<Forms.FormTitle tag="h3">Usage</Forms.FormTitle>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
import { definePluginSettings, migratePluginSettings } from "@api/Settings";
|
||||
import { disableStyle, enableStyle } from "@api/Styles";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
import styles from "./style.css?managed";
|
||||
|
@ -54,7 +54,7 @@ migratePluginSettings("DoNotLeak", "Do Not Leak!");
|
|||
export default definePlugin({
|
||||
name: "DoNotLeak",
|
||||
description: "Hide all message contents and attachments when you're streaming or sharing your screen.",
|
||||
authors: [Devs.Perny],
|
||||
authors: [EquicordDevs.Perny],
|
||||
settings,
|
||||
start() {
|
||||
document.addEventListener("keyup", keyUpHandler);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { NavContextMenuPatchCallback } from "@api/ContextMenu";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { Alerts, Menu } from "@webpack/common";
|
||||
import { Message } from "discord-types/general";
|
||||
|
@ -56,7 +56,7 @@ async function verify(link) {
|
|||
export default definePlugin({
|
||||
name: "DoubleCounterBypass",
|
||||
description: "Bypass Double Counter verifications easily.",
|
||||
authors: [Devs.nyx],
|
||||
authors: [EquicordDevs.nyx],
|
||||
|
||||
contextMenus: {
|
||||
"message": patchMessageContextMenu,
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { addContextMenuPatch, findGroupChildrenByChildId, NavContextMenuPatchCallback, removeContextMenuPatch } from "@api/ContextMenu";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { Menu } from "@webpack/common";
|
||||
import type { Guild } from "discord-types/general";
|
||||
|
@ -26,9 +26,9 @@ export default definePlugin({
|
|||
name: "emojiDumper",
|
||||
description: "Context menu to dump and download a server's emojis.",
|
||||
authors: [
|
||||
Devs.Cortex,
|
||||
EquicordDevs.Cortex,
|
||||
Devs.Samwich,
|
||||
Devs.Woosh,
|
||||
EquicordDevs.Woosh,
|
||||
],
|
||||
start() {
|
||||
addContextMenuPatch(["guild-context", "guild-header-popout"], Patch);
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// Import required modules and components
|
||||
import { definePluginSettings, migratePluginSettings } from "@api/Settings";
|
||||
import { disableStyle, enableStyle } from "@api/Styles";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
// Importing the style managed fixes on and off switch
|
||||
|
@ -81,7 +81,7 @@ migratePluginSettings("EquicordCSS", "EquicordBuiltIn");
|
|||
export default definePlugin({
|
||||
name: "EquicordCSS",
|
||||
description: "CSS for Equicord users. You will need to look at the settings.",
|
||||
authors: [Devs.FoxStorm1, Devs.thororen],
|
||||
authors: [EquicordDevs.FoxStorm1, EquicordDevs.thororen],
|
||||
dependencies: ["ThemeAttributes"],
|
||||
settings,
|
||||
start() {
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
import "./styles.css";
|
||||
|
||||
import ErrorBoundary from "@components/ErrorBoundary";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { Clipboard, Toasts } from "@webpack/common";
|
||||
|
||||
|
@ -57,7 +57,7 @@ function getUsernames(contacts: ContactsList[], type: number): string[] {
|
|||
export default definePlugin({
|
||||
name: "ExportContacts",
|
||||
description: "Export a list of friends to your clipboard. Adds a new button to the menu bar for the friends tab.",
|
||||
authors: [Devs.dat_insanity],
|
||||
authors: [EquicordDevs.dat_insanity],
|
||||
patches: [
|
||||
{
|
||||
find: "fetchRelationships(){",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import { Margins } from "@utils/margins";
|
||||
import { copyWithToast } from "@utils/misc";
|
||||
import { closeModal } from "@utils/modal";
|
||||
|
@ -286,7 +286,7 @@ const settings = definePluginSettings({
|
|||
export default definePlugin({
|
||||
name: "FakeProfileThemes",
|
||||
description: "Allows profile theming and the usage of profile effects by hiding the colors and effect ID in your About Me using invisible, zero-width characters",
|
||||
authors: [Devs.ryan],
|
||||
authors: [EquicordDevs.ryan],
|
||||
patches: [
|
||||
{
|
||||
find: '"UserProfileStore"',
|
|
@ -17,7 +17,7 @@
|
|||
*/
|
||||
|
||||
import { addBadge, BadgePosition, ProfileBadge, removeBadge } from "@api/Badges";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { React, Tooltip } from "@webpack/common";
|
||||
import { User } from "discord-types/general";
|
||||
|
@ -111,7 +111,7 @@ const showCustom = () => Vencord.Settings.plugins.GlobalBadges.showCustom;
|
|||
export default definePlugin({
|
||||
name: "GlobalBadges",
|
||||
description: "Adds global badges from other client mods",
|
||||
authors: [Devs.HypedDomi, Devs.Wolfie],
|
||||
authors: [Devs.HypedDomi, EquicordDevs.Wolfie],
|
||||
|
||||
start: () => addBadge(Badge),
|
||||
stop: () => removeBadge(Badge),
|
||||
|
|
|
@ -11,7 +11,7 @@ import { get, set } from "@api/DataStore";
|
|||
import { addAccessory, removeAccessory } from "@api/MessageAccessories";
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { classNameFactory } from "@api/Styles";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { Menu } from "@webpack/common";
|
||||
|
||||
|
@ -129,7 +129,7 @@ export const settings = definePluginSettings({
|
|||
export default definePlugin({
|
||||
name: "HideMessage",
|
||||
description: "Adds a context menu option to hide messages",
|
||||
authors: [Devs.Hanzy],
|
||||
authors: [EquicordDevs.Hanzy],
|
||||
settings,
|
||||
|
||||
contextMenus: {
|
||||
|
|
|
@ -22,7 +22,7 @@ import { NavContextMenuPatchCallback } from "@api/ContextMenu";
|
|||
import { DataStore } from "@api/index";
|
||||
import { addButton, removeButton } from "@api/MessagePopover";
|
||||
import ErrorBoundary from "@components/ErrorBoundary";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import { classes } from "@utils/misc";
|
||||
import { openModal } from "@utils/modal";
|
||||
import definePlugin from "@utils/types";
|
||||
|
@ -71,7 +71,7 @@ function ToolBarHeader() {
|
|||
export default definePlugin({
|
||||
name: "HolyNotes",
|
||||
description: "Holy Notes allows you to save messages",
|
||||
authors: [Devs.Wolfie],
|
||||
authors: [EquicordDevs.Wolfie],
|
||||
dependencies: ["MessagePopoverAPI", "ChatInputButtonAPI"],
|
||||
|
||||
patches: [
|
||||
|
|
|
@ -8,7 +8,7 @@ import { DataStore } from "@api/index";
|
|||
import { addPreSendListener, removePreSendListener } from "@api/MessageEvents";
|
||||
import ExpandableHeader from "@components/ExpandableHeader";
|
||||
import { Heart } from "@components/Heart";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import { openUserProfile } from "@utils/discord";
|
||||
import * as Modal from "@utils/modal";
|
||||
import definePlugin from "@utils/types";
|
||||
|
@ -370,7 +370,7 @@ class DataUI {
|
|||
export default definePlugin({
|
||||
name: "IRememberYou",
|
||||
description: "Locally saves everyone you've been communicating with (including servers), in case of lose",
|
||||
authors: [Devs.zoodogood],
|
||||
authors: [EquicordDevs.zoodogood],
|
||||
dependencies: ["MessageEventsAPI"],
|
||||
patches: [],
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ import { DataStore } from "@api/index";
|
|||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Flex } from "@components/Flex";
|
||||
import { DeleteIcon } from "@components/Icons";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import { useForceUpdater } from "@utils/react";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { Button, Forms, TextInput, UserStore, UserUtils, useState } from "@webpack/common";
|
||||
|
@ -90,7 +90,7 @@ const settings = definePluginSettings({
|
|||
|
||||
export default definePlugin({
|
||||
name: "KeywordNotify",
|
||||
authors: [Devs.camila314],
|
||||
authors: [EquicordDevs.camila314],
|
||||
description: "Sends a notification if a given message matches certain keywords or regexes",
|
||||
settings,
|
||||
patches: [
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import { isNonNullish } from "@utils/guards";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { waitFor } from "@webpack";
|
||||
|
@ -31,7 +31,7 @@ waitFor("HiddenVisually", mod => {
|
|||
export default definePlugin({
|
||||
name: "MessageLatency",
|
||||
description: "Displays an indicator for messages that took ≥n seconds to send",
|
||||
authors: [Devs.arHSM],
|
||||
authors: [EquicordDevs.arHSM],
|
||||
settings: definePluginSettings({
|
||||
latency: {
|
||||
type: OptionType.NUMBER,
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { UserStore } from "@webpack/common";
|
||||
import { User } from "discord-types/general";
|
||||
|
@ -20,7 +20,7 @@ interface ModifiedUser extends User {
|
|||
export default definePlugin({
|
||||
name: "NoNitroUpsell",
|
||||
description: "Removes ALL of Discord's nitro upsells by tricking the client into thinking you have nitro.",
|
||||
authors: [Devs.thororen],
|
||||
authors: [EquicordDevs.thororen],
|
||||
ready(user: ModifiedUser): void {
|
||||
if (!user) return;
|
||||
if ("_realPremiumType" in user) return;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
|
@ -30,7 +30,7 @@ const settings = definePluginSettings({
|
|||
export default definePlugin({
|
||||
name: "PlatformSpoofer",
|
||||
description: "Spoof what platform or device you're on",
|
||||
authors: [Devs.Drag],
|
||||
authors: [EquicordDevs.Drag],
|
||||
settings: settings,
|
||||
patches: [
|
||||
{
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
*/
|
||||
|
||||
import { ApplicationCommandInputType, ApplicationCommandOptionType, findOption, sendBotMessage } from "@api/Commands";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
import { MessageStore, UserStore } from "@webpack/common";
|
||||
|
@ -45,7 +45,7 @@ export default definePlugin({
|
|||
name: "MessagePurge",
|
||||
description: "Purges messages from a channel",
|
||||
dependencies: ["CommandsAPI"],
|
||||
authors: [Devs.bhop, Devs.nyx],
|
||||
authors: [EquicordDevs.bhop, EquicordDevs.nyx],
|
||||
commands: [
|
||||
{
|
||||
name: "purge",
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import { addPreSendListener, removePreSendListener } from "@api/MessageEvents";
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
|
@ -31,7 +31,7 @@ function replaceQuestionMarks(content: string): string {
|
|||
export default definePlugin({
|
||||
name: "QuestionMarkReplace",
|
||||
description: "Replace all question marks with chosen string, if message only contains question marks.",
|
||||
authors: [Devs.nyx],
|
||||
authors: [EquicordDevs.nyx],
|
||||
|
||||
settings,
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { MessageStore, showToast, UserStore } from "@webpack/common";
|
||||
import { MessageJSON } from "discord-types/general";
|
||||
|
@ -43,7 +43,7 @@ export const settings = definePluginSettings({
|
|||
export default definePlugin({
|
||||
name: "ReplyPingControl",
|
||||
description: "Control whether to always or never get pinged on message replies, with a whitelist feature",
|
||||
authors: [Devs.ant0n, Devs.MrDiamond],
|
||||
authors: [Devs.ant0n, EquicordDevs.MrDiamond],
|
||||
settings,
|
||||
|
||||
patches: [{
|
||||
|
|
|
@ -17,12 +17,12 @@
|
|||
*/
|
||||
|
||||
import { ApplicationCommandOptionType, findOption } from "@api/Commands";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "Search",
|
||||
authors: [Devs.JacobTm, Devs.thororen],
|
||||
authors: [Devs.JacobTm, EquicordDevs.thororen],
|
||||
description: "Searchs the web.",
|
||||
dependencies: ["CommandsAPI"],
|
||||
commands: [{
|
||||
|
|
|
@ -16,14 +16,14 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "SearchFix",
|
||||
description: 'Fixes the annoying "We dropped the magnifying glass!" error.',
|
||||
settingsAboutComponent: () => <span style={{ color: "white" }}><i><b>This fix isn't perfect, so you may have to reload the search bar to fix issues.</b></i> Discord only allows a max offset of 5000 (this is what causes the magnifying glass error). This means that you can only see precisely 5000 messages into the past, and 5000 messages into the future (when sorting by old). This plugin just jumps to the opposite sorting method to try get around Discord's restriction, but if there is a large search result, and you try to view a message that is unobtainable with both methods of sorting, the plugin will simply show offset 0 (either newest or oldest message depending on the sorting method).</span>,
|
||||
authors: [Devs.jaxx],
|
||||
authors: [EquicordDevs.jaxx],
|
||||
patches: [
|
||||
{
|
||||
find: '"SearchStore"',
|
||||
|
|
|
@ -5032,4 +5032,4 @@ export const characters = [
|
|||
}
|
||||
}
|
||||
|
||||
];
|
||||
];
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
/*
|
||||
* Vencord, a Discord client mod
|
||||
* Copyright (c) 2024 Vendicated and contributors
|
||||
|
|
|
@ -91,4 +91,4 @@ export default definePlugin({
|
|||
}
|
||||
],
|
||||
|
||||
});
|
||||
});
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { addDecoration, removeDecoration } from "@api/MessageDecorations";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import { isPluginDev } from "@utils/misc";
|
||||
import definePlugin from "@utils/types";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
|
@ -46,6 +46,19 @@ function CheckBadge({ badge, author }: { badge: string; author: any; }): JSX.Ele
|
|||
))}
|
||||
</span>
|
||||
);
|
||||
case "EquicordDonor":
|
||||
return (
|
||||
<span style={{ order: settings.store.VencordDonorPosition }}>
|
||||
{badges.getEquicordDonorBadges(author.id)?.map((badge: any) => (
|
||||
<RoleIconComponent
|
||||
className={roleIconClassName}
|
||||
name={badge.description}
|
||||
size={20}
|
||||
src={badge.image}
|
||||
/>
|
||||
))}
|
||||
</span>
|
||||
);
|
||||
case "VencordContributer":
|
||||
return isPluginDev(author.id) ? (
|
||||
<span style={{ order: settings.store.VencordContributorPosition }}>
|
||||
|
@ -96,6 +109,7 @@ function ChatBadges({ author }: any) {
|
|||
return (
|
||||
<span style={{ display: "inline-flex", marginLeft: 2, verticalAlign: "top" }}>
|
||||
{settings.store.showVencordDonor && <CheckBadge badge={"VencordDonor"} author={author} />}
|
||||
{settings.store.showVencordDonor && <CheckBadge badge={"EquicordDonor"} author={author} />}
|
||||
{settings.store.showVencordContributor && <CheckBadge badge={"VencordContributer"} author={author} />}
|
||||
{settings.store.showDiscordProfile && <CheckBadge badge={"DiscordProfile"} author={author} />}
|
||||
{settings.store.showDiscordNitro && <CheckBadge badge={"DiscordNitro"} author={author} />}
|
||||
|
@ -105,7 +119,7 @@ function ChatBadges({ author }: any) {
|
|||
|
||||
export default definePlugin({
|
||||
name: "ShowBadgesInChat",
|
||||
authors: [Devs.Inbestigator, Devs.KrystalSkull],
|
||||
authors: [Devs.Inbestigator, EquicordDevs.KrystalSkull],
|
||||
description: "Shows the message author's badges beside their name in chat.",
|
||||
dependencies: ["MessageDecorationsAPI"],
|
||||
patches: [
|
||||
|
|
|
@ -23,6 +23,18 @@ const settings = definePluginSettings({
|
|||
hidden: true,
|
||||
default: 0
|
||||
},
|
||||
showEquicordDonor: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Enable to show Vencord donor badges in chat.",
|
||||
hidden: true,
|
||||
default: true
|
||||
},
|
||||
EquicordDonorPosition: {
|
||||
type: OptionType.NUMBER,
|
||||
description: "The position of the Vencord Donor badges.",
|
||||
hidden: true,
|
||||
default: 1
|
||||
},
|
||||
showVencordContributor: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Enable to show Vencord contributor badges in chat.",
|
||||
|
@ -33,7 +45,7 @@ const settings = definePluginSettings({
|
|||
type: OptionType.NUMBER,
|
||||
description: "The position of the Vencord Contributor badge.",
|
||||
hidden: true,
|
||||
default: 1
|
||||
default: 2
|
||||
},
|
||||
showDiscordProfile: {
|
||||
type: OptionType.BOOLEAN,
|
||||
|
@ -45,7 +57,7 @@ const settings = definePluginSettings({
|
|||
type: OptionType.NUMBER,
|
||||
description: "The position of the Discord profile badges.",
|
||||
hidden: true,
|
||||
default: 2
|
||||
default: 3
|
||||
},
|
||||
showDiscordNitro: {
|
||||
type: OptionType.BOOLEAN,
|
||||
|
@ -57,7 +69,7 @@ const settings = definePluginSettings({
|
|||
type: OptionType.NUMBER,
|
||||
description: "The position of the Discord Nitro badge.",
|
||||
hidden: true,
|
||||
default: 3
|
||||
default: 4
|
||||
},
|
||||
badgeSettings: {
|
||||
type: OptionType.COMPONENT,
|
||||
|
@ -71,6 +83,7 @@ export default settings;
|
|||
const BadgeSettings = () => {
|
||||
const [images, setImages] = useState([
|
||||
{ src: "https://cdn.discordapp.com/emojis/1026533070955872337.png", shown: settings.store.showVencordDonor, title: "Vencord donor badges", key: "VencordDonor", position: settings.store.VencordDonorPosition },
|
||||
{ src: "https://i.imgur.com/KsxHlbD.png", shown: settings.store.showEquicordDonor, title: "Equicord donor badges", key: "EquicordDonor", position: settings.store.EquicordDonorPosition },
|
||||
{ src: "https://i.imgur.com/OypoHrV.png", shown: settings.store.showVencordContributor, title: "Vencord/Equicord contributor badge", key: "VencordContributer", position: settings.store.VencordContributorPosition },
|
||||
{ src: "https://cdn.discordapp.com/badge-icons/bf01d1073931f921909045f3a39fd264.png", shown: settings.store.showDiscordProfile, title: "Discord profile badges (HypeSquad, Discord Staff, Active Developer, etc.)", key: "DiscordProfile", position: settings.store.DiscordProfilePosition },
|
||||
{ src: "https://cdn.discordapp.com/badge-icons/2ba85e8026a8614b640c2837bcdfe21b.png", shown: settings.store.showDiscordNitro, title: "Nitro badge", key: "DiscordNitro", position: settings.store.DiscordNitroPosition }
|
||||
|
@ -83,6 +96,10 @@ const BadgeSettings = () => {
|
|||
settings.store.VencordDonorPosition = image.position;
|
||||
settings.store.showVencordDonor = image.shown;
|
||||
break;
|
||||
case "EquiordDonor":
|
||||
settings.store.EquicordDonorPosition = image.position;
|
||||
settings.store.showEquicordDonor = image.shown;
|
||||
break;
|
||||
case "VencordContributer":
|
||||
settings.store.VencordContributorPosition = image.position;
|
||||
settings.store.showVencordContributor = image.shown;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import { addChatBarButton, ChatBarButton, removeChatBarButton } from "@api/ChatButtons";
|
||||
import { disableStyle, enableStyle } from "@api/Styles";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { FluxDispatcher } from "@webpack/common";
|
||||
|
||||
|
@ -29,10 +29,10 @@ const chatBarIcon: ChatBarButton = () => {
|
|||
export default definePlugin({
|
||||
name: "SoundBoardLogger",
|
||||
authors: [
|
||||
Devs.ImpishMoxxie,
|
||||
Devs.fres,
|
||||
EquicordDevs.Moxxie,
|
||||
EquicordDevs.fres,
|
||||
Devs.echo,
|
||||
Devs.thororen
|
||||
EquicordDevs.thororen
|
||||
],
|
||||
settings,
|
||||
patches: [
|
||||
|
|
|
@ -16,13 +16,13 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "UnlimitedAccounts",
|
||||
description: "Increases the amount of accounts you can add.",
|
||||
authors: [Devs.Balaclava, Devs.thororen],
|
||||
authors: [EquicordDevs.Balaclava, EquicordDevs.thororen],
|
||||
patches: [
|
||||
{
|
||||
find: "multiaccount_cta_tooltip_seen",
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Link } from "@components/Link";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { User } from "discord-types/general";
|
||||
|
||||
|
@ -33,7 +33,7 @@ export default definePlugin({
|
|||
|
||||
name: "UserPFP",
|
||||
description: "Allows you to use an animated avatar without Nitro",
|
||||
authors: [Devs.nexpid, Devs.thororen, Devs.FoxStorm1, Devs.coolesding],
|
||||
authors: [EquicordDevs.nexpid, EquicordDevs.thororen, EquicordDevs.FoxStorm1, EquicordDevs.coolesding],
|
||||
settings,
|
||||
settingsAboutComponent: () => (
|
||||
<>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { NavContextMenuPatchCallback } from "@api/ContextMenu";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { findStoreLazy } from "@webpack";
|
||||
import { GuildChannelStore, Menu, React, RestAPI, UserStore } from "@webpack/common";
|
||||
|
@ -125,8 +125,8 @@ const VoiceChannelContext: NavContextMenuPatchCallback = (children, { channel }:
|
|||
export default definePlugin({
|
||||
name: "VoiceChatUtilities",
|
||||
description: "This plugin allows you to perform multiple actions on an entire channel (move, mute, disconnect, etc.) (originally by dutake)",
|
||||
authors: [Devs.Dams, Devs.D3SOX],
|
||||
authors: [EquicordDevs.Dams, Devs.D3SOX],
|
||||
contextMenus: {
|
||||
"channel-context": VoiceChannelContext
|
||||
},
|
||||
});
|
||||
});
|
||||
|
|
|
@ -7,13 +7,13 @@
|
|||
import "./style.css";
|
||||
|
||||
import ErrorBoundary from "@components/ErrorBoundary";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "VoiceDownload",
|
||||
description: "Download voice messages.",
|
||||
authors: [Devs.puv],
|
||||
authors: [EquicordDevs.puv],
|
||||
patches: [
|
||||
{
|
||||
find: ".rippleContainer",
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import { classNameFactory } from "@api/Styles";
|
||||
import { Flex } from "@components/Flex";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { findByPropsLazy, findStoreLazy } from "@webpack";
|
||||
import { Forms, i18n, RelationshipStore, Tooltip, UserStore, useStateFromStores } from "@webpack/common";
|
||||
|
@ -54,7 +54,7 @@ const { encodeStreamKey }: {
|
|||
export default definePlugin({
|
||||
name: "WhosWatching",
|
||||
description: "Lets you view what users are watching your stream by hovering over the screenshare icon",
|
||||
authors: [Devs.fres],
|
||||
authors: [EquicordDevs.fres],
|
||||
patches: [
|
||||
{
|
||||
find: ".Masks.STATUS_SCREENSHARE,width:32",
|
||||
|
|
|
@ -45,24 +45,24 @@ const ContributorBadge: ProfileBadge = {
|
|||
};
|
||||
|
||||
let DonorBadges = {} as Record<string, Array<Record<"tooltip" | "badge", string>>>;
|
||||
let EquicordDonorBadges = {} as Record<string, Array<Record<"tooltip" | "badge", string>>>;
|
||||
|
||||
async function loadBadges(noCache = false) {
|
||||
|
||||
DonorBadges = {};
|
||||
|
||||
async function loadBadges(url: string, noCache = false) {
|
||||
const init = {} as RequestInit;
|
||||
if (noCache)
|
||||
init.cache = "no-cache";
|
||||
if (noCache) init.cache = "no-cache";
|
||||
|
||||
const one = await fetch("https://badges.vencord.dev/badges.json", init)
|
||||
.then(r => r.json());
|
||||
|
||||
const two = await fetch("https://raw.githubusercontent.com/Equicord/Ignore/main/badges.json", init)
|
||||
.then(r => r.json());
|
||||
|
||||
DonorBadges = { ...one, ...two };
|
||||
return await fetch(url, init).then(r => r.json());
|
||||
}
|
||||
|
||||
async function loadAllBadges(noCache = false) {
|
||||
const vencordBadges = await loadBadges("https://badges.vencord.dev/badges.json", noCache);
|
||||
const equicordBadges = await loadBadges("https://raw.githubusercontent.com/Equicord/Ignore/main/badges.json", noCache);
|
||||
|
||||
DonorBadges = vencordBadges;
|
||||
EquicordDonorBadges = equicordBadges;
|
||||
}
|
||||
|
||||
|
||||
export default definePlugin({
|
||||
name: "BadgeAPI",
|
||||
description: "API to add badges to users.",
|
||||
|
@ -99,7 +99,7 @@ export default definePlugin({
|
|||
|
||||
toolboxActions: {
|
||||
async "Refetch Badges"() {
|
||||
await loadBadges(true);
|
||||
await loadAllBadges(true);
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Successfully refetched badges!",
|
||||
|
@ -110,7 +110,7 @@ export default definePlugin({
|
|||
|
||||
async start() {
|
||||
Vencord.Api.Badges.addBadge(ContributorBadge);
|
||||
await loadBadges();
|
||||
await loadAllBadges();
|
||||
},
|
||||
|
||||
renderBadgeComponent: ErrorBoundary.wrap((badge: ProfileBadge & BadgeUserArgs) => {
|
||||
|
@ -186,5 +186,75 @@ export default definePlugin({
|
|||
));
|
||||
},
|
||||
}));
|
||||
},
|
||||
|
||||
getEquicordDonorBadges(userId: string) {
|
||||
return EquicordDonorBadges[userId]?.map(badge => ({
|
||||
image: badge.badge,
|
||||
description: badge.tooltip,
|
||||
position: BadgePosition.START,
|
||||
props: {
|
||||
style: {
|
||||
borderRadius: "50%",
|
||||
transform: "scale(0.9)" // The image is a bit too big compared to default badges
|
||||
}
|
||||
},
|
||||
onClick() {
|
||||
const modalKey = openModal(props => (
|
||||
<ErrorBoundary noop onError={() => {
|
||||
closeModal(modalKey);
|
||||
// Will get my own in the future
|
||||
VencordNative.native.openExternal("https://github.com/sponsors/Vendicated");
|
||||
}}>
|
||||
<Modals.ModalRoot {...props}>
|
||||
<Modals.ModalHeader>
|
||||
<Flex style={{ width: "100%", justifyContent: "center" }}>
|
||||
<Forms.FormTitle
|
||||
tag="h2"
|
||||
style={{
|
||||
width: "100%",
|
||||
textAlign: "center",
|
||||
margin: 0
|
||||
}}
|
||||
>
|
||||
<Heart />
|
||||
Equicord Donor
|
||||
</Forms.FormTitle>
|
||||
</Flex>
|
||||
</Modals.ModalHeader>
|
||||
<Modals.ModalContent>
|
||||
<Flex>
|
||||
<img
|
||||
role="presentation"
|
||||
src="https://cdn.discordapp.com/emojis/1026533070955872337.png"
|
||||
alt=""
|
||||
style={{ margin: "auto" }}
|
||||
/>
|
||||
<img
|
||||
role="presentation"
|
||||
src="https://cdn.discordapp.com/emojis/1026533090627174460.png"
|
||||
alt=""
|
||||
style={{ margin: "auto" }}
|
||||
/>
|
||||
</Flex>
|
||||
<div style={{ padding: "1em" }}>
|
||||
<Forms.FormText>
|
||||
This Badge is a special perk for Equicord Donors
|
||||
</Forms.FormText>
|
||||
<Forms.FormText className={Margins.top20}>
|
||||
Please consider supporting the development of Equicord by becoming a donor. It would mean a lot!!
|
||||
</Forms.FormText>
|
||||
</div>
|
||||
</Modals.ModalContent>
|
||||
<Modals.ModalFooter>
|
||||
<Flex style={{ width: "100%", justifyContent: "center" }}>
|
||||
<DonateButton />
|
||||
</Flex>
|
||||
</Modals.ModalFooter>
|
||||
</Modals.ModalRoot>
|
||||
</ErrorBoundary>
|
||||
));
|
||||
},
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
|
|
@ -133,7 +133,7 @@ function ToolboxFragmentWrapper({ children }: { children: ReactNode[]; }) {
|
|||
export default definePlugin({
|
||||
name: "EquicordToolbox",
|
||||
description: "Adds a button next to the inbox button in the channel header that houses Equicord quick actions",
|
||||
authors: [Devs.Ven, Devs.AutumnVN, Devs.FoxStorm1],
|
||||
authors: [Devs.Ven, Devs.AutumnVN],
|
||||
|
||||
patches: [
|
||||
{
|
||||
|
|
|
@ -8,4 +8,4 @@ import type { SVGProps } from "react";
|
|||
|
||||
export function SpotifyIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" {...props}><path fill="#1ed760" d="M128 0C57.308 0 0 57.309 0 128c0 70.696 57.309 128 128 128c70.697 0 128-57.304 128-128C256 57.314 198.697.007 127.998.007zm58.699 184.614c-2.293 3.76-7.215 4.952-10.975 2.644c-30.053-18.357-67.885-22.515-112.44-12.335a7.981 7.981 0 0 1-9.552-6.007a7.968 7.968 0 0 1 6-9.553c48.76-11.14 90.583-6.344 124.323 14.276c3.76 2.308 4.952 7.215 2.644 10.975m15.667-34.853c-2.89 4.695-9.034 6.178-13.726 3.289c-34.406-21.148-86.853-27.273-127.548-14.92c-5.278 1.594-10.852-1.38-12.454-6.649c-1.59-5.278 1.386-10.842 6.655-12.446c46.485-14.106 104.275-7.273 143.787 17.007c4.692 2.89 6.175 9.034 3.286 13.72zm1.345-36.293C162.457 88.964 94.394 86.71 55.007 98.666c-6.325 1.918-13.014-1.653-14.93-7.978c-1.917-6.328 1.65-13.012 7.98-14.935C93.27 62.027 168.434 64.68 215.929 92.876c5.702 3.376 7.566 10.724 4.188 16.405c-3.362 5.69-10.73 7.565-16.4 4.187z"></path></svg>);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,4 +8,4 @@ import type { SVGProps } from "react";
|
|||
|
||||
export function TwitchIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 268" {...props}><path fill="#5a3e85" d="M17.458 0L0 46.556v186.201h63.983v34.934h34.931l34.898-34.934h52.36L256 162.954V0zm23.259 23.263H232.73v128.029l-40.739 40.741H128L93.113 226.92v-34.886H40.717zm64.008 116.405H128V69.844h-23.275zm63.997 0h23.27V69.844h-23.27z"></path></svg>);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -209,7 +209,7 @@ function getApplicationIcons(activities: Activity[]) {
|
|||
export default definePlugin({
|
||||
name: "MemberListActivities",
|
||||
description: "Shows activity icons in the member list",
|
||||
authors: [Devs.D3SOX, Devs.nyx],
|
||||
authors: [Devs.D3SOX],
|
||||
tags: ["activity"],
|
||||
|
||||
settings,
|
||||
|
|
|
@ -21,11 +21,6 @@ import { Devs } from "@utils/constants";
|
|||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
coinsEnabled: {
|
||||
type: OptionType.BOOLEAN,
|
||||
default: false,
|
||||
description: "Enable coins feature (Requires reload)"
|
||||
},
|
||||
speed: {
|
||||
description: "Speed of Da Cat :3",
|
||||
type: OptionType.NUMBER,
|
||||
|
@ -54,34 +49,19 @@ export default definePlugin({
|
|||
name: "oneko",
|
||||
description: "cat follow mouse (real)",
|
||||
// Listing adryd here because this literally just evals her script
|
||||
authors: [Devs.Ven, Devs.adryd, Devs.Gingi, Devs.adryd],
|
||||
authors: [Devs.Ven, Devs.adryd],
|
||||
settings,
|
||||
|
||||
start() {
|
||||
const { coinsEnabled } = settings.store;
|
||||
if (coinsEnabled) {
|
||||
fetch("https://raw.githubusercontent.com/0xGingi/oneko.js/acf1ae58ca8bacd9af47a783c2e134136c35f948/oneko.js")
|
||||
.then(x => x.text())
|
||||
.then(s => s.replace("const nekoSpeed = 10;", `const nekoSpeed = ${settings.store.speed};`))
|
||||
.then(s => s.replace("./oneko.gif", "https://raw.githubusercontent.com/adryd325/oneko.js/14bab15a755d0e35cd4ae19c931d96d306f99f42/oneko.gif")
|
||||
.replace("(isReducedMotion)", "(false)"))
|
||||
.then(x => x.replace("./coin.gif", "https://raw.githubusercontent.com/0xGingi/oneko.js/3de1bf554bb82b58a2c70f828e2420a881e5f283/coin.gif"))
|
||||
.then(eval);
|
||||
}
|
||||
if (!coinsEnabled) {
|
||||
fetch("https://raw.githubusercontent.com/adryd325/oneko.js/8fa8a1864aa71cd7a794d58bc139e755e96a236c/oneko.js")
|
||||
.then(x => x.text())
|
||||
.then(s => s.replace("const nekoSpeed = 10;", `const nekoSpeed = ${settings.store.speed};`))
|
||||
.then(s => s.replace("./oneko.gif", "https://raw.githubusercontent.com/adryd325/oneko.js/14bab15a755d0e35cd4ae19c931d96d306f99f42/oneko.gif")
|
||||
.replace("(isReducedMotion)", "(false)"))
|
||||
.then(eval);
|
||||
}
|
||||
fetch("https://raw.githubusercontent.com/adryd325/oneko.js/8fa8a1864aa71cd7a794d58bc139e755e96a236c/oneko.js")
|
||||
.then(x => x.text())
|
||||
.then(s => s.replace("const nekoSpeed = 10;", `const nekoSpeed = ${settings.store.speed};`))
|
||||
.then(s => s.replace("./oneko.gif", "https://raw.githubusercontent.com/adryd325/oneko.js/14bab15a755d0e35cd4ae19c931d96d306f99f42/oneko.gif")
|
||||
.replace("(isReducedMotion)", "(false)"))
|
||||
.then(eval);
|
||||
},
|
||||
|
||||
stop() {
|
||||
document.getElementById("oneko")?.remove();
|
||||
if (typeof window.removeCoins === "function") {
|
||||
window.removeCoins();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -61,7 +61,7 @@ const ReadAllButton = () => (
|
|||
export default definePlugin({
|
||||
name: "ReadAllNotificationsButton",
|
||||
description: "Read all server notifications with a single button click!",
|
||||
authors: [Devs.kemo, Devs.KrystalSkull],
|
||||
authors: [Devs.kemo],
|
||||
dependencies: ["ServerListAPI"],
|
||||
|
||||
renderReadAllButton: () => <ReadAllButton />,
|
||||
|
|
|
@ -51,6 +51,10 @@ export const Devs = /* #__PURE__*/ Object.freeze({
|
|||
name: "Cynosphere",
|
||||
id: 150745989836308480n
|
||||
},
|
||||
Trwy: {
|
||||
name: "trey",
|
||||
id: 354427199023218689n
|
||||
},
|
||||
Megu: {
|
||||
name: "Megumin",
|
||||
id: 545581357812678656n
|
||||
|
@ -264,6 +268,10 @@ export const Devs = /* #__PURE__*/ Object.freeze({
|
|||
name: "Dziurwa",
|
||||
id: 1001086404203389018n
|
||||
},
|
||||
F53: {
|
||||
name: "F53",
|
||||
id: 280411966126948353n
|
||||
},
|
||||
AutumnVN: {
|
||||
name: "AutumnVN",
|
||||
id: 393694671383166998n
|
||||
|
@ -372,6 +380,69 @@ export const Devs = /* #__PURE__*/ Object.freeze({
|
|||
name: "ant0n",
|
||||
id: 145224646868860928n
|
||||
},
|
||||
philipbry: {
|
||||
name: "philipbry",
|
||||
id: 554994003318276106n
|
||||
},
|
||||
Korbo: {
|
||||
name: "Korbo",
|
||||
id: 455856406420258827n
|
||||
},
|
||||
maisymoe: {
|
||||
name: "maisy",
|
||||
id: 257109471589957632n,
|
||||
},
|
||||
Mopi: {
|
||||
name: "Mopi",
|
||||
id: 1022189106614243350n
|
||||
},
|
||||
Grzesiek11: {
|
||||
name: "Grzesiek11",
|
||||
id: 368475654662127616n,
|
||||
},
|
||||
Samwich: {
|
||||
name: "Samwich",
|
||||
id: 976176454511509554n,
|
||||
},
|
||||
coolelectronics: {
|
||||
name: "coolelectronics",
|
||||
id: 696392247205298207n,
|
||||
},
|
||||
Av32000: {
|
||||
name: "Av32000",
|
||||
id: 593436735380127770n,
|
||||
},
|
||||
Kyuuhachi: {
|
||||
name: "Kyuuhachi",
|
||||
id: 236588665420251137n,
|
||||
},
|
||||
Elvyra: {
|
||||
name: "Elvyra",
|
||||
id: 708275751816003615n,
|
||||
},
|
||||
Inbestigator: {
|
||||
name: "Inbestigator",
|
||||
id: 761777382041714690n
|
||||
},
|
||||
newwares: {
|
||||
name: "newwares",
|
||||
id: 421405303951851520n
|
||||
},
|
||||
nakoyasha: {
|
||||
name: "nakoyasha",
|
||||
id: 222069018507345921n
|
||||
},
|
||||
Sqaaakoi: {
|
||||
name: "Sqaaakoi",
|
||||
id: 259558259491340288n
|
||||
},
|
||||
Byron: {
|
||||
name: "byeoon",
|
||||
id: 1167275288036655133n
|
||||
}
|
||||
} satisfies Record<string, Dev>);
|
||||
|
||||
export const EquicordDevs = Object.freeze({
|
||||
nexpid: {
|
||||
name: "Nexpid",
|
||||
id: 853550207039832084n
|
||||
|
@ -396,106 +467,34 @@ export const Devs = /* #__PURE__*/ Object.freeze({
|
|||
name: "thororen",
|
||||
id: 848339671629299742n
|
||||
},
|
||||
F53: {
|
||||
name: "F53",
|
||||
id: 280411966126948353n
|
||||
},
|
||||
philipbry: {
|
||||
name: "philipbry",
|
||||
id: 554994003318276106n
|
||||
},
|
||||
MrDiamond: {
|
||||
name: "MrDiamond",
|
||||
id: 523338295644782592n
|
||||
},
|
||||
Shalev: {
|
||||
name: "Shalev4R",
|
||||
id: 1122950616520593428n
|
||||
},
|
||||
fres: {
|
||||
name: "fres",
|
||||
id: 843448897737064448n
|
||||
},
|
||||
ImpishMoxxie: {
|
||||
name: "Moxxie",
|
||||
id: 712653921692155965n
|
||||
},
|
||||
nakoyasha: {
|
||||
name: "nakoyasha",
|
||||
id: 222069018507345921n
|
||||
},
|
||||
SimplyData: {
|
||||
name: "SimplyData",
|
||||
id: 301494563514613762n
|
||||
},
|
||||
arHSM: {
|
||||
name: "arHSM",
|
||||
id: 841509053422632990n
|
||||
},
|
||||
Korbo: {
|
||||
name: "Korbo",
|
||||
id: 455856406420258827n
|
||||
},
|
||||
SaucyDuck: {
|
||||
name: "SaucyDuck",
|
||||
id: 1004904120056029256n
|
||||
},
|
||||
Dams: {
|
||||
name: "Dams",
|
||||
id: 769939285792653325n
|
||||
},
|
||||
maisymoe: {
|
||||
name: "maisy",
|
||||
id: 257109471589957632n,
|
||||
},
|
||||
GeorgeV22: {
|
||||
name: "GeorgeV22",
|
||||
id: 261487490769092608n,
|
||||
},
|
||||
Grzesiek11: {
|
||||
name: "Grzesiek11",
|
||||
id: 368475654662127616n,
|
||||
},
|
||||
KawaiianPizza: {
|
||||
name: "KawaiianPizza",
|
||||
id: 501000986735673347n,
|
||||
},
|
||||
Gingi: {
|
||||
name: "0xGingi",
|
||||
id: 351859727568994314n,
|
||||
},
|
||||
Kyuuhachi: {
|
||||
name: "Kyuuhachi",
|
||||
id: 236588665420251137n,
|
||||
},
|
||||
Samwich: {
|
||||
name: "Samwich",
|
||||
id: 976176454511509554n,
|
||||
},
|
||||
Perny: {
|
||||
name: "Perny",
|
||||
id: 1101508982570504244n,
|
||||
},
|
||||
coolelectronics: {
|
||||
name: "coolelectronics",
|
||||
id: 696392247205298207n,
|
||||
},
|
||||
varram: {
|
||||
name: "varram",
|
||||
id: 588937914423967766n
|
||||
},
|
||||
jaxx: {
|
||||
name: "Jaxx",
|
||||
id: 901016640253227059n,
|
||||
},
|
||||
Mopi: {
|
||||
name: "Mopi",
|
||||
id: 1022189106614243350n
|
||||
},
|
||||
Av32000: {
|
||||
name: "Av32000",
|
||||
id: 593436735380127770n,
|
||||
},
|
||||
Balaclava: {
|
||||
name: "Balaclava",
|
||||
id: 854886148455399436n
|
||||
|
@ -504,30 +503,10 @@ export const Devs = /* #__PURE__*/ Object.freeze({
|
|||
name: "Moxxie",
|
||||
id: 712653921692155965n,
|
||||
},
|
||||
Ethan: {
|
||||
name: "Ethan",
|
||||
id: 721717126523781240n,
|
||||
},
|
||||
Elvyra: {
|
||||
name: "Elvyra",
|
||||
id: 708275751816003615n,
|
||||
},
|
||||
dat_insanity: {
|
||||
name: "dat_insanity",
|
||||
id: 0n,
|
||||
},
|
||||
newwares: {
|
||||
name: "newwares",
|
||||
id: 421405303951851520n
|
||||
},
|
||||
Trwy: {
|
||||
name: "trey",
|
||||
id: 354427199023218689n
|
||||
},
|
||||
Inbestigator: {
|
||||
name: "Inbestigator",
|
||||
id: 761777382041714690n
|
||||
},
|
||||
coolesding: {
|
||||
name: "cooles",
|
||||
id: 406084422308331522n,
|
||||
|
@ -540,10 +519,6 @@ export const Devs = /* #__PURE__*/ Object.freeze({
|
|||
name: "puv",
|
||||
id: 469441552251355137n
|
||||
},
|
||||
Sqaaakoi: {
|
||||
name: "Sqaaakoi",
|
||||
id: 259558259491340288n,
|
||||
},
|
||||
HAPPY_ENDERMAN: {
|
||||
name: "Happy enderman",
|
||||
id: 1083437693347827764n
|
||||
|
@ -560,10 +535,6 @@ export const Devs = /* #__PURE__*/ Object.freeze({
|
|||
name: "MaxHerbold",
|
||||
id: 1189527130611138663n,
|
||||
},
|
||||
Byron: {
|
||||
name: "byeoon",
|
||||
id: 1167275288036655133n,
|
||||
},
|
||||
Combatmaster: {
|
||||
name: "Combatmaster331",
|
||||
id: 790562534503612437n
|
||||
|
|
|
@ -162,4 +162,4 @@ export function useFixedTimer({ interval = 1000, initialTime = Date.now() }: Fix
|
|||
}, [initialTime]);
|
||||
|
||||
return time;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,4 +38,4 @@ export interface PassiveUpdateState {
|
|||
id: string;
|
||||
})[];
|
||||
voiceStates?: VoiceState[];
|
||||
}
|
||||
}
|
||||
|
|
2
src/webpack/common/types/voicestate.d.ts
vendored
2
src/webpack/common/types/voicestate.d.ts
vendored
|
@ -18,4 +18,4 @@ export interface VoiceState {
|
|||
sessionId: string;
|
||||
suppress: boolean;
|
||||
requestToSpeakTimestamp: string | null;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue