#👾-core-development

1 messages · Page 167 of 1

charred monolithBOT
median rapids
#

wonder what the point is

charred monolithBOT
median rapids
#

if they restructure client state caching again and move roles out the actual guild object in the gateway I'm gonna be upset

charred monolithBOT
hot hatch
#

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?

spark pivot
#

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)

brazen bone
#

Basically vc just looks through the webpack until it finds something that has getAvailableLocales and then declares that yeah this object has this type

hot hatch
#

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?

spark pivot
brazen bone
#

Webpack is a monstrosity to squeeze many js (and other) files into one <script> tag

spark pivot
hot hatch
#

Thank you! The bundles are the files located in AppData\Local\Discord\app-1.0.9035\modules\*\, right?

#

Or not

spark pivot
#

no

#

they are hosted on discord's servers

brazen bone
#

No, that's the stuff specific to the download client

spark pivot
#

use devtools to look through it

hot hatch
#

Oh, apologies for the silliness

brazen bone
#

This stuff

hot hatch
#

So basically the JS files I see when opening Network tab in the DevTools? Like these?

spark pivot
#

don't use the network tab

brazen bone
#

Yeah, though you'll want the debugger tab

spark pivot
#

use crtl+shift+f to search through all of the code

hot hatch
#

Oh, yeah, this tab looks way more convenient than looking through the Network tab

#

thanks

austere talon
#

do you know how the require function of nodejs works? @hot hatch

brazen bone
#

I prefer extracting the bundle to separate files with a custom plugin, but I seem to be a minority

hot hatch
austere talon
#

well then it's hard to explain

hot hatch
#

Well I'm familiar with C#, Python and a bit of C++

austere talon
#

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

austere talon
#

they have no runtime effect, only in the editor

hot hatch
#

Ah, interesting

austere talon
#

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

hot hatch
austere talon
#

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

hot hatch
#

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?

austere talon
#

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

brazen bone
#

Parts of it could be made generic to any webpack app I guess

austere talon
#

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

brazen bone
#

And at least the overall principles should be more or less universal, even if the specific implementation is not

austere talon
#

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

brazen bone
#

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

hot hatch
#

Thank y'all for the answers!! sainthappy

austere talon
#

i might write a blog post about it

#

sooner or later

jagged cloak
#

make universal client mod shiggy

#

twitch and youtube will be gon

charred monolithBOT
rugged flume
junior cave
#

but twitch yes somebody please make a 3rd party desktop client

jagged cloak
#

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 shiggey

fathom nova
#

what's the name for this ?

rugged spire
#

why

wide ibex
#

Anyone remember that bug that used to make scaling webm videos bounce on Discord? Kinda wish there was a way to bring that back.

rugged spire
#

let me find one of thos evideos

wide ibex
#

I was wonderimg that, but I don't have enough braincells to do it.

#

I remember that.
Theres also 1 of a cat dancing.

jagged cloak
#

oh did we open this to everyone again lol

rugged spire
jagged cloak
#

or that

rugged spire
#

i am sure this is a css thing

brazen bone
#
.attachmentContentItem_ef9fc2 { width: unset !important; height: unset !important; } .loadingOverlay__4d818 { aspect-ratio: unset !important }
rugged spire
#

yup

charred monolithBOT
frail skyBOT
#
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

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
hot hatch
#

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 huntershrug

charred monolithBOT
sour needle
#

also wym do it from your IDE it's one command

hot hatch
#

fair enough ratmunchie

charred monolithBOT
still wasp
#

Vscode my beloved

charred monolithBOT
crude hearth
#

Jetbrains IDEs are decent

#

Until you use javascript

charred monolithBOT
hot hatch
#

Not sure what you mean with doing the injection from the IDE
So, in docs/1_INSTALLING.md there is this pnpm inject step. What I meant is whether this is possible to make the run button do the injection or not

brazen bone
#

What would be the point

#

pnpm inject is something you run just once, not for every build

hot hatch
#

even if you change the Vencord's code? (like not a plugin/theme, but the core code itself)

brazen bone
#

There is no difference between plugins and core

hot hatch
#

thank you for the clarification

#

thought it's something you need to do every build

brazen bone
#

inject patches the discord install so it reads from the vencord build directory

charred monolithBOT
limber skiff
#

dang

#

aliucordplugins

still wasp
#

Never seen an aliu request before 😭

limber skiff
#

can Discord push the roles stuff change to stable already

#

I'm tempted to just make both way fix and push with Decor change

austere talon
#

lmaoooo

#

RIGHT

#

I PROMISED FIERY WE WOULD MERGE

#

but forgot

#

sry bestie @junior olive

dusk hill
#

merge yesterday

#

or today?

limber skiff
#

I can do very soon

austere talon
#

ill do it rq

#

:P

limber skiff
#

okay then fix the roles issue too

austere talon
#

ya

limber skiff
#

and lets bump browser again I guess

#

to not hurt fiery

austere talon
#

doing now

charred monolithBOT
austere talon
#

ill just make a quick util

limber skiff
#

smart

dusk hill
#

so quick

limber skiff
#

actually I think you should accept the id as param

#

since the new thing can be used only with id

dusk hill
#

getguild by their id

#

is what u mean?

#

instead of the entire guild object

limber skiff
#

yes

#

the new stuff discord is cooking has getGuildRoles which accepts only id

#

instead of using roles property on guild object

austere talon
#

should work

limber skiff
#

merge the change into stable

austere talon
#

yeah in a sec

limber skiff
#

nono I mean your comment

#

lmao

#

you wrote merge in canary

austere talon
#

ohhh

#

lmao

#

does guildMember still have roles object

limber skiff
#

yes

#

I checked already

#

guild member roles is array of ids

austere talon
#

okay done

#

hmm RCE not working

#

wait nothing is working

dusk hill
#

u broke something

#

ctrl + z

austere talon
#

hmm these are the same but its still causing errors

#

this is erroring

#

userRoles contains undefined

dusk hill
#

check if userRole exist

austere talon
#

how do i get member again

dusk hill
#

from guild?

#

does UserStore have getMember as well?

austere talon
#

HORROR

dusk hill
#

what am i looking at

austere talon
#

ohhh because im stupid

dusk hill
#

or vscode

austere talon
#

okay it all works

#

lmao what were u smoking with these classes nookies

dusk hill
#

shc-lsauarc

#

there i shorter it for them

charred monolithBOT
dusk hill
#

shc-role-container

austere talon
#

is this good @limber skiff

limber skiff
#

something crazy

#

I still stuck at class names

#

I'm kinda addicted to big names to be honest

charred monolithBOT
limber skiff
charred monolithBOT
austere talon
#

i forgor a word in the commit message

#

so had to fix

crude raptor
#

(font issue dont worry)

lime stone
#

e

austere talon
#

guh i got logged out

#

reloading too fast

dusk hill
#

e

austere talon
#

oh wait no i didnt

#

im just dumb and chose ptb instead of canary

#

and i never logged into ptb

limber skiff
#

fuck

#

my idea to do this is destroyed

charred monolithBOT
austere talon
austere talon
#

v+ contributor @long stream

limber skiff
#

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...

austere talon
#

@odd heath u around?

#

i can also add it

charred monolithBOT
austere talon
#

i added one

limber skiff
#

o

#

fix resurrect home

#

here's the image

limber skiff
jagged reef
limber skiff
#

not the plugin

jagged reef
#

ah ok

#

I was looking at that and thinking I must be going crazy

limber skiff
#

nah the home itself works completely lmao

#

I really like it

jagged reef
#

yeah

#

looks good

austere talon
charred monolithBOT
austere talon
#

oh

#

yeah u fix

limber skiff
#

I'm eating rn 😞

jagged reef
#

looks kinda like the one I use

limber skiff
#

It's not my screenshot

jagged reef
#

oh lmao

limber skiff
#

woah what is this

#

css icon change or is that stock

dusk hill
#

would i need to add ReadMe to my plugin?

jagged reef
#

I have it too

limber skiff
#

what is it called?

jagged reef
#

It's dev stuff

dusk hill
#

Dev Bug button

jagged reef
#

the bug report doesn't work sadge

austere talon
#

its when you enable isStaff in experiments plugger

limber skiff
#

oh wtf

jagged reef
#

lmao

limber skiff
#

I don't know how this got disabled

charred monolithBOT
limber skiff
#

WAIT

#

let me fix the pic

austere talon
#

right

#

do

charred monolithBOT
#

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

limber skiff
#

okay there

dusk hill
#

dev2

limber skiff
#

stop bullying my branch :(

charred monolithBOT
odd heath
#

Ty for doing it yesyesyes

limber skiff
#

@austere talon announce resurrect home too

lime stone
#

i'm bored idk what i could contribute to vencored

austere talon
#

@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

lime stone
#

there's not much which i think is very useful tbh...

odd heath
#

Same

austere talon
#

all the useful plugins were already made xd

lime stone
#

yeah xd
most stuff which seems useful at all and isn't something creepy is very niche

verbal pumice
#

the only plugin request which sounds useful is #1 :trol:

jagged reef
#

lol

lime stone
#

or has a pr which has been open for 5 years

jagged reef
#

Yeah

#

Vee went right up to the pr after mine and stopped waa

verbal pumice
#

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

lime stone
lime stone
#

this one is ready

limber skiff
#

holy shit I sent everything wrong

jagged reef
#

Nono, it’s too soon

limber skiff
jagged reef
#

Gotta wait a bit

lime stone
#

pls review custardsounds

#

it's been 6 months

#

not quite since it was a draft

jagged reef
#

Isn’t customsounds already in Vencord?

still wasp
tepid knoll
#

i dont like the stock discord notif sounds they make me feel weirdly anxious

mint thistle
#

is it possible to add slash commands into vencord

verbal pumice
mint thistle
#

got a good idea for a plugin

brazen bone
#

Guess what the commands key is for

mint thistle
#

guess i’ll start

jagged reef
lime stone
#

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?

charred monolithBOT
long stream
verbal pumice
#

you def can without syncing but im not sure if that means you can also make it persist between restarts

jagged reef
dusk hill
still wasp
#

Being able to select 2 themes to toggle between trollf

junior olive
junior olive
#

Move from worker to r2 public access

long stream
#

what the hell happened here CR_hUh

dusk hill
#

true

long stream
#

dashboard also shows her as # instead of aamia for some reason

dusk hill
#

u should figured that out

#

and fix it

lime stone
#

happened to me too

#

reauthing fixed

#

there's one reviewdb user i know who actually has a pre-pomelo name

#

wait no

long stream
#

still seems to be borked

lime stone
#

it's changed now

long stream
#

i think the database just freaked out or something

lime stone
#

discriminator support should be removed, i think the # is from that

#

but how is the name becoming blank?

woeful sable
#

or 6

lime stone
woeful sable
#

and i haven't reauthed or anything but my name is fine

lime stone
#

yeah

long stream
#

mantika runs reviewdb right..?

woeful sable
#

i believe so, but the reviewdb actual api is under the vendicated.dev domain

jagged reef
#

Yeah

long stream
crude hearth
#

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

long stream
#

i dont think so?

crude hearth
#

yeah that code still works

#

new registered peoples names are all normal

#

then discordUser is somehow null and error is not catched ???

jagged reef
#

Fun

long stream
austere talon
crude hearth
austere talon
#

on GET user?

grave mangoBOT
crude hearth
#

but profile photo works no problem too

#

which is weirder dread

austere talon
#

its probably inside UserUpdater

#

not reviewdb itself

crude hearth
#

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

long stream
#

dunno

long stream
lime stone
#

that means the username is empty

#

regardless of whether pomelo detection is working properly or not

crude hearth
#

anyway I pushed potenial fix

#

will work hopefully

lime stone
crude hearth
#

probably

#

it fetches user from discord api and gets non 200 return

#

as a result struct returns empty

crude hearth
#

then because discriminator isnt equal to "0" (its equal to empty string) it tries to use discrim name

lime stone
#

how does discord end up not returning 200

crude hearth
#

refresh token might became invalid

#

like when you deauthorize reviewdb from authorized apps section

austere talon
#

error response

#

and if you dont use a pointer, then the default value for everything is a zero

#

not null

crude hearth
#

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

austere talon
#

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 "#"
fringe basalt
#

still there

crude hearth
#

hmm

fringe basalt
#

and i can still add reviews

#

so im authed

crude hearth
#

maybe ratelimiting moment but in my tests even hundreds of reqs per second wasnt causing any ratelimits

austere talon
#

HAHAHAHA

#

how did noone notice sooner

#

update all of them @crude hearth

#

you will love fetching 1.3k users

long stream
#

horror

crude hearth
austere talon
#

well if we have everyones oauth token it shouldnt be an issue with ratelimits

crude hearth
#

but since it was only one person I thought it was some weird bug

crude hearth
austere talon
#

cause its only 1 request per token and then some more for people who revoked their token

austere talon
crude hearth
#

115k users

#

I will just leave it until new user updater timer

#

since it fetches all users its fine tbh

long stream
#

inb4 everyone turns into #

austere talon
crude hearth
austere talon
#

im surprised discord didnt ban you yet dread

crude hearth
#

before oauth it was taking days to complete the user updating

crude hearth
#

why would they

#

isnt this normal thing to do

austere talon
#

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

crude hearth
#

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

charred monolithBOT
crude hearth
#

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

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
median rapids
#

if you're fetching @ me with a bearer you can probably send all those reqs at the same time and they wont care

lime stone
#

why not just fetch when somebody posts review

median rapids
#

cuz you can fetch reviews too

#

but fetching asynchronously could work

lime stone
#

but then it would mean active users update

#

better than nothing

dusk cloud
#

3 billion devices run vencord

rugged spire
#

115 thousand users run ReviewDB

#

fuc

charred monolithBOT
austere talon
#

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

lime stone
#

i mean update users who are actively posting

austere talon
austere talon
#

that would make it so we don't have to update all active users

lime stone
#

yeaa

#

you could spoof username though

rugged spire
#

why do you need to cache avatars anyway

lime stone
#

avatar doesn't matter (much) but username does

austere talon
#

but some users might also be critical of that, thinking we're using it for tracking

#

(we wouldn't)

austere talon
rugged spire
#

nop

lime stone
#

otherwise the client would have to fetch every user

rugged spire
#

just load from discord cdn on clients

austere talon
#

that's exactly what we do

lime stone
#

you need to request the user to get the hash i think

rugged spire
#

o

austere talon
#

but we need to store the cdn urls in our database

#

else you'd need to fetch all users on the client

rugged spire
#

just the avatar hash though

austere talon
#

fetching 50 users at once = selfbotting

austere talon
#

but we need to keep it updated

lime stone
#

why would that make much of a difference lol

#

yeah

rugged spire
#

yeah

#

so

lime stone
#

each avatar has a unique hash

rugged spire
#

i am thinking

lime stone
#

which exists purely to screw up third party development

charred monolithBOT
rugged spire
#

but

austere talon
#

we've already been through this. currently we have a script that runs every 2nd day and fetches all users to update the data

rugged spire
#

do not trust the client to supply the data

lime stone
#

(the old avatars are deleted anyway, why does discord do this)

austere talon
#

but we might make the plugin automatically post your data every time you open discord

austere talon
lime stone
#

the username does

#

you could pretend to be jason citron

rugged spire
#

yes it matters

austere talon
#

that's true yeah

rugged spire
#

so

austere talon
#

so we would still have to fetch users anyway

#

which makes it pointless again

rugged spire
#

just use oauth grant token on the server

austere talon
#

ig our current way of fetching all users every other day is still the best approach

lime stone
#

why not take advantage of the identify scope

rugged spire
lime stone
#

doesn't that give you username

austere talon
#

we cannot get around fetching users

rugged spire
#

which is still not pointless

austere talon
rugged spire
austere talon
#

even inactive users should have proper pfp in reviews

austere talon
#

but we still need to fetch 115k users

lime stone
#

oh

#

do you use each users token for each username and avatar

rugged spire
lime stone
#

i thought you were using one bot token

austere talon
#

and fetch the ones that revoked their token with our bot token

lime stone
#

maybe there should be a way to delete all of your reviews

austere talon
#

??

rugged spire
#

if the user was updated more than 2 days ago when the user's reviews are loaded then update the user

austere talon
#

no correlation

lime stone
#

it just occured to me

rugged spire
austere talon
#

you can already delete all your data by contacting us

lime stone
#

ah ok

austere talon
#

that is your right under gdpr

rugged spire
austere talon
#

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

rugged spire
#

i have never used reviewdb dashboard trolley

charred monolithBOT
lime stone
#

i assume file:// url doesn't work trolley

#

couldn't you allow it

austere talon
charred monolithBOT
#

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

rugged spire
lime stone
#

wha

rugged spire
#

oneko plugin loads itself from github every time the client starts

lime stone
#

what's your point

austere talon
#

?

#

no correlation

rugged spire
#

vencord loves to load external assets

lime stone
#

yes

#

which is already supported

rugged spire
#

even if it is trusted

#

it just mmmmmmmmmm

lime stone
#

mmmm

rugged spire
#

anyway

charred monolithBOT
lime stone
#

the plugin is more prone to breakage

rugged spire
charred monolithBOT
rugged spire
#

managing your messy quickCSS is harder trolley

charred monolithBOT
jagged cloak
#

idc if repeat i was already typing it

lime stone
#

peaking of which i should probably close my custom splash plugin

#

unless you want your ears to be hurt on startup

charred monolithBOT
jagged cloak
#

and

#

css is not that hard just learn it

charred monolithBOT
lime stone
#

replacing something in a snippet isn't hard

charred monolithBOT
grim onyx
#

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

austere talon
#

?

grim onyx
#

can I send links here?

#

I'll explain

austere talon
#

yes

grim onyx
#

you gotta be kidding me

#

nevermind

austere talon
#

lol

grim onyx
#

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
#

you just need css changes

#

no need to change js

limber skiff
#

@austere talon they pushed to stable haha

austere talon
#

yeah i saw lol

#

moment

#

well our workaround doesnt hurt

limber skiff
#

yeah

austere talon
#

but it causes crashes on web

#

because google hasnt approved the update yet guh

rugged spire
#

do i need to merge shit on my own branch trolley

charred monolithBOT
jagged reef
#

plugin is coming along somewhat nicely
What plugin?

austere talon
#

relax

rugged spire
#

real

lime stone
#

can i have perms to self-merge

rugged spire
lime stone
#

no just self-merge

#

i don't wanna review other people's crap

rugged spire
rugged spire
charred monolithBOT
limber skiff
rugged spire
#

And channeltabs isn't even in Vencord yet trolley

thick kestrel
#

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.

rugged spire
#

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

rugged spire
#

i think it is

frail skyBOT
#
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

austere talon
#

LOL @limber skiff we totally forgot to update vesktop

#

for context menu api changes

limber skiff
#

oh shit

#

I don't think I ever touched vesktop lmao

austere talon
#

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

limber skiff
#

😰 😰

austere talon
#

doesnt sound like it matters much

#

anyway i will bump

#

i love doing this

limber skiff
#

should we update vencord packages

#

we haven't in soooo much time

austere talon
#

ESLINT WHAT

#

i have 10gb free ram

limber skiff
#

might need to update eslint patch but outside of that

austere talon
#

uhh

#

theres not much need

#

we can ig but it doesnt add anything

#

so i didnt bother xd

glass jasper
#

^ possible fix for a dead link

limber skiff
#

lmao ven

#

highlight the announcement in the server home

glass jasper
limber skiff
#

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

lapis leaf
#

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!

lethal rapids
median rapids
crude hearth
austere talon
#

no

crude hearth
#

why wake

#

Go sleep

hidden mist
topaz spoke
crude hearth
#

What is wrong with you @hidden mist

#

Why are you so obessed with wumpus

jagged reef
#

Yeah, seriously. Why is your custom rpc a nitro ad? @hidden mist

limber skiff
#

@austere talon google is cooking so hard they already approved the extension

charred monolithBOT
charred monolithBOT
woeful sable
brazen bone
#

That goes against rule 11b, no?

woeful sable
#

i don't think so

"FakeDeafen or other similar creepy plugins"

brazen bone
#

Precisely

odd heath
#

It's stalking

#

We don't want that here

lime stone
#

other similar creepy plugins

#

this is an other similar creepy plugin

mint thistle
#

NekoScared creeeeeepy plugin

#

👻

charred monolithBOT
charred monolithBOT
charred monolithBOT
brazen bone
#

Does anyone know in what circumstances require.n (compatGetDefaultExport) is used? I haven't been able to find any consistent pattern

austere talon
#

does it actually matter or are you just curious

brazen bone
#

Nah, just curious

austere talon
#

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

brazen bone
#

In those cases it just uses foo.default

austere talon
#

maybe non esm syntax?

#

commonjs

#
module.exports = 42;
setTimeout()) => module.exports *= 2, 1000)
brazen bone
# austere talon ```js let foo = 42; setTimeout(() => foo *= 2, 1000); export default foo; ```

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

austere talon
#

interesting

#

im not sure actually

#

try importing a json file?

grave mangoBOT
brazen bone
#

Importing json doesn't do anything interesting

austere talon
#
// module.js
module.exports = 42;
// index.js
import x from "./module";
console.log(x)
#

this should generate a compatGetDefaultExport

brazen bone
#

Oh, it behaves different if it's in index.js or index.mjs

#

In .js it does indeed generate require.n

austere talon
#

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

brazen bone
#

Oh, I see

#

Such a clusterfuck

median rapids
#

illegal 😨

austere talon
austere talon
#

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 blobcatcozy

rancid dragon
#

someone should make a new standard for importing in javascript to solve all these issues

brazen bone
#

927

austere talon
#

there are so many standards already 😭

rancid dragon
#

the good thing about standards is that there's so many to choose from

austere talon
#

there are cjs, esm, amd, umd (amd with cjs compat)

and even more blobcatcozy

brazen bone
#

I've only seen amd in the context of things that support multiple module systems at once

austere talon
#

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

austere talon
rancid dragon
#

oh god umd looks so terrible

brazen bone
#

There's way too many tlas

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
glass jasper
#

^ ignore that I miss clicked

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
limber skiff
#

@austere talon can I do this to avoid the issue of commits with newlines in the future?

brazen bone
limber skiff
#

horror wrong method

charred monolithBOT
limber skiff
#

yeah

#

I'm talking about that lmao

#

fixing it rn

charred monolithBOT
limber skiff
#

we love javascript

#

wtf is this then

#

OH HORROR

#

IT'S A DISCORD-TYPES FILE

#

i'm so dumb

errant patrol
austere talon
#

no

errant patrol
#

ok :(

charred monolithBOT
austere talon
#

its so outdated now

limber skiff
#

yeah

charred monolithBOT
lament iris
#

Hadnt noticed vencord actually uses momentjs

austere talon
#

discord does

brazen bone
#

Vencord uses it in exactly one place from what I can see (in utils/text.ts formatDuration), but discord uses it in various places

lament iris
#

Yeah, i was more used to luxon

glass jasper
charred monolithBOT
austere talon
#

lmao this bot

#

when is it gonna shut up

limber skiff
#

when I say it's false positive 20 more times

brazen bone
#

Maybe if you extract that check to a function, you can keep that check out of future diffs

limber skiff
#

it's fine

austere talon
#

eh

#

just ignore the bot

#

xd

limber skiff
#

yeah lmao

#

it's not like we are gonna touch that file more after it's merged

lime stone
#

imagine how many people do that to check url host

#

no wonder it checks this

charred monolithBOT
frail skyBOT
#
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

limber skiff
#

I'm gonna try caching chromium install

mint thistle
#

?

austere talon
#

what?

mint thistle
#

idk what it is

#

wait did it ping you

#

i’m sorry if it did

austere talon
#

automated vencord testing

#

tests all plugins

mint thistle
#

ohhhh

brazen bone
#

It checks if discord changed something that breaks any patches or finds

mint thistle
#

oh wait that’s really smart

austere talon
#

if u check previous ones you can see what it looks like when plugins break

#

^

mint thistle
#

OHHHHHHHH

#

yooooooo

austere talon
#

and heres what fucking armageddon looks like

mint thistle
austere talon
#

makes it so we notice breakages immediately without having to rely on users to report them to us

brazen bone
#

There's still occasional breakages that aren't found that way — did the timestampocalypse show up on reporter?

limber skiff
#

no

limber skiff
#

no idea if this works

#

where the fuck is my branch github

#

hello???

charred monolithBOT
limber skiff
#

it's so slow wtf

#

did I fucking break the workflow

#

oh yeah I did

charred monolithBOT
#

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

![image](https://github.com/Vendi...

mint thistle
# charred monolith

hell yeahhhhh 🗣️🗣️🗣️🗣️🗣️ 🔥 🔥 🔥 🔥 💯💯💯💯

charred monolithBOT
long stream
mint thistle
#

i have a ton of these stickers and i dont know why

#

featuring my favorite sticker

charred monolithBOT
limber skiff
#

this is horrible to do without having linux

austere talon
#

use docker

#

you can spin up ubuntu container easily

limber skiff
#

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

charred monolithBOT
spark pivot
#

review bomb incoming

spark pivot
#

oh i had way more than that whar

limber skiff
#

jumpscare

rugged spire
spark pivot
#

there was 9 comments and it only showed 3 lol

limber skiff
#

cool it cached but it didnt proper restore

mint thistle
#

damn i gotta fix a lot

limber skiff
#

ok idk how to peroperly do this

mint thistle
#

good feedback tho

rugged spire
rugged spire
#

i actually hate how discord loves to check origin for so much shit

austere talon
#

it makes sense

rugged spire
#

oh also

#

other RPC stuff

#

you NEED an origin

#

or it disconnects you

#

damn discord RPC is shit

rugged spire
#

horror

lament iris
#

'Before merging'

charred monolithBOT
lament iris
#

i wonder why github instantly put pull requests in a resolve state

#

unlike gitlab that actually starts them as a draft

rugged spire
#

idk what gitlab shows regarding that

spark pivot
#

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

lament iris
#

I guess its because the gitlab flux on merge request are slightly different than the github one

spark pivot
charred monolithBOT
lament iris
#

also cool hollow knight pfp diamond

spark pivot
#

thanks

mint thistle
#

i’m like 99% sure

mint thistle
rugged spire
woeful sable
#

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

mint thistle
woeful sable
#

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.

woeful sable
#

noted. I'll move my inquiry there. thank you.

rugged spire
#

ooo

mint thistle
#

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)
austere talon
#

holy fuck

#

so i just rewrote the settings api

#

it worked first try

charred monolithBOT
limber skiff
#

lmao

#

we love the title

austere talon
#

WHAT IS THAT

#

it auto did that 😭

#

anyway

austere talon