#π§©-plugin-development
1 messages Β· Page 76 of 1
yeah
snake case is just an old habit cuz my mom is dyslexic and she prefers me to write with the underscores as its easier to read
I'm sure I made a passing comment about collapsing big codeblocks in here once but I can't find it 
Anyway
I couldn't find it because I wrote it all as one word and discord search sucks
are these libraries made specifically for vencord or is there documentation i can look at so i can stop bothering yall with dumb questions
beyond the basics on vencord wiki just read other plugins
and if there isnt documentation where is the source code? I dont like asking simple questions cuz someone has to take time out of their day to answer it π
its been helping but one of the things im trying to do hasnt been shown in other plugins simply because they dont need it
Middle click the function or click it and press ctrl+b and it'll take you to the source
thanks!
That's what this channel is for so just dump your questions in here anyway
You're best off if you make it clear what you want to do with the question as most people won't wanna respond if it's too vague because you can't tell what you're getting yourself into lol
yeah ik, ive been doing that but in hindsight they were pretty simple questions, I remember the same feeling when helping people make mods for totk and they would ask really simple questions that if they just looked around a little they would find
I would still help them but some people got annoyed, i dont wanna annoy yall or anything
i mean tbf discord is horrible as a knowledge base and searching is ass
not really your fault if you genuinely tried to search
its not really discord specific, im making a new oneko plugin and trying to implement a feature in the settings
lemme show why the feature is kinda needed
so i have a couple foxes, but i cant delete any of them, (for the sake of example lets just say they are all different kinds)
one of them is a bunny, i realllyyy dont like bunnies, so even if i add a delete feature I would have to prioritze old or new, not being able to pick a specific one
the thing i want to add is making "profiles" for each cat, this way you can make a new cat, change a few settings like its speed or follow distance, and if you think you have too many you can pick a specific one and delete it
So you wanna add something that turns the setting for that one type back off when you click it or something?
uh not quite
i dont know how to explain it well so im gonna try to make it in python
Gonna make all of discord collapsible, piece by piece
such calming music!
Thank you
ok finally finished with my basic little python program
so
oop
lets pretend this is the settings page
the dropdown at the top is the cats you can select
the value under that is the name
then speed
then distance
whenever i select something new in the dropdown, name,speed and distance have the values inside changed to whatever is saved
how can i make it so the values in entry boxes in the settings page also change to whatever is saved?
im pretty sure it would be pretty easy to find out how to run a function after the value in the dropdown changes, but once it changes the function will change the settings to something saved, thats what im going for rn
if you need a bit more detail feel free to ask! I cant tell if what im saying is vague
what would be the best way to go about making the gif search bar still show when looking at favorites
i use the bettergifpicker plugin but want to still be able to quickly access search
I would use a custom component setting and then use withPrivateSettings to define the actual settings values it sets/gets
This is not a perfect example, just to get the idea across
You don't have to make the private setting the same as the component setting's key, you can refer to any private setting in there, I just wanted to be able to use the save on close thing
I haven't tried it but I'd imagine you wanna just get rid of these two branches so it uses the header with the search bar
I haven't tried it
I have now tried it
Thanks, when I get home I'm gonna try it out, thanks for helping out!
awesome
i was trying to do that but im very new and still learning how to do patches and stuff lol
what are the imports? im trying to implement this but get a bunch of red underlines
you should really learn some better js first
you've been asking so many entry level questions
either learn better js first so you understand these concepts or try googling / asking ai (don't ask ai for code, instead ask it to explain specific things you don't understand (and not vencord specific things, but for example how imports work)) instead of always asking here
now is a good time to mention that AI won't help you with vencord's API
im trying to implement something specfic to the settings page that vencord uses for its plugins, google hasnt helped and ive looked at the source for the settings page, im planning on adding things to the js file but im not gonna ask here since its not vencord specific, i understand that ive asked entry level questions but its almost like im entry level or smth, surprise surprise
where are you trying to add code? in the settings popup for a your plugin?
if you don't even understand how imports work it's a good sign you're in the very wrong place and should improve your js skills first by practising on a normal project where you can find many docs / resources to help you
i do know how imports work, im wondering which on they are using so i dont get a bunch of things saying it doesnt exist
your IDE should be able to find and import these
lemme find the video of what i want the settings page to behave like
right click the thing that has red underline
quick fixes
import from "..."
this is the vid
this channel isn't for explaining basic IDE functionality to you 
search for OptionType.SELECT in the vencord code there are a lot of examples of doing this
turns out i misspelled it, and i havent had my ide do that before so sorry for not knowing that
i know about the dropdown lol, i mean how the entry boxes have their values changed after selecting something in the dropdown
yeah its hard to tell cuz the drop down menu covers the values as they change
you are not going to like the answer I have to give for this
uh oh
the list of options would be able to change when clicking "add kitty" button
im planning on reading the options from a list so it can dynamically change easier
a list of lists
So everything would have to be hard coded in?
no...
skip to step 3 https://medium.com/@worachote/building-a-todo-list-app-with-reactjs-a-step-by-step-guide-2c58b9b6c0f5
what you need is basically the same thing
dynamic list where you can add and remove entries
Lists/arrays in Vencord's settings have been faked as a string for the longest time
Proper support for them has only been added relatively recently, and that change is just for the underlying data, not the UI itself
Vencord has had plugins that implement settings lists for a long time, such as MessageTags. These plugins used DataStore (abstraction around IndexedDB) for data storage
These plugins have been migrated to store their data using the settings API, but the config editor is generally implemented using slash commands (for some horrible reason)
In other words; the settings API only supports half of what you're trying to do. You have to build the UI yourself
wait
what if i told you i lied (partially)
the lie is that that change was never actually merged into vencord
and is still a PR
bleh
anyway you are going to have to implement the UI yourself, you can use a setting with the typee COMPONENT to add your own UI into the settings modal
see IPluginOptionComponentProps for the react props
alr, wish me luck π
took me an embarrassingly long time to get this working myself
my patch test kept failing and it took me forever to realize the thing i used for the find was finding the wrong part of the code
but i can now say i've succesfully made a plugin
enabling this plugin I think
and maybe also this (why the hell are these separate lmao)
oh lmao
oh well, useful for learning anyways
there are quite a few plugins that should be merged 
im gonna try Frankensteining the keyword notify plugin since it might work
lol I had no idea
Congrats
Oh that's different, that allows you to search gifs you've favourited, mine just makes the general gif search available in the fav/trending tabs
Could they not be merged into one called something like GifSearch
Yeah probably
love the lyrics display
I'm yet again confused of this problem, discord for a weird reason made the implemention of the custom status modal in seprate module, so now it's insanely minified and have no idea how I could get it.
here a code that used to work
const StatsModule: { default: FunctionComponent<ModalProps>; } = proxyLazy(() => {
const id = findModuleId("this.renderCustomStatusInput()");
return wreq(Number(id));
});
const requireCustomStatusModal = extractAndLoadChunksLazy(["action:\"PRESS_ADD_CUSTOM_STATUS\"", /\i\.\i\i\)/]);
const openCustomStatusModalLazy = () => openModalLazy(async () => {
await requireCustomStatusModal();
return props => <StatsModule.default {...props} />;
});
and the module I should somehow find:
question, why are you webpack requiring manually?
Yeah...
you can find i.Z instead
that module is just a wrapper with tracking, go one module deeper
hey, so I want to make a plugin to allow listening music together just like with Spotify but for other music apps (MusicBee in my case)
so I already made a plugin for MusicBee that locally hosts a Rest API to allow interacting with the app, but now I need to actually interact from the Vencord plugin
by searching in this channel, I learned that the RestAPI interface (or class ? I am quite new to web development sorry) could do this so I tried using it and after many iterations, I almost got it working by using it like this:
await RestAPI.get({ url: "http://localhost:9696/musicbee/currenttrack" })
.then(function (res) {
logger.info("Received response: " + res);
})
.catch(function (error) {
logger.error(error);
});```
but I still get an error that I just can't figure out how to fix:
```Error: Parser is unable to parse the response
at N.<anonymous> (web.73eff6d8aaee3274.js:12:1813040)
at t.emit (web.73eff6d8aaee3274.js:1:1248307)
at XMLHttpRequest.<anonymous> (web.73eff6d8aaee3274.js:12:1817094)```
every other Vencord plugin that uses RestAPI uses it to interact with Discord's API, so do I need something else instead because I don't interact with Discord ?
Just use fetch
tbh just skip the discord step
make it a website
you can send someone a link that they can join your session with
nah just use the official activity invite stuff
specify the PLAY and SYNC flag
ez integration
the point in making a plugin instead of a website is that it is integrated within discord just like for spotify, and also I want to avoid having to host a website for this
however using the activity invite stuff from the musicbee plugin might be exactly what I need actually, like I still want to add a button with a vencord plugin but most of the listening together thing can be done outside of it
I suggested to have it outside of discord so it's more versatile
I wanted to make something like this ages ago
Generic listen along that works with a multitude of players and doesn't depend on smth like discord
that module always exports a single, do I always get the first export or there is cleaner/nicer way?
dont hardcode export names
oh yeah I get what you mean
it's just that in my case I wanted to make that thing just for me and my friends, like I didn't really planned to do a fully working service or anything even though that would be amazing yeah
that why I am asking as it seems the export is unfindable as it's wrapped in smth
well, my #{intl::ACCOUNT_A11Y_LABEL} broke again :D
I'm trying to create a new plugin for Vencord. My code doesn't seem to have any issues, but when I place it in the userplugins folder and build Vencord, the Plugins tab doesn't appear. However, when I remove my plugin, Vencord works fine. What could be causing this?
there no errors in the build
What about errors in devtools console
password lock
that's a false sense of security just logout or lock your pc bruh
Tbh I think it could be done properly
Sometimes, your family or friends might need to use your PC, and there are people who like to snoop on DMs. A password lock would be a great solution to keep your privacy secure
But I donβt think this is it
just logout
there was password locker for chat in vencord but the dev deleted it idk why
This will never be accepted and had been denied multiple times
everytime when my family need to be on the pc so i logout then login after
because this doesn't address the fact that they could just unpatch Vencord or just use discord web
they dont know how to unpatch vencord and i dont login on discord web 0_0
like... this is not secure at all and has already been denied unless you seriously want to maintain unsecure garbage just dont
bruh u dont understand me
so i need to create another user for them and they can access discord and my account will be opened too
alot of people asked for it thats why am trying to make it
you will simply not grant the user admin permissions
a lot of people already made it
No I do understand this is just useless because it doesn't secure anything at all
so i should put permission for the apps they will use and that will take alot of time
this doesn't stop anybody from snooping
how? discord is locked they cant do anything
they cant access the chats or anything on discord
and it will be a unofficial plugin
there is a reason every attempt at making this gets abandoned
reusing the token hider functionality?
thats still logging out 
nah not token hider func
its just a plugin that ask for passcode like ur phone to continue
i know
129k people with a false sense of security
i made better one
its just annoying to login after family or friends sit on the pc
everytime
sure. make it. just don't come back complaining your family found a bypass for it
bruh why they will find a bypass
do you even have proof that they will try to access your discord
i made better one
You don't address devtools, the fact that the password is stored in plaintext in the settings file, the fact that vencord can just be unpatched, the fact that they can just use your browser which you are likely logged in to anyway.
its not completed
If you actually care about people snooping, just log the fuck out and log back in using your phone in 10 seconds
there is honestly a higher chance of your family or friends accidentally installing malware that steals your token lol
this is an actual threat you should account for
there an antivirus on the pc
This will be denied as an official plugin for multiple reasons, will not be listed in #1256395889354997771 for other reasons and you are going to have to maintain this entirely
you are still screwed if the antivirus detects the malware after it already sent your credentials for literally everything to a remote server
first of ll i didnt complete it and if they want to unpatch it they need to find what the name of vencord that they dont know then download it then unpatch and am not logged in in my browser
am not talking here about antivirus
No, but this is a false sense of security for everyone and you're going out of your way to make a literally worse solution than just logging out
yes you can make it no we wont help you fix bugs or issues with it
And i don't think anybody here wants to support you making a fool of yourself with a shitty plugin that is not safe in the slightest
go look for the existing solutions
it is a liability issue for vencord to support the functionality built in
people just like you go to #π₯-vencord-support-π₯ and complain about a lot of things
if it was built in there would be so many people complaining in #π₯-vencord-support-π₯ that it was bypassed in 2 minutes by their nerdy friend
again
.
if you want to make it, make it. don't come crying to us when your little brother went on your account and posted scams
50$ steam gift card
yapppppppppppppppp
u the one whos crying
nuh uh
v- prog
you are crying
v+ no prog
inb4 no support role
like don't listen to reason and then get really mad then i guess?
Β―_(γ)_/Β―
Going through all the effort to develop a plugin that is unsafe to save yourself 10 seconds to do the actual safe method? π
signing into discord isnt that hard
it is possible to get comfortable with workarounds to annoying things
you can do it from your phone and bypass 2fa so it literally takes no extra time
^^^^^
the only annoying thing might be that some local settings would be reset like folders being all closed but its whatever
Native devtools hook to clear token and restart
Hash token as well
So localstorage can't be inspected on disk
where tf would you save the token
just locally?
doing this plugin properly would do that anyway
there is a 99% chance that they have their discord password just stored in their browser too
mmm
TBH if you're that concerned, just use LUKS
yes great advice
theres 1000 actually good solutions that aren't literally just css infront of your discord
Just use vesktop and disable nodevtools warning
Have to login every time
no it didnt
bruh
i never had that issue
skill issue
are you on windows
or does your vesktop have a system provided titlebar?
WHAT DO I EVEN MEAN SKILL ISSUE
THAT IS THE OPPOSITE OF A SKILL ISSUE
Love the keyboard auto suggestions
lol
is using querySelector bad? as in is discord likely to change the element classes?
im new btw so if its absurd, js tell me 
You really don't want to be doing DOM manipulation in a Vencord plugin
Discord uses React for almost everything
also discord can and does change the element classes
what are you trying to do?
im tryna make a plugin where it shows which image number youre on (out of the 10).
my original idea was to get the src of the current image, find which message it originiated from, and check the index of the attachment among its sibling attachments. i was gonna querySelector("div.slide_fd65ff") and extract the src from there, but since you said not to use it, im not sure what to do
where are you trying to display the image number in the UI?
yeah
top right of the image
there are 2 different designs for the image modal
are you using the old or the new one
new i assume, i've not touched anything
(is there a bottom bar with buttons, or are there text links below the image)
is this new or old?
old
the plugin, yeah.
stay on the old design
(if you wanted to use the new design, set this experiment to treatment 1)
i need an example hold on
can you post a message with multiple images?
these are some crazy images but they'll do
oh dang i just turned this exp. dont think i need the plugin anymore ππ
do you have react devtools enabled?
yeah
wait what
ill still try to do the plugin though, cus im tryna learn
good way of thinking tbh
its fascinating asf
using react devtools, usually you'll want to use this to find and select a relevant element
do not use the button above, this is for the actual elements rendered in the DOM, not react components which contain what we are looking for
okay.
then you want to explore the parent components
in this case I already found the component that has the current image number as a prop
hold on...
this isnt as simple as I initially thought
do you understand react?
yeah i did a course, but stopped like 40% through it
ive forgot some things like refs though
this is weird
whats up?
the component i am looking at in react devtools makes me question how discord designed this
this component has an initial startIndex prop and an array of items
there is a state hook that for some crazy reason does not contain the current index but instead contains an array of relative page changes????
what.
which component are you on? i cant find it
did you open the image modal then click on the image?
it's a parent of the image, specifically 2 parents above the div where the key is the url
there is supposed to be some animation here
but they reset the CSS before it actually does the animation

is this a discord doesnt think i have gpu acceleration issue (vesktop)
so theres meant to be a animation??
lmao
tis not
yes
look at the elements tab for yourself
watch the style attribute change

π
the state i circled is equivalent to the current image index. (ill double check)
i havent tried to understand what those are used for yet
oh?
btw
if you set a transition css value
it actually works
though the old image just disappears
which component is it set to?
also yeah, that state is the current image index
how do i get the state?
view the source of the component
the js source right?
gotcha. thanks
you would probably need to find the state and pass it to this component
and then edit that component
using a patch
tl;dr: patches are regex find and replace on discord's code
is this the source of the carousel container?
yes thats in the source of the carousel
why is there a state and a ref though
too long didn't read
T stores the index of the image being viewed. However, the callback runs around 3-4 times when I open an image modal. If I patched, it would run my function 4 times, so how do I stop it from doing this?
The current index of the image
This is the source of the carousel container
Not really callback, sorry.
yes I know
i wouldn't worry about it being called many times
thats just react
what you should worry about is hardcoding the variable name if you make a patch
i haven't really explained patches have I
it's quite annoying to explain
what you need to know is that find is a unique string inside of the current webpack module (the number: function ... defines a module)
yeah the find right
yes
and also there are fake regex macros implemented that get evaluated by the patcher
the \i $& etc?
if so, im good on that stuff. 
the \i
not the $&
thats actual regex
there is also code to convert old human readable translation keys to discord's new system that uses hashed keys
for the replacement value, you can reference your plugin object using $self
yep
is it possible to put multiple strings?
What do you mean by multiple strings?
Multiple find and replace entries in the same module is possible
Just set replacement to be an array of objects
im not too sure how the find works in vencord, but for example if i searched for
\.FORWARD_PRESSED and \.Generic Media < is this possible?
find should usually be a string but it can be a regex
your find should be unique
if you haven't already done this, set up a dev build and build with the pnpm watch as that adds the DevCompanion plugin
yeah done that already, ty
also enable ConsoleShortcuts
whats this?
adds a lot of aliases and extra functionality to Discord's window object for you to use
o dang ty
does patch helper find support regex?
yes
nvm had to wrap in forward slash
HORROR
Wait why is it lazy if it's anchored to the end of the string
Will that even change anything
no you just cant have regex flags with that code
You don't need flags????
true
@cedar olive you know regex better than me, does this matter if it's lazy or not.
(too used to writing lazy wildcards so I ended up doing there too)
yesss i did it
tysm for ur help
for ui, how do i add components
even better, only runs when the modal is opened 
you said you want to render that in the top right of the image earlier?
yeah
a box
fs need to make it so it can cycle thru images now 
just drop a breakpoint
GUH
this
okay
that points to something modified by imagezoom and dynamicimagemodalapi already
its a function i believe
yes
Dynamic image modal api my beloved
(Its cursed that it even has to be a thing in the first placr()
for images and videos
there was a time that it didnt exist
so sleepy
anyway; you need to pass down that value to whatever component contains the container for the links at the bottom, then inject your own container at the top
what does Invalid destructuring assignment target mean when patching?
It either means your patch is malformed or that it produces invalid code, depending on the stack trace
also means you probably wanted to patch some props of a react component and ended up matching a destructuring assignment instead
Use patch helper in settings to easily find out the issue
it says in patch helper
the error
and console
{
find: "let{messageProps",
replacement: {
match: /(roleIcon:)(\i)/,
replace: "$1$self.alterRoleIcon($2)"
}
}
mightve found the issue (one sec)
That's invalid JS syntax
You are matching a destructing assignment
The only valid thing after the colon is an identifier
If you want to change the value, you need to change it after the assignment
yeah i was selecting the wrong thing i guess. i fixed it now
ty
Next to the summaries / somewhere on the toolbar
I've done the patch so far, but is there a specific way to make the icon/button
how tf do i stop the ui from fuckin updating since it triggers on mouse hover and when i use the debugger react dev tools shits itself
is there any other way to stop the ui from updating without react dev tools dying
you don't
Hey! I was working on a custom plugin, and was wondering, how I can go about adding a custom context menu to each of these buttons? I've searched this server and couldn't really find an answer. I was wondering if it was like the message decorations? or if there's another way to do so.
@flint bronze Is there a specific way to find the component? I looked at vencors toolbox and it finds the components by code
i am a bit busy right now
i will help you when I am done with what I am working on (hopefully not too long)
ok the thing i am trying to do is Just Not Working for Literally No Reason
NO
I AM JUST DUMB
this code sucks btw you dont need to tell me
I think you just render a popout with menu items in it, like VencordToolbox and AccountPanelServerProfile do
<Menu.MenuItem
label={`Duration β’ ${
timeframeMessage ? timeframeDuration : "N/A"
} `}
id="duration"
action={() => console.log("hello word")}
/>```
when i pass an `action` prop, i get this error when i click on the menu item. anyone know the fix?
yep that works, thx
One more thing, is there a way to listen for when the user navigates somewhere else? Like to a different channel?
supportHelper.tsx: Lines 169-171
flux: {
async CHANNEL_SELECT({ channelId }) {
if (channelId !== SUPPORT_CHANNEL_ID) return;
hey, is it possible to patch the same function that is patched by another plugin? I am trying to make a function that runs when I connect to a vc (using the calltimer plugin as an example) however it only works when I have the calltimer plugin disabled
Of course it is, the patcher knows nothing about functions or anything
Just have to squeeze around your replaces to they don't conflict
is there a way for me to see the output of the patched string? I took this from the calltimer plugin which works when I have calltimer disabled of course but I don't get how I am suppose to patch it a second time to include my function since calltimer takes priority
patches: [{
find: "renderConnectionStatus(){",
replacement: {
match: /(renderConnectionStatus\(\){.+\.channel,children:)(.+?}\):\i)(?=}\))/,
replace: "$1[$2,$self.func(this.props.channel.id)]"
}
}],
func(channelId) {
console.log("Channel ID:", channelId);
}```
Patch helper
wow ok yeh I don't know why I didn't try pasting the json in there but that works, thanks
patches simply change the code
you need to see how it changes the code
and find a way for both plugins to integrate their own code into it without conflicting
ok yeh so I just need to make sure it works both with and without the calltimer plugin which should be doable now that I can see the modified code
Hello I'm trying to follow that https://docs.vencord.dev/plugins/ to create custom plugin.
I did a dev container on vscode with each extension I need but I do not get that:
"Save your file and it should automatically format it and insert the following license header on the top."
And I've errors on the code..
Idk what to do, I follow each part of the explain
did you pnpm i
yes
and you're sure you aren't doing this in the root of the repository?
I did pnpm i on the root, but I created like explain: Vencord/src/userplugins
with autoDNDCall/index.ts inside
oh I'm stupid I've open vscode on /userplugins not at the root π thanks lol

Ok I did as I said on the explanation in index.ts
After building and reloading vesktop (after changing the path to the one where I made my plugin), shouldn't I show it in the list of plugins? It's not there π¦ Or should I add some code already ?
you need to build the code
Yep I did it with pnpm build
i was just about to say that
fully close it from tray then relaunch
Yep I did it too
(this is just because of the path change)
with this button
Do I need to do pnpm inject after build ?
mmh
thats not relevant
I just restart my computer and it's working mmh, discord didnt wanted to restart probably
Is it possible to change the status like put DND or online directly ? I found nothing about it
i think one of the pinned messages is about that
here
@random grove see the message i replied to
am i correct that turning a plugin off does not disable any css from the plugin
thats the behavior im getting
not really an issue, just my fault for not using unique class names lol
okay who is vencord smat to place things on the screen
i'm making spotifyControls but for YTMD
did all that it pops up in settings and logs the current song playing in the console with provided apikey from settings
but idk how to inject the player to popup on the screen thats all i need help with
if there is a way i can share all my code 3 files send me a way to and you can look at it if you want
add it to a github repo and share the link for that repo here
okay
it's actually 6 files but 2 of them are just css
https://github.com/bhtugger/YTMD-Vencord-Plugin can you access this
how would i replace any specific characters that i want into one specific character
and by that i mean
anything at all
a message, a channel name, description, username, anything
Custom font
when will someone make a plugin that f2 on dms changes friend nickname
actually full vscode keybinds plugin
I will make keybind api
Itβs not ai
it's either ai or you making up random code expecting it to work
and I highly doubt it's the latter
don't use ai
I didnβt use ai I legit am just trying to copy the SpotifyControls
then don't make up random code
So then exactly what do I do
how did you come up with .accountProfile- or (?<=createElement\(.+?.createElement\()[\w$]+,{username:?
patches patch discord code
discord code does not contain .accountProfile- anywhere
nor does discord code use createElement
Well I was just trying stuff okay
you need to read, reverse engineer and understand discord's code
using tools like react devtools to find the right code for components
then you need to come up with a find (a unique string used to match the module ("file") the code is in), and then do a simple regex replace
That's a weird way to spell vim keybinds
I wonder if i could use websockets to do something like the spotify plugin but for yt music and communicate between a chrome extension and the plugin
Dude
No way you are doing what Iβm doing
ive not coded that much tbh
just setup the workspace
and thinking the best way to do it
Im working on a very silly and cursed plugin with a friend
Basically when you start the plugin for the first time you have to take an iq test and it adds a badge next to your name in chat with your iq for everyone with the plugin
Fire
i set it up to YTMD
now i/m legit copying the code frrom spotifyControls and changing it to work with YTMD
nice, ping me when u finish it
I almost got it working but had to leave
It shows the first song you are listening to when you restart your client but doesnβt update properly for some reason
if u want I could help, just put it on GitHub and I'll take a look tmrw
Well Ik what to do I just was interrupted because my mom didnβt wanna get my sister from the airport and the airport is like two hours away
And I made it to the airport, but her flight is delayed a whole hour and a half stupid as hell
Premid exists
Or you want to do it urself for a challenge 
No pain no gain
Extension wise for ytm it will be hard for the browser part
But if you use YTMD which Iβm doing it will be way better
I may be bullshitting but I vaguely remember someone mentioning you can enable YouTube music rpc via some chrome API
I don't remember exactly what but I'm fairly certain it was said here
I was thinking of this https://github.com/Vendicated/Vencord/pull/2917
Adds YT Music Rich Presence support by connecting to chrome's(and other chromium based browsers) remote debugger.
This should satisfy Vencord/plugin-requests#952, Vencord/plugin-requests#68...
just use ytmd
premid is by far the best solution for this i've found
ytmd lacks a lot of features i want, that i made via userscripts
for me https://github.com/th-ch/youtube-music is better than ytmd, just because it has exponential volume
but none of them have forcing audio only mode regardless of availability, via HLS
I'll just stick to spotify
hop on Navidrome
spotify is only rly good in the US
everywhere else gets fucked over by copyright and region restrictions, their radio also sucks
its also exponentially harder to mod and bypass ads
I'm in the UK so I'm generally good for those things as well thankfully
@humble tulip @swift torrent hehe i'm close
How should I define i18n in developer tools and how should I search for it? I couldn't find any sources.
There's a function for getting the hash for a key
runtimeHashMessageKey("MARK_AS_READ")
Oh I guess you need consoleshortcuts enabled
If you're looking to use it in a find you can also do #{intl::MARK_AS_READ}
you can import getIntlMessage and then getIntlMessage("MARK_AS_READ")
pog
Hello, does some people knows how to make a Markdown Formatter componenent via findByProps or via Vencord library ?
I can't find anything about markdown formatting
Damn, you contributed to many plugins!
I think there's a Parser exported in Vencord somewhere that does that
Thats a component or a function ?
src/plugins/serverInfo/GuildInfoModal.tsx: Line 183
{Parser.parse(`<@${owner.id}>`)}
Interesting, I'll try it out. Thanks!
Webpack/common tho
Ah, little problem
theres more arguments that can be passed
Does someone know how to make like Summary and Details in Discord component way ?
Thanks
Take a look at parseEditContent in MessageLogger
thanks
I made my own, but thanks

I don't think this is possible to do lmao
but good luck
This is totally possible
Unless Discord did something normal
I know it would work on the desktop client for your own voice being sent to other people
Because Discord is actually working on that for some insane reason
Ah discord is actually working on it
Thats not a problem
i would doubt that
Maybe less text, and more <br /> lol
Do you have the actual logic working?
I'm actually creating a plugin that allows to patch the VoiceFilterStore
yep
fire
the only thing we need now is to apply the voice, but since discord didn't pushed it, we cant
Ntts said it could be the next best vencord plugin lol
Thousands of users will enjoy
i guess
i'm putting tutorials on how to train custom voice model
Do you have working custom voice filters?
yeah, custom voices filters
they do not apply to vocie actually
why not
these look like the official filters though
From Reyna, this isn't anymore 
@silk sorrel is also coding on this
And yeah there is a fancy voice filter managment menu
and a fancy button :3
Less <br />
well if discord added this feature then duh lol
but adding it without that would probably be impossible
thats why we need to wait next discord release about model catalog to release da plugin
do you actually have to wait
if they already pushed the code it should be usable
probably
voicemessage plugin also uses a feature of discord_voice that discord doesn't even use
yeah, we have to wait until the catalog isn't a {} object anymore
empty json object
the actual thing we need to debug is native atm and can't be easily decompiled
discord_voice_filters.node seems to be fetching the catalog internally in order to compare file hashes
It is going to look insane
Exactly
And its hard without the catalog to determine the models object structure
But we know where models are going to be downloaded so we managed to download in the same folder
lol
its native only, probably not windows only
Actually there is a way that we can use it on Linux
and da plugin knows when ur not on da desktop app 
sure lemme just
why include the plugin in the first place 
lmao 
you can just not include the plugin on web platforms by adding .discordDesktop suffix to the plugin dir name
Making this filters nitro-free will be taken by FakeNitro plugin developers

Some features are still availible, like, preview voice models
or u know just mark it as a discord desktop only π
π
yeah that was what I was trying to say i just worded it badly
shit
please be indulgent thats my first plugin π
I just thought of something: weren't you aware of this experiment?
no
thank you
Since amia gave me the snippet to show the actual voice, i'm playing around with da VoiceFilterStore
what do the different treatments do
Currently they're identical in what they allow
Fr def needs work tho ai gave me the idea to do it when I asked for ideas for stuff to do with vencord since it knew I used YTMD api before alot
π€
ah
actually there is not changes
this removes the menu
It is changed in the commit
i tested on canary
this actually removes da experiment
π
I know in advance that the processing of the voice will be a side client
Thats Why is not available Vesktop
and web clients
i feel like making a bypass for it is gonna be as easy as bypass for soundboard
cant tell what you mean
its gonna be piss easy
guh
the soundboard free nitro version is just playing it over microphone
not 1:1 the same, but it works
thats not even in stock vencord afaik
yep
i will use
playing over micro is possible ??
yeah
ok you lied
bro i can make this voice filter shit right now
you just dont like using git branches
nvm
im confused
you just dont push code
π
not right now because i dont want to
the soundboards are just sound files, so you just download them and patch getUserMedia to merge it with an audio context into one output, then play the files into the audio context
but using an external program and interact with to play the result over mic 
and in the same way you'd patch getUserMedia to play files, you can patch it to modify the outgoing audio
just pushing the data tru a LLM is a bit more complex
since delay
but its doable
i did data reading for audio visualizers in browser, just need to push modified data
its not an llm
and onnx is known for performance 
at least there is a funny component :3
is it impossible to make a new setting menu, or just nobody is coding settings this way
yeah i know, for plugin settings, this is in plugin section
We were just talking about how you add tabs there lol #πΎ-core-development message
But yeah just nobody does it
Oh
interesting
wikiiii
why ?
That's just for people making requests for plugins, you can still submit plugins you've made
I wonder if submitting my plugin now is useful or not
You can always open it and mark it as a draft for now if it's not ready for use yet
No simple slash command plugins like /cat. Instead, make a user installable Discord bot β
No simple text replace plugins like Let me Google that for you. The TextReplace plugin can do this β
No raw DOM manipulation. Use proper patches and React β
No FakeDeafen or FakeMute β
No StereoMic β
No plugins that simply hide or redesign ui elements. This can be done with CSS β
No plugins that interact with specific Discord bots (official Discord apps like Youtube WatchTogether are okay) β
No selfbots or API spam (animated status, message pruner, auto reply, nitro snipers, etc) β
No untrusted third party APIs. Popular services like Google or GitHub are fine, but absolutely no self hosted ones β
No plugins that require the user to enter their own API key β
Do not introduce new dependencies unless absolutely necessary and warranted β
Interesting
shoot, there is some symbolic folder
@humble tulip doc, is it ok to put a symbolic folder ?
why did you push the userplugins folder to your vencord repo
its gitignored for a reason
yeah i know
i just have to move it
and replace Dev constants
just git rm --cached src/userplugins
now i need to submit da plugin in draft
thanks
let anyone see it 
Adding a comment in the modal which explains that the Voice Filters are in rollout, but that they can still create and download Voicepacks. In this case, the plugin has no reason to be in draft.
how do i go about finding and using discord components? i want to use this part from the audio player embeds in part of my plugin.
there is no raw component for it 
i guess its a simple audio
a simple <audio>
maybe i can create a component for u
@rocky lynx
wait
im gonna sleep
cya
tmrw
currently have this
thats not that bad
it would be interesting
long song names even scroll
what one
LMFAO
hmm... seems like its for spotify :|
I use Youtube Music Desktop
i want youtube music!
(i helped a small portion of it)
π
how does it look so far
smh this update broke my reorderattachments pr and I don't know why
flippin react saying im logged in when im not 
The drag and drop still works but changing the attachments array doesn't propogate back anymore
lol nvm it was me that broke my userplugin version of it, PR is still fine 
How do I ensure that multiple modules (not available when discord starts) have been loaded and that I can use them?
Also, is there a specific component that discord uses for rendering message markdown (returned by Parser methods), or should I just use Text?
it looks nearly identical but message components like codeblocks have messed up styling
wait for a contributor to give you a response lmao
why doesnt it auto update in discordPTB but it works in normal discord
did you inject your vencord plugin into discord ptb whil pnpm inject ?
i did pnpm watch
I think it needs a parent with class markup__75297 to fix that
i'm saying when i pause the song the player just gets frozen but it auto updates and continues to work on normal discord
Obviously use a find for the css class rather than that actual string though
thanks
also the thing doesnt even pop up on PTB until i open settings bc PTB is broken/weird
I dev on ptb
well i say it's broken bc canary and normal discord work normally fine with it the plugin loads instantly when i pause the song it doesnt freeze
see
broken i told YOU
Did u check da console ?
Did u use lazy functions ?
it does bc i can force it to error on my main client and it will show one
hmm, I'll try
oki
that works, but I also need to pregenerate some objects based on the modules' exports π€
can u show me in pm ?
voice filters are going to be crazy !
whar
What does ErrorBoundary.wrap do?
Gotcha, ty.
hey, I was wondering how I would go about caching / "fetching" the first 75 threads in a channel?
React docs have a page on error boundaries
noow that i enabled this, how i can use it ?
By restarting and opening devtools
just opening devtools
ah yeah thanks
I want to create my own modded Discord using Vencord's infrastructure. Do I need to add Vencord's GPL-3.0 license to the new plugins and pages I create, or should I add the GPL-3.0 license with my own application name and author identity?
all files that contain code taken from us have to carry our copyright notice
normally how you do it is
/*
* This file is part of [YourProjectName]
* Copyright (c) 2024 Vendicated and Vencord contributors
* Copyright (c) 2025 Your Name
*/
you add both
keep our header line then add your own below it
oh thx this information
yay, we need to waiiiiiit
I successfully made a patch but I found out the function runs every few seconds so I either have to make it so my function only runs once or find another function that only runs once (which would probably be the better option but I will probably just use the first option since the plugin I am making is only for 1 server with a very niche purpose)
here is the patch in case it's useful to anyone else
patches: [
{
find: "renderChannelButtons(){let{channel",
replacement: {
match: /(let c=eg.default.getId\(\))/,
replace: "$1;$self.func(this.props.channel);"
}
}
],
func(channel) {
console.log("Channel Name: " + channel.name + "\nGuild ID: " + channel.guild_id);
}```
thanks
personally we made a few modifications in our plugin
what the hell is this
a new incoming official plugin
we just wait for discord to release voice filters
@silk sorrel added the tooltip and the settings button
yeas
LMAO
i hate voicemod so alternatives are always a plus
maybe you could implement a voice eq plugin off this
for more basic voice modulation
idk the demand for that tho
people probably just want to sound like an e-girl or god himself
or donald trump
i noticed capitalization in some plugins' options are inconsistent, is this a stylistic choice?
ill fetch an example in a moment
not intentional but irrelevant
so i should or shouldnt make a typo pr?
don't, its very small
send
on the lastFM plugin
it's nothing major just wanted to know if you wanted someone to do housekeeping
I have a PR open to add display names to settings, tidying these up could probably just fall under that too

norp
Actually I can't have this result for now
however check out https://docs.discord.sex/resources/voice#get-voice-filters-catalog
Voice resources are used to interact with voice in Discord. For more information on connecting to voice, see the Voice Connections topic . Voice State Object Used to represent a user's voice conn...
RAH
Voice resources are used to interact with voice in Discord. For more information on connecting to voice, see the Voice Connections topic . Voice State Object Used to represent a user's voice conn...

so good
now make it inline in the chatbox and update like that
I'm pretty sure that's already an experiment
Not the first time I've heard this
but I don't know what experiment you are specifically talking about
2022-12_timestamp_tooltip I believe
You have to type a timestamp out first but then you can click it in the chat box and it does that basically
Thats neat
getting the tooltip to appear is a bit buggy tbh
and the style of it kinda sucks
other than that idk why this isnt a stock feature
I think the lack of an entry point for actually creating the timestamp initially kinda sucks too
im so cooked
my plugin have to change his way to work
because discord uses clownfish mode onnx, and not rvc onnx
Does someone knows how to build with .node files ? its imported in native.ts
how are you importing the native?
u can't
ah
so atm i can't use onnxruntime-node for onnx models treatment
lmao
i got onnxruntime-web
The SendTimestamps plugin exists so there's no need for this really but it's fun to mess with
I realise it's not clear in the video but the 15:23 at the beginning is just plain text
π€π
hi guys, i am trying to build a plugin but i would like to have some api docs, where can i find them? (i already set up my environment and custom installation but i dont see any docs or anything)
i would like to work on webcam and stream overlay
those docs are the docs
looking at other plugins and using devtools to scour the internals of discord is basically all vencord docs
its hard to document stuff like this because it is essentially modifying existing discord code
also in @utils there a bunch of explanation in comment lines
i transmit screams of the damned into your skull
π₯
Is it possible for the context menu to be removed and to just convert it to the timestamp with the most relevant format, then show the stock picker?
Question for someone with experience using the stores..
Is it possible to grab the affinity scores from discord directly? They used to be viewable in a hidden menu via experiments / (true) developer mode.. but I can't seem to find them anymore
I noticed vencord had a plugin that shows your list of users with affinity in the friends list, but it didn't display the score
looks like they still exist
enable
vp consoleshort
Adds shorter Aliases for many things on the window. Run shortcutList for a list.
Vee
and you can use Stores in console
Thanks, I'll dig around in it tomorrow. I was hoping someone's made a plugin for it, but even just retrieving the list would be quite helpful as-is



