#πΎ-core-development
1 messages Β· Page 54 of 1
yeah probably
i didnt think of that
Bad Patches
WebContextMenus (had no effect):
ID: 567068
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
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 ```
Bad Patches
WebContextMenus (had no effect):
ID: 567068
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
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 ```
I've made an infinite scroll on this branch.
But tbh I like the pages more. It's more similar to the 7TV website and you can specify how many emotes you want to see per page. My friend agreed with that too. I'd rather leave the pages.
+1 for this
It's possible (at least in the v1.2.0 chrome extension) to send them by clicking any inside the emote picker, but they do not show up when trying to type them in the message input.
ok now it will compile, but has bugs
@twilit abyss fixed ur icon not appearing as active
also this UI is uhh
I don't know what to say
btw why is the infinite scroll branch requiring that you search for smth?
why can't I load the top emotes?
Discord Account
Allen Why#5877
What is it that you'd like to see?
If FakeNitro lets us use other servers' sounds, that would be great!
Request Agreement
- [X] This is not a plugin request
LanguageTool is a grammar check app that works in websites using their Chrome extension or using their website. So it would be nice to have a plugin that allows you to use it in Discord.
Website if needed: languagetool.org
BetterDiscord plugin: https://github.com/RoguedBear/BetterDiscordPlugin-AutoIdleOnAFK
My request is to have the same plugin but with a little more customization if possible:
- Choose what status to change from instead of "Online".
- Choose what status to change to instead of "Idle".
- Time duration should allow choosing a shorter one, unless that would cause rate limit issues. For example the plugin changes from Online to Idle after a minimum duration of 5, it would be great if it is po...
Create a "splitLargeMessages" that splits messages when they're over the character limit.
Would also like to potentially patch the character count left/over too? Can't find how to tho :P

lol now we have 2 pr for split large message plugin
there are 2 prs for another plugin too 
h
I review today
hi, is it possible to add new plugins on vencord?
Read the docs on github

thanks, but I don't know why 7tv icon appears active when emoji tab is open
didn't think of that, added to the main branch
Set z-index to 0 for avatars in reviewDB component
Old

New

how do u even get this? this seems likr a theme issue
how do u even get this? this seems likr a theme issue
Don't have any themes enabled - It's just that the z-index of the avatar class is 1 by default
but how do u get here? the profile popout is supposed to close when u open the modal
but how do u get here? the profile popout is supposed to close when u open the modal
click on an avatar of a reviewer
https://i.gyazo.com/b4429db1fccd2e9ac2297a0de75b4ed7.mp4
Maybe it's a Chromium issue because it's not happening on Firefox
the share your screen button in the tool bar not doing anything
all the other buttons are working fine
and I don't think its a plugin problem
please
pin the issue! maybe
release an update that plays an obnoxiously loud sound effect with a popup saying streaming isn't ready for vc desktop yet whenever you click the button

Using the Discord Soundboard or a soundboard system on any server will enable everyone to hear it, including those who aren't currently using Vencord.
not possible, and like the 5th request for this. Use search before opening threads
i modified my profile using vencord will others be able to see it
It is also in japanese
im a complete noob, i run the command on my terminal like it said on the readme
then this happens
``Downloading Installer...
X11 detected
Now running VencordInstaller
Do you want to run as root? [Y|n]
This is necessary if Discord is in a root owned location like /usr/share or /opt
y
Running with sudo
[sudo] password for levih:
VencordInstaller was run with root privileges, actual user is levih
Looking up HOME of levih
Actual HOME is /home/levih
Using UserConfig
...
Install mesa / use the CLI that you can find in releases. Please use our support channel if you need more help
this is annoying me too much lmao
:blame_ven:
it wasn't before you commited
but i didnt change anything about layout :c
nuh
they have 6px marginRight
likely thats why
but thats added by u not me
use gap instead of margin to fix it
hmm
i was using an older commit for a bit and the issue wasn't present
(because i didn't pull :p)
and gap doesn't work with inline it seems
u need flex/inline-flex
oh - but what about putting the margin on the button or link instead?
i think that would fix it
yo
nooo ghost
wha happened to dzshn
Problem: The leaf icon for new members appears red instead of green after the message was deleted.
Fix: CSS :not attribute.
Before:

After:

P.S. Edited and highlighted messages look fine
?
som1 should add opening plugin settings to textreplace toolbox actions

hold on yeah
openiing plugin settings probably niche thing but i find myself doing that alot for certain plugins
okay that was easier than i thought
i just cant read
whar
was adding a toolbox action to open plugin settings
toolboxActions: {
"Open Settings": () => {
openModalLazy(async () => {
return modalProps => {
//@ts-ignore fuck you
return <PluginModal {...modalProps} plugin={plugin} onRestartNeeded={() => null} />;
};
});
},
},
``` works lol
balls gaming
okay it still saves we good
why is it let
lol the workflow is gonna cry again i removed the ts ignore
why do you have to ts ignore
but tbh just make util function that opens plugin settings
what's the issue
because whatever tf its trying to tell me here
oh
it still works with or without tsignore i just wanted it to explode
and lint fails with itlmao
maybe try finding out how to get the plugin obj you need
cast it lol
because lazy is for lazy loaded stuff
openModalLazy(() => import("./lazyLoadedModal"))
oh ok
me when If this was intentional, convert the expression to 'unknown' first.
explode typeeeescript
plugin={plugin as unknown as Plugin} is so ugly
Bad Patches
WebContextMenus (had no effect):
ID: 567068
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
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 ```
are you making a PR for this 
cuz that would be incredibly handy
Bad Patches
WebContextMenus (had no effect):
ID: 567068
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
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 ```
i did
cause if u add it for one plugin it's "why does it only exist for this plugin?"
true
you will add a setting allowing you to add any plugin
whar
i just added it to textreplace because thats a plugin you would be opening the settings for frequently enough
but ig that applies to any plugin with more than just a toggle switch
in that case i will do that later since its more effort
trolley
Can someone help me review my PR pls?
https://github.com/Vencord/Installer/pull/40
Yeah, of all the plugins it feels like It's the one im constantly tweaking
So having quick access to it would be π
or could change the wording so it doesnt feel weird
@umbral hedge for you https://github.com/Vendicated/Vencord/pull/1076
that was painful
can someone merge https://github.com/Vendicated/Vencord/pull/1077 please
before i accidentally discard the changes again π
**fakeNitro.tsx: **Line 166
match: /(?<=(\i)=\i\.intention)/,
The fuck is \i?
@austere talon
does it mean that it is the same character as any other instance of \i or smth?
at least thats my understanding from context
like it would only match a=a.intention and not a=b.intention?
cause regex101 does not support it, unless im doing smth wrong?
foo=bar.intention
thats boring
**patches.ts: **Lines 23-24
const canonSource = match.source
.replaceAll("\\i", "[A-Za-z_$][\\w$]*");
@austere talon opinion on using magic-regex for the patches?
it could allow people that are confused by regex to make patches
eg this
{
predicate: () => settings.store.transformEmojis,
match: /1!==(\i)\.length\|\|1!==\i\.length/,
replace: (m, content) => `${m}||$self.shouldKeepEmojiLink(${content}[0])`
}
would become this
{
predicate: () => settings.store.transformEmojis,
match: createRegExp(
exactly("1!==")
.and(identifier.groupedAs("e"))
.and(exactly(".length||1!=="))
.and(identifier).and(exactly(".length")
)
),
replace: (m, content) => `${m}||$self.shouldKeepEmojiLink(${content}[0])`
}
horrid
magic regex is way less readable than normal regex
the definition for identifier that I wrote
const identifier = exactly(oneOrMore(letter).or(anyOf("_", "$")))
(yes, you can't give ranges, you can only use letter for the A-Za-z)
Whilst I do agree with you, it does make it possible for more people to write patches, and allows others to re-use regex patterns w/o doing the \i hackery you did
although, the regex it generates is uhh....ugly to say the least
this is one of the reasons why we should avoid using magic regex, we can handwrite it better
yeah I do agree, I just asked for opinion
since the number of programmers that know how to write regex is the minority and not the majority
(although in my opinion, magic regex is harder to write than normal regex, but my opinion also says that regex is easy, so I don't know if I should trust it)
regex is pretty easy, but the way it's written makes it look intimidating if you don't know the syntax
I've noticed a lot of people just don't bother learning it because of that
yop
yeah, they definitely don't help at all
You would need your own language for this kind of stuff because I doubt there's things for regex code string patching that make it easier
well we do have our own regex extensions
i thought about making our own regex "dialect" that allows newlines and comments and stuff
and maybe more shortcuts
but the problem with stuff like this is always ide support
Yeah
especially if u wanna have it inside typescript files
cause then u probably need to fork typescript
how do u use desktop to dev
cause replacing build file so annoying
and custom llocation isnt ever work
i manually set Settings.vencordDir too even
custom location loll
Bad Patches
WebContextMenus (had no effect):
ID: 567068
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
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 ```
Bad Patches
WebContextMenus (had no effect):
ID: 567068
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
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 ```
In a regular expression, shorthand character classes match a single character from a predefined set of characters.
XML Schema, XPath, and JGsoft V2 regular expressions support four more shorthands that arenβt supported by any other regular expression flavors. \i matches any character that may be the first character of an XML name.
so, Vencord has its own implementation of \i that is different than what one might expect - that's important to document somewhere ...
that said in patch helper tab
i mean, I still think it would be nice to add to the PLUGINS.md file i think. Something like:
> **Note**
> You might see the custom regex escape '\i'. This is specific to Vencord and is equivalent to '[A-Za-z_$][\\w$]*'
ven will write new docs on website just dont know when
Never
did discord break webhooks
ye
ayy fixed
it was because i had a (realy terrible) way of checking request ip for github so people cant abuse it
and i recently moved it to cloudflare and forgot to update
so it was checking cloudflares ip lol
fixed
oh silly
i made this in a discord bot
it deleted the messages :p
you know, the funny thing to do would be star spam this repo
way simpler to make a proxy

and when using the bot it would still send u notifs
anyway ghwp is public https://ghwp.vendicated.dev so u can just use it if u want
A proxy to filter star spam from GitHub Webhooks
i did :p
Xd
This looks awesome. Is there any further work that needs to be done on this and is there an ETA on when it will be merged?
Yes, there is. Currently, it uses ur entire system audio (including discord), which means viewers can hear themselves in your stream. Additionally, currently it's not possible to customise resolution & fps. And the ui also needs to be improved
ETA is whenever it's done :P No idea, whenever I find time & motivation to work on it
Are you guys planning t...
@limber skiff nookies honey, wanna merge https://github.com/Vendicated/Vencord/pull/1077 for me?
Yes, there is. Currently, it uses ur entire system audio (including discord), which means viewers can hear themselves in your stream.
Are you guys planning to fix this or is there a roadblock in the way that prevents this from working?
"ETA is whenever it's done :P No idea, whenever I find time & motivation to work on it"
shouldn't need this due to above line
const [tagSettings, setTagSettings] = useState(settings.store.tagSettings as TagSettings);
settings.store.tagSettings ??= defaultSettings;
multi line components should be wrapped in () and start on a new line, like
return (
<div>
</div>
)
Discord Account
PsychoManiac189#0690
What is it that you'd like to see?
I want to be able to change the boring old folder icon to a image file like how you can with the BD plugin
Request Agreement
- [X] This is not a plugin request
Bad Patches
WebContextMenus (had no effect):
ID: 567068
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
Bad Starts
None
Discord Errors
font-weight: bold;
color: purple;
Cannot access 'Jue' before initialization ReferenceError: Cannot access 'Jue' before initialization
at Module.default (WebpackModule393552:2:50)
at VencordWeb:12:719
at VencordWeb:5:8650
at [vencord.lazy.get] (VencordWeb:5:7013)
at Tr.<computed> [as get] (VencordWeb:5:7424)
at Object.handleProtoChange (VencordWeb:33:21354)
at CONNECTION_OPEN (WebpackModule473419:2:5858)
at https://discord.com/assets/c28629f10dab1fec3479.js:9327:766
at https://discord.com/assets/c28629f10dab1fec3479.js:9317:818
at n (https://discord.com/assets/c28629f10dab1fec3479.js:9327:743) ```
Bad Patches
ServerListAPI (had no effect):
ID: 118442
Match: /(Messages\.SERVERS,children:)(.+?default:return null\}\}\)\))/
WebContextMenus (had no effect):
ID: 567068
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
Bad Starts
None
Discord Errors
font-weight: bold;
color: purple;
Cannot access 'Jue' before initialization ReferenceError: Cannot access 'Jue' before initialization
at Module.default (WebpackModule393552:2:50)
at VencordWeb:12:719
at VencordWeb:5:8650
at [vencord.lazy.get] (VencordWeb:5:7013)
at Tr.<computed> [as get] (VencordWeb:5:7424)
at Object.handleProtoChange (VencordWeb:33:21354)
at CONNECTION_OPEN (WebpackModule473419:2:5858)
at https://canary.discord.com/assets/de3a495da4e0451bb7b5.js:9329:766
at https://canary.discord.com/assets/de3a495da4e0451bb7b5.js:9319:818
at n (https://canary.discord.com/assets/de3a495da4e0451bb7b5.js:9329:743)
%c[GatewaySocket]
font-weight: bold;
color: purple;
Cannot read properties of undefined (reading 'appearance') TypeError: Cannot read properties of undefined (reading 'appearance')
at Object.handleProtoChange (VencordWeb:33:21232)
at CONNECTION_OPEN (WebpackModule473419:2:5858)
at https://canary.discord.com/assets/de3a495da4e0451bb7b5.js:9329:766
at https://canary.discord.com/assets/de3a495da4e0451bb7b5.js:9319:818
at n (https://canary.discord.com/assets/de3a495da4e0451bb7b5.js:9329:743)
at t._dispatch (https://canary.discord.com/assets/de3a495da4e0451bb7b5.js:9330:83)
at https://canary.discord.com/assets/de3a495da4e0451bb7b5.js:9329:429
at i.log (https://canary.discord.com/assets/de3a495da4e0451bb7b5.js:9319:782)
at t._dispatchWithLogging (https://canary.discord.com/assets/de3a495da4e0451bb7b5.js:9329:368)
at t._dispatchWithDevtools (https://canary.discord.com/assets/de3a495da4e0451bb7b5.js:9328:797) ```
Mamsmsmsl
makes sense
Like YouTube likes
But unlike YouTube, you have a playlist of liked repos
Well, YouTube music does do that
And stars are one way of discovering repos
Users you follow automatically share their stars with you
Using it I just found ink
(not really, but you get the point)
oops, i went vendetta discord server for plugins (β π β !)
smartest vencord android user
true
@verbal pumice making ur PR ready for review when?
when i figure out how to finish it
Acrylic hasn't affected performance on my devices very much, at least from experience. And even then, it'd be an optional feature. If it's too laggy for you or anyone else then just keep that feature disabled on your client. No need to prevent those like me who like the look it allows for, from using the feature when it'd be an optional one.
Even if it is laggy, it's not like you have to enable it, and some might still like it
I'm not opposed to adding this
you can view your liked videos on YouTube
i go there
also i think google removed pages now
nvm
last time i checked it had infinite scrolling
maybe they reverted the change...
this is same account, same browser
this is so iconic though
you can't take it away :'(
Goooooooooogle
Yes, there is. Currently, it uses ur entire system audio (including discord), which means viewers can hear themselves in your stream.
Are you guys planning to fix this or is there a roadblock in the way that prevents this from working?
"ETA is whenever it's done :P No idea, whenever I find time & motivation to work on it"
Fair enough, I wasn't trying to ask about an ETA but that's still a fair enough answer..
I thought I did, though I was probably just overlooking something.
Adds a translation feature to Discord messages
- Translate any message by clicking on a GT icon next to it
- Choose from over 100 languages supported by Google Translate
- Customize the translation settings in the plugin menu
A similar plugin exists for BetterDiscord: https://betterdiscord.app/plugin/Translator
Oh, thanks; I didn't found that when I was searching for similar posts. Sorry!
Is the webhook set to "all"?
I don't think anyone cares that a random person has starred the repo
yes
there's even a spam filter for stars
wait, maybe not
it's certainly turned on for stars though
as u can see :)
ye
partygopher
wait, how come you can use translate without an api key??

probably against tos
but who cares lmao
even telegram used this at some point lmfao
its dutch π€
huh?
isn't de for german
either that or desktop environment
jk jk 

yes
teeth
I think this is too little content to be in a single file, you could just put it into the index file
if you end up doing a single file for a billion stuff it turns into a mess
thats why im not doing that :P
π
i dont like exporting stuff from index
it's fine then
because circular imports are nasty
oh is it used somewhere else too?
wdym
nOOOO
grrr
we love 4 billion dependencies
big fan of styling
make
this should be in german
ITS NOT
bad
das sollte auf deutsch sein
REAL
das ist fantastisch
okay it worksfully now
like i said, make one! I think u should have perms?
if no just let me know 
I will
I just need to figure how
cuz I dont want to self host the datamining bot
do you mind waiting a bit for me to try to figure how to force update messages?
for what
valid user
okie we can change later if needed
okay, but, like, how do I activate TextReplace
u enable the plugin
I-I don't see the plugin in the plugin section....
Hi! I just made this
Here's a demo:
https://github.com/Vendicated/Vencord/assets/45497981/73792267-1382-4bba-a7d2-8a59193b05d9
If you have any feedback/suggestions for what could be done better, now is the best time to make them
aliucord jumpscare
aww new plugins
* Time duration should allow choosing a shorter one, unless that would cause rate limit issues. For example the plugin changes from Online to Idle after a minimum duration of 5, it would be great if it is possible to choose a shorter duration, unless again it would cause problems.
I opened an issue with the original plugin a year ago asking about this, and they left it at 5m to avoid spamming the Discord API.
use react devtools to inspect the component
jump to location in code
understand how it works
replace their component with your own, possibly pass the original component so you can render it as child
or insert ur component within that component
you can do anything you want with patches
if you need help understanding patches I can hop on a vc to help you
heh, coding at school or just researching ahead of time?
Thanks for the info! And yes I see the concern, but let's assume I am doing it by hand, it would be very similar anyway so I doubt Discord can be 100% sure it is spam, but oh well. 5 minutes is very valid anyway I guess.
the rate limit shouldn't be a concern considering the official mobile app changes you to idle whenever you put the app in the background, which can cause you to rapidly switch between the two if you're multitasking
I don't understand the purpose of this. Isn't this already a stock feature? It sets you to idle after 10 minutes of no activity
The purpose is to switch when window focus is lost, not when whole PC is idle.
Default Discord behaviour is to switch to idle only if you are AFK from the whole PC, not from Discord only.
Plus the requested enhancements/additions to change the "idle" and "active/online" Discord states that it switches between.
one thing missing on vencord desktop compared to webcord is middle mouse scrolling on linux. it's honestly a feature i can't live without personally
import { Devs } from "@utils/constants";
import definePlugin from "@utils/types";
import { Channel, Message } from "discord-types/general";
interface ActionBarProps {
channel: Channel;
unreadId: string;
collapsedReason: {
message: string;
hasMarkdown: boolean;
};
messages: {
type: string;
content: {
type: string;
content: Message;
groupId: string;
isHighlight: boolean;
}[];
key: string;
isHighlight: boolean;
};
}
export default definePlugin({
name: "BlockedShitWhatever",
description: "todo!()",
authors: [Devs.Arjix],
patches: [{
find: "forum-post-action-bar-",
replacement: {
match: /(\w\.type===.{2,5}\.MESSAGE_GROUP_BLOCKED.*?;return\(0,\w\.jsx\)\()(\w+),\{/,
replace: (_, head, component) => `${head}$self.actionBarComponent,{originalComponent:${component},`
}
}],
actionBarComponent(props: ActionBarProps & { originalComponent: React.FC<ActionBarProps>; }) {
// you can do whatever you want
return <props.originalComponent {...props} />;
}
});
@main trout
made the patch for you
nothing should change visually since I re-use the original component, but you can do whatever you want with actionBarComponent and it will replace the blocked message section
(not just the bar)
all it does is replace
with
I didn't send a snippet but an entire plugin, so if you meant just making a new file and pasting that in, yes
i thought you were going to make the plugin?
I only made the patch you might have needed for ur plugin
anyone remember a vide of screenshare coming past where they show off audio share while streaming desktop
vendors
you mean streaming the entire screen and it has Audio?
that's vencord desktop's screenshare lol
but it's not done
could be
i saw it like instantly after i woke up so i dont vividly remember
This is also from the ImageUtilities plugin, for which I've seen a few threads/discussions already.
When you click on the "Save Image" or "Save Video" button, the plugin adds a sub-menu that expands the functionality.
There is a list of specific folders that you can select from in this submenu.
Each folder represents a designated location on your device where you can save and download the file.
Plugin in use:

@austere talon can we have perms to link an announcements channel
it's for the datamining
I'm gonna link oceanic datamining channel here
worked
why do u need manage server to subscribe to a channel
it would make much more sense to just need manage channel
discord insane
react
are you sure you want a video attached with a slur?
**PickerContent.tsx: **Lines 74-81
const [isCtrlDown, setIsCtrlDown] = React.useState(false);
React.useEffect(() => {
const cb = (e: KeyboardEvent) => setIsCtrlDown(e.ctrlKey);
window.addEventListener("keydown", cb);
return () => window.removeEventListener("keydown", cb);
}, []);
If you have any feedback/suggestions for what could be done better, now is the best time to make them
Auto translate every message, and if it is detected in a different language from that that it is translating to then automatically show the translation pop up
or import a css file
look at GameActivityToggle
or in your local copy
just look at its source code
note the css import at the index file
and the enabling/disabling of it in the start/stop method
yes
that's no custom stuff
that is modifying built in discord stuff
you shouldnt hardcode class names though
.isUnread-3Lojb-
^^^^^^
this is random
avoid making your css rules depend on it
[class*="isUnread"]
maybe that
that might select other stuff though
where can i find its branch? or is it there but just disable
having trouble finding it π
the hell
@main trout
why are you writing css for the built-in discord component for this?
the entire point of making the patch is replacing the component with your own
so its already in the main branch?
its on another repo
the screensharing is a PR
ohhh ig i was on Ven's Vencord 
lmao
:^)
my life
it's ok my graph's slowly turning back into that too
(might want to move to #π§-off-topic-iceman-only btw)
pnpm build --watch
pnpm inject
no only the first time
and gotta redo it when discord updates (i think) and when you inject from a different source
There is a limit of 10 files per single upload, if possible, can you make a plugin that bypasses this limit? Like we would be able to drag & drop around 50 files (or more) and the plugin would automatically split these into multiple "messages". It would be very nice because the user doesn't have to jump between the File Explorer and Discord back and forth.
you created an empty plugin file
while that would indeed be cool, I highly doubt this is doable, because the plugin already abuses a private api you're not meant to be using and you would likely get rate limited by sending so many requests to Google
are you sure you want a video attached with a slur? :E
sorry, I wasn't paying attention to the actual text lol, that channel was convenient for testing because it has so many unknown mentions. I'm too lazy to change the video now
while that would indeed be cool, I highly doubt this is doable, because the plugin already abuses a private api you're not meant to be using and you would likely get rate limited by sending so many requests to Google
Could you have a way for us to input our own API key?
It's quite bad, someone could even report it (idk if it violates github's policies just having a screenshot or video of what someone else said)
new video have fun
this ones better
check the console for errors on those 2 ids that failed
was it a 404 or 429
idk discord moment lmao
better video that also doesnt have ohnoslur1!!1 :trollface:
https://github.com/Vendicated/Vencord/assets/24845294/c140a43b-9454-473b-9cee-5fc87c248525
SHOWCONNECTIONS
explode
e63026e ShowConnections: Add verified & copy/link icons... - Vendicated
Not sure if Copy/Link icon would look better in front of the text instead of after
https://github.com/Vendicated/Vencord/assets/45497981/9b0d72ba-2386-4c65-a6af-ab7a2bc9c9eb
@lime stone
click here
then look for the desired property
its in rgb by default, if u shift click it you can change format
computed tab is really useful
in the the normal one it's painful to understand what's going on if there's like 20 rules applying to the element
yooo
46df850 Properly type useToken - Vendicated
Maybe have the tick before the copy/link
with some very basic quickcss rules, it's possible to replace the pleading emoji with the old one client side, it'd be nice though to replace it with the old one (e.g. as a configurable custom emoji from a server) when sending a message, so that non-vencord people also see the old one
couldn't you just use a custom emote

like this
what in the world are your classnames

@austere talon i just saw the new readme, but i think it would be better like this :3
i just don't understand
how could you miss it
tbh i do like being slightly more serious because we're not small anymore
I feel like having weird spam in the readme will make a lot of people think it's sus xd
π
pretty sure the Join spam was almost initial commit
please don't become... one of them
aka baby vencord
maybe experience with my show connections pr and see which one you like the most? @lime stone
seems easier than me showing u a bunch of options xd
experience?
I meant experiment
ah

I don't care much about the design so if you have any sort of preference it's best u show how u want it
I just yoinked icons from discord and yeah
tbh the changes i suggested are all i wanted
i don't think i need to try it because i can see it in my head
yeah, freaky
lmaoo war crimes
so, when is a BETA going to be available?
hi btw!
i recognise you
it's easy for you to recognise yourself
i recognise myself btw!
me too!!
soon
what happen
aww i was going to make up a story
:(
well i recognise your avatar and name, idk if we interacted
oh cool
oh ye i kind of remember that
but idk how much before that
warning though, you might be exiled from moderation
hm, that'd be more likely to happen on quilt xD
Bad Patches
ServerListAPI (had no effect):
ID: 118442
Match: /(Messages\.SERVERS,children:)(.+?default:return null\}\}\)\))/
WebContextMenus (had no effect):
ID: 567068
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
Bad Starts
None
Discord Errors
font-weight: bold;
color: purple;
Cannot access 'hfe' before initialization ReferenceError: Cannot access 'hfe' before initialization
at Module.default (WebpackModule70659:2:50)
at VencordWeb:12:719
at VencordWeb:5:8650
at [vencord.lazy.get] (VencordWeb:5:7013)
at Tr.<computed> [as get] (VencordWeb:5:7424)
at Object.handleProtoChange (VencordWeb:33:21354)
at CONNECTION_OPEN (WebpackModule473419:2:5858)
at https://discord.com/assets/b7361d105f365bd5222b.js:9334:766
at https://discord.com/assets/b7361d105f365bd5222b.js:9324:818
at n (https://discord.com/assets/b7361d105f365bd5222b.js:9334:743)
%c[GatewaySocket]
font-weight: bold;
color: purple;
Cannot read properties of undefined (reading 'appearance') TypeError: Cannot read properties of undefined (reading 'appearance')
at Object.handleProtoChange (VencordWeb:33:21232)
at CONNECTION_OPEN (WebpackModule473419:2:5858)
at https://discord.com/assets/b7361d105f365bd5222b.js:9334:766
at https://discord.com/assets/b7361d105f365bd5222b.js:9324:818
at n (https://discord.com/assets/b7361d105f365bd5222b.js:9334:743)
at t._dispatch (https://discord.com/assets/b7361d105f365bd5222b.js:9335:83)
at https://discord.com/assets/b7361d105f365bd5222b.js:9334:429
at i.log (https://discord.com/assets/b7361d105f365bd5222b.js:9324:782)
at t._dispatchWithLogging (https://discord.com/assets/b7361d105f365bd5222b.js:9334:368)
at t._dispatchWithDevtools (https://discord.com/assets/b7361d105f365bd5222b.js:9333:797) ```
Bad Patches
ServerListAPI (had no effect):
ID: 118442
Match: /(Messages\.SERVERS,children:)(.+?default:return null\}\}\)\))/
WebContextMenus (had no effect):
ID: 567068
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
Bad Starts
None
Discord Errors
font-weight: bold;
color: purple;
Cannot access 'ife' before initialization ReferenceError: Cannot access 'ife' before initialization
at Module.default (WebpackModule450343:2:50)
at VencordWeb:12:719
at VencordWeb:5:8650
at [vencord.lazy.get] (VencordWeb:5:7013)
at Tr.<computed> [as get] (VencordWeb:5:7424)
at Object.handleProtoChange (VencordWeb:33:21354)
at CONNECTION_OPEN (WebpackModule473419:2:5858)
at https://canary.discord.com/assets/5317436ce62eab80877e.js:9332:766
at https://canary.discord.com/assets/5317436ce62eab80877e.js:9322:818
at n (https://canary.discord.com/assets/5317436ce62eab80877e.js:9332:743)
%c[GatewaySocket]
font-weight: bold;
color: purple;
Cannot read properties of undefined (reading 'appearance') TypeError: Cannot read properties of undefined (reading 'appearance')
at Object.handleProtoChange (VencordWeb:33:21232)
at CONNECTION_OPEN (WebpackModule473419:2:5858)
at https://canary.discord.com/assets/5317436ce62eab80877e.js:9332:766
at https://canary.discord.com/assets/5317436ce62eab80877e.js:9322:818
at n (https://canary.discord.com/assets/5317436ce62eab80877e.js:9332:743)
at t._dispatch (https://canary.discord.com/assets/5317436ce62eab80877e.js:9333:83)
at https://canary.discord.com/assets/5317436ce62eab80877e.js:9332:429
at i.log (https://canary.discord.com/assets/5317436ce62eab80877e.js:9322:782)
at t._dispatchWithLogging (https://canary.discord.com/assets/5317436ce62eab80877e.js:9332:368)
at t._dispatchWithDevtools (https://canary.discord.com/assets/5317436ce62eab80877e.js:9331:797) ```
maybe you should use more standard class names
well, not with random letter afterwards
why betterBlockedUsersClass-3l6Xi as opposed to betterBlockedUsersClass?
or vc-better-blocked-users
then why are you putting random characters in there 
do vc-pluginname-classname
thatβs somewhat the standard format
the name of the class 
my face when Tailwind users do not know how to name classes in normal CSS
i dont think this person uses tailwind

[Reply to:](#πΎ-core-development message) always tailwind :3
oh
**index.tsx: **Line 77
<span className="vc-betterblockedusers-button" role="button" tabIndex={0}>Blocked Message</span>
**index.tsx: **Line 50
// default: true
match it
it's very situational how you do that so it's not that simple to answer
show what the patched code looks like
the output code that contains ur patch
search for actionBarComponent,{originalComponent in discords code and show that part
the part that contains ur patch
you probably just need to render originalComponent
look at its code then
and see what's going on there
this could be merged now but ill be adding more features soon
Then this shouldn't be merged, as it is not complete.
you already have the messages in the props, if I were you I'd re-use discord's message component
props.messages.content is an array of the messages
you just need to find discord's component for a message and render it
**messageLinkEmbeds.tsx: **Line 48
const ChannelMessage = LazyComponent(() => find(m => m.type?.toString()?.includes('["message","compact","className",')));
**messageLinkEmbeds.tsx: **Lines 281-286
<ChannelMessage
id={`message-link-embeds-${message.id}`}
message={message}
channel={channel}
subscribeToComponentDispatch={false}
/>
@main trout
my general advice is to just think of what you want to do
and look at other plugins that may do smth similar
update on message notes, turns out using createBotMessage works just as well but somewhere it fails on "blablabla t.IsFirstMessageInForumPost is not a function"
not sure if this is a channel prop or message prop but shrimply adding it and setting it to false doesn't work so kinda been stuck for a while
wha?
when does it fail
not fully following 
after you call createBotMessage?
what r u making
he's trying to make a thing that does a thing when another thing happens, but when he tries to run the thing, it errors with "blablabla thing is not a function"
so yeah the thing isnt working
why are you asking that though
instead of "can you show code?"
its as if you are always judging us
because code is useless if i dont know what you're trying to make
i didnt understand what they were saying cause what's message notes supposed to be
asking for code instead of for what specifically is being made would feed into https://xyproblem.info/
Asking about your attempted solution rather than your actual problem
you make it sound as if you would help find a solution
ci borked
thats just not true?
i review every single pr, provide suggestions, help people find modules / the right code, etc
your "help" is always going to the direction of "your approach is wrong, use another one"
even if that is not technically true all of the time
you ask questions, and most of the time you disappear when someone answers
dunno if you only do that with me, if it is personal, or thats just how you are
but 90% of the time I seek help, you basically shrug me off and tell me to just look for the answer myself
this implies that you are willing to provide your own solution instead of the "attempted solution"
smth you wouldn't do
you only make questions and help the other person ask the "right" (in ur opinion) question
which will not accomplice what you want
you either have to patch the component itself rather than use it
or re-make it from scratch (by using the ChannelMessage component that I linked)
**Status.tsx: **
import { FC } from "react";
import { useLanyard } from "react-use-lanyard";
const Status: FC = () => {
const { loading, status } = useLanyard({
userId: "694604709591384226",
socket: true,
});
const getColor = () => {
switch (status?.discord_status) {
case "online":
return {
status: "online",
color: "text-green-600",
};
case "idle":
return {
status: "idle",
color: "text-yellow-700",
};
case "dnd":
return {
status: "busy",
color: "text-red-700",
};
default:
return {
status: "offline",
color: "text-grey-500",
... (35 lines left)
a plugin, whereas the top most role color makes the color of the message from that user changes color to that of the aforementioned role color
based on BetterRoleColors from BetterDiscord: https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/BetterRoleColors
(i really really enjoy using this one tbh fhsfgsdhj)
I can barely understand what you want to approach
who? me?
no thundxr
or IThundxr
he wants to make the blocked section look pretty by replacing the bar and stuff
iirc he already made it look pretty in his PR
but the only missing thing is the messages not being rendered
since they are replaced by his component
oh
I am free to VC once again if you want help
you honestly should learn basic react in a normal project before attempting to mod discord
other than the css variables (--) the linter will shout at you for using -ms-flex and stuff
otherwise you're not gonna have a great time
use normal flex
dunno if it was intended or not
don't use prefixed properties there is no need to
but eslint does shout for vendor specific css
there are only very few non standard properties where you need to use -webkit prefix
lmao dont copy paste discord css
if u want their styles, use their components / classes
I love it when people overwrite a style property multiple times in the same block
I mean, ven response did tell exactly what you needed to do
let a = 5;
a = 4;
a = 2;
// why is "a" 2 and not 5?
nope
yes it did
^^
either patch (not replace) the original component, or re-make it using what it uses
otherwise the plugin would achieve nothing
1 sec
why use the original component? what would be the point of replacing it then?
i hope you can realize this
as I said, 1 sec
oh well
how do I checkout the pr it's on the main branch

you should not make pull requests in the main branch
make a new one for it
you temp rename ur local main branch, and then add the origin
rename the main branch of IThundxr
and rename urs back to main
cant cuz I'm using my fork lol
git branch -M mmain
git remote add IThundxr https://...
git fetch IThundxr
git switch main
git branch -M IThundxr
git switch mmain
git branch -M main
git switch IThundxr
pain, I know
(assuming you don't have the upstream main branch as well)
I got it already thanks
i told them to look at the code of the original component to figure out what it does
it's likely that it has some sort of state isExpanded
you could just change that to always be true and use css to hide the extra stuff then render it
and you think that alone would be helpful to a person who is clearly new to this?
his advice is as helpful as "mess around to find out"
which works well for me, but to a new person that would be an overload of information to do that
react dev tools
and then jump to the sources tab using it
add a breakpoint
poor cyph
- viewing profile opens a popup that has large as for desktop or destop site
- there no option to see pinned messages
it's for testing π’
whew
this is bad
message component is not exported
and there's 2 of them
one for thread starter message
one for normal
we love discord
discord trying not to write separate components for every minor difference
this is the blocked message component
if u hardcode this to true instead of y (y = isExpanded)
it will always show the collapsed content
then you can use css to hide this bit
the 1 blocked message header
that is what i said here
ven used brain
I was going to get the component and render it myself 
nono
you need to patch it
you would want to change this code to ```js
y || $self.shouldShowContent(idk, some, data, youMightNeed) ? i.content.map...
then u can hide this part of the component with css like i said
you also need to render the original component
alternatively, change the code here from (0, r.jsx)(vl to (0, r.jsx)($self.isManagedByUs(idkSomeData) ? () => null : vl, but that is harder than using css so I find css the better solution
why do people want split large messages so badly
r u sending beemovie inside discord or what
also why not just use upload as file
@main trout
export default definePlugin({
name: "Better Blocked Messages",
description: "this changes blocked messages to be cleaner and better \n\n\nThanks to ArjixWasTaken for the patches code",
authors: [Devs.IThundxr],
// settings,
patches: [{
find: "isBeforeGroup:",
replacement: {
match: /(function \w+\(\w\)\{var \w=\w\.expanded,\w=\w\.onClick,\w=\w\.count,\w=\w\.compact.{1,5}\.collapsedReason;return\(0,\w\.jsx\)\(\w+\.Z,{.*?childrenMessageContent:\(0,\w\.jsx\)\()\w+\.Z,/,
replace: (_, head) => `${head}$self.actionBarComponent,`
}
}],
actionBarComponent(props: { children: React.ReactNode[]; compact: boolean; }) {
console.log("ayo??", props);
return (
<div>{props.children}</div>
);
},
start() {
enableStyle(style);
},
stop() {
disableStyle(style);
}
});
should bring you closer to what you want
description: "Input language for sent messages",
description: "Output language for received messages",
description: "Output language for sent messages",
description: "Automatically translate your messages before sending",
it replaces the old one
well, that is technically correct
I only return props.children bc I don't have anything else to return tho
thats ur part of the task
actually you can shorten the patch to
patches: [{
find: "isBeforeGroup:",
replacement: {
match: /(\.collapsedReason;return\(0,\w\.jsx\)\(\w+\.Z,{.*?childrenMessageContent:\(0,\w\.jsx\)\()\w+\.Z,/,
replace: (_, head) => `${head}$self.actionBarComponent,`
}
}],
(I am talking about the regex)
for the plugin
could there be a setting added so we don't have to hold shift to delete a message
I mean since its showing all buttons on a message why not?
making a serperate plugin would be a waste ig
it's called quickdelete
what
true
someone wouldnt read the ShowAllMessageButtons plugin and figure it also allows you to delete messages without holding shift
then what they said
experiments -> favorites server (or favorites guild dont remeber how it was called)
If this isn't enough, the idea is that as long as you are using your PC you are online on Discord, and people might think you are ghosting them, so I guess it is just a solution for people who want to leave Discord open for any important stuff and get notifications, but not be thought of as rude/ghosting.
I haven't looked too closely tbh... but the code doesn't seem to be smelly and it looks good
Ayo Vencord creators! What's your idea of what to add to the "ChannelTabs" plugin from betterdiscord?
there's a PR in the works i believe
oh god..
?
dude I've been getting so many [Vendicated/Vencord] emails from github that my email service started marking them all as spam
why do you have it set up to send notifications there?
(says me whilst also doing the same)
cause I like staying up to date
you dont use the mobile github app?
I don't check github notifications
it sucks ass
I use email & discord webhook for notifications
but not for viewing code ofc
u will use gloom 
gloom not ready yet tho
make it ready
finish glooom @jagged cloak
nopp tell zt
@swift fjord finish gloom soon
please PLEASE please please please βΌοΈπ #π₯-vencord-support-π₯ πβΌοΈ
we will make it like the aur "captcha"
to get access you need to run a snippet in the console and paste the output
a bot will give you access if its the correct thing
soon
Any update? This seems like it'd be an easy thing to implement. You can add css code to do it automatically (but super jank) that's only a few lines
if it's easy, why not do it yourself? contributions are always welcome :)
Bla bla bla bla
Patch
I don't think that's it
wrong question
sighs
one sec
lemme pull your commits
bruh
is this ur "pretty" line?
why always expanded?
actionBarComponent(props: { children: React.ReactNode[]; compact: boolean; }) {
if (!props) return null;
// @ts-expect-error
const onClick = props?.children?.props?.children?.find(c => c.props && c.props.role === "button" && c.props.onClick !== undefined)?.props?.onClick as () => void;
return (
<div>
<div className="vc-betterblockedusers-main" id="---blocked-message-bar" role="separator">
<span className="vc-betterblockedusers-divider">
<svg className="vc-betterblockedusers-svg" aria-hidden="true" role="img" width="8" height="13" viewBox="0 0 8 13">
<path className="vc-betterblockedusers-color" stroke="currentColor" fill="transparent" d="M8.16639 0.5H9C10.933 0.5 12.5 2.067 12.5 4V9C12.5 10.933 10.933 12.5 9 12.5H8.16639C7.23921 12.5 6.34992 12.1321 5.69373 11.4771L0.707739 6.5L5.69373 1.52292C6.34992 0.86789 7.23921 0.5 8.16639 0.5Z"></path>
</svg>
<span className="vc-betterblockedusers-button" role="button" tabIndex={0}>Blocked Message</span>
</span>
</div>
<button onClick={onClick}>Show</button>
</div>
);
},
there you go
how did you think discord changed the isExpanded value?
ofc with a callback
all you had to do was find the callback
this is horrible don't do this
wdym horrible? it uses discord's callback
match the state within your patch or replace it entirely with your own check
a patch could expose the callback if you think that is better
but it is as horrible (in your opinion)
are you talking about the way I find the callback?
fine
found a better way
export default definePlugin({
name: "Better Blocked Messages",
description: "this changes blocked messages to be cleaner and better \n\n\nThanks to ArjixWasTaken for the patches code",
authors: [Devs.IThundxr],
// settings,
patches: [{
find: "isBeforeGroup:",
replacement: {
match: /(\.collapsedReason;return\(0,\w\.jsx\)\(\w+\.Z,{.*?childrenMessageContent:\(0,\w\.jsx\)\()\w+\.Z,{/,
replace: (_, head) => `${head}$self.actionBarComponent,{...arguments[0],`
}
}],
actionBarComponent(props: {
onClick: () => void;
expanded: boolean;
count: number;
compact: boolean;
collapsedReason: unknown;
}) {
if (!props) return null;
const { onClick } = props;
// const { showingAllowed } = settings.use(["showingAllowed"]);
return (
<div>
<div className="vc-betterblockedusers-main" id="---blocked-message-bar" role="separator">
<span className="vc-betterblockedusers-divider">
<svg className="vc-betterblockedusers-svg" aria-hidden="true" role="img" width="8" height="13" viewBox="0 0 8 13">
<path className="vc-betterblockedusers-color" stroke="currentColor" fill="transparent" d="M8.16639 0.5H9C10.933 0.5 12.5 2.067 12.5 4V9C12.5 10.933 10.933 12.5 9 12.5H8.16639C7.23921 12.5 6.34992 12.1321 5.69373 11.4771L0.707739 6.5L5.69373 1.52292C6.34992 0.86789 7.23921 0.5 8.16639 0.5Z"></path>
</svg>
<span className="vc-betterblockedusers-button" role="button" tabIndex={0}>Blocked Message</span>
</span>
</div>
<button onClick={onClick}>Show</button>
</div>
);
},
start() {
enableStyle(style);
},
stop() {
disableStyle(style);
}
});
@main trout
?
onClick={onClick} is the magic part
impossible
it does work
if your onClick doesn't fire that means there is an element higher up the element tree that handles clicks
also turning random html elements into buttons is very bad for semantics
i would always try to use semantic elements
aka use an actual button for buttons
<button className="myButton">Blocked Message</button>
<style>
.myButton {
/* unset EVERY css property, this is the magic that makes it not an ugly button */
all: unset;
/* restore the interactive cursor on hover */
cursor: pointer;
}
/* adding a :focus style back is important so keyboard users can tell this element is focused, all: unset removes the default one */
.myButton:focus {
outline: 1px solid someColor;
}
</style>




- Vendicated
