#๐Ÿ‘พ-core-development

1 messages ยท Page 95 of 1

crude hearth
#

well at the end I just wonder if it matters here

austere talon
#

yop it does

crude hearth
#

since setEditorRef is discord thing would it work with regular ref

#

I will just try

austere talon
#

yes

#

if it doesn't work setEditorRef={ref => yourRef.current = ref.stuff

lime stone
#

<AwesomeComponent ref={fwdlkjg} />

austere talon
#

ye it doesn't

lime stone
#

i tried to use it for the guild list for collapsibleui so i could work out when it was unhovered agony

austere talon
#

it only works on html components and ones that forward ref

lime stone
#

i found i could use <span style={{display: "contents"}} ref={thing}>...</span>

austere talon
nimble plaza
#

should i use selectors like .imageAccessory-2yA7Kb .gifTag-1TvtGO or [class^="imageAccessory-"] [class^="gifTag-"]

#

wait no i need to still show it on gifs

#

.originalLink-Azwuo9:not([href$="gif"]) + div + div > .gifTag-1TvtGO is the best way i can think of to do it

#

i couldnt find a patch to do the same

nimble plaza
#

hiding the gif icon when its not a gif

olive aurora
#

oh

#

hmm

charred monolithBOT
crude hearth
#

@austere talon you love this terribleness

charred monolithBOT
crude hearth
#

horror emoji button suddenly broke

#

when I hover mouse out of it it closes h

charred monolithBOT
charred monolithBOT
tacit marten
#

Am I allowed to make a random quotes plugin that changes the default loading quotes with random facts that are fetched from an API?

tacit marten
#

I found a PR that makes a Fact of the Day plugin but Ven said it should replace the loading quotes instead, and the author of said plugin didn't do that and instead closed the PR.

charred monolithBOT
tacit marten
spark pivot
#

No

tacit marten
#

Now I need to wait for Ven, I don't want to cause trouble.

tacit marten
#

Anyone know of any good API for such facts? I already used one but want to add more options.

#

Can't find any other free one right now tbh, others are paid.

#

Turns out there is one for Wikipedia.

#

This is the motherlode itself tbh.

#

Although the facts are sometimes a bit longer, which will of course be difficult to read while Discord is loading.

cunning bobcat
#

slow discord down during loading trolley

tacit marten
wind breach
#

I wonder how hard it would be to pop out individual camera/screenshare feeds

#

Similar to the twitch pip mode where you can put it anywhere on your monitors

tacit marten
#

I really REALLY hate cors.

tacit marten
#

The recommended fix for Wikipedia's API is to add &origin=*, but for some reason Discord still ruins it.

austere talon
#

wrong

#

look at wikipedia plugin

tacit marten
half shell
#

BTW @teal temple added notification dots to bookmarks (toggleable setting) in latest commit of the ChannelTabs plugin PR

tacit marten
#

I mean, rewrite the API URL to use this format and that is all?

#

............
Somehow I needed to reselect the option from the plugin's settins.....

#

................

#

......................

#

(No, I didn't forget to re-build, I am using the Dev Companion with build --watch, thankfully.)

austere talon
#

?

tacit marten
#

At first it wasn't working using the URLSearchParam and was showing CORS errors for Wikipedia, but after re-selecting the Wikipedia option from the new plugin's settings, it worked, thankfully.

charred monolithBOT
tacit marten
#

Also after restarting with changes, the setting value changes to an empty value, so I guess this means I always need to re-set the value if I change it or its value in the code.

#

Anyway, thank you very much!

#

Ven, can I also add a command to get a random fact in the same plugin?

#

Similar to the /wikisearch command.

nimble plaza
#

who cares

#

do it and youll get told to remove it or not when you pr it

woeful sable
#

if you mean the star I gave the github

tacit marten
woeful sable
tacit marten
woeful sable
#

ah

tacit marten
charred monolithBOT
charred monolithBOT
tacit marten
#

Well, I hope I handled promises properly.

charred monolithBOT
austere talon
#
while (currentQuote.indexOf("may refer to") > -1){
    this.quote().then(returnedQuote => currentQuote = returnedQuote);
}
#

this sens like two billion requests

#

and fries ur cpu

charred monolithBOT
frail skyBOT
#
Bad Patches

MoreUserTags (had no effect):
ID: 742224
Match: /this.props.user;return null!=(\i)&&.{0,10}\?(.{0,50})\.botTag/

IgnoreActivities (had no effect):
ID: 971102
Match: /!(\i)(\)return null;var \i=(\i)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError Cannot access 'ipe' before initialization
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
#
Bad Patches

MoreUserTags (had no effect):
ID: 742224
Match: /this.props.user;return null!=(\i)&&.{0,10}\?(.{0,50})\.botTag/

IgnoreActivities (had no effect):
ID: 971102
Match: /!(\i)(\)return null;var \i=(\i)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError Cannot access 'lpe' before initialization
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
nimble plaza
drowsy thicket
#

thx baby

charred monolithBOT
tacit marten
tawny cipher
#

logically yes it does, it continuously fires requests without giving the cpu any room to breathe

tacit marten
#

Already removed it anyway, thankfully.

#
for (let retryIndex=0; retryIndex < 5; retryIndex++) {
            // Retry if the wiki random fact ends with ":" which means it is incomplete. Max 5 retries.
            if (url.indexOf("wiki") > -1 && currentQuote.indexOf(":") == currentQuote.length - 1) {
                const data = await fetch(url).then(response => response.json());
                currentQuote = data.query.pages[0].extract;
            }
        }
#

Is this better?

tawny cipher
#

error handling would be useful

tacit marten
#

Alright, will look into that.

tawny cipher
#

just trycatch the block

tawny cipher
#

also in js (yuck) you want triple equals

#

double equals ignores the type

#

1 == '1' // true
1 === '1' // false

tacit marten
#

Yeah but I didn't know which one follows convention, I guess it is the triple one, huh?

tawny cipher
#

yes

#

you basically never see double equals unless you wish to explicitly ignore the types while checking

#

js moment

tacit marten
#

Well, in my case both are guaranteed to be integers, but what do I know?

#

Anyway, I gotta look into error handling sequence in promises.

tawny cipher
#

just place it in a trycatch block and there you go

tacit marten
#

I mean in a promise chain.

tawny cipher
#

promise.all

tacit marten
#

Because I saw ven using .catch(), so I want to find out the proper one.

tawny cipher
#

you can chain a catch call at the end yes

#

trycatch is cleaner though unless you just want to ignore the exception

tacit marten
tacit marten
#

Since this is a random quote thing, no need for complex error handling imo.

tawny cipher
#

never leave promises dangling though

#

even if you just ignore the exception, catch it

tacit marten
#

Yeah I will add a .catch that logs the error which is enough, right?

tawny cipher
#

however it is better to indeed do something with the exception, like error logging, informing the end user, something

tacit marten
#

I have another question about conventions if I may.

#

While rewriting some stuff, I use await on a promise chain, I guess this is either plain wrong or weird and should be rewritten to not use a chain, right?

tawny cipher
#

if you have multiple promises that need resolving you can use promise.all

tacit marten
#

Lemme show you what I meant:

await fetch(url).then(res => res.json()).then(json => {
            if (url.indexOf("wiki") > -1) {
                currentQuote = json.query.pages[0].extract;
            }
            else { currentQuote = json.text; }
        });
#

Honestly this looks plain horrible.

#

New one:

        const url = settings.store.apiURL;
        const data = await fetch(url)
        const json = await data.json()
        if (url.indexOf("wiki") > -1) {
            currentQuote = json.query.pages[0].extract;
        }
        else { currentQuote = json.text; }```
tawny cipher
#

save the return value to a variable instead

tacit marten
#

Just a try catch and return an empty string, I guess.

#

Now may I ask for your opinion one final time? Ven called my initial one horrible.

#

Actually let's not.

#

I'll let Ven roast it.

tawny cipher
#

I mean it was quite horrible so it was actually put quite nicely

#

I would've used different wording altogether

tacit marten
#

(I think you meant you'd swear when you said "different wording" though. XD)

#

Alright I'll send it here.

#

If it still is bad, I will simply close the PR.

#
async quote() {
        const url = settings.store.apiURL;
        try {
            const data = await fetch(url);
            const json = await data.json();
            if (url.indexOf("wiki") > -1) {
                currentQuote = json.query.pages[0].extract;
            }
            else { currentQuote = json.text; }
        }
        catch(error) {
            console.log(error);
            currentQuote = "";
        }
        for (let retryIndex=0; retryIndex < 5; retryIndex++) {
            // Retry (max 5 retries) in the following cases:
            // currentQuote is empty which means no quote was fetched.
            // Wikipedia quote ends with ":" which means it is incomplete.
            if (currentQuote === "" || url.indexOf("wiki") > -1 && currentQuote.indexOf(":") === currentQuote.length - 1) {
                try {
                    const data = await fetch(url).then(response => response.json());
                    currentQuote = data.query.pages[0].extract;
                }
                catch (error) {
                    console.log(error);
                    currentQuote = "";
                }
            }
        }
        return currentQuote;
    }
#

Wait I need to check the order of || and &&.

#

In my case, the precedence works out, thankfully, but does this follow convention?

#

This silence is not promising.

tawny cipher
#

some people do other things throughout the day rather than reading a channel

#

anyway I mean there's a few obsolete things and typing the response would probably be good

tacit marten
tacit marten
tawny cipher
#

for instance instead of

const url = settings.store.apiURL;
const data = await fetch(url)
const json = await data.json()

just do

const body = await fetch(settings.store.apiURL).then(res => res.json());
tacit marten
#

So, a hybrid between my old horrible one and the new one?

tawny cipher
#

no

#

there's nothing wrong in using the then chain in this manner

tacit marten
#

I see, thanks!

#

Wouldn't it be better to use the url constant instead of typing settings.store.apiURL everywhere?

#

I am still learning conventions, and from what I see people prefer shorter code lines and names instead of long lines.

tawny cipher
tacit marten
#

Oh yeah, cannot find this: slashcommandsapi dependency?

tacit marten
tawny cipher
#

I mean eh personal preference I guess, two properties for me personally doesn't constitute the need

tacit marten
#

I see the charm in shorter ones as well.

tacit marten
charred monolithBOT
charred monolithBOT
jagged cloak
tawny cipher
#

me when I mark as resolved and not comment on everything:

tacit marten
#

Dunno how people normally reply to them when they are resolved.

tacit marten
austere talon
#

you mark them as resolved

#

then leave one single comment like "feedback addressed"

tacit marten
#

Thanks for the info!

#

I know it is too late, but I'll do that anyway.

#

Btw, V, may I ask about the slashcommandsapi dependency mentioned by Luna/ImLvna?

#

Because I cannot find that dependency in the whole code, and because it already runs properly, thankfully.

charred monolithBOT
austere talon
#

CommandsAPI

tacit marten
#

Oh, now I get it. You meant the plugin.

#

Thanks!

#

Added, thankfully.

austere talon
#

but if someone only enables ur plugin, then the commands api won't be enabled

tacit marten
#

I did a global search for slashcommandsapi and found nothing, didn't think about searching for just commandsapi.

charred monolithBOT
charred monolithBOT
charred monolithBOT
royal bane
#

forgor to star on new acc

austere talon
#

pogg

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
tawny cipher
#

very polite request

#

go do this now.

verbal pumice
#

not this guy again ๐Ÿ˜ญ

charred monolithBOT
#

add the ability to add channels to a folder using drag n drop

Also add the ability to see a notification dot near the folder, and near the channels within that folder.

reminder that this is voluntary work free of charge. do not demand that others add features, instead ask nicely or offer your suggestions in a non demanding way: "nice work! i think [feature] would be a great addition, what do you think?"

tawny cipher
#

at least a tiny bit of common decency isn't that hard

vagrant ore
#

lol

charred monolithBOT
radiant reef
lime stone
radiant reef
#

How can I test it if I can't edit plugins

nimble plaza
#

skill issue

#

dont make plugin changes if you cant test it

lime stone
radiant reef
nimble plaza
#

thats still a plugin change smartass

lime stone
#

which implies you should have enough commitment to test it?

nimble plaza
#

test it yourself or get fucked

lime stone
#

uh

radiant reef
#

Ven will test it with any yt shorts link that has the tracking parameter ๐Ÿฅบ

lime stone
#

seriously

#

you can clone it (incredible)

radiant reef
lime stone
#

ah

radiant reef
#

Uff

woeful sable
#

attempting to create a plugin, has anyone encountered this?

spark cove
woeful sable
#

8.1.1

#

should be node 20

spark cove
#

yea that bug happens with node 20

#

and was fixed in pnpm 8.3.1

#

try updating

woeful sable
#

ive been trying

frail skyBOT
#
Bad Patches

MoreUserTags (had no effect):
ID: 742224
Match: /this.props.user;return null!=(\i)&&.{0,10}\?(.{0,50})\.botTag/

IgnoreActivities (had no effect):
ID: 660859
Match: /!(\i)(\)return null;var \i=(\i)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError Cannot access 'ppe' before initialization
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
woeful sable
#

im unable to

spark cove
#

how'd you install pnpm

woeful sable
#

npm i -g pnpm

spark cove
#

does npm i -g pnpm@^8.3.1 fail in some way

woeful sable
#

does nothing

#

still on 8.1.1

spark cove
#

what os are u on, maybe check ur pnpm binary to make sure its from npm

woeful sable
#

it shows properly in terminal but not vscode

frail skyBOT
#
Bad Patches

MoreUserTags (had no effect):
ID: 742224
Match: /this.props.user;return null!=(\i)&&.{0,10}\?(.{0,50})\.botTag/

IgnoreActivities (had no effect):
ID: 660859
Match: /!(\i)(\)return null;var \i=(\i)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError Cannot access 'ype' before initialization
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
spark cove
#

maybe funky environment variable stuff is happening, try restarting vscode

woeful sable
#

did

spark cove
#

wha the frick

spark cove
woeful sable
#

windows

spark cove
#

cmd or powershell

woeful sable
#

powershell

spark cove
#

actaully where exists in both

#

where pnpm

#

sike it doesnt

#

oml

#

Get-Command pnpm

#

my windows also has an outdated pnpm that isnt pulling from my installtion from npm

woeful sable
#

C:\Program Files\nodejs\pnpm.ps1

spark cove
#

oh my pnpm is pulling from pnpm itself

#

cursed

spark cove
woeful sable
#

hold on i think i almost got it

spark cove
#

:o

woeful sable
#

fixed

spark cove
#

nicee

woeful sable
#

had to delete all pnpm stuff from C:\Program Files\nodejs

spark cove
#

do you use a node version manager now

woeful sable
#

?

spark cove
#

like a program for managing what node version you're using

woeful sable
#

no

spark cove
#

thats so weird i wonder why that was happening

#

im curious, where does it show now in Get-Command pnpm

woeful sable
#

C:\Users\User\AppData\Roaming\npm\pnpm.ps1

spark cove
#

ohh i get it

#

you have an old node install that you installed to the system

woeful sable
#

yep

spark cove
#

and then your latest install is installed to the user

woeful sable
#

yes

spark cove
#

scary

woeful sable
#

very

#

now the inject wont work bruh

#

my shits all fucked up

charred monolithBOT
charred monolithBOT
charred monolithBOT
limber skiff
#

huh

charred monolithBOT
#

From what I've noticed while using screenshare feels like all capturing and video encoding is done in Software.

Is it even possible to get Hardware Encoding to work with Vesktop? I'm not sure how Vesktop's Screenshare impl works and what it would possibly depend on as I've never really worked with Electron before let alone implemented anything "capture" related so it's very impressive that it works at all. But there's not really times that I'm not experiencing Frame Rate Encoding issues or...

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
#

Yeah I had a feeling that would be a little bit too complex, I wonder if there would be an alternative way of tackling this. Maybe a lazy workaround would be having a RTMP server in the client which just would kind of proxy the video stream to Discord and then leaving all the "hard work" to OBS. But that would kind of just be a "hack" and maybe could be implemented in the form of a plugin which might also be useful in the first party Discord Client... But all that is outside the scope of this...

charred monolithBOT
charred monolithBOT
turbid hatch
#

@austere talon yeah it seems to work fine on non-BD

#

since megu made it reliable for those without a header

austere talon
#

uh but

turbid hatch
#

but

tawny cipher
#

butt

turbid hatch
#

@austere talon FINISH THE SENTENCE VEN

#

YOU'RE GIVING ME SUSPENSE

austere talon
#

hold on i am busy cooking

#

i typoed m instead of k and it almost got weird

nimble plaza
#

whatre u cooking

austere talon
# nimble plaza whatre u cooking
function extractPrivateCache(wreq) {
    let cache = null;
    const sym = Symbol();

    Object.defineProperty(Object.prototype, sym, {
        get() {
            cache = this;
            return { exports: {} }
        },
        set() { },
        configurable: true
    })
    
    wreq(sym)
    delete Object.prototype[sym]
    if (cache) delete cache[sym]
    return cache;
}
nimble plaza
#

oooo

austere talon
#

i LOVE prototype pollution

austere talon
#

if u dont use bd type

#

i just gave that change cause i assumed it wouldnt make a difference but be more accurate semantically

turbid hatch
#

it can load bd themes and non-header themes

#

it just fills it out with blank meta

austere talon
#

ok

#

then good

lime stone
#

could there be an issue repository where you need to be invited lol

#

then you could implement the iq test

verbal pumice
#

it kept doing that for me

austere talon
#

actually the initial commit didn't do it

lime stone
#

(sunnie is a hacker)

limber skiff
#

how did you even think of that lol

austere talon
#

then I randomly got the idea

#

so i went to my pc to prototype and 3 minutes later had it working

#

heh

#

i was eating toast with salami

#

salami buff

olive aurora
#

object.prototype horror

#

you will not delete the patch and let everything get slowed down

austere talon
#

i don't think there would be any slowdown? since the property will never be used after that

olive aurora
#

ive heard before patching primitive prototypes at least made things usually slower cuz of jit things

limber skiff
lime stone
limber skiff
#

It's important

austere talon
royal bane
#

mfw already is

marsh cave
#

p sure vesktop has arrpc built in (so no it doesn't need to)

charred monolithBOT
frail skyBOT
#
Bad Patches

FakeNitro (had no effect):
ID: 918124
Match: /((\i)=\i\.node,\i=\i\.expressionSourceGuild)(.+?return )(.{0,450}Messages\.EMOJI_POPOUT_PREMIUM_JOINED_GUILD_DESCRIPTION.+?}\))/

MoreUserTags (had no effect):
ID: 742224
Match: /this.props.user;return null!=(\i)&&.{0,10}\?(.{0,50})\.botTag/

IgnoreActivities (had no effect):
ID: 660859
Match: /!(\i)(\)return null;var \i=(\i)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError Cannot access '_pe' before initialization
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
#
Bad Patches

FakeNitro (had no effect):
ID: 918124
Match: /((\i)=\i\.node,\i=\i\.expressionSourceGuild)(.+?return )(.{0,450}Messages\.EMOJI_POPOUT_PREMIUM_JOINED_GUILD_DESCRIPTION.+?}\))/

MoreUserTags (had no effect):
ID: 742224
Match: /this.props.user;return null!=(\i)&&.{0,10}\?(.{0,50})\.botTag/

IgnoreActivities (had no effect):
ID: 660859
Match: /!(\i)(\)return null;var \i=(\i)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError Cannot access '_pe' before initialization
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
limber skiff
#

bro that patch broken again

austere talon
#

lmaooo

limber skiff
#

I hate that patch

#

it's so freaking bad because I have to define a variable for the node

lime stone
#
export const sounds: SoundDesc[] = [
    {
        name: "Message",
        id: "message1"
    },
    {
        name: "Defean",
        id: "deafen"
    },
    {
        name: "Undefean",
        id: "undeafen"
    },
    {
        name: "Mute",
        id: "mute"
    },
    {
        name: "Unmute",
        id: "unmute"
    },
    {
        name: "Voice Disconnected",
        id: "disconnect"
    },
    {
        name: "PTT Activate",
        id: "ptt_start"
    },
    {
        name: "PTT Deactive",
        id: "ptt_stop"
    },
    {
        name: "User Join",
        id: "user_join"
    },
    {
        name: "User Leave",
        id: "user_leave"
    },
    {
        name: "User Moved",
        id: "user_moved"
    },
    {
        name: "Outgoing Ring",
        id: "call_calling"
    },
    {
        name: "Incoming Ring",
        id: "call_ringing"
    },
    {
        name: "Stream Started",
        id: "stream_started"
    },
    {
        name: "Stream Ended",
        id: "stream_ended"
    },
    {
        name: "Viewer Join",
        id: "stream_user_joined"
    },
    {
        name: "Viewer Leave",
        id: "stream_user_left"
    },
    {
        name: "Activity Start",
        id: "activity_launch"
    },
    {
        name: "Activity End",
        id: "activity_end"
    },
    {
        name: "Activity User Join",
        id: "activity_user_join"
    },
    {
        name: "Activity User Leave",
        id: "activty_user_leave"
    },
    {
        name: "Invited to Speak",
        id: "reconnect"
    }
];

this is definitely the best possible approach that could be taken catstare

#

whatever it works

median rapids
charred monolithBOT
median rapids
charred monolithBOT
charred monolithBOT
astral umbra
#

yep

charred monolithBOT
charred monolithBOT
turbid hatch
#

^ yeah this is finished as far as i'm concerned

#

that was the last thing i really needed to do, the feature itself works fine

#

but the PR text was wank

finite iris
#

{$}

lime stone
#

money

turbid hatch
#

vhelp

nimble pendantBOT
# turbid hatch vhelp

vban (yeet) - Does stuff idk
veval (e, $) ๐Ÿ‘‘ - Does stuff idk
vfaq (f) - Does stuff idk
vhelp (h, ?) - Does stuff idk
vnotsupport (ns, nots) - Does stuff idk
vprune (purge, clear, delete) - Does stuff idk
vsource-code (source) - Does stuff idk
vsupport (s) - Does stuff idk
vupdate ๐Ÿ‘‘ - Does stuff idk

turbid hatch
#

vfaq vencord.app

nimble pendantBOT
turbid hatch
#

shut

#
olive aurora
#

levenshtein bloat

turbid hatch
#

i would have just

#

copied the package code

#

into the command

#

buti ts long

#

and i couldnt find a shorter implementation that wasnt extremely cpu intensive

#

or

#

well

#

that much shorter

#

lol

olive aurora
#

levenshtein is just a bad algorithm actually

#

its like O(fuck)

turbid hatch
#

it is but ironically the better algorithm is actually worse in js

#

and also the implementation is fucking ass

olive aurora
#

I was thinkin of making a tiny library for it at some point

#

well not leven

#

some fuzzy matching algo

turbid hatch
#

that would be nice

#

im using leven here to approximate a typo correction engine

#

but a fuzzy search would be better imo

#

because atm "partymode" wouldnt work with this command

#

because the actual plugin is called party mode ๐ŸŽ‰

olive aurora
#

trol

turbid hatch
#

but with a fuzzy search engine i could make that work

#

i was just gonna use leven to do it but it has the chance of giving multiple so eh

olive aurora
#

this O notation goes hard

austere talon
#

what's the point

#

just use command options

lime stone
#

ven probably has email notifications on this repo right? lol

charred monolithBOT
#

add the ability to add channels to a folder using drag n drop
Also add the ability to see a notification dot near the folder, and near the channels within that folder.

reminder that this is voluntary work people do in their free time, free of charge. do not demand that others add features, instead ask nicely or offer your suggestions in a non demanding way: "nice work! i think [feature] would be a great addition, what do you think?"

I'm sorry, I didn't mean to be rude in an...

fading harbor
charred monolithBOT
marble ridge
#

Can Vencord plugins edit the content of other messages? Not like what they say, but I would like to make a plugin that replaces the embeds for Twitter, Reddit, TikTok, and Instagram with the vx variant from DylanPDX.
https://github.com/dylanpdx/BetterTwitFix
Discord embeds are notoriously bad, but simply adding "vx" (or "dd" for Instagram) to the link embeds it natively in Discord instead of the 3rd party embeds

charred monolithBOT
austere talon
#

ye possible but you'd have to manually fetch the embeds and stuff

#

which is a bit cursed

marble ridge
#

so more effort than its worth?

austere talon
#

uh no its possible

marble ridge
#

oh alright

#

how would I go about making a plugin for Vencord? I know BD uses javascript, does Vencord also?

teal halo
#

vencord uses typescript

#

basically the same thing

#

although vencord's code is way, way less bloated and way more understandable that BD

marble ridge
#

nice custom role IDIOT

#

lmao that makes sense, thank you

frail skyBOT
#
Bad Patches

FakeNitro (had no effect):
ID: 918124
Match: /((\i)=\i\.node,\i=\i\.expressionSourceGuild)(.+?return )(.{0,450}Messages\.EMOJI_POPOUT_PREMIUM_JOINED_GUILD_DESCRIPTION.+?}\))/

MoreUserTags (had no effect):
ID: 742224
Match: /this.props.user;return null!=(\i)&&.{0,10}\?(.{0,50})\.botTag/

IgnoreActivities (had no effect):
ID: 660859
Match: /!(\i)(\)return null;var \i=(\i)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError Cannot access '_pe' before initialization
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
#
Bad Patches

FakeNitro (had no effect):
ID: 918124
Match: /((\i)=\i\.node,\i=\i\.expressionSourceGuild)(.+?return )(.{0,450}Messages\.EMOJI_POPOUT_PREMIUM_JOINED_GUILD_DESCRIPTION.+?}\))/

MoreUserTags (had no effect):
ID: 742224
Match: /this.props.user;return null!=(\i)&&.{0,10}\?(.{0,50})\.botTag/

IgnoreActivities (had no effect):
ID: 660859
Match: /!(\i)(\)return null;var \i=(\i)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 [kb store] KeybindStore: Looking for callback action SOUNDBOARD_HOLD but it doesn't exist in this version. Skipping
%c[KeybindsStore] 
font-weight: bold;
color: purple;
 [kb store] KeybindStore: Looking for callback action SAVE_CLIP but it doesn't exist in this version. Skipping
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
spark cove
#

@austere talon i was waiting on voice api

austere talon
#

oh

spark cove
#

oh wait did that close

austere talon
#

nah i dont think

#

i mean idk

#

but probably implement without for now

spark cove
austere talon
#

can still refactor later with voice api

spark cove
#

true and real

austere talon
#

someone broight it up in armcord

#

linked tha issue

spark cove
#

real real real i will immedaite

charred monolithBOT
spark cove
#

i start working on it and then i want to die

#

guh

austere talon
#

lmao

#

mood

median rapids
#

eel

median rapids
#

rough,.

charred monolithBOT
limber sparrow
#

among us

verbal pumice
#

sus??

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
umbral hedge
#

code scanning do be kinda good tho

charred monolithBOT
olive aurora
#

jumpscare

umbral hedge
#

ye

#

scary

olive aurora
olive aurora
#

that doesnt work ven

#

but also typeof value == "object"

#

well

#

null is

#

just value?.hasData?.() maybe

austere talon
#

i was thinking too much in typescript land

#

anyway you shouldn't use instanceof Object ever, ig that's what caused my confusion

olive aurora
#

wait i see

#

yea i think thats the only thing that really works

umbral hedge
#

o yea
me when String("") is an instance of Object

olive aurora
#

the code thats already there

umbral hedge
#

JS moment

austere talon
#

but still u should just use typeof or not have that check at all

#

instanceof only for custom classes

olive aurora
#

brain died

charred monolithBOT
ionic spire
#

where is the plugin folder on my computer?

verbal pumice
#

plugins are complied directly into vencord, they arent separate files

ionic spire
#

ohhh, play thanks

charred monolithBOT
#

Thank you for improving this plugin every day. I found a bug with bookmarks. When you add too many bookmarks, they don't fit on the screen. I think it would be great if you move these bookmarks to the next line? Discord's workspace will be a little smaller, but you'll be able to make a lot of bookmarks.

image

If you want to, you could do something similar to chrome and use th...

spark pivot
#

How would I get a color selector like this?

turbid hatch
spark pivot
#

Ok thanks

charred monolithBOT
umbral hedge
#

swag

charred monolithBOT
charred monolithBOT
charred monolithBOT
fading cedar
#

anyone by chance know how to forcefully get all the members in a guild?

#

apparently discord only returns members loaded/cached. which is a roadblock.

umbral hedge
#

there's a reason discord doesn't make it easy

#

doing it might get you anti-abused

austere talon
#

not possible

#

actually its possible but u need some perm for it

rancid dragon
#

lol ?

nocturne haven
fading cedar
#

I was asking in both servers for a chance to get some sort of different answer.

austere talon
#

this isnt your place to leech off other people's help

#

if you're writing code for a different mod then don't ask here

#

especially not in this channel

charred monolithBOT
fading cedar
#

or be an ass. works too. thanks anyway

austere talon
#

yeah don't be an ass, glad you got it

fading cedar
#

i wasnt being the ass ยฏ_(ใƒ„)_/ยฏ

austere talon
#

being a help vampire = being an ass

fading cedar
#

how is asking once in two different servers sucking assistance from others?

woeful sable
#

bro the second coming of tharki

#

ring them damn church bells

austere talon
#

vban @fading cedar help vampire; constantly obnoxious and insulting other people's work

austere talon
#

me resisting the urge to throw "stupid" in there as well

#

unfortunately stupidity isn't against the rules ๐Ÿ’”

woeful sable
#

how he get in the archive...

austere talon
#

๐Ÿ˜ญ

#

that guy was always dumb asf

#

even in bd asking the stupidest shit in the plugin dev channel

woeful sable
#

I told chris to ban him from the archive

#

๐Ÿ’€

austere talon
#

i should make a plugin that allows u to use allowed_mentions with normal messages so i can ping people without pinging them

woeful sable
#

domi did that for bd

#

@oblique hound ain't that right

austere talon
#

making the ui for that seems awkward

#

maybe thats why its not a stock feature

woeful sable
#

he just put a little @ symbol next to the gift icon in the message bar that toggles it

austere talon
#

maybe like if you right click a mention it opensa context menu with checkboxes

#

or that

woeful sable
#

ven was thinking too hard

austere talon
#

okay but mine would let u customise

#

like ping everyone but one person

#

gonna keep the plugin private

lime stone
#

make it apply if you type @supersilent

austere talon
#

gatekeeping cool features ๐Ÿ”ฅ

lime stone
#

cute people only

oblique hound
limber skiff
#

does the websocket request for all members actually require a permission?

austere talon
oblique hound
#

idk. @nocturne haven said its selfbotting ๐Ÿ˜”

limber skiff
austere talon
#

it's definitely not selfbotting it just sends slightly unusual payloads but there's virtually no risk

oblique hound
#

Well its not possible with a normal user account and normal client so maybe thats why they said it

austere talon
#

I've been triple srickering for ages and they don't care

austere talon
#

what do you think how the reply mention toggle works...

oblique hound
#

I meant with the normal client

#

then it would only work for bots

austere talon
#

anyway there is no risk from doing it

limber skiff
#

true but at the same time I don't think the normal client ever sends requests with allowed roles for example

oblique hound
austere talon
#

well ig not with any roles listed

#

In any case there is no risk

limber skiff
#

either way it's prob very fine to do so

austere talon
#

it doesn't matter

austere talon
#

it sets allowed mentions

oblique hound
#

i see

limber skiff
#

I have done it for years and I'm okay tonguecat

limber skiff
#

modders try not to risk their account

#

(failed)

oblique hound
# austere talon it sets allowed mentions

wait wouldnt that mean that when i turn of reply pings and ping somebody that the person doesnt get the ping? Since you can only suppress everyone, roles and users but not individual users with allowed mentions

limber skiff
#

there is a special field for reply

austere talon
#

yes

limber skiff
#

it's replied_user tonguecat

oblique hound
#

ohh

austere talon
#

i love mobile_network_type

#

goes hard

oblique hound
lime stone
#

i love discord markdown

austere talon
#

this should not ping @oblique hound

#

ye doesnt

oblique hound
#

yeah

lime stone
#

can you try on me ๐Ÿฅบ

umbral hedge
#

lmao

lime stone
#

i need all the pings

austere talon
#
Vencord.Util.sendMessage(
  "1015063227299811479",
  {
    content: "this should not ping @oblique hound",
  },
  false,
  {
    allowedMentions: {
      parse: []
    }
  }
)
lime stone
#

boop @lime stone

#

cool

austere talon
#

da stickers

#

whats interesting is that the order is decided by the api

woeful sable
austere talon
#

i specified them in a different order

woeful sable
#

had me believing too

lime stone
#

i wonder why there isn't just stickerItem

austere talon
lime stone
#

object instead of array

austere talon
#

cause u can send multiple

austere talon
#

1-3

#

idk why they made that a feature in the api but never implemented it in client

lime stone
#

yeah that's what i was talking about

austere talon
#

discord renxSHRUG

lime stone
#

probably because it was broken

austere talon
#

the api has so many features that aren't implemented in the frontend

  • up to 3 stickers
  • allowed mentions
  • role locked emojis (i think most people don't even know these exist)
  • way more i cant think of rn
#

WHAT IF WE LOCKED shiggy TO CUTE PERSON ROLE

lime stone
#

YES

#

or donor

lime stone
austere talon
#

ya

oblique hound
#

Does it work with the emoji picker when you set the emojis via api?

#

Or is the whole feature not functional on frontend

umbral hedge
#

theres no ui

#

api only

#

its in the docs tho

#

there's plenty of bots that manage it for you

oblique hound
umbral hedge
#

oh

#

im p sure it greys out yeah

austere talon
#

doesn't it just not show them at all?

umbral hedge
#

it used to but

#

now that emojis grey out instead of being hidden in the picker

#

im gonna assume they grey out

austere talon
#

can just test it

#

ve await guild.editEmoji("1026533111963590697", { roles: ["1026504932959977532"]})

nimble pendantBOT
# austere talon ve await guild.editEmoji("1026533111963590697", { roles: ["1026504932959977532"]...
DiscordRESTError: 405: Method Not Allowed on POST /api/v10/guilds/1015060230222131221/emojis/1026533111963590697
    at RequestHandler.request (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.7.2-dev.6ec3877/node_modules/oceanic.js/dist/lib/rest/RequestHandler.js:96:15)
    at RequestHandler.authRequest (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.7.2-dev.6ec3877/node_modules/oceanic.js/dist/lib/rest/RequestHandler.js:81:21)
    at RESTManager.authRequest (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.7.2-dev.6ec3877/node_modules/oceanic.js/dist/lib/rest/RESTManager.js:47:29)
    at Guilds.editEmoji (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.7.2-dev.6ec3877/node_modules/oceanic.js/dist/lib/routes/Guilds.js:615:30)
    at Guild.editEmoji (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.7.2-dev.6ec3877/node_modules/oceanic.js/dist/lib/structures/Guild.js:769:40)
    at eval (eval at execute (/home/vendy/Vaius/dist/index.js:121:30), <anonymous>:1:28)
    at eval (eval at execute (/home/vendy/Vaius/dist/index.js:121:30), <anonymous>:1:98)
    at Object.execute (/home/vendy/Vaius/dist/index.js:121:30)
    at Client.<anonymous> (/home/vendy/Vaius/dist/index.js:651:17)
    at Client.emit (node:events:513:28) {
  code: 0
}```
austere talon
#

??

#

maybe missing intents?

#

ve await guild.editEmoji("1026533111963590697", { roles: ["1026504932959977532"]})

nimble pendantBOT
# austere talon ve await guild.editEmoji("1026533111963590697", { roles: ["1026504932959977532"]...
DiscordRESTError: 405: Method Not Allowed on POST /api/v10/guilds/1015060230222131221/emojis/1026533111963590697
    at RequestHandler.request (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.7.2-dev.6ec3877/node_modules/oceanic.js/dist/lib/rest/RequestHandler.js:96:15)
    at RequestHandler.authRequest (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.7.2-dev.6ec3877/node_modules/oceanic.js/dist/lib/rest/RequestHandler.js:81:21)
    at RESTManager.authRequest (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.7.2-dev.6ec3877/node_modules/oceanic.js/dist/lib/rest/RESTManager.js:47:29)
    at Guilds.editEmoji (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.7.2-dev.6ec3877/node_modules/oceanic.js/dist/lib/routes/Guilds.js:615:30)
    at Guild.editEmoji (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.7.2-dev.6ec3877/node_modules/oceanic.js/dist/lib/structures/Guild.js:769:40)
    at eval (eval at execute (/home/vendy/Vaius/dist/index.js:121:30), <anonymous>:1:28)
    at eval (eval at execute (/home/vendy/Vaius/dist/index.js:121:30), <anonymous>:1:98)
    at Object.execute (/home/vendy/Vaius/dist/index.js:121:30)
    at Client.<anonymous> (/home/vendy/Vaius/dist/index.js:651:17)
    at Client.emit (node:events:513:28) {
  code: 0
}```
austere talon
#

not intents

#

oh

#

oceanic bug

#

@limber skiff

#

why is it POSTing

#

it should be PUT

limber skiff
#

yeah I was about to say that

#

is it last version

austere talon
#

uhh maybe

#

the stacktrace tells u version

#

it's fairly recent

#

did u fix that recently?

limber skiff
#

nah

#

It might still be broken

austere talon
#

broken in latest

limber skiff
#

let me fix real quick and you install new version

austere talon
#

im on phone ferrisSkull

#

time to child proc

limber skiff
austere talon
#

FIXING LIBRARY ON PHONE

#

legend

#

I hate that u use #private in oceanic

#

cause if u didn't i could just manually send request

burnt ridge
#

Wow

jagged cloak
#

funny

austere talon
#

I mean yea

limber skiff
#

it should actually be PATCH

austere talon
#

still exists

burnt ridge
austere talon
#

why are some modify operations PATCH and some are POST

#

In discord

#

like modify guild mfa level is a POST

olive aurora
#

just make manual request and also leak ur token

austere talon
#

real

#

I'll do

#

wait

umbral hedge
#

probably because they dont pay as much attention to semantics with non-bot endpoints

austere talon
#

but modify guild mfa is also bot

umbral hedge
#

oh

#

nvm lmao

#

they just dont care about semantics then

austere talon
umbral hedge
#

whats the endpoint for guild mfa

olive aurora
#

guild motherfuckin account

umbral hedge
#

fr

austere talon
limber skiff
#

ok done now wait a bit for version to be posted to npm

austere talon
#

PATCH = partially updating resource
POST = creating resource
PUT = replace or create resource

#

So for mfa it would make the most sense to use PUT?

#

I think

#

and POST makes the least sense

#

or am I wrong

umbral hedge
#

nah ur not wrong

#

i'd say PATCH and PUT are both acceptable since both can update the resource

#

but POST would only really make sense if it was like /mfa/enable or /mfa/disable

austere talon
#

honestly imo having so many http methods is kinda dumb

umbral hedge
#

lmao

#

it can be useful when having lots of different actions on one endpoint tho

austere talon
#

like for simplicity I would be fine with just GET HEAD POST DELETE

#

for me personally

umbral hedge
#

using OPTIONS to find undocumented endpoints ๐Ÿ’ช

austere talon
#

isn't OPTIONS per endpoint?

#

I thought it was

umbral hedge
#

it is

limber skiff
#

@austere talon update

austere talon
#

oh, then how does it help you find undocumented endpoints?

charred monolithBOT
umbral hedge
#

but lots of services with endpoints that 404 on GET/POST or whatever don't 404 on OPTIONS

austere talon
#

oh i see

#

that makes sense yeah

umbral hedge
#

u can also just use it to find additional behaviours too

#

on known endpoints

austere talon
#

I thought you meant like finding arbitrary endpoints without knowledge of them

umbral hedge
#

nah

umbral hedge
austere talon
#

ve void require("child_process").execSync("pnpm add oceanic.js@latest")

umbral hedge
#

undefined

austere talon
#

ve process.exit()

#

ve await guild.editEmoji("1026533111963590697", { roles: ["1026504932959977532"]})

nimble pendantBOT
# austere talon ve await guild.editEmoji("1026533111963590697", { roles: ["1026504932959977532"]...
DiscordRESTError: 405: Method Not Allowed on POST /api/v10/guilds/1015060230222131221/emojis/1026533111963590697
    at RequestHandler.request (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.8.0/node_modules/oceanic.js/dist/lib/rest/RequestHandler.js:96:15)
    at RequestHandler.authRequest (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.8.0/node_modules/oceanic.js/dist/lib/rest/RequestHandler.js:81:21)
    at RESTManager.authRequest (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.8.0/node_modules/oceanic.js/dist/lib/rest/RESTManager.js:47:29)
    at Guilds.editEmoji (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.8.0/node_modules/oceanic.js/dist/lib/routes/Guilds.js:642:30)
    at Guild.editEmoji (/home/vendy/Vaius/node_modules/.pnpm/oceanic.js@1.8.0/node_modules/oceanic.js/dist/lib/structures/Guild.js:773:40)
    at eval (eval at execute (/home/vendy/Vaius/dist/index.js:121:30), <anonymous>:1:28)
    at eval (eval at execute (/home/vendy/Vaius/dist/index.js:121:30), <anonymous>:1:98)
    at Object.execute (/home/vendy/Vaius/dist/index.js:121:30)
    at Client.<anonymous> (/home/vendy/Vaius/dist/index.js:651:17)
    at Client.emit (node:events:513:28) {
  code: 0
}```
austere talon
#

GRRR

#

scammed wtf

limber skiff
#

it's dev

austere talon
#

og

#

oh

#

ve void require("child_process").execSync("pnpm add oceanic.js@dev")

austere talon
#

ve process.exit()

#

ve await guild.editEmoji("1026533111963590697", { roles: ["1026504932959977532"]})

austere talon
#

LET'S GO

#

blobztcozy is now cute people only

umbral hedge
marsh cave
#

:blobztcozy:

#

wtf !!

umbral hedge
#

does it show in the emoji picker

marsh cave
#

no it doesn't

umbral hedge
#

huh

#

i thought it'd show as greyed out

#

ven wins this battle

lime stone
#

imagine having a plugin to implement the thing that Discord is too lazy to

#

in fact the thing(s)

austere talon
#

wtf is this bro

lime stone
#

physics

limber skiff
umbral hedge
#

ungfella

austere talon
#

tbf fixinbox doesn't really implement smth they're too lazy to

#

it's just that their code sucks

umbral hedge
#

yea

austere talon
#

and u fix it

umbral hedge
#

well i begged multiple employees to fix it

#

and they were like

austere talon
#

well bandaid fix, optimally they'd just rework the way the gateway works for a proper fix ๐Ÿ˜ญ

umbral hedge
#

its marked as wontfix

austere talon
#

???

umbral hedge
#

i wanna fix fixinbox to make it actually work properly but im lazy

austere talon
#

why lmao

umbral hedge
#

ikr

austere talon
#

are they dumb

umbral hedge
#

its an issue that ONLY happens to paying customers

austere talon
#

actually relevant issue that entirely breaks discord = wontfix

umbral hedge
#

it doesn't happen to non-nitro because you cant be in >100 guilds

austere talon
#

wait is the rate limit at 100

umbral hedge
#

no

#

i dont know the exact limit but its somewhere upwards of 130

austere talon
#

why don't they just increase the rate limit to 200

lime stone
austere talon
#

easiest fix of their life

umbral hedge
#

or they could just throttle the payloads being sent fubuki_pain

#

or

limber skiff
#

when is discord fixing nitro being paid

umbral hedge
#

batch them

#

they should just allow batching

#

instead of sending them as individual mostly-identical payloads

austere talon
umbral hedge
#

are they

austere talon
#

I saw some experiments related to that

#

remix on desktop

limber skiff
#

I think so

spark pivot
#

I just made it anyway

lime stone
#

exactly

#

we can combine these things into Lazycord

umbral hedge
#

i enabled the exp and dont see anything

spark pivot
#

The experiment doesn't work

#

I tried

austere talon
lime stone
#

honestly i think it's better to wait and just bypass it with FakeNitro?

umbral hedge
#

tbh i thought it was just to enable the UI

spark pivot
#

fair enough

umbral hedge
#

and nitro ads

austere talon
#

Also why tf hasn't discord added native voice messages to discord desktop yet?

#

do they not plan to add it ever?

umbral hedge
#

yeah it is

#

its just a upsell experiment

austere talon
#

like it's pretty simple especially cause DiscordNative already has a method for recording voice messages

spark pivot
#

do they plan on adding anything ever?

lime stone
#

probably not

austere talon
#

btw megu did u see I finally got around to adding plugin readmes to the website

#

idk how we should show them in client yet

#

my idea was probably just iframe vencord.dev

#

for simplicity

umbral hedge
#

oh neat

umbral hedge
#

are the readmes markdown

austere talon
#

yes but github flavoured

umbral hedge
#

oh

#

i was gonna say could you just use discords markdown parser

austere talon
#

some examples that have readmes

#

most plugins don't

lime stone
umbral hedge
#

nono i mean

#

the markdown parser they used for changelogs

lime stone
#

oh

umbral hedge
#

which have video and image embeds

lime stone
#

tables?

umbral hedge
#

ยฏ_(ใƒ„)_/ยฏ

lime stone
#

tbf that's github-specific

umbral hedge
#

oh actually i dont think it does

#

i think the video embed thing on the changelog is separate

austere talon
#

I plan to keep the allowed markdown basic

#

as in only allow pure markdown and images and videos

#

and nothing beyond that

umbral hedge
#

well discords markdown thing lets you create custom rules

#

you could probably add a rule for embedding content

austere talon
#

it doesn't seem necessary to have more advanced stuff and keeping it limited makes it easier for us

#

like i already had to add a workaround for github videos

#

cause the way they function is you literally just paste the video file link and it embeds it

umbral hedge
#

lol yeah i dont like that

austere talon
#

I wish they used something saner

woeful sable
umbral hedge
#

a year

woeful sable
#

I remember around this time there were new mods popping up every other week

austere talon
#

lmao

#

right

#

and even more mods dying

umbral hedge
#

has it actually been that long

woeful sable
#

yeah

austere talon
#

So many mods discontinued

umbral hedge
austere talon
#

life passes too fast

#

vencord started late august 2022

#

more than a year ago

woeful sable
#

lucysim first vencord stargazer

umbral hedge
#

lmao

woeful sable
#

god damn it went up 3 pages

austere talon
#

realest

umbral hedge
#

im on page 62

#

im a fake fan

woeful sable
#

real meguminsama

austere talon
#

kinda weird that idk a lot of the first starrers

woeful sable
austere talon
#

how tf did they find it

umbral hedge
woeful sable
#

FAKE

umbral hedge
#

not fake

#

thats when i was added

austere talon
#

I mean Lucy's was only cause private repo at the time

woeful sable
#

ven can't hide my commit

austere talon
#

TRUE

umbral hedge
#

what was the commit

woeful sable
#

I created the readme

umbral hedge
#

so real

woeful sable
#

and I put something idk what it was

#

because ven DELETED THE COMMIT FROM HISTORY

umbral hedge
#

1984

austere talon
#

I force pushed cause full rewrite

woeful sable
#

broke my heart

austere talon
#

nuking the old history

#

here you go

woeful sable
#

NO WAY

umbral hedge
#

crazy? i was crazy once

limber skiff
#

I found vencord looking at ven repositories because of aliucord lol

woeful sable
#

real lucism

limber skiff
#

and then I was like??? REGEX?? this is so cool

woeful sable
#

๐Ÿฅบ

limber skiff
#

(I had made at most 2 discord plugins during that time)

#

and I didn't even know regex blobcatcozy

woeful sable
#

it took ven 40 mintues to erase my work

umbral hedge
#

this is how i found out about vencrod (dm leak) (real) (gone viral)

austere talon
umbral hedge
#

require

woeful sable
#

I think me and ven were talking in replugged and he invited me to see

austere talon
#

you're not a real one if you weren't there when vencord added Vencord Vencord Vencord (... 50x) to the client info in settings

woeful sable
#

fr....

limber skiff
#

vencord also taught me how to view sources lmao