#๐พ-core-development
1 messages ยท Page 95 of 1
yop it does
<AwesomeComponent ref={fwdlkjg} />
ye it doesn't
i tried to use it for the guild list for collapsibleui so i could work out when it was unhovered 
it only works on html components and ones that forward ref
i found i could use <span style={{display: "contents"}} ref={thing}>...</span>
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
the hell is it for
hiding the gif icon when its not a gif
@austere talon you love this terribleness
@Vendicated this breaks emoji behaivour on popout I am keeping it on old way
Am I allowed to make a random quotes plugin that changes the default loading quotes with random facts that are fetched from an API?
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.
That was me
Well, thank you for trying to implement it. Do you plan to rewrite it?
No
Sorry to hear that.
Now I need to wait for Ven, I don't want to cause trouble.
go for it
Anyone know of any good API for such facts? I already used one but want to add more options.
I used the same one MrDiamond used for now:
https://uselessfacts.jsph.pl/
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.
slow discord down during loading 
And risk Ven killing me? No thank you.
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
I really REALLY hate cors.
The recommended fix for Wikipedia's API is to add &origin=*, but for some reason Discord still ruins it.
Okay, thanks!
BTW @teal temple added notification dots to bookmarks (toggleable setting) in latest commit of the ChannelTabs plugin PR
Does this mean I just need URLSearchParams only?
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.)
?
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.
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.
you're welcome
if you mean the star I gave the github
Are you sure you starred any of my repos?
duno I saw the website say this
This is related to the main Vencord repo, not any personal repo.
ah
Well, I already got into some trouble with Ven, so I want to avoid any future trouble tbh. XD
Replaces Discord's default loading quotes with random facts, can choose between two API:
- Wikipedia
- https://uselessfacts.jsph.pl/
Adds slash commands:
/wikirandomfactto get a random fact from Wikipedia./uselessrandomfactto get a random useless fact./currentrandomfactto get the fact that was shown in the loading quote.
Well, I hope I handled promises properly.
options is deprecated, use definePluginSettings
its common to put patches near the top of the plugin definition
while (currentQuote.indexOf("may refer to") > -1){
this.quote().then(returnedQuote => currentQuote = returnedQuote);
}
this sens like two billion requests
and fries ur cpu
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.+?\])(?=}\)}\(\))/
None
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 ```
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.+?\])(?=}\)}\(\))/
None
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 ```
thx baby
Logically it shouldn't but alright, will limit it to a few number of retries, and resolve all the other conversations.
logically yes it does, it continuously fires requests without giving the cpu any room to breathe
Ah, yeah because of "while" being synchronous.
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?
error handling would be useful
Alright, will look into that.
just trycatch the block
also in js (yuck) you want triple equals
double equals ignores the type
1 == '1' // true
1 === '1' // false
Yeah but I didn't know which one follows convention, I guess it is the triple one, huh?
yes
you basically never see double equals unless you wish to explicitly ignore the types while checking
js moment
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.
just place it in a trycatch block and there you go
I mean in a promise chain.
promise.all
Because I saw ven using .catch(), so I want to find out the proper one.
you can chain a catch call at the end yes
trycatch is cleaner though unless you just want to ignore the exception
But would it apply to any exception in the then() calls?
Well, that is the intention.
Since this is a random quote thing, no need for complex error handling imo.
never leave promises dangling though
even if you just ignore the exception, catch it
Yeah I will add a .catch that logs the error which is enough, right?
.catch(x => null) and there you go, if it calls catch the return value is null
however it is better to indeed do something with the exception, like error logging, informing the end user, something
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?
if you have multiple promises that need resolving you can use promise.all
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; }```
yes don't do that
save the return value to a variable instead
Now to add error handling here.
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.
I mean it was quite horrible so it was actually put quite nicely
I would've used different wording altogether
A monkey would write a better function?
(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.
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
Sorry, I just assumed because you engaged in an active convo with me, but I am grateful nonetheless.
Can't really find these obsolete things, but wdym by "typing the response"?
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());
So, a hybrid between my old horrible one and the new one?
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.
if you use it that many times yeah, just destructure it out
Oh yeah, cannot find this: slashcommandsapi dependency?
I use it 3 times in my code.
I mean eh personal preference I guess, two properties for me personally doesn't constitute the need
Should be resolved in acdeb8df9d0e1cace176b197cb15c3b9a119e88a.
Should be resolved in acdeb8df9d0e1cace176b197cb15c3b9a119e88a.
Should be resolved in acdeb8df9d0e1cace176b197cb15c3b9a119e88a.
Should be resolved in acdeb8df9d0e1cace176b197cb15c3b9a119e88a.
Honestly my preferences are having longer lines instead of variables, but oh well.
I see the charm in shorter ones as well.
Any clue about that?
Alright, got rid of the while loop and tried to rewrite the whole function's structure, hope it is not horrible now.
i think it should be resolved in abcdefg
Well, I edited the comments and removed the commit hashes.
Dunno how people normally reply to them when they are resolved.
Honestly didn't know if I am supposed to mark as resolved, or let V do that.
you don't at all
you mark them as resolved
then leave one single comment like "feedback addressed"
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.
Which one? I cannot find it. Also I want to point out that the commands already work as intended without any dependency issues as far as I can see.
Addressed majority of feedback given, and rewrote the quote() function's logic to address infinite loop concerns and overall logic problems.
CommandsAPI
because you already have a different plugin depending on it so it doesn't matter
but if someone only enables ur plugin, then the commands api won't be enabled
Yeah I understood once I noticed that it is another plugin.
I did a global search for slashcommandsapi and found nothing, didn't think about searching for just commandsapi.
forgor to star on new acc
pogg
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.
not this guy again ๐ญ
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?"
at least a tiny bit of common decency isn't that hard
lol
huh
It's a commit ๐ค
thats still a plugin change smartass
which implies you should have enough commitment to test it?
test it yourself or get fucked
uh
Ven will test it with any yt shorts link that has the tracking parameter ๐ฅบ
(It's almost 2 am and I was tired)
ah
Uff
attempting to create a plugin, has anyone encountered this?
might be https://github.com/pnpm/pnpm/issues/6424, whats your pnpm and node version
ive been trying
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.+?\])(?=}\)}\(\))/
None
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 ```
im unable to
how'd you install pnpm
npm i -g pnpm
does npm i -g pnpm@^8.3.1 fail in some way
what os are u on, maybe check ur pnpm binary to make sure its from npm
it shows properly in terminal but not vscode
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.+?\])(?=}\)}\(\))/
None
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 ```
maybe funky environment variable stuff is happening, try restarting vscode
did
wha the frick
what os
windows
cmd or powershell
powershell
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
C:\Program Files\nodejs\pnpm.ps1
and Get-Command npm?
hold on i think i almost got it
:o
fixed
nicee
had to delete all pnpm stuff from C:\Program Files\nodejs
do you use a node version manager now
?
like a program for managing what node version you're using
no
thats so weird i wonder why that was happening
im curious, where does it show now in Get-Command pnpm
C:\Users\User\AppData\Roaming\npm\pnpm.ps1
yep
and then your latest install is installed to the user
yes
scary
huh
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...
Vesktop uses the native Electron media request API like you would see on Discord Web, just with a custom UI. Discord uses their own custom native implementation on Desktop via C++ and various other black magic (similar to how OBS does it as far as I know). It's difficult to get working in any other way unless we went down the route of implementing an actually native solution for ever...
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...
@austere talon yeah it seems to work fine on non-BD
since megu made it reliable for those without a header
uh but
but
butt
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;
}
oooo
i LOVE prototype pollution
does it still use meta
if u dont use bd type
i just gave that change cause i assumed it wouldnt make a difference but be more accurate semantically
could there be an issue repository where you need to be invited lol
then you could implement the iq test
does it still grab react devtools's webpack instead of the site's
it kept doing that for me
hasn't done that for ages
actually the initial commit didn't do it
(sunnie is a hacker)
this is so fucking smart
how did you even think of that lol
ill be honest i was just casually talking with mantika while eating about some sites not exporting their webpack cache
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
object.prototype horror
you will not delete the patch and let everything get slowed down
i don't think there would be any slowdown? since the property will never be used after that
ive heard before patching primitive prototypes at least made things usually slower cuz of jit things
๐
why do you remember this
It's important
couldnt have done it without the salami
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.+?\])(?=}\)}\(\))/
None
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 ```
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.+?\])(?=}\)}\(\))/
None
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 ```
bro that patch broken again
lmaooo
I hate that patch
it's so freaking bad because I have to define a variable for the node
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 
whatever it works
W
I am source of enlightment
so real
yep
Updated PR description to better reflect status.
^ 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
{$}
money
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
vfaq vencord.app
This is not the #๐ฅ-vencord-support-๐ฅ channel.
shut
@austere talon https://codeberg.org/Ven/bot/pulls/9 :3
levenshtein bloat
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
it is but ironically the better algorithm is actually worse in js
and also the implementation is fucking ass
I was thinkin of making a tiny library for it at some point
well not leven
some fuzzy matching algo
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 ๐
trol
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
initially cuz of gif search lol
this O notation goes hard
there's also #8 
ven probably has email notifications on this repo right? lol
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...
yeah, thank you so much! It's me, just using anothe discord
This fixes a crash when using the plugin on a lurked guild.
"Joined At": guild.joinedAt ? renderTimestamp(guild.joinedAt.getTime()) : "-", // Not available in lurked guild
every little helps :-)
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
ye possible but you'd have to manually fetch the embeds and stuff
which is a bit cursed
so more effort than its worth?
uh no its possible
oh alright
how would I go about making a plugin for Vencord? I know BD uses javascript, does Vencord also?
vencord uses typescript
basically the same thing
although vencord's code is way, way less bloated and way more understandable that BD
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.+?\])(?=}\)}\(\))/
None
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 ```
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.+?\])(?=}\)}\(\))/
None
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 ```
@austere talon i was waiting on voice api
oh
oh wait did that close
can still refactor later with voice api
true and real
real real real i will immedaite
eel
rough,.
among us
sus??
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.
1128e8f feat(startup timings): add Time-To-Interactive ... - MeguminSama
Adds TTI information & some payload stats
Missing regular expression anchor
Misleading operator precedence. The subexpression '_end$' is anchored at the end, but the other parts of this regular expression are not
code scanning do be kinda good tho
jumpscare
github-code-scanning[bot]
Potential token lagger
This code might contain a token lagger
const filteredAnalytics = Object.entries(analytics).filter(([key, value]) => !/_start$|_end$/.test(key) && value != null);
these two conditions should also be flipped
const records = (Object.entries(TTITracker) as [string, ITTITrackerEvent][])
avoid redundant type annotations
.filter(([, value]) => value instanceof object && value.hasData?.()) as any;
that doesnt work ven
but also typeof value == "object"
well
null is
just value?.hasData?.() maybe
consider using a css file instead of inline styles
these components are almost identical. you could likely merge them into one single component that takes props
oh right
i was thinking too much in typescript land
anyway you shouldn't use instanceof Object ever, ig that's what caused my confusion
o yea
me when String("") is an instance of Object
the code thats already there
JS moment
not actually, only new String()
but still u should just use typeof or not have that check at all
instanceof only for custom classes
where is the plugin folder on my computer?
doesn't exist
plugins are complied directly into vencord, they arent separate files
if you're looking to add your own plugins see #1032200195582197831 pins
ohhh, play thanks
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.
If you want to, you could do something similar to chrome and use th...
How would I get a color selector like this?
i wrote one for the usercss PR but it's not in vencord yet
Ok thanks
swag
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.
lol ?
~~If only I didn't tell them exactly this in the bd server already
~~
I was asking in both servers for a chance to get some sort of different answer.
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
or be an ass. works too. thanks anyway
yeah don't be an ass, glad you got it
i wasnt being the ass ยฏ_(ใ)_/ยฏ
being a help vampire = being an ass
how is asking once in two different servers sucking assistance from others?
vban @fading cedar help vampire; constantly obnoxious and insulting other people's work
Done! 
me resisting the urge to throw "stupid" in there as well
unfortunately stupidity isn't against the rules ๐
oml bruh
how he get in the archive...
๐ญ
that guy was always dumb asf
even in bd asking the stupidest shit in the plugin dev channel
im sure @nocturne haven can sing u a song about that ๐ถ
i should make a plugin that allows u to use allowed_mentions with normal messages so i can ping people without pinging them

he just put a little @ symbol next to the gift icon in the message bar that toggles it
maybe like if you right click a mention it opensa context menu with checkboxes
or that
ven was thinking too hard
okay but mine would let u customise

like ping everyone but one person
gonna keep the plugin private
make it apply if you type @supersilent
gatekeeping cool features ๐ฅ
cute people only
yes. but it broke and also counts as selfbotting
does the websocket request for all members actually require a permission?
how
yeah it's like audit log perm or smth
idk. @nocturne haven said its selfbotting ๐
oh damn lol
bd are overly strict for no reason
it's definitely not selfbotting it just sends slightly unusual payloads but there's virtually no risk
Well its not possible with a normal user account and normal client so maybe thats why they said it
I've been triple srickering for ages and they don't care
wrong
what do you think how the reply mention toggle works...
anyway there is no risk from doing it
true but at the same time I don't think the normal client ever sends requests with allowed roles for example
It removes the userid from the mention field no? It doesnt set the allowed mentions field iirc
it does
well ig not with any roles listed
In any case there is no risk
either way it's prob very fine to do so
it doesn't matter
wrong
it sets allowed mentions
i see
I have done it for years and I'm okay 
:p
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
there is a special field for reply
yes
it's replied_user 
ohh
thats sick
even if there's no real risk i guess you're still doing something that the official client can't do so i can understand why (it's not selfbotting imo though)
- and for plugins which do things like this in vencord... maybe there should be a small warning?
i love discord markdown

yeah
can you try on me ๐ฅบ
lmao
i need all the pings
Vencord.Util.sendMessage(
"1015063227299811479",
{
content: "this should not ping @oblique hound",
},
false,
{
allowedMentions: {
parse: []
}
}
)
damn bro ๐
i specified them in a different order
had me believing too
i wonder why there isn't just stickerItem
wdym?
object instead of array
cause u can send multiple
like i showed here
1-3
idk why they made that a feature in the api but never implemented it in client
yeah that's what i was talking about
discord 
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
TO CUTE PERSON ROLE
iirc allowed mentions are frequently used in bots
ya
Role locked emojis? Thats sick
Does it work with the emoji picker when you set the emojis via api?
Or is the whole feature not functional on frontend
theres no ui
api only
its in the docs tho
there's plenty of bots that manage it for you
I meant when you lock them behind a role its probably greyed out then for people without access
doesn't it just not show them at all?
it used to but
now that emojis grey out instead of being hidden in the picker
im gonna assume they grey out
can just test it
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
}```
??
maybe missing intents?
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
}```
not intents
oh
oceanic bug
@limber skiff
why is it POSTing
it should be PUT
uhh maybe
the stacktrace tells u version
it's fairly recent
did u fix that recently?
broken in latest
let me fix real quick and you install new version
same
FIXING LIBRARY ON PHONE
legend
I hate that u use #private in oceanic
cause if u didn't i could just manually send request
Wow
there used to be bots that did role locked emoji
funny
I mean yea
it should actually be PATCH
still exists
my brain dum
why are some modify operations PATCH and some are POST
In discord
like modify guild mfa level is a POST
just make manual request and also leak ur token
probably because they dont pay as much attention to semantics with non-bot endpoints
but modify guild mfa is also bot

whats the endpoint for guild mfa
guild motherfuckin account
fr
ok done now wait a bit for version to be posted to npm
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
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
honestly imo having so many http methods is kinda dumb
like for simplicity I would be fine with just GET HEAD POST DELETE
for me personally
using OPTIONS to find undocumented endpoints ๐ช
it is
@austere talon update
oh, then how does it help you find undocumented endpoints?
Very cool plugin to remix images for free on desktop
Todo
- [ ] Undo/redo
- [ ] Shape tool
- [ ] Styling
- [ ] Better color selector ([waiting on UserCSS](#๐พ-core-development message))
- [ ] Put remix button in co...
but lots of services with endpoints that 404 on GET/POST or whatever don't 404 on OPTIONS
I thought you meant like finding arbitrary endpoints without knowledge of them
nah
o thats actually kinda neat wtf
ve void require("child_process").execSync("pnpm add oceanic.js@latest")
undefined```
undefined
ve process.exit()
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
}```
it's dev
undefined```
ve process.exit()
ve await guild.editEmoji("1026533111963590697", { roles: ["1026504932959977532"]})
undefined```

does it show in the emoji picker
no it doesn't
imagine having a plugin to implement the thing that Discord is too lazy to
in fact the thing(s)
wtf is this bro
*looks at fixinbox*
physics

ungfella
tbf fixinbox doesn't really implement smth they're too lazy to
it's just that their code sucks
yea
and u fix it
well bandaid fix, optimally they'd just rework the way the gateway works for a proper fix ๐ญ
its marked as wontfix
???
i wanna fix fixinbox to make it actually work properly but im lazy
why lmao
ikr
are they dumb
its an issue that ONLY happens to paying customers
actually relevant issue that entirely breaks discord = wontfix
it doesn't happen to non-nitro because you cant be in >100 guilds
wait is the rate limit at 100
why don't they just increase the rate limit to 200
discord treats their subscribers well
easiest fix of their life
when is discord fixing nitro being paid
batch them
they should just allow batching
instead of sending them as individual mostly-identical payloads
pretty cool but isn't discord working on porting it to Desktop?
are they
Probably
I think so
I just made it anyway
i enabled the exp and dont see anything
yeah but its existence implies it's most likely coming somewhat soon
honestly i think it's better to wait and just bypass it with FakeNitro?
tbh i thought it was just to enable the UI
fair enough
and nitro ads
Also why tf hasn't discord added native voice messages to discord desktop yet?
do they not plan to add it ever?
like it's pretty simple especially cause DiscordNative already has a method for recording voice messages
do they plan on adding anything ever?
probably not
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
oh neat

are the readmes markdown
yes but github flavoured
that won't even support the inline images afaik
oh
which have video and image embeds
tables?
ยฏ_(ใ)_/ยฏ
tbf that's github-specific
oh actually i dont think it does
i think the video embed thing on the changelog is separate
I plan to keep the allowed markdown basic
as in only allow pure markdown and images and videos
and nothing beyond that
well discords markdown thing lets you create custom rules
you could probably add a rule for embedding content
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
lol yeah i dont like that
I wish they used something saner
man this reminds me it has already been a year
a year
I remember around this time there were new mods popping up every other week
has it actually been that long
yeah
So many mods discontinued

yes ๐ญ
life passes too fast
vencord started late august 2022
more than a year ago
lucysim first vencord stargazer
lmao
god damn it went up 3 pages
realest
real meguminsama
kinda weird that idk a lot of the first starrers
๐ฅบ
how tf did they find it

FAKE
ven can't hide my commit
TRUE
what was the commit
I created the readme
so real
1984
I force pushed cause full rewrite
broke my heart
nuking the old history
here you go
NO WAY
crazy? i was crazy once
I found vencord looking at ven repositories because of aliucord lol
real lucism
and then I was like??? REGEX?? this is so cool
๐ฅบ
(I had made at most 2 discord plugins during that time)
and I didn't even know regex 
it took ven 40 mintues to erase my work
this is how i found out about vencrod (dm leak) (real) (gone viral)
I am so dumb lmao https://codeberg.org/Ven/cord-legacy/commit/273fb524f1ffa8543412218d0e2c78f587ba78b4
require
I think me and ven were talking in replugged and he invited me to see
you're not a real one if you weren't there when vencord added Vencord Vencord Vencord (... 50x) to the client info in settings
fr....
vencord also taught me how to view sources lmao






