#👾-core-development
1 messages · Page 167 of 1
wonder what the point is
It's been 2 weeks and no one is looking at PR. Why is that? @Vendicated
if they restructure client state caching again and move roles out the actual guild object in the gateway I'm gonna be upset
It's been 2 weeks and no one is looking at PR. Why is that? @Vendicated
vee reviews PRs when they are motivated to, be patient
Hi, I've been trying to understand how Vencord is able to use all the Discord's functions without having their implemention (like in this i18n example), but haven't found much, so asking it here, how so? Is it something similar to virtual function tables in C++ where you also don't have the implementation of functions but are still able to use the functions when injected into a process?
interfaces define an object's structure. we find their implementation through webpack finds and then just cast it to this interface so it's typed
(correct me if im wrong)
Basically vc just looks through the webpack until it finds something that has getAvailableLocales and then declares that yeah this object has this type
Thanks! What are webpacks and what webpacks finds? And how do you even find out that such interface with such methods exists in the Discord's code?
Webpack is a monstrosity to squeeze many js (and other) files into one <script> tag
- ^
- "finds" are just the concept of finding functions/variables in the bundled code
- we look at the bundled code
Thank you! The bundles are the files located in AppData\Local\Discord\app-1.0.9035\modules\*\, right?
Or not
No, that's the stuff specific to the download client
use devtools to look through it
Oh, apologies for the silliness
This stuff
So basically the JS files I see when opening Network tab in the DevTools? Like these?
don't use the network tab
Yeah, though you'll want the debugger tab
use crtl+shift+f to search through all of the code
Oh, yeah, this tab looks way more convenient than looking through the Network tab
thanks
do you know how the require function of nodejs works? @hot hatch
I prefer extracting the bundle to separate files with a custom plugin, but I seem to be a minority
Don't think so, I've never coded anything on JS / NodeJS
well then it's hard to explain
Well I'm familiar with C#, Python and a bit of C++
basically discord has a global store with all their modules (files) in there
we just grab discords modules from these files and can then call their functions
these interfaces are just manually written by us so we have editor information about what functions are available and what arguments they take
they have no runtime effect, only in the editor
Ah, interesting
their module store looks something like this:
{
"userStore.js": {
"getUser": someFunction,
"getCurrentUser": otherFunction,
},
"someOtherFile.js": ...
}
except that instead of userStore.js, its name is a randomised number

if you wanted to find the userStore module, you'd just findByProps("getUser")
that function walks the entire module store, checking each module for whether it has a member with that name
then returns that member
Thank you so much, I see now the way it all works. Though I got an another small question -- is injecting/patching self-made for Vencord? Or perhaps there is some generic injector for React/JS apps?
it's self made
and no there isn't
and it highly depends on the setup the site uses
react has nothing to do with it
Parts of it could be made generic to any webpack app I guess
what matters is which bundler the website uses
basically the codebase usually consists of many many source files that import each other, but on web this isn't a thing at all. so there are many solutions for bundling your files together for your website
the most popular bundler is webpack, which is what discord uses
vencord patches webpack to inject our own stuff
And at least the overall principles should be more or less universal, even if the specific implementation is not
i actually made a userscript that can inject into every website that uses webpack
but many websites also use other bundlers. for example vencord itself uses esbuild bundler
esbuild leads to very different result which means you'd need to patch it in a different way
Things like splitting the bundle like discord does change things a lot, and there's lots of various other settings that can make things harder or easier
Thank y'all for the answers!! 
i might write a blog post about it
sooner or later
well, technically es6 imports work on web, but every import is another requests so for performance reasons nobody uses it
freetube already exists for youtube
but twitch yes somebody please make a 3rd party desktop client
yop
honestly might just dig in twitch's webpack when im bored
figure out whats what cause guuh
it would be nice cause frankerfacez is just dom manipulation
but anyway thats offtopic 
what's the name for this ?
why
Anyone remember that bug that used to make scaling webm videos bounce on Discord? Kinda wish there was a way to bring that back.
i wonder if it can be done with css
let me find one of thos evideos
I was wonderimg that, but I don't have enough braincells to do it.
I remember that.
Theres also 1 of a cat dancing.
come to #🎨-theme-development
or that
i am sure this is a css thing
.attachmentContentItem_ef9fc2 { width: unset !important; height: unset !important; } .loadingOverlay__4d818 { aspect-ratio: unset !important }
yup
discord doesnt crop the banner server-side, so you can upload a tall image and cause serverprofile's modal layout to explode.
this fixes that by cropping the server banner image in (almost) the same way that discord does
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
Do you know which options cause this to happen? I can replicate this even on a profile without special about:config/user.js modifications done.
@Mm2PL no. honestly i don't even remember which user.js i got. and later im figuring out even more issues. in short, i had some issues with custom user.js, and resetting that made vencord work again. meaning that it might be the souce of an issue, but that doesn't mean there are others.
why’s webstorm so hated here? I searched for webstorm here to find out whether there is a way to do the pnpm injection step right from the IDE or not but found out lots of messages saying it’s bad. So am curious why so? I’ve been using other JetBrains IDEs (specifically Rider) and it was an awesome experience 
ask the specific people who dont like it, we aren't a hivemind
also wym do it from your IDE it's one command
fair enough 
Follow these Installation Instructions
But as git clone you use this:
git clone --branch VoiceActivity_CustomVoiceChannelSection https://github.com/Johannes7k75/Vencord
vscode is just way better
Vscode my beloved
Not sure what you mean with doing the injection from the IDE
So, indocs/1_INSTALLING.mdthere is thispnpm injectstep. What I meant is whether this is possible to make the run button do the injection or not
What would be the point
pnpm inject is something you run just once, not for every build
even if you change the Vencord's code? (like not a plugin/theme, but the core code itself)
There is no difference between plugins and core
inject patches the discord install so it reads from the vencord build directory
This is basically an improved version of #1783, right?
I think it would be cool if the contents of text files used a monospace font, if that is possible. Thank you
can Discord push the roles stuff change to stable already
I'm tempted to just make both way fix and push with Decor change
lmaoooo
RIGHT
I PROMISED FIERY WE WOULD MERGE
but forgot
sry bestie @junior olive
do you want me to
I can do very soon
okay then fix the roles issue too
ya
doing now
ill just make a quick util
smart
so quick
actually I think you should accept the id as param
since the new thing can be used only with id
yes
the new stuff discord is cooking has getGuildRoles which accepts only id
instead of using roles property on guild object
merge the change into stable
yeah in a sec
hmm these are the same but its still causing errors
this is erroring
userRoles contains undefined
check if userRole exist
how do i get member again
HORROR
what am i looking at
ohhh because im stupid
shc-role-container
is this good @limber skiff
something crazy
I still stuck at class names
I'm kinda addicted to big names to be honest
This is basically an improved version of #1783, right? I don't know why we would need those two styles (default and custom). I think you should stick with only the custom one
Yeah basically, but on this the buttons at the bottom are switched
yeah
e
e
oh wait no i didnt
im just dumb and chose ptb instead of canary
and i never logged into ptb
why?
v+ contributor @long stream
basically I was going to do this
BUT
if the old descriptor needs to do something like the predicate I did in the second arrow
it has no way to know about our descriptors because we set them later
so it will instead delete our descriptors, even though we might still need them
this isn't fixable without a proper api between mods
(like pushing into an array or something)
or monkey patching defineProperty...
@odd heath u around?
could u add a README.md to your plugin please
i can also add it
i added one
so yeah I think I might just discard this idea for now
what's broken?
you fix
I'm eating rn 😞
It's not my screenshot
oh lmao
this is not how you conditionally render something in react
{showErrorCard && <ErrorCard />}
would i need to add ReadMe to my plugin?
what is it called?
Dev Bug button
the bug report doesn't work 
its when you enable isStaff in experiments plugger
oh wtf
lmao
I don't know how this got disabled
497f0de chore(Decor): Change URL formula for cost savin... - FieryFlames
34390e0 Add workaround for guild role api changes on ca... - Vendicated
1fbc4f7 fix(ServerProfile): crop banner to prevent over... - nakoyasha
f9924d5 new Plugin: FriendsSince ~ shows friend date in... - EdVraz
2730ead Bump to v1.7.2 - Vendicated
okay there
dev2
stop bullying my branch :(
497f0de chore(Decor): Change URL formula for cost savin... - FieryFlames
34390e0 Add workaround for guild role api changes on ca... - Vendicated
1fbc4f7 fix(ServerProfile): crop banner to prevent over... - nakoyasha
f9924d5 new Plugin: FriendsSince ~ shows friend date in... - EdVraz
2730ead Bump to v1.7.2 - Vendicated
Am around at the dpg come visit HS 1098 
Ty for doing it 
i'm bored idk what i could contribute to vencored
@junior olive i merged ur url change so
i think u need to do some changes in ur api?
but the update might take a few days to reach most users
there's not much which i think is very useful tbh...
Same
all the useful plugins were already made xd
yeah xd
most stuff which seems useful at all and isn't something creepy is very niche
the only plugin request which sounds useful is #1 :trol:
lol
or has a pr which has been open for 5 years
imo prs for new plugins should be paused and we start catching up on existing prs
im never saying this again but a stale bot might be a good idea here
your pr would be DESTROYED
this one is ready
holy shit I sent everything wrong
Nono, it’s too soon
😭
Gotta wait a bit
Selfbotting?
man id kill for this to be in vencord still
i dont like the stock discord notif sounds they make me feel weirdly anxious
is it possible to add slash commands into vencord
? wdym
got a good idea for a plugin
Guess what the commands key is for
🤷♂️
i don't think changing theme is selfbotting
idk how the sync works exactly though
the plugin probably changes the theme in a way that doesn't sync? 🤷♀️
that's definitely possible, right?
it does sync
o yay
you def can without syncing but im not sure if that means you can also make it persist between restarts
Gg
ngl not sure what my plugin could be categorized but i think is very good utility ish
Yk what would be cooler
Being able to select 2 themes to toggle between 
Found a small bug
It adds this empty section on top of mutuals (I guess it happens when the user is not in a voice channel)
I just need to change clpudflare settings now
Move from worker to r2 public access
what the hell happened here 
true
happened to me too
reauthing fixed
there's one reviewdb user i know who actually has a pre-pomelo name
wait no
it's changed now
i think the database just freaked out or something
discriminator support should be removed, i think the # is from that
but how is the name becoming blank?
i had a discrim, which got removed like 5 days ago
or 6
I think nobody has a discriminator any more
and i haven't reauthed or anything but my name is fine
yeah
mantika runs reviewdb right..?
i believe so, but the reviewdb actual api is under the vendicated.dev domain
Yeah
@crude hearth helo sorry to bother u but can u look into this #👾-core-development message
yeah I will look into that
I still dont know how the hell that happens

Username: common.Ternary(discordUser.Discriminator == "0", discordUser.Username, discordUser.Username+"#"+discordUser.Discriminator),
it literally only does it if discriminator is 0
wait
did discord stop sending discriminator field
i dont think so?
yeah that code still works
new registered peoples names are all normal
then discordUser is somehow null and error is not catched ???
Fun

you love struct zero value
I think discord api sometimes returns non 200 value
and httpClient.Do doesnt error on non 200 status codes
on GET user?
**common.go: **Line 72
req, _ := http.NewRequest(http.MethodGet, common.Config.Discord.ApiEndpoint+"/users/@me", nil)
hmm
yeah
I also use OmitZero() in userupdater so it doesnt update empty fields
then problem is broken refresh_token
did your friend deauthorize reviewdb from authorized apps @long stream
dunno
@fringe basalt hi did u do this
how could it yield just #
that means the username is empty
regardless of whether pomelo detection is working properly or not

I got the problem
probably
it fetches user from discord api and gets non 200 return
as a result struct returns empty
then because discriminator isnt equal to "0" (its equal to empty string) it tries to use discrim name
this code
how does discord end up not returning 200
refresh token might became invalid
like when you deauthorize reviewdb from authorized apps section
error response
and if you dont use a pointer, then the default value for everything is a zero
not null
I made it print status code on error
and detect non 200 as error
and also make it use bot to fetch user if access token is failed
so if you have a struct like
type User struct {
Username string
Discriminator string
}
func FetchUser(id uint64) (User, error) {
...
}
user, err := FetchUser(12345)
// forgot to check error
println(user.Username + "#" + user.Discriminator) // if FetchUser fails, both fields will be string zero value aka empty string, so the result is "#"
hmm
maybe ratelimiting moment but in my tests even hundreds of reqs per second wasnt causing any ratelimits
HAHAHAHA
how did noone notice sooner
update all of them @crude hearth
you will love fetching 1.3k users

horror
someone mentioned before
well if we have everyones oauth token it shouldnt be an issue with ratelimits
but since it was only one person I thought it was some weird bug
1.3k?
cause its only 1 request per token and then some more for people who revoked their token
^
115k users
I will just leave it until new user updater timer
since it fetches all users its fine tbh
wait u fetch all 115k users every day right
2 days
im surprised discord didnt ban you yet 
before oauth it was taking days to complete the user updating
NO
why would they
isnt this normal thing to do

btw maybe we could make it so that the plugin will send the server the current pfp url and username every time you start discord
and store lastUpdated date in db
and skip updating those users
so its a lot less users you have to fetch
that would work actually
I also had a idea to check users while fetching
when you request reviews it will put copy of users to queue
Can confirm it being fixed now
it will return reviews immediatly but it will check the lastUpdated field in a thread and if its out of date it will update those users
but soooo much complicated
- Add's a button to copy an emoji as a formatted string:
Example formatted string: ``
rls are per token for the most part
if you're fetching @ me with a bearer you can probably send all those reqs at the same time and they wont care
why not just fetch when somebody posts review
3 billion devices run vencord
Add/upload your own custom (In-)App Icon(s)
- Following the steps in the plugin settings ("How to use?" header) should explain it all how you can use the plugin
Nice plugin (i contributed)
Can't you do this with CS? is it particularly useful?
that's meh user experience
have to fetch up to 50 avatars
do you want to make the user wait for 50 requests to complete or have them suffer with possibly no pfps
i mean update users who are actively posting
this is still meh. i already proposed making the plugin send your avatar & username to the reviewdb api every time you open discord
this is probably better

that would make it so we don't have to update all active users
why do you need to cache avatars anyway
avatar doesn't matter (much) but username does
but some users might also be critical of that, thinking we're using it for tracking
(we wouldn't)
so you can see avatars
nop
otherwise the client would have to fetch every user
just load from discord cdn on clients
that's exactly what we do
you need to request the user to get the hash i think
o
but we need to store the cdn urls in our database
else you'd need to fetch all users on the client
just the avatar hash though
fetching 50 users at once = selfbotting
yes that's what we store
but we need to keep it updated
each avatar has a unique hash
i am thinking
This is a good idea
which exists purely to screw up third party development
Can't you do this with CS? is it particularly useful?
You technically can use css, but this add's it to the menu, and css will break faster, because discord css classes names get's changed a lot
but
we've already been through this. currently we have a script that runs every 2nd day and fetches all users to update the data
do not trust the client to supply the data
(the old avatars are deleted anyway, why does discord do this)
but we might make the plugin automatically post your data every time you open discord
it doesn't matter
yes it matters
that's true yeah
so
just use oauth grant token on the server
ig our current way of fetching all users every other day is still the best approach
why not take advantage of the identify scope
you're fetching less users
doesn't that give you username
we cannot get around fetching users
which is still not pointless
we need to fetch all users
this is literally exactly what i am talking about
even inactive users should have proper pfp in reviews
we are
but we still need to fetch 115k users
then cache the last time the user was updated
i thought you were using one bot token
yes should
and fetch the ones that revoked their token with our bot token
maybe there should be a way to delete all of your reviews
??
if the user was updated more than 2 days ago when the user's reviews are loaded then update the user
no correlation
it just occured to me
^^^^
you can already delete all your data by contacting us
ah ok
that is your right under gdpr
an "all your reviews" feature would be good though
if you're american you probably don't have the right but we'll still do it
i think you can check that via dashboard
not sure
i have never used reviewdb dashboard 
Yeah it can be done with CSS
At this point though we need a proper way of LOCALLY embedding images in custom quick css
data url or upload to imgur or github
Can't you do this with CS? is it particularly useful?
You technically can use css, but this add's it to the menu, and css will break faster, because discord css classes names get's changed a lot
This is why I believe a CSS postprocessor selector that effectively calls findByProps with all the arguments and returns the value of the first item with all spaces replaced with . so it's a class selector would be useful
you literally use eval in vencord
wha
oneko plugin loads itself from github every time the client starts
what's your point
vencord loves to load external assets
mmmm
anyway
to embed your image, encode it as data uri and use that. or upload it to imgur, github, or whatever else and link it
you can use attribute selectors instead of hardcoding class hashes. this way your css will only break if discord completely rewrites the ui
the plugin is more prone to breakage
true
but this make's it easier instead of using css, because for some people they dont know how to write css
css is not that hard
also, the css snippets channel exists
managing your messy quickCSS is harder 
Yea, but if you use css, it wont be easy to change the icons, this plugin saves the icons, so you can switch between them anytime
Frequently switching between your own icons a very niche use-case
Vencord precedent/rule of thumb is to utilize css as opposed to plugins whenever possible, and needing to switch between icons is pretty niche
idc if repeat i was already typing it
peaking of which i should probably close my custom splash plugin
unless you want your ears to be hurt on startup
but there is people that wont understand css, having a ui for this is much better & gives a better experience
if we went by the philosophy of "plugin is easier than css" then we'd have tons of plugins for everything and be extremely bloated
just write an easy to use snippet and tell people how to use it
if they can't figure it out, skill issue
replacing something in a snippet isn't hard
just make it user friendly, like this. if someone cant figure that out they probably wouldnt be able to install vencord either
hey
quick question
someone opened an issue with a video example as a discord link, a channel message id link
is it feasable to ask for a better hosting for the video? I'm not able to watch it
?
yes
GitHub
Content Description Deleting media with MessageLogger enabled doesn't show any indication that the media was deleted even when it was. More info (with video): https://discord.com/channels/10150...
you gotta be kidding me
nevermind
lol
didn't even started and already questioning if I'm up to the task
I'll do my best
thanks for the attention anyway, appreciate it
@austere talon they pushed to stable haha
yeah
do i need to merge shit on my own branch 
plugin is coming along somewhat nicely
What plugin?
relax
real
i vouch for toad to have permission to merge

i like to think I don't make "crap"
be patient. prs are reviewed when maintainers have the time to and want to, begging is just annoying and won't help
lol even I that have perms still let Ven review sometimes
meanwhile i just took ChannelTabs and applied TOO MANY HIGHLY OPINIONATED CHANGES TO IT
And channeltabs isn't even in Vencord yet 
fun times, NTTS showcased tracking pixels in Discord. I actually checked if they work sometime when I started using Discord, and they didn't, but apparently you need a specific setup for it... or do you?
the thing is, I wanted to make a plugin to block this (I hate tracking pixels), so I started gathering information. I cannot reproduce this though, I even started a Windows VM with vanilla desktop Discord to test this in an exact presented environment. I can't get it to work however, Discord sends the second request immediately after I send the tracking pixel to my alt.
do you guys know if Discord just was quick to patch this? or am I just doing it wrong? it does work when sending to Aliucord, I presume because the proxy needs to generate a new image, as Kotlin Discord uses the proxy differently iirc.
is it me or am i suspecting that some poorly written plugin is rerendering a load of shit when ever I type anything
WHAT THE FUCK
You don't say?
istg if its fakenitro
legacy text editor works fine
modern editor is laggy afs fuck it seems still
i wonder
is this some shit canary change
discord be like: we did an optimisation and fucky wuckied everything else up
this is fucking unbearable
i wonder if its my css
i think it is
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
LOL @limber skiff we totally forgot to update vesktop
for context menu api changes
remote: GitHub found 1 vulnerability on Vencord/Vesktop's default branch (1 high). To find out more, visit:
electron-builder's NSIS installer - execute arbitrary code on the target machine (Windows only) #3
fear
😰 😰
what do you think vee
might need to update eslint patch but outside of that
uhh
theres not much need
we can ig but it doesnt add anything
so i didnt bother xd
^ possible fix for a dead link
why did you send so late
might as well use the feature for those with the plugin enabled
I wonder if the context menu for it needs to be enabled outside home too
hmmm
Hi guys!
Here is my script for auto download and install Discord, Vencord and apply configs after a new Windows Installation:
@echo off
:setVars
set softwarePath="%userprofile%\Downloads"
echo - Installing Discord...
powershell Invoke-WebRequest -Uri 'https://discord.com/api/downloads/distributions/app/installers/latest?channel=stable"&"platform=win"&"arch=x86' -OutFile "%softwarePath%\DiscordSetup.exe"
powershell Start-Process "%softwarePath%\DiscordSetup.exe" -ArgumentList "/s" -Wait
:installDiscord
if not exist "%userprofile%\Desktop\Discord.lnk" (
timeout /t 5 >nul
goto installDiscord
)
cd /d "%localappdata%\Discord\app-*"
copy /Y "installer.db" "%localappdata%\Discord"
call %localappdata%\Discord\Update.exe --processStart Discord.exe
:updateDiscord
tasklist /fi "ImageName eq Update.exe" /fo csv 2>NUL | find /I "update.exe">NUL
if "%ERRORLEVEL%"=="0" (
timeout /t 5 >nul
goto updateDiscord
)
echo - Installing Vencord...
powershell Invoke-WebRequest -Uri 'https://github.com/Vencord/Installer/releases/latest/download/VencordInstallerCli.exe' -OutFile "%softwarePath%\VencordInstallerCli.exe"
if not exist "%appdata%\Vencord\settings" mkdir "%appdata%\Vencord\settings"
cd /d "%softwarePath%"
call VencordInstallerCli.exe -install -branch auto
REM Here you may put the path of your settings.json config backup from Vencord
copy /Y "%userprofile%\Documents\Backup\Vencord\settings.json" "%appdata%\Vencord\settings\settings.json" >nul
msg * /w /time:0 "Finished!"
Questions and suggestions are welcome!
This is neat as an idea imo
You can also add OpenAsar into the mix
nah my deprecation override patch should've taken care of all that
32bit moment maybe
no
bro, you need some sleep...
Yeah, seriously. Why is your custom rpc a nitro ad? @hidden mist
@austere talon google is cooking so hard they already approved the extension
any one think that this might be a plugin ?
https://youtu.be/DOvbXgHWgHc
That goes against rule 11b, no?
i don't think so
"FakeDeafen or other similar creepy plugins"
Precisely
Does anyone know in what circumstances require.n (compatGetDefaultExport) is used? I haven't been able to find any consistent pattern
does it actually matter or are you just curious
Nah, just curious
that's where you always call func to get it right
i assume if the default export is mutable
let foo = 42;
setTimeout(() => foo *= 2, 1000);
export default foo;
if you do ```js
const number = webpackRequire("...")
setTimeout(() => console.log(number), 2000);
it will log the old value which is not correct
but this is just a shot in the dark :p
In those cases it just uses foo.default
maybe non esm syntax?
commonjs
module.exports = 42;
setTimeout()) => module.exports *= 2, 1000)
This compiles to js /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); var foo = 42; setTimeout(function() { return foo *= 2; }, 1000); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (foo); /***/ }) so I guess mutating the default isn't allowed
But it it seems my webpack setup differs from discord's, with arrow functions and stuff
**CompatGetDefaultExportRuntimeModule.js: **Line 26
"// getDefaultExport function for compatibility with non-harmony modules",
Importing json doesn't do anything interesting
// module.js
module.exports = 42;
// index.js
import x from "./module";
console.log(x)
this should generate a compatGetDefaultExport
Oh, it behaves different if it's in index.js or index.mjs
In .js it does indeed generate require.n
if it's .mjs then importing commonjs should be illegal
if it's in .js then it will try to make them work together via compatibility stuff
illegal 😨
well yeah but it's nodes fault
you have to import it via like const thing = await import("...")
oh wait i think i got it backwards
well anyway doesn't change the fact that esm + cjs is a clusterfuck yeah

and using esm is a nightmare cause it has multiple design flaws (imo) but it's objectively the better syntax
i always write esm code then compile it to commonjs 
someone should make a new standard for importing in javascript to solve all these issues
927
there are so many standards already 😭
the good thing about standards is that there's so many to choose from
there are cjs, esm, amd, umd (amd with cjs compat)
and even more 
I've only seen amd in the context of things that support multiple module systems at once
yeah basically noone uses it
it used to be the shit like 10 years ago i think
a lot of these come from old times where there was no proper standard
now esm is standardised
but it's too late already
oh god umd looks so terrible
what does this mean
horror
There's way too many tlas
perhaps it could be done as a runtime check in
shouldIgnore? that way the user doesn't have to restart after toggling?
Good point, done!
let VencordBadges = {} as Record<string, Array<Record<"tooltip" | "badge", string>>>;
^ ignore that I miss clicked
Oopsie, the description linebreaks didn't quite make it to the updater
Changing the DRAFT_TYPE variable to 5 doesn't work; wasn't sure if i should introduce a new variable (and if so, what to name it) so if yes tell me.
NoGenericFilenames
A plugin that prevents you from saving generic filenames as "image.png" or "video.mp4" so you dont have to deal with these annoying overwrite confirmation popups again.
Usage
It really just requires to enable the plugin, it will automatically rename the posible cases with a timestamp.
Options
.toISOString()? Or something from momentjs.
Won't this make it crash if the file has no extension?
This will leave a stray action: ()=>..., A }. Won't cause any issues now, but if that variable happens to be named id in the next build, that wouldn't be very fun.
we really just need to replace that lib
its so outdated now
yeah
9925332 RoleColorEverywhere: Wrap roleGroupColor in Err... - Nuckyz
497f0de chore(Decor): Change URL formula for cost savin... - FieryFlames
34390e0 Add workaround for guild role api changes on ca... - Vendicated
1fbc4f7 fix(ServerProfile): crop banner to prevent over... - nakoyasha
f9924d5 new Plugin: FriendsSince ~ shows friend date in... - EdVraz
discord does
Vencord uses it in exactly one place from what I can see (in utils/text.ts formatDuration), but discord uses it in various places
Yeah, i was more used to luxon
admins can we please steal this and add to this server
[Vendicated/Vencord] New review comment on pull request #2237: Webpack: Refactor for future proofing
Incomplete URL substring sanitization
'discord.com' can be anywhere in the URL, and arbitrary hosts may come before or after it.
[Vendicated/Vencord] New review comment on pull request #2237: Webpack: Refactor for future proofing
Incomplete URL substring sanitization
'discord.com' can be anywhere in the URL, and arbitrary hosts may come before or after it.
when I say it's false positive 20 more times
Maybe if you extract that check to a function, you can keep that check out of future diffs
it's fine
7190437 rename Devs.obscurity => Devs.fawn :3 - Vendicated
a32a539 Merge branch 'dev' of https://github.com/Vendic... - Nuckyz
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
I'm gonna try caching chromium install
?
what?
ohhhh
It checks if discord changed something that breaks any patches or finds
oh wait that’s really smart
and heres what fucking armageddon looks like

makes it so we notice breakages immediately without having to rely on users to report them to us
There's still occasional breakages that aren't found that way — did the timestampocalypse show up on reporter?
no
Manage your webhooks easily; delete, send messages, get detailed info and more. This plugin is very useful for developers, general users, (and for people who scout out scammers who use discord webhooks as credential stealers). I'm planning on slowly adding more features, but this is what I have so far.
Since the plugin is still new, I'm going to be keeping my eye out on bugs that people report and fixing them as quickly as possible.
Get Information

i have a ton of these stickers and i dont know why
featuring my favorite sticker
this is horrible to do without having linux
oh right
I forgot about docker and I have it installed
however maybe I can just use this
and pin the version hash of course
then no need to manually specify the chromium version too
This will break on web for obvious reasons that aren't justified, don't use a useless 3rd party API for an embedded image you don't need, webhook username code needs fixing
I would also like to suggest prefilling webhook URLs from the current channel if you have permission, or something like that
just ping the user with <@" + response.user.id + ">
why do you need a native script to make an HTTPS request to the same origin
why was this feature scrapped?
if you use an embed this will look much nicer and you can display the profile picture in a better way
review bomb incoming
use let or const where possible
Use a string template (using backticks `content`)
oh i had way more than that whar
jumpscare

there was 9 comments and it only showed 3 lol
that would be very useful, considering a lot of webhook usage is for embeds and similar anyway
cool it cached but it didnt proper restore
you cannot use fetch. it is only available in nodejs 18 and up. discord uses 16
damn i gotta fix a lot
ok idk how to peroperly do this
good feedback tho
you're welcome
discord blocks webhook requests from discord origins, likely to stop some phishing extensions
oh, that's interesting. I didn't know that
i actually hate how discord loves to check origin for so much shit
it makes sense
Leftover psuedo-global code from endlessly struggling with a feature - should be removed (removing in next commit)
Good suggestion, I'll work on it tomorrow.
0 days since Discord's origin checking broke something for me personally
#🏥-vencord-support-🏥 message
oh also
other RPC stuff
you NEED an origin
or it disconnects you
damn discord RPC is shit
This should now be fixed, not on my main computer right now so it might be absolutely FUCKED
Planning on working on it further tomorrow, it's not going to be scrapped.
Will definitely improve on this tomorrow
horror
'Before merging'
Shit accidentally pushed a change without pulling, 1 sec
i wonder why github instantly put pull requests in a resolve state
unlike gitlab that actually starts them as a draft
doesn't github say draft is for when you're not ready for review
idk what gitlab shows regarding that
github has 2 unclosed pr states: draft and open, where draft is where you need to polish things before it's ready for review, and open for when you are ready for people to review
I guess its because the gitlab flux on merge request are slightly different than the github one
also cool hollow knight pfp diamond
thanks
That's very hard to sort in a file manager too. Use YYYY-MM-DD_hh:mm:ss or similar instead
this is so real
welcome to plugin dev enjoy your stay
Hi, i'm new here.
so, idk if anyone's done something like this before, but I was trying to find a way to have multiple channels (from the same or different servers) open simultaneously in the desktop app
very enjoyable 10/10
someone mentioned channeltabs i think was the name of the plugin and I was trying to gauge where I should start in attempting to get the functionality I'm seeking.
welcome (from #🏥-vencord-support-🏥 )
this would be better for #🧩-plugin-development
noted. I'll move my inquiry there. thank you.
ooo
alr so tomorrow
- change webhook aliases to just /webhook send-delete-getinfo(or something)
- make the info display as an embed, and make the embed image aka the image on the right, the webhook profile pic
- send messages with custom username and TTS
- send as unformatted json ? (idk)
nothing changed for usage









