This commit is contained in:
thororen1234 2026-04-16 11:12:39 -04:00
parent 32b6d94bb6
commit 8a9ee4fb9a
No known key found for this signature in database
189 changed files with 252 additions and 63 deletions

View file

@ -10,6 +10,7 @@ import definePlugin from "@utils/types";
export default definePlugin({
name: "AltKrispSwitch",
description: "Makes the Noise Suppression Popout switch between None and Krisp instead of Krisp and Standard",
tags: ["Customisation", "Voice"],
authors: [Devs.newwares],
patches: [
{

View file

@ -11,6 +11,7 @@ import definePlugin from "@utils/types";
export default definePlugin({
name: "AlwaysExpandProfiles",
description: "Always expands profile popouts to the full modal",
tags: ["Appearance", "Utility"],
authors: [Devs.thororen],
patches: [
{

View file

@ -193,6 +193,7 @@ async function playSound(buffer: AudioBuffer, volume: number) {
export default definePlugin({
name: "Animalese",
description: "Plays animal crossing animalese for every message sent (they yap a lot)",
tags: ["Customisation", "Fun"],
authors: [EquicordDevs.ryanamay, EquicordDevs.Mocha],
settings,

View file

@ -13,6 +13,7 @@ export default definePlugin({
name: "AtSomeone",
authors: [Devs.Joona],
description: "Mention someone randomly",
tags: ["Chat", "Fun"],
patches: [
{
find: ".LAUNCHABLE_APPLICATIONS;",

View file

@ -209,6 +209,7 @@ function handlePaste(event: ClipboardEvent) {
export default definePlugin({
name: "AutoZipper",
description: "Automatically zips specified file types and folders before uploading to Discord",
tags: ["Chat", "Organisation"],
authors: [EquicordDevs.SSnowly],
settings,

View file

@ -44,6 +44,7 @@ const DATASTORE_KEY = "bannersEverywhere";
export default definePlugin({
name: "BannersEverywhere",
description: "Displays banners in the member list ",
tags: ["Appearance", "Customisation"],
authors: [Devs.ImLvna, Devs.AutumnVN],
settings,
patches: [

View file

@ -107,6 +107,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "DecodeBase64",
description: "Decode base64 content of any message and copy the decoded content.",
tags: ["Appearance", "Customisation", "Chat"],
authors: [EquicordDevs.ThePirateStoner],
settings,
messagePopoverButton: {

View file

@ -274,6 +274,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "BetterAudioPlayer",
description: "Adds a spectrograph and oscilloscope visualizer to audio attachment players.",
tags: ["Appearance", "Media", "Voice"],
authors: [EquicordDevs.creations],
settings,

View file

@ -74,6 +74,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "BetterBanReasons",
description: "Create custom reasons to use in the Discord ban modal, and/or show a text input by default instead of the options.",
tags: ["Appearance", "Customisation"],
authors: [Devs.Inbestigator],
patches: [
{

View file

@ -17,6 +17,7 @@ let updateFunc = (v: any) => { };
export default definePlugin({
name: "BetterBlockedUsers",
description: "Allows you to search in blocked users list and makes names selectable in settings.",
tags: ["Appearance", "Shortcuts"],
authors: [EquicordDevs.TheArmagan],
patches: [
{

View file

@ -33,6 +33,7 @@ function fetchIndex(target: object) {
export default definePlugin({
name: "BetterCommands",
description: "Enhances the command system with miscellaneous improvements.",
tags: ["Appearance", "Commands", "Shortcuts"],
authors: [Devs.thororen],
settings,
patches: [

View file

@ -34,6 +34,7 @@ function lurk(id: string) {
export default definePlugin({
name: "BetterInvites",
description: "See invites expiration date, view inviter profile and preview servers before joining by clicking the name",
tags: ["Appearance", "Customisation", "Chat", "Servers"],
authors: [EquicordDevs.iamme, Devs.thororen],
patches: [
{

View file

@ -12,6 +12,7 @@ export default definePlugin({
name: "BetterPlusReacts",
authors: [Devs.Joona],
description: "The amount of plus before :emoji: is the message to add it to",
tags: ["Chat", "Emotes"],
patches: [
{
find: ".SLASH_COMMAND_USED,",

View file

@ -70,6 +70,7 @@ export function containsBlockedKeywords(message: Message) {
export default definePlugin({
name: "BlockKeywords",
description: "Blocks messages containing specific user-defined keywords, as if the user sending them was blocked.",
tags: ["Appearance", "Customisation", "Privacy"],
authors: [EquicordDevs.catcraft],
patches: [
{

View file

@ -10,6 +10,7 @@ import definePlugin from "@utils/types";
export default definePlugin({
name: "BlockKrisp",
description: "Prevent Krisp from loading",
tags: ["Privacy", "Utility", "Voice"],
authors: [Devs.D3SOX],
patches: [
// Block loading modules on Desktop

View file

@ -10,6 +10,7 @@ import definePlugin from "@utils/types";
export default definePlugin({
name: "BypassPinPrompt",
description: "Bypass the pin prompt when using the pin functions",
tags: ["Shortcuts"],
authors: [Devs.thororen],
patches: [
...[

View file

@ -157,6 +157,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "BypassStatus",
description: "Still get notifications from specific sources when in do not disturb mode. Right-click on users/channels/guilds to set them to bypass do not disturb mode.",
tags: ["Activity", "Customisation", "Notifications", "Servers"],
authors: [Devs.Inbestigator],
dependencies: ["AudioPlayerAPI"],
flux: {

View file

@ -32,6 +32,7 @@ function renderBadge(id: number, title: string) {
export default definePlugin({
name: "ChannelBadges",
description: "Adds badges to channels based on their type",
tags: ["Appearance", "Customisation", "Servers"],
authors: [EquicordDevs.creations, Devs.thororen],
settings,
patches: [

View file

@ -15,8 +15,8 @@ import { ChannelStore, Menu } from "@webpack/common";
import { JSX } from "react";
import ChannelsTabsContainer from "./components/ChannelTabsContainer";
import { BasicChannelTabsProps, createTab, handleChannelSwitch, settings } from "./util";
import * as ChannelTabsUtils from "./util";
import { BasicChannelTabsProps, createTab, handleChannelSwitch, settings } from "./util";
const contextMenuPatch: NavContextMenuPatchCallback = (children, props: { channel: Channel, messageId?: string; }) => {
const { channel, messageId } = props;
@ -47,6 +47,7 @@ const contextMenuPatch: NavContextMenuPatchCallback = (children, props: { channe
export default definePlugin({
name: "ChannelTabs",
description: "Group your commonly visited channels in tabs, like a browser",
tags: ["Appearance", "Customisation", "Organisation", "Servers"],
authors: [Devs.TheSun, Devs.TheKodeToad, EquicordDevs.keifufu, Devs.Nickyux, EquicordDevs.DiabeloDEV, EquicordDevs.justjxke],
dependencies: ["ContextMenuAPI"],
contextMenus: {

View file

@ -12,6 +12,7 @@ export default definePlugin({
name: "CleanChannelName",
authors: [Devs.AutumnVN],
description: "remove all emoji and decor shit from channel names",
tags: ["Appearance", "Customisation", "Chat", "Emotes", "Servers"],
patches: [
{
find: "loadAllGuildAndPrivateChannelsFromDisk(){",

View file

@ -10,6 +10,7 @@ import definePlugin from "@utils/types";
export default definePlugin({
name: "CleanerChannelGroups",
description: "Hides all channels in collapsed categories, even if they have unread messages.",
tags: ["Appearance", "Customisation", "Chat", "Organisation", "Servers"],
authors: [EquicordDevs.justjxke],
patches: [
{

View file

@ -146,6 +146,7 @@ const WrappedClickableRole = ErrorBoundary.wrap(ClickableRole, { noop: true });
export default definePlugin({
name: "ClickableRoles",
description: "Click on roles in user profiles and the member list to see which members have them.",
tags: ["Appearance", "Roles"],
authors: [Devs.prism],
patches: [

View file

@ -142,6 +142,7 @@ function activeNowView(cards) {
export default definePlugin({
name: "ClientSideBlock",
description: "Allows you to locally hide almost all content from any user",
tags: ["Utility"],
searchTerms: ["blocked", "block", "hide", "hidden", "noblockedmessages"],
authors: [Devs.Samwich, EquicordDevs.KamiRu],
settings,

View file

@ -72,6 +72,7 @@ migratePluginSettings("ClipsEnhancements", "TimelessClips");
export default definePlugin({
name: "ClipsEnhancements",
description: "Add more Clip FPS and duration options, custom clip length, RPC tagging and more",
tags: ["Activity", "Media", "Utility"],
authors: [Devs.niko, Devs.Joona, EquicordDevs.keircn],
settings,
patches: [

View file

@ -108,6 +108,7 @@ const ChatButtonsRow = ErrorBoundary.wrap(({ buttons }: { buttons: ReactNode[];
export default definePlugin({
name: "CollapsibleUI",
description: "Native collapsible channel, member, chat button, and user area surfaces.",
tags: ["Appearance", "Customisation", "Chat", "Servers"],
authors: [EquicordDevs.benjii],
searchTerms: ["ui", "sidebar", "layout"],
managedStyle,

View file

@ -201,6 +201,7 @@ function hotkeyUsesModifiers() {
export default definePlugin({
name: "CommandPalette",
description: "Quickly run actions through a searchable command palette",
tags: ["Appearance", "Customisation", "Commands", "Shortcuts"],
authors: [EquicordDevs.justjxke],
settings,
patches: [

View file

@ -18,6 +18,7 @@ import ComponentsTab from "./components/ComponentsTab";
export default definePlugin({
name: "Components",
description: "Adds a new tab to settings to browse Discord components.",
tags: ["Appearance", "Customisation", "Console", "Developers", "Organisation"],
authors: [Devs.prism],
dependencies: ["Settings"],
startAt: StartAt.WebpackReady,

View file

@ -152,6 +152,7 @@ export default definePlugin({
name: "ContentWarning",
authors: [EquicordDevs.camila314],
description: "Allows you to specify certain trigger words that will be blurred by default. Hovering/Clicking on the blurred content will reveal it.",
tags: ["Appearance", "Utility"],
settings,
patches: [
{

View file

@ -90,6 +90,7 @@ const userContextMenuPatch: NavContextMenuPatchCallback = (children, { user }) =
export default definePlugin({
name: "CopyProfileColors",
description: "A plugin to copy people's profile gradient colors to clipboard.",
tags: ["Appearance", "Customisation"],
authors: [EquicordDevs.Crxa, EquicordDevs.Cortex],
contextMenus: {
"user-context": userContextMenuPatch,

View file

@ -23,6 +23,7 @@ const getMetadataFromApi: (activity: any, userId: string) => Promise<any> = find
export default definePlugin({
name: "CopyStatusUrls",
description: "Copy the users status url when you right-click it",
tags: ["Activity", "Utility"],
authors: [Devs.sadan],
patches: [

View file

@ -48,6 +48,7 @@ export default definePlugin({
name: "CopyUserMention",
authors: [EquicordDevs.Cortex, Devs.castdrian],
description: "Adds a button to copy user's mention on the user context menu, works best with ValidUser.",
tags: ["Chat", "Utility"],
contextMenus: {
"user-context": UserContextMenuPatch
}

View file

@ -235,6 +235,7 @@ migratePluginSettings("CursorBuddy", "Oneko", "oneko");
export default definePlugin({
name: "CursorBuddy",
description: "Adds a sprite that follows your cursor.",
tags: ["Appearance", "Customisation", "Fun"],
authors: [Devs.Ven, Devs.adryd, EquicordDevs.nexpid, EquicordDevs.ZcraftElite],
searchTerms: ["Oneko", "FatassHorse", "Pet"],
settings,

View file

@ -14,6 +14,7 @@ import { folderProp, int2rgba } from "./util";
export default definePlugin({
name: "CustomFolderIcons",
description: "Customize folder icons with any png",
tags: ["Appearance", "Customisation", "Organisation"],
authors: [EquicordDevs.sadan],
settings,
patches: [

View file

@ -393,6 +393,7 @@ export function findOverride(id: string): SoundOverride | null {
export default definePlugin({
name: "CustomSounds",
description: "Customize Discord's sounds.",
tags: ["Customisation", "Notifications", "Voice"],
authors: [Devs.ScattrdBlade, Devs.TheKodeToad],
settings,
startAt: StartAt.Init,

View file

@ -54,6 +54,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "CustomStatusTimeouts",
description: "Adds configurable timeout presets to the status (presence) menu.",
tags: ["Activity", "Utility"],
authors: [EquicordDevs.Kiri, EquicordDevs.thororen],
settings,
patches: [

View file

@ -125,6 +125,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "CustomTimestamps",
description: "Custom timestamps on messages and tooltips",
tags: ["Appearance", "Customisation"],
authors: [Devs.Rini, EquicordDevs.nvhhr, EquicordDevs.Suffocate, Devs.Obsidian],
settings,
settingsAboutComponent: () => (

View file

@ -100,6 +100,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "CustomUserColors",
description: "Lets you add a custom color to any user, anywhere! Highly recommend to use with typingTweaks and roleColorEverywhere",
tags: ["Appearance", "Customisation", "Chat"],
authors: [EquicordDevs.mochienya],
contextMenus: {
"user-context": userContextMenuPatch,

View file

@ -141,6 +141,7 @@ function SectionSeparator(title: string) {
export default definePlugin({
name: "Declutter",
description: "Cleans up Discord by removing non-essential UI elements like profile effects, shop tabs, boosts, and more.",
tags: ["Appearance", "Customisation"],
authors: [EquicordDevs.Leon135, Devs.prism, Devs.Kyuuhachi],
settings,
patches: [

View file

@ -10,6 +10,7 @@ import definePlugin from "@utils/types";
export default definePlugin({
name: "DisableCameras",
description: "Disables cameras in a call by default",
tags: ["Appearance", "Customisation", "Media", "Privacy"],
authors: [Devs.Joona],
patches: [
{

View file

@ -14,6 +14,7 @@ import { makeDevBanner, settings } from "./components";
export default definePlugin({
name: "DiscordDevBanner",
description: "Enables the Discord developer banner, in which displays the build-ID",
tags: ["Appearance", "Console", "Developers"],
authors: [EquicordDevs.KrystalSkull, Devs.thororen],
settings,
patches: [

View file

@ -45,6 +45,7 @@ export default definePlugin({
name: "DragFavoriteEmotes",
authors: [EquicordDevs.PWall],
description: "Adds the ability to change the order of your favourite emotes",
tags: ["Customisation", "Chat", "Emotes"],
patches: [
{
find: "#{intl::EMOJI_FAVORITE_TOOLTIP}",

View file

@ -149,6 +149,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "Dragify",
description: "Drop users, channels, or servers into chat to insert mentions or invites.",
tags: ["Chat", "Servers", "Utility", "Voice"],
authors: [EquicordDevs.justjxke],
settings,

View file

@ -449,6 +449,7 @@ function onToggle(e: KeyboardEvent) {
export default definePlugin({
name: "ElementHighlighter",
description: "Highlight and inspect elements easily.",
tags: ["Developers"],
authors: [Devs.prism],
settings,

View file

@ -89,6 +89,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "EquibopStreamFixes",
description: "Tries to fix stream quality on Equibop by patching Discord's encoder and quality restrictions.",
tags: ["Voice"],
authors: [EquicordDevs.creations],
settings,

View file

@ -133,6 +133,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "EquicordHelper",
description: "Used to provide support, fix discord caused crashes, and other misc features.",
tags: ["Appearance", "Commands", "Utility"],
authors: [
Devs.thororen,
EquicordDevs.nyx,

View file

@ -33,6 +33,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "Equissant",
description: "Crossant every specified amount of clicks :trolley:",
tags: ["Fun"],
authors: [EquicordDevs.SomeAspy, Devs.thororen],
dependencies: ["AudioPlayerAPI"],
settings,

View file

@ -104,6 +104,7 @@ let original: typeof ChannelActions.selectVoiceChannel;
export default definePlugin({
name: "ExitSounds",
description: "Play soundboard sounds when you disconnect from voice.",
tags: ["Fun", "Voice"],
authors: [Devs.prism],
dependencies: ["AudioPlayerAPI"],
settings,

View file

@ -129,6 +129,7 @@ function getUsernames(contacts: ContactsList[], type: number): string[] {
export default definePlugin({
name: "ExportMessages",
description: "Allows you to export any message to a file",
tags: ["Chat", "Utility"],
authors: [EquicordDevs.veygax, EquicordDevs.dat_insanity],
settings,
contextMenus: {

View file

@ -74,6 +74,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "FastDeleteChannels",
description: "Adds a trash icon to delete channels",
tags: ["Servers", "Utility"],
authors: [Devs.thororen],
settings,
patches: [

View file

@ -25,6 +25,7 @@ export const AttachmentContext = proxyLazyWebpack(() => React.createContext<null
export default definePlugin({
name: "FavouriteAnything",
description: "Favourite any image, video, or file attachment",
tags: ["Chat", "Media"],
authors: [Devs.nin0dev, EquicordDevs.davri],
searchTerms: ["favorite"],
managedStyle,

View file

@ -216,6 +216,7 @@ const channelAttachMenuPatch: NavContextMenuPatchCallback = (children, props) =>
export default definePlugin({
name: "FileUpload",
description: "Upload images and videos to file hosting services like Zipline and Nest",
tags: ["Media"],
authors: [EquicordDevs.creations, EquicordDevs.keircn, Devs.ScattrdBlade],
settings,
patches: [

View file

@ -89,6 +89,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "FindReply",
description: "Jumps to the earliest reply to a message in a channel (lets you follow past conversations more easily).",
tags: ["Chat", "Shortcuts"],
authors: [Devs.newwares],
settings,
messagePopoverButton: {

View file

@ -29,6 +29,7 @@ export default definePlugin({
name: "FixFileExtensions",
authors: [Devs.thororen],
description: "Fixes file extensions by renaming them to a compatible supported format if possible",
tags: ["Media", "Utility"],
reporterTestable: ReporterTestable.None,
patches: [
// Taken from AnonymiseFileNames

View file

@ -74,6 +74,7 @@ const UserContextMenuPatch: NavContextMenuPatchCallback = (children, { channel,
export default definePlugin({
name: "FollowVoiceUser",
description: "Follow a friend in voice chat.",
tags: ["Voice"],
authors: [EquicordDevs.TheArmagan],
settings,
settingsAboutComponent: () => (

View file

@ -200,6 +200,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "FontLoader",
description: "Loads any font from Google Fonts",
tags: ["Appearance", "Customisation"],
authors: [EquicordDevs.vmohammad],
settings,

View file

@ -25,6 +25,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "ForwardAnywhere",
description: "If a forward fails send it as a normal message also allows nsfw forwards",
tags: ["Chat", "Utility"],
authors: [Devs.thororen],
settings,
patches: [

View file

@ -37,6 +37,7 @@ function generateSearchResults(query) {
export default definePlugin({
name: "FrequentQuickSwitcher",
description: "Rewrites and filters the quick switcher results to be your most frequent channels",
tags: ["Shortcuts", "Servers"],
authors: [Devs.Samwich],
generateSearchResults: generateSearchResults,
patches: [

View file

@ -12,6 +12,7 @@ import FriendCodesPanel from "./FriendCodesPanel";
export default definePlugin({
name: "FriendCodes",
description: "Generate FriendCodes to easily add friends",
tags: ["Friends", "Utility"],
authors: [Devs.HypedDomi],
patches: [
{

View file

@ -209,6 +209,7 @@ const userPatch: NavContextMenuPatchCallback = (children, { user }) => {
export default definePlugin({
name: "FriendTags",
description: "Allows you to filter by custom tags in the quick switcher by starting a search with &",
tags: ["Shortcuts"],
authors: [Devs.Samwich],
settings,
contextMenus: {

View file

@ -143,6 +143,7 @@ function getBadgesToApply() {
export default definePlugin({
name: "FriendshipRanks",
description: "Adds badges showcasing how long you have been friends with a user for",
tags: ["Friends"],
authors: [Devs.Samwich],
start() {
getBadgesToApply().forEach(b => Badges.addProfileBadge(b));

View file

@ -14,6 +14,7 @@ import style from "./style.css?managed";
export default definePlugin({
name: "FullVCPFP",
description: "Makes avatars take up the entire vc tile",
tags: ["Appearance", "Voice"],
authors: [EquicordDevs.mochienya],
patches: [
{

View file

@ -147,6 +147,7 @@ function makeContextItem(props) {
export default definePlugin({
name: "Ghosted",
description: "A cute ghost will appear if you don't answer their DMs",
tags: ["Chat", "Utility"],
authors: [EquicordDevs.vei, Devs.sadan, EquicordDevs.justjxke, EquicordDevs.iamme],
settings,
dependencies: ["AudioPlayerAPI", "ServerListAPI"],

View file

@ -26,6 +26,7 @@ let oldTrendingCat: Category[] | null = null;
export default definePlugin({
name: "GifCollections",
description: "Allows you to create collections of gifs.",
tags: ["Chat", "Emotes"],
authors: [EquicordDevs.creations],
settings,
contextMenus: {

View file

@ -38,6 +38,7 @@ export const settings = definePluginSettings({
export default definePlugin({
name: "GitHubRepos",
description: "Displays a user's public GitHub repositories in their profile",
tags: ["Appearance"],
authors: [EquicordDevs.talhakf, EquicordDevs.Panniku, EquicordDevs.benjii],
settings,

View file

@ -25,6 +25,7 @@ migratePluginSetting("GlobalBadges", "showRaincord", "showRa1ncord");
export default definePlugin({
name: "GlobalBadges",
description: "Adds global badges from other client mods",
tags: ["Appearance"],
authors: [Devs.HypedDomi, EquicordDevs.Wolfie, Devs.thororen],
settings,
settingsAboutComponent: () => (

View file

@ -75,6 +75,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "GoogleThat",
description: "Adds a command to send a internet search link",
tags: ["Commands", "Utility"],
authors: [Devs.Samwich, EquicordDevs.KrystalSkull],
searchTerms: ["search", "google", "query", "duckduckgo", "command"],
settings,

View file

@ -95,6 +95,7 @@ async function zipGuildAssets(guild: Guild, type: "emojis" | "stickers") {
export default definePlugin({
name: "GuildPickerDumper",
description: "Context menu to dump and download a server's emojis and stickers.",
tags: ["Emotes", "Servers", "Utility"],
authors: [EquicordDevs.Cortex, Devs.Samwich, EquicordDevs.Synth, Devs.thororen],
contextMenus: {
"guild-context": Patch,

View file

@ -81,6 +81,7 @@ function ButtonsInnerComponent({ buttons }: { buttons: ReactNode; }) {
export default definePlugin({
name: "HideChatButtons",
description: "Able to hide the chat buttons",
tags: ["Chat", "Utility"],
settings: settings,
authors: [EquicordDevs.iamme],
patches: [

View file

@ -49,6 +49,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "HideMessages",
description: "A plugin to temporarily hide messages until you restart.",
tags: ["Chat", "Utility"],
authors: [EquicordDevs.yash],
contextMenus: {
"message": messageCtxPatch

View file

@ -76,6 +76,7 @@ export function removeIndicator() {
export default definePlugin({
name: "HideServers",
description: "Allows you to hide servers from the guild list and quick switcher by right clicking them",
tags: ["Servers", "Utility"],
authors: [EquicordDevs.bep],
searchTerms: ["guild", "server", "hide", "folder"],

View file

@ -72,6 +72,7 @@ function ToolBarHeader() {
export default definePlugin({
name: "HolyNotes",
description: "Save messages as notes to revisit later",
tags: ["Chat", "Organisation"],
authors: [EquicordDevs.Wolfie],
toolboxActions: {

View file

@ -18,6 +18,7 @@ const PrivateChannelSortStore = findStoreLazy("PrivateChannelSortStore") as { ge
export default definePlugin({
name: "HomeTyping",
description: "Changes the home button to a typing indicator if someone in your dms is typing",
tags: ["Chat"],
authors: [Devs.Samwich],
TypingIcon() {
return <ThreeDots className={cl("dots")} dotRadius={3} themed={true} />;

View file

@ -32,6 +32,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "HopOn",
description: "Hop on! Opens a configurable URL when a message matches a custom regex in the current channel.",
tags: ["Fun"],
authors: [Devs.ImLvna],
settings,
flux: {

View file

@ -99,6 +99,7 @@ function getEmojiIdThatShouldBeUsed(guildId: string) {
export default definePlugin({
name: "Husk",
description: "Adds Husk button (check settings to change used emoji)",
tags: ["Emotes", "Fun"],
authors: [Devs.nin0dev],
settings,
messagePopoverButton: {

View file

@ -19,6 +19,7 @@ import DataUI from "./components/ui";
export default definePlugin({
name: "IRememberYou",
description: "Locally saves everyone you've been communicating with (including servers), in case of lose",
tags: ["Chat", "Servers"],
authors: [EquicordDevs.zoodogood, EquicordDevs.keircn],
dependencies: ["MessageEventsAPI"],

View file

@ -19,6 +19,7 @@ import { SettingsAbout } from "./components/Modals";
export default definePlugin({
name: "IconViewer",
description: "Adds a new tab to settings to preview all icons.",
tags: ["Developers"],
authors: [EquicordDevs.iamme],
dependencies: ["Settings"],
startAt: StartAt.WebpackReady,

View file

@ -36,6 +36,7 @@ function onActivity() {
export default definePlugin({
name: "IdleAutoRestart",
description: "Automatically restarts the client after being idle for a configurable amount of time, but avoids restarting while you are in VC.",
tags: ["Utility"],
authors: [EquicordDevs.SteelTech],
settings,

View file

@ -93,6 +93,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "IgnoreCalls",
description: "Allows you to ignore calls from specific users or dm groups.",
tags: ["Voice"],
authors: [EquicordDevs.TheArmagan, Devs.thororen],
settings,
patches: [

View file

@ -34,6 +34,7 @@ function getMembersInRole(roleId: string, guildId: string) {
export default definePlugin({
name: "InRole",
description: "Know who is in a role with the role context menu or /inrole command (read plugin info!)",
tags: ["Commands", "Roles"],
authors: [Devs.nin0dev],
dependencies: ["UserSettingsAPI"],
start() {

View file

@ -146,6 +146,7 @@ function disabledIcon() {
export default definePlugin({
name: "Ingtoninator",
description: "Suffixes 'ington' to a random word in your message",
tags: ["Fun"],
authors: [EquicordDevs.zyqunix, EquicordDevs.BioTomateDE],
settings,
chatBarButton: {

View file

@ -62,6 +62,7 @@ async function autoStartStream(instant = true) {
export default definePlugin({
name: "InstantScreenshare",
description: "Instantly screenshare when joining a voice channel with support for desktop sources, windows, and video input devices (cameras, capture cards)",
tags: ["Media", "Voice"],
authors: [Devs.HAHALOSAH, Devs.thororen, EquicordDevs.mart],
dependencies: ["EquicordToolbox"],
searchTerms: ["ScreenshareKeybind"],

View file

@ -149,6 +149,7 @@ export async function buildEmbed(message: any, revealed: string): Promise<void>
export default definePlugin({
name: "InvisibleChat",
description: "Encrypt your Messages in a non-suspicious way!",
tags: ["Chat"],
authors: [Devs.SammCheese],
dependencies: ["MessageUpdaterAPI"],
reporterTestable: ReporterTestable.Patches,

View file

@ -45,6 +45,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "InviteDefaults",
description: "Allows you to edit the default values when creating server invites.",
tags: ["Servers"],
authors: [EquicordDevs.VillainsRule],
settings,
patches: [

View file

@ -121,6 +121,7 @@ const MessageMenuPatch: NavContextMenuPatchCallback = (children, { message }: {
export default definePlugin({
name: "JumpTo",
description: "Adds context menu options to jump to the start or bottom of a channel/DM.",
tags: ["Chat", "Utility"],
authors: [Devs.Samwich, Devs.thororen],
contextMenus: {
"channel-context": ChannelMenuPatch,

View file

@ -48,6 +48,7 @@ function getJumpscareRoot(): Root {
export default definePlugin({
name: "Jumpscare",
description: "Adds a configurable chance of jumpscaring you whenever you open a channel. Inspired by Geometry Dash Mega Hack",
tags: ["Fun"],
authors: [Devs.surgedevs],
dependencies: ["AudioPlayerAPI"],
settings,

View file

@ -87,6 +87,7 @@ export const settings = definePluginSettings({
export default definePlugin({
name: "KeyboardNavigation",
description: "Allows you to navigate the UI with a keyboard.",
tags: ["Accessibility", "Shortcuts"],
authors: [Devs.Ethan],
settings,

View file

@ -126,6 +126,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "KeyboardSounds",
description: "Adds OperaGX or osu! sound effects when typing on your keyboard.",
tags: ["Fun"],
authors: [Devs.HypedDomi, EquicordDevs.Etorix],
dependencies: ["AudioPlayerAPI"],
settings,

View file

@ -318,6 +318,7 @@ export default definePlugin({
name: "KeywordNotify",
authors: [EquicordDevs.camila314, EquicordDevs.x3rt],
description: "Sends a notification if a given message matches certain keywords or regexes",
tags: ["Chat", "Notifications"],
settings,
patches: [
{

View file

@ -135,6 +135,7 @@ export function LastActiveIcon() {
export default definePlugin({
name: "LastActive",
description: "A plugin to jump to last active message from yourself or another user in a channel/server.",
tags: ["Chat", "Utility"],
authors: [EquicordDevs.Crxa],
contextMenus: {
"channel-context": ChannelContextMenuPatch,

View file

@ -42,6 +42,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "LoginWithQR",
description: "Allows you to login to another device by scanning a login QR code, just like on mobile!",
tags: ["Utility"],
authors: [EquicordDevs.nexpid],
settings,

View file

@ -48,6 +48,7 @@ type MediaRef = RefObject<HTMLMediaElement> | undefined;
export default definePlugin({
name: "MediaPlaybackSpeed",
description: "Allows changing the (default) playback speed of media embeds",
tags: ["Chat", "Media"],
authors: [Devs.D3SOX],
settings,
patches: [

View file

@ -66,6 +66,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "MessageBurst",
description: "Merges messages sent within a time period with your previous sent message if no one else sends a message before you.",
tags: ["Chat"],
authors: [EquicordDevs.port22exposed],
settings,
onBeforeMessageSend(channelId, message) {

View file

@ -27,6 +27,7 @@ export default definePlugin({
authors: [EquicordDevs.Hen],
name: "MessageColors",
description: "Displays color codes like #FF0042 inside of messages",
tags: ["Appearance", "Chat"],
settings,
patches: [
// Create a new markdown rule, so it parses just like any other features

View file

@ -147,6 +147,7 @@ function handleMessageLoad(data: any) {
export default definePlugin({
name: "MessageFetchTimer",
description: "Shows how long it took to fetch messages for the current channel",
tags: ["Chat", "Utility"],
authors: [EquicordDevs.GroupXyz],
settings,

View file

@ -62,6 +62,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "MessageLinkTooltip",
description: "Adds a tooltip with a message preview when hovering over message links, replies, and forwarded messages.",
tags: ["Appearance", "Chat"],
authors: [Devs.Kyuuhachi],
settings,

View file

@ -18,8 +18,8 @@ import { FluxDispatcher, MessageStore, SelectedChannelStore, UserStore } from "@
import { LogsIcon, OpenLogsButton } from "./components/LogsButton";
import { openLogModal } from "./components/LogsModal";
import * as idb from "./db";
import { addMessage } from "./LoggedMessageManager";
import * as LoggedMessageManager from "./LoggedMessageManager";
import { addMessage } from "./LoggedMessageManager";
import { settings } from "./settings";
import { FetchMessagesResponse, LoadMessagePayload, LoggedMessage, LoggedMessageJSON, MessageCreatePayload, MessageDeleteBulkPayload, MessageDeletePayload, MessageUpdatePayload } from "./types";
import { cleanUpCachedMessage, cleanupUserObject, getNative, isGhostPinged, mapTimestamp, messageJsonToMessageClass, reAddDeletedMessages } from "./utils";
@ -258,6 +258,7 @@ export default definePlugin({
name: "MessageLoggerEnhanced",
authors: [Devs.Aria, EquicordDevs.keircn],
description: "Improves MessageLogger with edited message history, ghost ping detection and more",
tags: ["Chat", "Servers"],
dependencies: ["MessageLogger"],
patches: [

View file

@ -38,6 +38,7 @@ export default definePlugin({
authors: [EquicordDevs.cassie, EquicordDevs.mochienya],
name: "MessageNotifier",
description: "Get toasts for when chosen users send a message",
tags: ["Chat", "Notifications"],
settings,
flux: {
MESSAGE_CREATE({ message, channelId, guildId }: MessageCreatePayload) {

View file

@ -239,6 +239,7 @@ function shouldShowActivity(lastMessage: Message | undefined, hasActivity: boole
export default definePlugin({
name: "MessagePeek",
description: "Shows the last message preview and timestamp in the Direct Messages list.",
tags: ["Appearance", "Chat"],
authors: [Devs.prism, EquicordDevs.justjxke],
settings,
patches: [

View file

@ -51,6 +51,7 @@ function triggerReRender(message: MessageWithContent) {
export default definePlugin({
name: "MessageTranslate",
description: "Auto translate messages to your language with caching, per-channel toggles, and more options.",
tags: ["Chat", "Utility"],
authors: [EquicordDevs.creations],
settings,

View file

@ -115,6 +115,7 @@ const MicLoopbackUserAreaButton: UserAreaButtonFactory = props => <MicLoopbackBu
export default definePlugin({
name: "MicLoopbackTester",
description: "Adds mic loopback test icon to the user panel",
tags: ["Utility", "Voice"],
authors: [EquicordDevs.benjii],
dependencies: ["UserSettingsAPI", "UserAreaAPI"],
userAreaButton: {

Some files were not shown because too many files have changed in this diff Show more