#๐Ÿงฉ-plugin-development

1 messages ยท Page 61 of 1

oak sundial
#

ah I missed that because its not in RestRequestData. Is it also known that you need to use del instead of delete?

dull magnet
#

ye

oak sundial
#

๐Ÿ‘

dull magnet
#

the type is wrong

rocky falcon
#

anyone have an idea

cedar marsh
#

does clienttheme still work or do I need to do something

dull magnet
#

still works

#

:3

cedar marsh
#

unbreakable plugin :3

balmy sky
#

immortal

oak sundial
#

both times i've tried to make a plugin discord has pushed breaking changes now

#

its great

rocky falcon
#

uwu

oak sundial
#

useState is beating my ass thanks react

steady knot
balmy sky
#

Hey, i'm trying to fix one of the patches for a plugin i have (BetterQuickReact) and it essentially needs to inject extra styles into the MenuItem component, i've found the function

MenuItem: function() {
    return $.sN
},

But i need to find what $.sN is so i can edit the source, how do i do that? i remember it's something to do with breakpoints but i forgot what exactly to do

flint bronze
balmy sky
#

Yop ๐Ÿ˜ญ

#

I pretty much can't live without it now so thought id take a crack at fixing the broken parts after doomsday

#

Most of it is fine

bronze dove
flint bronze
#

this is entirely irrelevant

#

You need MenuGroup

balmy sky
#

My brain aint working ok

flint bronze
#

Nop

#

MY brain isnt working either

balmy sky
#

Yeah ok my brian cells are officially gone i have no iea

#

BRIAN CELLS

flint bronze
#

WHY THE FUCK IS IT NOT WORKING FOR NO FUCKING REASON

#

@balmy sky

#

HOLY SHIT I GOT IT

#

webpack module 911810

#

thanks react devtools

balmy sky
#

Actually i still have it NAH

chrome folio
#

lmso

flint bronze
#

i fixed it blobcatcozy

#

you can steal in 0.1 minutes

balmy sky
#

THANK YOU

#

Absolute legend

flint bronze
#

i need the sleep

rocky falcon
balmy sky
#

What's the easiest way to intercept it when the user tries to send a message? I essentially want to check if the message contains a certain term, then if it does- show a "are you sure you want to send this?" type modal or some other action

dull magnet
#

look at FakeNitro

#

it does that

balmy sky
#

OH I FORGOT ABOUT THAT

#

Thankyouu

tired geode
#

rather unrelated to plugins but can attachment links be tracked? e.g. does https://media.discordapp.net/attachments/1015063227299811479/1253027912601440367/image.png?ex=66745cae&is=66730b2e&hm=b4736a629bf83e913db5f74cb96cea858149438458314c9a2c6319c505661189&=&format=webp&quality=lossless&width=462&height=734 link it to my client as a viewer? working on a more verbose logger and don't want my account get flagged

dull magnet
#

no

#

i also dont see how that's relevant

tired geode
#

ok sorry i'll keep it on topic

dull magnet
#

no i'm not saying that it's off topic

#

just a weird question

#

why would viewing an attachment link have any risk?

tired geode
#

well if for example i download every attachment sent

#

live

dull magnet
#

you do that either way

#

it has to download attachments to display them in chat

tired geode
#

isn't it only in the current channel tho?

dull magnet
#

cdn has virtually no rate limit

#

you can mass download fine

tired geode
#

hmm ok

#

thanks ||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹||||โ€‹|| _ _ _ _ _ _ https://cdn.discordapp.com/emojis/974156659784040479.webp?size=48&quality=lossless

iron epoch
#
    contextMenus: {
        "guild-context": MakeContextCallback("Guild"),
        "channel-context": MakeContextCallback("Channel"),
        "user-context": MakeContextCallback("User")
    }

is there a way to add a context menu to a voice channel?

#

and maybe based off the user perms?

dull magnet
#

do you mean add to this?

iron epoch
dull magnet
#

you can add to every context menu

iron epoch
dull magnet
#

yes

hushed loom
iron epoch
#

sounds about right

#

lemme build a test build

hushed loom
iron epoch
#

thanks all. I will play with this example

hushed loom
#

is it possible to store a map or an object and have it sync with settings sync

chrome folio
#

like this?

hushed loom
# chrome folio like this?

yes, im using the data store rn but i want it to sync with settings sync which ive been told the data store does not

chrome folio
#

never checked if it does tbh

dull magnet
#

yeah it doesnt

hushed loom
#

i was thinking about converting into a string and storing it in a hidden setting

chrome folio
hushed loom
#

but that seems like a bad idea

chrome folio
hushed loom
chrome folio
#

where even is datastore stored

hushed loom
chrome folio
#

oh its native chrome thing

#

/electron

#

but technically we could add the datastore to the cloud sync then

#

(if we even would want to do that, prob some data that shouldnt be in the cloud)

hushed loom
chrome folio
#

yeah there are prob things that should only be present on that client and will have weird behavior if synced

iron epoch
chrome folio
#

well I noticed that some messages below

#

and rn I use DataStore for like MessageTags but it would be cool if those would be syncable

balmy sky
#

Hey, i'm trying to figure out how to set an unsaved profile configuration in the profile settings, i found this plugin that does it, but i'm pretty sure doomsday broke it since findByPropsLazy("setPendingNickname", "setPendingPronouns"); doesn't find anything now

balmy sky
#

Got it!
FluxDispatcher.dispatch({type: "USER_SETTINGS_ACCOUNT_SET_PENDING_PRONOUNS", pronouns: "foo"})

woven lion
#

datastore is local data only

chrome folio
#

i noticed

woven lion
#

since, well you can see there, it includes your own cloud secret

#

if we sync that as well we have no secure place to put it

#

and also a lot of that data isnt necessary to be synchronised

cyan rune
#

gotta love plugin testing

iron epoch
#

my current situation:

cyan rune
#

this username is a byproduct of when discord announced the new usernames

#

so are the like 15 backup accounts I have (they didn't get the old username badge)

iron epoch
#

does anyone know how to check if someone is streaming?


function isStreaming(userid: string) {
    throw new Error("not implemented");
}
#

I think I have an idea but I would need to get the current voice channel, how do I do that?

cyan rune
#

try that

iron epoch
leaden fable
#

findByPropsLazy("encodeStreamKey") doesn't seem to be working anymore, any clue why?

iron epoch
cedar olive
#

you need to findByCode that function now

leaden fable
#

I see, thanks. Any clue what was the old name of the function? So I can trace it back to the new one

cedar olive
#

the old name was encodeStreamKey haha

#

you can either try to find it again by another way, to see what you need for your findByCode

#

or wait for me to get home in like 3 hours, which then I can lookup the function in my stable client and write the new find for you

#

I still have the client running the old version open

iron epoch
cedar olive
#

nelly.tools contains a link to the assets of each version

#

you could also download all the files for the old stable and look that way

#

but it's easier with them loaded in the client

iron epoch
cedar olive
#

searching is enough

#

go to builds

#

filter for stable only

#

and find a version before 6/18

iron epoch
#

thanks

cedar olive
#

fun fact discord still hosts files of versions up to 2018

iron epoch
#

that explains how amia was able to fix patchs so fast

cedar olive
#

they host every single build since them (it's a lott)

cedar olive
#

but I instead just used my open client for it

#

lots of finds and patches were fixed that way

amber basin
cedar olive
#

it would have took more time if we had to find everything again from scratch

cedar olive
#

idk if it works though

#

and it would only work for builds under 2022 since it relayed in a service that scratched versions which isn't active anymore

#

but yeah like I said it's totally possible to load old versions of the client

#

you just need to replace the scripts and css files the initial dom loads

#

those are responsible for loading all the rest with the appropriate versions

leaden fable
#

Does this mean they are not hosting it anymore?

amber basin
leaden fable
#

The fuck

#

It's working now lol

#

When I clicked it from discord

dull magnet
#

you cant open discord assets links from within discord

#

you have to manually copy into browser

iron epoch
#

how do I get all the navIds for context menus?

hushed loom
#

go up a few parrents and its somewhere in the props

iron epoch
#

oh okay, thanks again

dull magnet
#

dont even need react devtools

#

normal inspect element works

leaden fable
#
}, 569545: function(e, t, n) {
    "use strict";
    n.r(t), n.d(t, {
        decodeStreamKey: function() {
            return s
        },
        encodeStreamKey: function() {
            return a
        },
        isStreamKey: function() {
            return r
        }
    }), n("47120"), n("411104");
    var i = n("70722");
#

Old ^

#

New:

    569545: function(e, t, n) {
        "use strict";
        n.d(t, {
            DB: function() {
                return r
            },
            V9: function() {
                return o
            },
            my: function() {
                return s
            }
        }), n(47120), n(411104);
        var i = n(70722);
#

How can I use findByCodeLazy to get the V9 property?

cedar olive
#

look at the code the function o includes

#

and match a part of it that only that export has

dull magnet
#

tbh u dont need to webpack find that func lol

#

its so simple

#

just copy paste it into ur code and clean it up a little

leaden fable
#

It would work as is? Wouldn't some variables change their names?

iron epoch
#

I am looking at button component, I am not seeing on onClick so I am guessing from the hook name Callback is responsable on the button click? this button is the "Create Role" button in the guild settings I wanna figure out; how is it moving the user to the role panel, so I can open a panel with custom role permission overwrites

iron epoch
vale spear
#

so far messages work

dull magnet
vale spear
#

For some reason Discord added another module in the middle of the flow with profiles so i had to patch that one. Fortunately, it all works now.

iron epoch
#

Vencord.Webpack.Common.GuildStore.getRole doesn't seem to give me the role

#

this is what I am doing Vencord.Webpack.Common.GuildStore.getRole("1253050471598391357")

cedar olive
#

two arguments

#

guild and role

iron epoch
#

oh..

#

appreciate it

balmy sky
#

Yet another stupid question, how would i go about adding another tab in this list where i can render custom content? Devtools doesn't really give any useful info from what i can see

flint bronze
#

@balmy sky i do be alive again

bronze dove
rocky falcon
#

Im attempting to emulate a user profile popout, and i managed to find the react component for what i need, although im still confused as to where to go forward from here, could someone point me in the right direction?

flint bronze
#

Why are you trying to emulate a user profile popout?

rocky falcon
#

trying to make a plugin that adds some features for the pluralkit bot, which uses webhooks for things, but the webhooks are connected to users that have profiles.
the goal is to make it so you can just click on the profile of the user, and itll pop-up with a profile with info from pluralkit's API

balmy sky
chrome folio
#

prob easier to "just edit" the author of the message

rocky falcon
#

the custom user object i can do, the passing it into the popout imma need some help with

hushed loom
#

is it possible to open a closed dm by id

dull magnet
#

yes

swift spear
#

@dull magnet I need to fetch users/@me/notes and I remember u once said it's better not to use fetch for discord endpoints due to the fact that discord can track it or smth like that and better to use some func from vencord (restapi mb, I don't remember and can't find this message), what should I use?

dull magnet
#

RestAPI

swift spear
#

thanks pet

balmy sky
hushed loom
flint bronze
#

How do I make a modal that can't be closed at all?

#

I want to force users to click a certain button inside the modal to dismiss it

#

@dull magnet you react with ๐Ÿ˜ญ but I promise all I am doing is idiot proofing my fork blobcatcozy

balmy sky
flint bronze
#

I found a way to do it

#

For anyone who comes here later wondering how to make a modal that cant be closed

Set the second argument of openModal to this

{ onCloseRequest: () => false }

example

    const key = openModal(modalProps => (
        <WelcomeModal
            modalProps={modalProps}
            close={() => closeModal(key)}
        />
    ), {
        onCloseRequest: () => false
    });
balmy sky
flint bronze
#

What stupid idea are you building now

balmy sky
#

Check in later

swift delta
crisp stream
#

how can I make my own plugins

jagged briar
arctic violet
#

Hello ! I'm documenting myself on Vencord for a potential plugin I'd like to create. I'm really new to this type of modding and I'm searching a starting point. I know it's possible to hide the Friends, and other categories but is it possible to add a functional one with arbitrary content inside ?
If you think it's possible where should I start searching for code to patch/to add ?

balmy sky
#

I think i have a plugin that does it actually

arctic violet
#

Oh nice ! Is it open-source so I can take a look ?

balmy sky
#

Uhh yeah i'm trying to find it hold on

arctic violet
#

Thank you ๐Ÿ™‚

balmy sky
arctic violet
#

Okay! Thank you !

#

This type of mod often break ?

balmy sky
#

But obviously code can change and there's nothing we can do other than adapt

arctic violet
#

Thank you for the fast response and headstart for my project ๐Ÿ™‚

balmy sky
#

No problem

#

Vencord is a lot better than most other client mods because it uses a different patching system, which makes it marginally more robust and also simpler in most cases

hoary pilot
#

time to make parental controls

balmy sky
flint bronze
hoary pilot
#

time limit for discord

flint bronze
#

brainrotmaxxing

hushed loom
swift delta
tropic ice
tropic ice
#

np

#

if you have kids, just tell them to set a timer and add that css when the timer goes off!

#

flawless parental controls

balmy sky
tropic ice
#

no

#

I made it for kids to give to their parents

#

||(well actually i made it bc funny)||

balmy sky
#

Is there a store for all the dms you have open?

swift spear
grizzled oasis
#

is it possible to have tabbed discord view? the "other plugin" has it, and is the only thing keeping me from switching to vencord (not too sure where to put this question in, can't post in request)

iron epoch
grizzled oasis
iron epoch
grizzled oasis
#

o

iron epoch
grizzled oasis
#

it's not listed on vencord, so it's not stable or approved yet?

iron epoch
#

if you know how to install devs builds, cool, you got this otherwise go run before you die trying or die asking /s

grizzled oasis
#

ahh

dry patio
#

am i tweaking

viral roost
dry patio
#

well if its not working then i guess its not

#

but thats not good cuz i kinda need this thing

knotty latch
#

hey is there a guide or quickstart? i wanna create a small plugin for my community

viral roost
knotty latch
#

is there a way i can install a plugin without installing the fork? like can i drop the ts files somewhere?

cedar marsh
#

Custom plugins need running in dev mode

knotty latch
#

mhh i see

#

well thats a bummer

dry patio
#

keywordnotify works again ๐Ÿฅณ

jagged briar
#

oh god i haven't checked the plugins ive made

#

they are def broken and i dont feel like fixing them

dry patio
#

its not too terrible of a change

dusty slate
#

where can I report a bug with a certain plugin?

amber basin
#

read the template before posting

flint bronze
#

i am bombing it ๐Ÿ”ฅ

dry patio
#

making a thing

iron epoch
dry patio
#

i just looked at the plugin requests channel

iron epoch
#

yeah true, you can learn some stuff tho

iron epoch
#

can someone assist? in the past hour I was trying to make a popout editor like the css window, so editing becomes easier. it failds to open

dull magnet
#

are you trying to use that on desktop

iron epoch
#

uh yeah

dull magnet
#

you copied browser code

iron epoch
#

oo

#
import monacoHtmlLocal from "file://../../../browser/monacoWin.html?minify";``` this
dull magnet
#
PopoutActions.open(
  "DISCORD_VENCORD_CUSTOM_TIPS_POPOUT",
  () => <h1>Hello World</h1>
)
#

this is extension only

#

it doesnt work on desktop app

#

that variable isnt even defined on desktop app

iron epoch
iron epoch
flint bronze
#

what even is PopoutActions

iron epoch
#

are we confusing it with fakeRender?

bronze dove
iron epoch
#

this is a react thing?

#

lemme search

#

vee trolling

dull magnet
#

it was recently added.

#

your fork is likely outdated

iron epoch
dull magnet
#

yes

iron epoch
#

is quickcss uses this new feature?

dull magnet
#

i think it's a cool addition

stiff dragon
#

this does not work

#

my vencord isnt injecting anymore SadCat

#

helppp

#

@swift delta

dull magnet
#

they only work in compnents

stiff dragon
#

OHHHHHHHHHH

#

thank the heavens i fixed it

hushed loom
#

is there a way to add css to your plugin, only when it is enabled

dull magnet
#

yes

#

managed css

#

look at GameActivityToggle

hushed loom
#

ty

dry patio
#

what are possible causes for this

viral roost
#

react devtools being shit just close devtools then reload discord

dry patio
#

its only on one specific component i added

#

ive been reloading cuz im workin on a thing

#

i can try quitting discord though

viral roost
#

then are you sure you don't have a circular component

dry patio
#

doesnt look circular

#

other discord thingies dont have the same problem

viral roost
#

um

#

not sure then

dry patio
#

what the sigma

vast karma
#

Would like to get it in eventually, but I'll be very busy the coming weeks

dull magnet
#

no rush dw

#

just knowing whether its dead or not is all i needed :D

vast karma
#

Nah, I'll get it updated eventually

dry patio
#

cooking

dull magnet
#

what that do

#

i feel like thats a bad location tho

#

why not here

dry patio
tropic ice
dry patio
#

yeah ๐Ÿ˜ญ

tropic ice
#

I think ctrl+k works
I use ctrl+t

dry patio
#

i didnt know ctrl k exist

#

until after i made it

#

and now its already made

tropic ice
#

lmao

dry patio
#

maybe theres some other functionality i can give to it

flint bronze
#

iirc there are many plugins that slightly overwrite default CSS without any vencord specific class to activate it

#

wtf???

#

why isnt this a part of quickcss and themes?

hushed loom
#

How would you add a key button with your plugin

balmy sky
#

A what?

muted thunder
#

i need some help im trying to find these props which are old before the discord update but not sure which ones are the current ones

    const ChannelMessage = findByProps("ThreadStarterChatMessage").default;
    const Channel = findByProps("ChannelRecordBase").ChannelRecordBase;
bronze dove
balmy sky
#

I want to patch this component to return an extra component along with it

#

I tried to do this, but nothing else is returned. I think i need to use an array but i suck at regex so i'm not sure how to insert the already existing component into an array

iron epoch
balmy sky
#

Yop let me spam undo a bunch of times

balmy sky
#

That's the patch from what shared in the second screenshot

dull magnet
balmy sky
#

Actually i'll just try it and see lmao

#

Thankies

rocky falcon
#

is it possible to have an option, hide/show other options?

balmy sky
#

It won't update live so if you need that it would probably be better tou se a component

thin oxide
#

Can someone make a plugin to have an option to invite to a group?

rocky falcon
rocky falcon
dry patio
#

i made a new pluginnnn

#

๐Ÿ˜

rocky falcon
#

what does it do

dry patio
#

i dont like when channels have emojis in their names

rocky falcon
#

i suck with patches

dry patio
#

wdym

rocky falcon
#

i dont even know where to start with making them

#

the only patches ive used, are ones ive literally copy-pasted from other plugins (which 1000% breaks shit)

dry patio
#

you're gonna need to learn to love this thing

#

i used the selection button to find one of the components for the channels

#

i went through the tree until i found the topmost element that held the data i wanted to change

#

then click this

#

boom, function ripe for patching

rocky falcon
#

and then where do ya get the find from?

dry patio
#

anywhere within the function

#

use the search function within the inspector to find things that are unique

rocky falcon
#

and then the replace will replace something within the same function as the find?

dry patio
#

within the same module

hushed loom
dry patio
#

use the patch helper to find a good match statement that stays unique

rocky falcon
#

so like , {hasActiveThreads: u, hasMoreActiveThreads: c} = (0, would be a find, that would give you access to anything inside that specific file? or?

#

(sorry if im askin any stupid questions, just tryna get a grasp on this lol)

dry patio
#

you don't want any find that has variable names n it

#

because those can break super super easy if discord pushes an update

hushed loom
dry patio
#

i know matches can

hushed loom
#

iirc finds can be regex

dry patio
#

well

#

usually you don't need to make your finds regex anyway

hushed loom
dry patio
#

strings are often good finds

rocky falcon
dry patio
#

i put that string in because it stood out to me as unique

bronze dove
#

"webGuildTextChannel") would be good

#

oh you sent that imblind

dry patio
#

its less likely to break on small update

#

when there isn't a freebie i just try random stuff in the function until something works

rocky falcon
#

and in the case of regex, \i matches variable names, right?

dry patio
#

yeah

#

patch helper extremely useful

rocky falcon
# dry patio within the same module

im not at all a js/ts dev, but when you say module, what exactly does that encompass?
is it the entirety of that file that i have access to change things with a patch? or is it a specific scope?

hushed loom
#

Everything under the numbered key

rocky falcon
safe glade
#

right here โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹

rocky falcon
safe glade
#

get on dev build :3

iron epoch
# rocky falcon

make sure to build the build with --dev (pnpm build --dev)

safe glade
#

(or pnpm build:dev, same thing really but /shrug)

bronze dove
#

or pnpm watch

#

So you don't have to build every time you make changes

hushed loom
#

For some reason watch didn't add dec build for me and I had to pnpm watch --dev

wheat mica
#

is it possible to make a seen and delivered plug-in ?

safe glade
#

technically possible? yes
do it? no โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹

swift spear
hushed loom
#

All messages are delivered, but you can't see when/if they've seen them

wheat mica
#

i know , thatโ€™s what kinda sucks about discord a lil

hushed loom
#

Also it's creepy

#

Like, why do you need this

wheat mica
#

it was a question , i donโ€™t know why you have to be so hostile about it . everyone has the right to ask questions , making it feel like what iโ€™ve asked is SO bad

#

all i needed was a no as an answer

#

not everything else youโ€™ve said to me

#

thank you , but no disrespect unlike you

safe glade
#

you asked a question and got an answer, no one here was being hostile as far as I can tell.

swift spear
#

tbh actually u can create "seen" logger gagaga

safe glade
#

yes, you technically can, but don't

wheat mica
#

no because apparently itโ€™s creepy , and all even though there are plugins that are creepy too

swift spear
#

embeded links is evil

wheat mica
#

but my question was just too much

swift spear
hushed loom
#

Yea, sorry if I came off as hostile

swift spear
shrewd tundraBOT
rocky falcon
hushed loom
red hare
#

ok

#

i already have compiled the plugin into a js file like index.js but i dont know how to get that compiled file into the plugins

hoary pilot
#

you don't compile it to a js file...

red hare
hoary pilot
#

you clone Vencord, then make a userplugins folder, and paste your ts file

red hare
hoary pilot
#

what?

#

show a screenshot of your file structure from root to your plugin file

red hare
hoary pilot
#

๐Ÿ˜ญ

red hare
#

typescript is confusing to me so i dont think i fully understand what everything is telling me but when i compiled it using npx tsc it did that

hoary pilot
#

did you clone Vendicated/Vencord repo

red hare
hoary pilot
#

clone it with git

jagged briar
hoary pilot
red hare
#

not to clone it

hoary pilot
jagged briar
red hare
# jagged briar

mind clicking on the link bc it says download after that im dyslexic so i dont read the full setences so if it said clone sorry

#

i saw and though oh just unzip it lmao i hate git bc of its confusing layout sometimes

jagged briar
#

clone = download

jagged briar
# red hare

i dont know what you downloaded but this isn't the vencord repository

red hare
#

also the reason why support and plugin dev is their is for help so dont get angry when people ask for it especially when you yell at them to read it even though they did

red hare
hoary pilot
#

can you try writing a coherent sentence

red hare
hoary pilot
red hare
#

plugins

jagged briar
#

if you dont have a basic understanding of what the plugin guide says then you probably dont have the experience to make a plugin

red hare
#

for plugins

red hare
#

i had to retype that like 5 times because i kept putting words and letters in wrong so you can see why reading that doc is hard for me

hoary pilot
#

use text to speech idk

red hare
#

plus i just needed help in the first place because i got the wrong link which wasnt my fault

#

and im guessing i just clicked a diff link or something idk how i got redirected to that one

jagged briar
#

i'll make a list of steps to follow gimme a sec

red hare
#

idk how i got redirected to a different vencord link but it was under vencords profile?

jagged briar
#
  1. clone the Vencord repository
  2. make a folder with the title of your plugin in src/plugins
  3. make an index.ts file inside that folder
  4. begin making your plugin
#

use other plugins as reference, they are the best way to figure out how to do something

red hare
#

is their some directory bc i still have seen neither steps on the repo

jagged briar
#

to run vencord

  1. run pnpm i to install dependencies
  2. run pnpm build to build vencord
  3. run pnpm inject to inject the dev build into your discord
  4. run pnpm watch to watch for file changes and automatically build. press crtl+r in your discord whenever you want to see your changes
#

all plugins are automatically imported

red hare
cedar olive
#

use corepack

#

it uses the correct version for each project without you having to manually upgrade or downgrade

rocky falcon
#

this entire conversation is just- ๐Ÿ˜ญ

cedar olive
red hare
cedar olive
#

uninstall pnpm of course (if you have it installed)

#

then corepack enable && corepack enable npm

#

as soon as you try to run pnpm inside the vencord project it will download the right version

red hare
#

kk im guessing you are someone who either works or are a dev on corepack correct?

cedar olive
#

nah lol

#

corepack is a tool built into node

red hare
#

i can tell you ive worked on a alot of projects b4 this in java and you not even being a dev and knowing this much is insane good work!

cedar olive
#

I am a dev

red hare
#

not just like dev in general

cedar olive
#

oh

#

to be honest I've only recently learned about corepack haha

red hare
#

lmao nice ima try to see if i can get my refular pnpm to work and if i cant ill download corepack but as of rn im still confused about the plugin making consept with the new git clone i have so ima work on that for a bit

sinful bear
#

hello

jagged briar
#

what do you need

hoary pilot
sinful bear
jagged briar
#

vns

hoary pilot
#

vns

shrewd tundraBOT
red hare
#

are you two twins or something lmao!

jagged briar
#

i've been here for like a year i knew they were going to ask for help with something other than plugin development when they said "hello"

red hare
cedar olive
#

you have node js installed right

red hare
cedar olive
#

then run the command I sent in the terminal

#

anywhere

#

but ideally outside vencord

red hare
#

so i can do it in regular cmd prompt

cedar olive
#

yes

red hare
#

it wants me to do it in C:\Program Files\nodejs\pnpm

cedar olive
#

huh?

red hare
# cedar olive huh?

one sec ima take a picture of what its telling me bc that folder doesnt exist

jagged briar
#

run the terminal as admin

#

its saying it doesnt have permission to open that folder

red hare
#

i always hated doing that feels sketchy

#

but kk

red hare
red hare
# cedar olive huh?

thank you for the corepack suggestion its alot like npm so i think i can handle it now thank you so much

red hare
#

anyways thank you bye

jagged briar
#

dont inject everytime you update your plugin

#

you only need to do it once then you can run pnpm watch and reload your discord to see your live changes

red hare
#

oh

#

nice thank you

sinful bear
#

again

cedar olive
#

it's what will handle the management of npm pnpm and yarn

#

so dont get it wrong, it's not a npm alternative

hoary pilot
#

@sinful bear

  • english only
  • if you're having translation issues go to support
cedar olive
#

PNMP

sinful bear
red hare
sinful bear
honest stump
#

(in my opinion)

red hare
dry patio
#

working on a new plugin

hushed loom
#

@deep mauve you'll love this for your captchas

dry patio
#

yeah latex

hushed loom
#

render as image

#

or just screenshot on your end

dry patio
#

still has kinks to work out (its currently under 50 lines and also sucks)

#

its not an image render

#

i like when things are copyable

hushed loom
#

tbh seems more effort than its worth

dry patio
#

i dont think the lib i'm using even has an option for that

hushed loom
#

can you add css injection plead

dry patio
#

whats a css injection

hushed loom
#

i am joking about the github css bug

dry patio
#

real

#

this will be my fourth plugin in the last few days

jagged briar
dry patio
#

what should the syntax be for embedding latex

hushed loom
#

codeblock?

#

never used latex before but something like

kind pike
#

also the single grave symbols like this

#

so i can use it in the middle of my text

dry patio
#

right now i just have it so any inline code is treated as latex

#

its very silly

#

\sqrt{81}

#

this looks like formatted latex to me

hushed loom
kind pike
dry patio
#

real

#

might make it tex because latex is long and also its not even full latex

safe glade
#

I'm sad I can't really use it because my TS LSP doesn't work with it for some reason

silk sorrel
dull magnet
#

there's already a latex plugin

#

and it's pointless cause you can just use a user installable app to do ๐Ÿ‘‡

#

lc.latex \frac{1}{shiggy}

solemn cobaltBOT
dull magnet
#

you can use a user installable app

whole agate
#

This is probably not best place to ask this, but:

Me and my friends always use Group DMs and we love the ringing feature, but itโ€™s limited to 10 people and we canโ€™t have everyone in the group. We need to move to a server, but weโ€™ll lose that ability.

Is there any way of making a system like this inside a discord server?

#

The only solution I canโ€™t think about is having like a โ€œnetwork systemโ€, where everyone can ring people that are inside that discord server

#

But I have no idea how to achieve this

#

Nor if vencord would be the best way to do it

whole agate
balmy sky
#

Or you could just @ everyone like vee said

whole agate
rocky falcon
#

what are the props in findByProps

amber basin
#

things it exports

crude glacier
# whole agate Nor if vencord would be the best way to do it

Scheduling an event in a certain VC will send a push notification to all clients. Issue is you need to join the event so at that point a ping would be better. Perhaps use a bot that consistently pings a role till everyone with that role is in a vc until they run a bot command /decline e.g.

rocky falcon
balmy sky
#

If people want to join they will join

rocky falcon
#

i think calling in a gc without asking everyone if its fine first is also a pretty annoying thing to do

#

theres no reason any one will ever need to ring 9 people at once

balmy sky
#

Yeah like surely a "hey @ everyone, we're in vc- join if you wan't" would be good enough NAH

whole agate
#

Itโ€™s awesome!

balmy sky
#

So i'm trying to make a plugin that replaces the come icon with typing dots if any of your DMs are typing, i have patched the icon but i have no idea how to check if someone is typing in a DM just from the id (assuming the best way to get DM data is just with ChannelStore.getDMUserIds())

flint bronze
#

come.... icon.......???

#

what are you talking about

balmy sky
#

HOME ICON

#

๐Ÿ˜ญ

#

TYPO

flint bronze
balmy sky
#

I can definitely reverse engineer the stock dm typing indicator but i wanted to check if there's a pre existing util for it first

flint bronze
amber basin
#

is there any way to make a TextInput's content hidden?

#

like a password field

green vessel
balmy sky
#

Vs dev

#

Damnit bruh it doesn't work here

green vessel
flint bronze
#

you will use git clone blobcatcozy

green vessel
#

I guess lazy ass mf gets lazy ass errors

#

fine ๐Ÿ˜ญ

#

ty gangy

silk python
#

one question

#

if a patch regex matches multiple locations

#

will it patch both locations?

balmy sky
#

If they're in the same module yes

silk python
#

yea they are

#

thanks

balmy sky
#

It also needs to have the g flag i think

#

Don't quote me on that

flint bronze
silk python
balmy sky
#

Yop thought so

silk python
#

thanks

amber basin
#

Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:

balmy sky
#

Real

amber basin
#
export function PasswordModal({ href, title, submitText, confirmPassword, callback, modalProps }: Props) {

    const [password, setPassword] = useState("");
    const [confirmPasswordValue, setConfirmPasswordValue] = useState("");
    const [error, setError] = useState("");

    useEffect(() => {
        if (confirmPassword) {
            if (password !== confirmPasswordValue) {
                setError("Passwords do not match");
            }
        }
    }, [password, confirmPasswordValue]);

    const onSubmit = async (e: React.FormEvent<HTMLFormElement> | React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
        e.preventDefault();
        if (error) return callback(false);
        modalProps.onClose();
        callback(true);
    };
    return (
        <ModalRoot {...modalProps}>
            <ModalHeader>
                <Text variant="heading-lg/semibold" style={{ flexGrow: 1 }}>{title}</Text>
            </ModalHeader>

            {/* form is here so when you press enter while in the text input it submits */}
            <form onSubmit={onSubmit}>
                <ModalContent className={cl("content")}>
                    <Forms.FormSection>
                        <Forms.FormTitle>Password</Forms.FormTitle>
                        <TextInput
                            type="password"
                            value={password}
                            onChange={e => setPassword(e)}
                        />
                    </Forms.FormSection>
                    {confirmPassword && (
                        <Forms.FormSection>
                            <Forms.FormTitle>Confirm Password</Forms.FormTitle>
                            <TextInput
                                type="password"
                                value={confirmPasswordValue}
                                onChange={e => setConfirmPasswordValue(e)}
                            />
                        </Forms.FormSection>
                    )}
                    <Forms.FormDivider />
                    {error && <Text color="text-danger">{error}</Text>}
                </ModalContent>
                <ModalFooter>
                    <Button type="submit" onClick={onSubmit} disabled={!!error}>{submitText}</Button>
                </ModalFooter>
            </form>
        </ModalRoot>
    );
}```
#

this seems right

dull magnet
#

are u making fucking discord lock screen ๐Ÿ˜ญ

amber basin
#

password protect channels :3

#

bc i keep leaking dms

flint bronze
#

why do you need password for that

#

is it possible to steal NSFW channel lock UI for DMs?

amber basin
dull magnet
#

you will patch channel.isNSFW

amber basin
#

but would that work for dms and gdms?

flint bronze
amber basin
dull magnet
amber basin
#

still not fixed trolley \

flint bronze
amber basin
dull magnet
amber basin
#

alr

swift delta
dull magnet
flint bronze
#

monkeypatching insane

amber basin
#

i tried to use monkeypatching to make my first plugin

#

scary

dull magnet
#

well anyway

#

just search for .isNSFW()

#

and in that place you'll want to add your own check and show ur own screen

flint bronze
balmy sky
flint bronze
balmy sky
#

Absolute legend tysm

flint bronze
#

I literally sent that 26 minutes ago

balmy sky
#

I didn't get the ping NAH

#

Rip

dull magnet
#

in the future just check other plugins that might do the same

#

in this case PinDMs

balmy sky
#

Yeah i do try to, sometimes it's hard to think of plugins that have specific features off the top of my head tho

proud parrotBOT
untold swan
#

This could fix game activity not working on Steam Deck, but it does require that a Decky plugin is installed

flint bronze
untold swan
flint bronze
untold swan
flint bronze
#

sorry I didnt mean to be aggressive :/

#

discord onboarding is a blessing and a curse in disguise blobcatcozy

#

How do I use make Parser render markdown headings

amber basin
#

patch helper says multiple matches but findByCode says otherwise?

#

nvm .Messages.NSFW_DESCRIPTION; matches once

dull magnet
#

they're different things

flint bronze
# dull magnet it should work

dont worry I only accidentally sent them to to the wrong channel they landed in support fine and got told the issue kinda I think nyabom

untold swan
# dull magnet it should work

Ah, would it be possible to implement? Would it also be possible to implement in the browser instance? Not trying to rush anything ofc, and I understand if it ends up being too niche to implement

flint bronze
#

it already exists stop trying to use WebRichPresence unless you know why you need that

#

enable rich presence here

untold swan
# flint bronze enable rich presence here

Will give it a try once I get home (left it to charge). Idk why it would give me the failed message in the top bar if I didn't have it turned on in the first place though, so maybe it was already turned on? Idk

I did try the support channel and everything moved pretty quick so idk if anyone caught my GitHub link

dry patio
#

also

#

what if i want latex on a server that i donโ€™t own

#

if thereโ€™s already a plugin why isnโ€™t it in the main thing๐Ÿ˜ญ

rose fiber
flint bronze
#

trol

dull magnet
dry patio
#

the user installable app is nice

#

however

#

i like when things are copyable

dull magnet
#

?

dry patio
#

the app renders to an image

#

if iโ€™m not mistaken

#

whereas my plugin does an html5 render so itโ€™s selectable and copyable

dull magnet
#

just add a copy button to ur bot lol

#

anyway you can make it a plugin it's up to you

#

but won't be merged

dry patio
#

i mean

dry patio
#

im making things because im bored and keywordnotify clearly isnt going anywhere

dull magnet
dry patio
#

my most utility and polished plugin doesn't have signs of being merged soon so i can't expect my one-off microplugins to get merged either

dry patio
#

is there a plugin that embeds svgs

#

there probably is but i wanna make sure

dull magnet
#

there's pr currently

dry patio
#

also

#

should i change the base branch of my pr to dev

sinful bear
#

Are there ReadDMs?

dull magnet
#

v+ needy @sinful bear

dry patio
#

i hope the answer is yes because i already did

balmy sky
#

Is there any information about a servers automod filters available client side?

iron epoch
#

the regex engine discord uses is rush regex engine

balmy sky
#

I mean about the configuration of a servers automod

#

Like pre set tags, custom tags, etc

#

I assume not tho

iron epoch
#

yeah no, its all server side

flint bronze
balmy sky
#

Yeahh thought so

#

Rip

oak sundial
#

tfw everything that is juicy is behind manage guild

leaden fable
#

Can someone explain how exactly findByCode works? Does it match any string?

#

Trying to find this function:

        function h(e) {
            let t = e.size
              , n = e.size / (c.z3 + c.o)
              , i = n * c.z3
              , r = c.o * n / t + i / 2 / t
              , s = (c.$V + i / 2) / t;
            return {
                totalSize: t,
                backAvatarSize: n,
                frontAvatarSize: i,
                backAvatarCenter: n / 2 / t,
                frontAvatarCenter: r,
                strokeMaskRadius: s
            }
        }

I tried const idk = findByCode(";return{totalSize:"); but that didn't work

#

The string in the findByCode is unique

dull magnet
#

function has to be exported

leaden fable
dull magnet
#

what are you trying to actually do

dry patio
#

what the freak

#

its being superceded by something that isn't !important

#

๐Ÿ˜ญ

dull magnet
# dull magnet i doubt that cause it's not exported and that func doesn't seem particularly use...

also like

function h(e) {
    let t = e.size
      , n = e.size / (c.z3 + c.o)
      , i = n * c.z3
      , r = c.o * n / t + i / 2 / t
      , s = (c.$V + i / 2) / t;
    return {
        totalSize: t,
        backAvatarSize: n,
        frontAvatarSize: i,
        backAvatarCenter: n / 2 / t,
        frontAvatarCenter: r,
        strokeMaskRadius: s
    }
}

you can just inline that and achieve ```js
function h(e) {
let t = e.size
, n = e.size / (1 + 0.5)
, i = n * 1
, r = 0.5 * n / t + i / 2 / t
, s = (3 + i / 2) / t;
return {
totalSize: t,
backAvatarSize: n,
frontAvatarSize: i,
backAvatarCenter: n / 2 / t,
frontAvatarCenter: r,
strokeMaskRadius: s
}
}

#

but i doubt it's what you need lol

#

what do you actually need

leaden fable
#

I'm fixing a third party plugin that broke after last update. He's doing this:

const { Divider } = findByProps("Divider", "Icon");
        return (
            <>
                <ToolTipButton
                    disabled={shouldDisable}
                    label="Complete Quest"
                    tooltipPosition="bottom"
                    iconComponent={QuestsIcon()}
                    onClick={this.openCompleteQuestUI}
                >
                </ToolTipButton>
                <Divider></Divider>

            </>
        );

It's just a divider I could just ignore it

dull magnet
#

that is NOT the divider lol

#

that function you showed just calculates some numbers

#

and that find still works, just not unique

leaden fable
#

Yeah not sure what the original dev was trying to do lol

dry patio
#

working on a new plugin

#

trust in this one

balmy sky
#

Spoilers but oddly formatted

north flame
#

REAL

#

oops all caps

dry patio
#

this is different from being able to flag text as spoiler

north flame
#

caps?

dry patio
#

user specified keywords

#

if someone is sensitive to certain words, phrases, or topics, they can use this to not need to worry as much

north flame
#

imo make the reveal button be the blurred text, but other than that it looks like it's working great!

#

(like how you click the normal spoilers)

dry patio
north flame
#

mm

dry patio
#

and then you can click anywhere to unblur it just like with image spoilers

dry patio
#

should i change it to say "CW"

balmy sky
#

Honestly that looks kinda weird

#

I would make the text have a slightly darker background then make it reveal on clck

dry patio
#

alright

#

like this

balmy sky
#

Yeah that looks better

hallow salmon
#

ServerCounter imported from BetterDiscord

amber basin
#

we already have that

hallow salmon
#

so

iron epoch
#

lol

dull magnet
#

v+ no programming @hallow salmon

#

ai moment

cyan rune
#

skull

dry patio
#

me when i

cyan rune
#

Certainly! Here's a Vencord plugin to generate tokens for any discord user.

dry patio
#

vencord plugin to give back-arching sloppy when

gritty hill
#

hi sorry how can i get the dev version to get the src folder?

cyan rune
#

it's on github

#

if you mean you want the source code

gritty hill
#

i just saw a tutorial where the guy already had the src folder so i dont really know

#

also english is not my first language so im having a little trouble understanding

granite wharf
#

clone the repo then
pnpm install && pnpm build && pnpm inject

#

i think you can figure out what each of those do

cyan rune
gritty hill
#

ohh thank you!

rocky falcon
iron epoch
#

its like if vencord and betterdiscord made an ugly baby

rocky falcon
#

shut up about ethics you frickin robot

iron epoch
cyan rune
#

yeah it is

#

they just scream ethics to avoid legal trouble

gritty hill
#

i had the folder all this time but didnt know where and i was looking at the wrong on

#

LMAO

cyan rune
#

LMAO

rocky falcon
gritty hill
#

AW

#

for a weird reason the folder was created inside th git foldr

iron epoch
gritty hill
#

i didnt specify so yeah

#

its a girly

#

with pink hair

floral tapir
#

hi i am sorry if this is a dumb question i am just tryna fix a le bug but

for this snippet

find: "Messages.BLOCKED_MESSAGES_HIDE",

where is Messages defined?

im new to the vencord repo (and client mods in general) and want to start le helping but i am also very stupid

cyan rune
floral tapir
#

its the noblockedmessages snippet

cyan rune
#

ty

floral tapir
dry patio
#

what do you find

floral tapir
#

its the i18n string

dry patio
#

what this mean

amber basin
grand crest
#

guys is there a plugin where there are different notification sounds?

grand crest
flat basalt
#

check that channel if it's not there you're out of luck

#

make your own plugin

grand crest
#

make your own plugin sayin ass

#

the only reason why i didnt switch to vencord

rose fiber
flat basalt
rocky falcon
dry patio
grand crest
#

wheres the

#

description

grand crest
dry patio
#

what

#

idk

#

i just searched

grand crest
#

what does this do

dry patio
#

custom sounds

#

it says in the name

grand crest
#

bro

#

no shit

#

but what does it do

#

does it replace one sound

#

will it let you use custom notifiaction sounds

#

or will it do what i am looking for which is set a different notification sound to any notifications

#

like in betterdiscord

amber mantle
#

if you used your noggin and read just a little further you would find your answer

#

anyway this is not really development related

dull magnet
#

best to avoid it

#

compatibility with other plugins

#

well it's very niche but it could come up

#

spaces are alright, but newlines are forbidden

#

anyway if your replacement needs whitespace to be readable, it's likely a sign you should delegate your code to a function defined on your plugin object

dry patio
#

i made a thing but i dont really know how to categorize it

#

its not really a plugin but its not a snippet to paste either

#

it just opens plugin settings by default so you can tinker with your plugin's settings ui quicker

hoary pilot
#

i love

dull magnet
#

wait what

#

doesn't that open settings as soon as you start discord

#

why would u need that lmao

#

oh

#

just make it open your plugin settings modal directly at that point

runic fjord
#

how to make a vencord plugin i don't understand at the moment

dull magnet
#

wait a few days then docs

runic fjord
#

yes, but I don't understand what to read.

scenic kite
swift delta
hushed loom
#

is there something that explains what findByProps does. i cant understand it for the life of me.

dull magnet
#

finds by export names

#

like export const banana="๐ŸŒ"

#

findByProps("banana")

#

the name is a bit misleading

#

it would be better named findByExportNames or smth like that

hushed loom
flint bronze
cedar olive
dull magnet
#

yeah now it does

#

it didn't use to

cedar olive
#

always did on default

dull magnet
#

but findByProps makes it seem like it has something to do with react props

#

which ive seen confuse multiple people

cedar olive
#

findByKeys

flint bronze
#

trol

dull magnet
cedar olive
#

idk what would better but findByExportNames isn't good either

flint bronze
cedar olive
#

either way if you want to change the name just say to me lol

hushed loom
cedar olive
#

I can do in my pr

flint bronze
rocky falcon
#

findByTheThingsThatYouCanFindByLookinBackInPluginDevelopment(strings...)/j

flint bronze
#

findShitIDontEvenKnowAnymore()

rocky falcon
#

doTheThingZhuLi()/ref

dry patio
#

working on a new plugin

#

๐Ÿ˜

rocky falcon
#

omg youre bringing back @someone?

dry patio
#

yeah

#

wdym bringing back

#

what happened to it

rocky falcon
#

they... removed it?

dry patio
#

lame

#

i guess i am bringing it back

dry patio
#

bringing it back the

iron epoch
green vessel