#👾-core-development
1 messages · Page 50 of 1
i thought you were just using the plugin for the toggle
what toggle?
to enable and disable the tab
a tab provided by a plugin
is there an api now?
no
ah, so i guess the only issue is it's a tiny bit hacky
not really hacky
well it's plugins referencing one-another
the theme settings aint a plugin
although it is not merged yet
https://github.com/Vendicated/Vencord/pull/635
ah, i see
oh well i don't think there's anything i haven't already said then
your pr looks very nice
this aint mine
i mean yours
not that
wait... actually i think these (tags and query) should be swapped if i didn't already say
otherwise it's inconsistent with the plugin filtering ui
you could combine them
oh that's true
welp, already pushed
https://github.com/Vendicated/Vencord/pull/956
i've managed to get this working on channel tabs (before it said unknown)
@verbal pumice should i open a pr on your fork or would it be better if you invited me?
It basically makes you fake deaf or mute and you can still hear them and talk.
It already exists and works in BetterDiscord.
https://github.com/Tharki-God/BetterDiscordPlugins/blob/master/FakeDeafen.plugin.js
How long would it take to import this?
This has already been rejected for being creepy as fuck.
^ also against the rules
Can I add it manually?
No, and you are weird for wanting to use this feature for whatever
It's against the rules on the Discord server btw (assuming you didn't see flag's response).
and iirc it was already made as a third party plugin, dunno if its deleted
it was made
its an omega old pr
i don't understand why anyone would want it though...
And it was rejected
to be a weirdo
unless you're trying to manipulate people or something nasty
I never use deafen, i just mute
i dont see the point of it
**fakeVoiceOptions.ts: **
import definePlugin from "../utils/types";
import { ApplicationCommandInputType, ApplicationCommandOptionType, sendBotMessage, Argument } from "../api/Commands";
import { Toasts } from "../webpack/common";
const config = {
fake_mute: false,
fake_deafen: false,
};
const optionChanged = (option: string, value: boolean) => {
Toasts.show({
message: option,
id: Toasts.genId(),
type: value ? Toasts.Type.SUCCESS : Toasts.Type.FAILURE,
options: {
position: Toasts.Position.BOTTOM,
duration: 1000
}
});
}
export default definePlugin({
dependencies: ["CommandsAPI"],
name: "Fake Voice Options",
description: "Fake mute, deafen",
authors: [{
name: "SaucyDuck",
id: 1004904120056029256n
}],
patches: [
... (50 lines left)
thank you! probably a pr would be better
ah, i just want to make more changes so it may get a bit noisy
I personally think the style should be closer to either chromium or firefox
but in terms of functionality it is quite nice!
it seems the settings page crashes
?
if you open the settings for tabs
if you wanna add some more stuff sure, no problem!
oh, i suppose it could be the same PR!
oh that
any clue why it occurs?
i rewrote how settings are stored and didnt bother writing migration code
yeah probably
i'll check
probably tomorrow as i have a bunch of stuff to do today
things which i think would be nice and i may be able to help implement (if i'm not too stupid) is ctrl+t, ctrl+w (if you can capture it somehow since it seems to close the whole app) and ctrl+tab (maybe even with an option have a firefox-style overlay with tab previews :P maybe too hard)
(maybe just the overlay without previews)
well ofc it's not going to contain a mapping for the user id by default https://cdn.discordapp.com/emojis/1034127736609980486.webp?size=48&name=ioa&quality=lossless
ctrl+t is ctrl+n atm since i have no idea how to replace discord's one
and ctrl+w is a thing but i didnt know that closes the app lol
wow i never knew ctrl+tab was a thing thank you
is that sarcastic or did you genuinely not know?
i actually didnt know
currently i went with ctrl+➡️ and ctrl+ ⬅️ for switching between tabs
but thats better imo
currently it's one of js's many nulls
yeah most likely
firefox even has an alt+tab like overlay (before they removed it, but you can enable it again)
keybinds would be in settings if they didnt crash 
(well I think it may be quite easy to, I think I used about:config for some reason though xD)
haha
also something to not conflict with browser shortcuts would be needed
if you actually run discord in a browser
i do, but this plugin is less useful in the browser
vencord desktop is a lot more useable
dont ask to ask
you can ask in #🏥-vencord-support-🏥 if you haven't already!
I think it's fair to ask how to ask
your status doesn't make me want to help tbh...
oh
can we hook into discord's internal keybinds or is that not possible?
found smth
you reminded me
(that this feature exists)
xD
oof, this is for the popup that explains the shortcuts
i think I figured how keybinds work
I will make an API for them ig
what is it
can you assign it to me?
you have to reply to it for that
Because Discord React native is a garbage app that doesn't show people as online
it says n-word down like dominos
can u just add ur own object with binds & action and it works?
ill try
love
well, that alone aint enough
anyways, imma go out with the boys, will continue this in the evening
i didn't want to say tbh but autumn has answered
bois
nice!
yes bois did need a ping (this was a mistake)
Deploying with <a href="https://pages.dev"><img alt="Cloudflare Pages" src="https://user-images.githubusercontent.com/23264/106598434-9e719e00-654f-11eb-9e59-6167043cfa01.png" width="16"></a> Cloudflare Pages
<table><tr><td><strong>Latest commit:</strong> </td><td>
<code>c4eccaf</code>
</td></tr>
<tr><td><strong>Status:</strong></td><td> ✅ Deploy successful!</td></tr>
<tr><td><strong>Preview URL:</strong></td><td>
<a href='https://67e12d74.vencord-website.pages.dev'...
horror
pick ur fighter
F
how do i make them public
it was cause I accidently turned this on
and you can only disable it with manual api requests
10/10 UX cloudflare 
https://community.cloudflare.com/t/how-can-i-disable-the-access-policy-of-cloudflare-pages/292358/11
Given the lack of a straightforward solution, I will give it here after this happening to me twice. PLEASE NOTE THAT I AM NOT RESPONSIBLE FOR ANY DAMAGE DOING THE BELOW STEPS HAPHAZARDLY MAY DO. BLAME CLOUDFLARĘ FOR NOT PROVIDING AN UI FOR THIS. You want to call the following commands. Ignore <>, only copy the pure strings or numbers mentioned...

It’s disappointing that a restrictive feature that can be enabled from the dashboard can only be disabled by an api call or adding payment info.
average cloudflare ux
sorry pay us

nono
its literally free
but
u gotta provide payment info to enable it
so dumb
you can enable it without adding payment method but cant disable it again and the default settings are restrictive lmao
oh bruh
honestly doubt it's on purpose considering u can fix it with manual api request
probably just an oversight
Title may be a bit vague, Let me explain.
This idea is for the addition of a toggle to the FakeNitro plugin's emoji category.
If there is nothing in the messagebar, and then a user does : and start's typing for an emoji, show the nitro emojis too. If there is already content in the messagebar, and then the user is adding an emoji, don't show the nitro emojis and show only default emojis and guild emojis. This is so that a message doesn't look like this

not trying to be rude, but if you dont want that then go buy nitro instead or disable it in the plugin settings completely ._.
Doesn't really do what I mean. I meant to not include the fake emoji autocomplete at all when it's a compound sentence
doesnt make sense considering what theyre asking but i dont usethe plugin so ok
i think they're asking for the plugin to stop working if there's already text in the message bar
but... it's really not that hard to remember to send a message and then send an emoji right after it to avoid the link
or you can just cut the emoji, send the message and paste the emoji
small indie company
lmaoo not the imagezoom controls
lmao
look in devtools its literallly got a navid of image context
??? discord on drugs
i like the idea, would use it so much
could have had a server with them emotes + fakenitro
I think this looks cute
apart from the new tab placement
maybe i should've tried to improve it while sticking to the chromium style
I think having the tabs attached looks weird because it doesn't match the colour though
for the love of god center the plus icon
^
this was an issue before i tried to pr on the pr :P
the entire ui shifts cause of the scroller lmao
my hatred
wait i fixed it and it was super easy @turbid hatch
did you just add padding on the right when the scroller is off?
hmm?
lmao true
no thats too much effort
I think this looks a bit nicer than before
i quite like it
is there a possibility to like
have a white underline
to the whole tab
when unread messaged are present for that tab
maybe i should ask the sun what he thinks so far
before the spacing was kind of buggy
oh i think i know
we love deprecated values
the html spec authors carefully deprecating the best properties ever
i discovered a deprecated property

i added search & criteria filters https://plugins-svelte.vencord-website.pages.dev/plugins
\✔ Has commands
Fart2
idk a time when people would be looking for web only plugins
considering 99% of plugins will work on both web and desktop 
someone else needs a diet
u
fuck
i pushed to wrong place
smart
wow adding this was super easy
i normally just do overflow-y: scroll so the scrollbar is always there and so margin/padding will be visually consistent regardless of if it's there or not
but i suppose the scrollbar-gutter property exists now too
i love this cat
thats really ugly
it does and it works but it always adds a padding which doesnt work with our site properly
but overlay means that some of your margin will be eaten up on one side when the scrollbar is there
wdym?
it just makes the scrollbar overlap with the ui yeah
yeah, so there will visually be a bit less margin on one side and on narrow viewports it'll be more clear that things look off center
ig
there isnt really a good solution to this
scrollbars suck
gonna never show scrollbar /s
it's kinda funny that i have to pass an unused parameter or it doesn't update on filter & leaves stale tooltips
what is astro cooking with [0,false]
https://github.com/Vencord/Website/blob/plugins-svelte/src/components/pages/plugins/Plugins.svelte#L105-L110 u can now xss the vencord website by putting html in ur plugin description
**Plugins.svelte: **Lines 105-110
<p
use:overflowTooltips={p}
class="description ellipsis-overflow"
>
{@html highlightMatches(p.description)}
</p>

Where does it get plugin info from
it's just a redirect to github raw 
Ah it makes a JSON file when you build it
it's generated with this script via github workflows https://github.com/Vendicated/Vencord/blob/main/scripts/generatePluginList.ts
**generatePluginList.ts: **
/*
* Vencord, a modification for Discord's desktop app
* Copyright (c) 2023 Vendicated and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { Dirent, readdirSync, readFileSync, writeFileSync } from "fs";
import { access, readFile } from "fs/promises";
import { join } from "path";
import { BigIntLiteral, createSourceFile, Identifier, isArrayLiteralExpression, isCallExpression, isExportAssignment, isIdentifier, isObjectLiteralExpression, isPropertyAccessExpression, isPropertyAssignment, isStringLiteral, isVariableStatement, NamedDeclaration, NodeArray, ObjectLiteralExpression, ScriptTarget, StringLiteral, SyntaxKind } from "typescript";
interface Dev {
name: string;
id: string;
}
interface PluginData {
name: string;
... (162 lines left)
Nice
The plugin would allow the user to get an in app or desktop notification when a word or ping has been typed, the uses would be for instance you have a server you don't look at often but you want to get notified if they ever say your name or if you're modding a server, you could have a keyword for "help" "where mods" and there'll be many other uses.
The notification could be something like "Keyword () in channel, server".
i didnt know u could search the prs with the hashtag lmao
i mean tbf thats the first discussion about that it was just never finished lmao
@cunning bobcat finish wen
Solves the following issue
Have linted and tested on Discord Canary, has no more issues.
Made a pull request here that solves this issue.
I mean you can keep it open for now since it's technically not finished and this is the first request about it, just theres a (draft) pr open for it :trollface:
doesn't this make the individual avatars not clickable?
Clicking on the avatars opens the profile without it reacting, and reacting works fine if not clicking on the avatars. So not entirely sure what your question is, apologies.
5be86f9 WhoReacted: Fix clicking user pfps also adding ... - KannaDev
@austere talon https://dev.revanced.app/patches?s=ven
ven will steal
VEN

PronounDB (had no effect):
ID: 507250
Match: /\(0,.\.jsx\)\((?<PronounComponent>[A-Za-z_$][\w$]*\..),(?<pronounProps>{currentPronouns.+?:(?<fullProps>[A-Za-z_$][\w$]*)\.pronouns.+?})\)/
UserVoiceShow (had no effect):
ID: 1764
Match: /,{user:\w{1,2}}\)(?!;case)/
WebContextMenus (had no effect):
ID: 638525
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
WebContextMenus (had no effect):
ID: 638525
Match: /("submit-button".+?)(\(0,[A-Za-z_$][\w$]*\.jsx\)\([A-Za-z_$][\w$]*\.MenuGroup,\{children:[A-Za-z_$][\w$]*\}\),){2}/
PronounDB (found no module):
ID: -
Match: .Messages.USER_POPOUT_PRONOUNS
None
PronounDB (had no effect):
ID: 507250
Match: /\(0,.\.jsx\)\((?<PronounComponent>[A-Za-z_$][\w$]*\..),(?<pronounProps>{currentPronouns.+?:(?<fullProps>[A-Za-z_$][\w$]*)\.pronouns.+?})\)/
UserVoiceShow (had no effect):
ID: 1764
Match: /,{user:\w{1,2}}\)(?!;case)/
WebContextMenus (had no effect):
ID: 638525
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
WebContextMenus (had no effect):
ID: 638525
Match: /("submit-button".+?)(\(0,[A-Za-z_$][\w$]*\.jsx\)\([A-Za-z_$][\w$]*\.MenuGroup,\{children:[A-Za-z_$][\w$]*\}\),){2}/
PronounDB (found no module):
ID: -
Match: .Messages.USER_POPOUT_PRONOUNS
None
Cannot use SettingsStoreAPI without setting as dependency.
@austere talon 
snooper
when i stop being lazy 
trol
altough
with the new notification log feature, the thing im working on that isnt done might be useless
yeah but KeywordAlerts uses vencord notifs, no?
okay yeah, ping me in about 5 hours and i'll see what i can do
ye
wdym useless then i thought you meant the plugin would be useless
this works fine
this patch adds a button top right, for this button
lol
Tell us all about it.
See the problem!
https://youtu.be/WXb-LzqiFBE
Request Agreement
- [X] This is not a support or plugin request
that's an issue with your theme, not Vencord.
that's an issue with your theme, not Vencord.
and vencord supports betterdiscord themes, so if it works correctly in bc, it should in vencord too
that's an issue with your theme, not Vencord.
and vencord supports betterdiscord themes, so if it works correctly in bc, it should in vencord too
your theme is boldly assuming there will always only be 3 elements. Adding the game activity toggle adds a fourth so your theme breaks. This is simply your theme at fault, complain to the author, fix it yourself, or use a different theme.
your theme is boldly assuming there will always only be 3 elements. Adding the game activity toggle adds a fourth so your theme breaks. This is simply your theme at fault. Complain to the author, fix it yourself, use a different theme or don't use the plugin.
Logically, if I knew how to fix it, I wouldn't be here asking for support for both.
https://github.com/ClearVision/ClearVision-v6/issues/131
your theme is boldly assuming there will always only be 3 elements. Adding the game activity toggle adds a fourth so your theme breaks. This is simply your theme at fault. Complain to the author, fix it yourself, use a different theme or don't use the plugin.
and the problem only exist in Vencord, i no think that autor of theme can help..
How, better discord also has a game activity toggle plugin
https://github.com/tsukasa/BdBrowser
So, if you can to modify that chrome extension to get more mobile-friendly UI (similar to react-native app) and your app to be based on chromium with extension support by kiwi browser chrome extension support project, you can make the best modded Discord client for Android that can replace every modded Discord client for Android in the whole history and the future.
Just tell me, what you think about that extension ...
the same string works in patch helper
oh, the function doesn't seem to be included in the search
because it's not exported
doh
Vencord.Webpack.wreq(Vencord.Webpack.findModuleId("().mentionsBadge"))
one could argue that findByCode should have worked
alas
It shouldnt have worked
findByCode checks exports code
you wouldnt be able to access that function anyways 
which isn't explicitly stated anywhere
well, it makes sense since you can't find a function that is not exported
add a patch to export it urself ig
find: "().mentionsBadge",
replacement: {
match: /\(\)\.mentionsBadge.+?}(?=var)(?<=function (\i)\(.+?)/
replace: (m, method) => `${m};$self.method=${method};`
}
seems pretty useless though
just make it manually
or
{
find: "().mentionsBadge",
replacement: {
match: /\(\)\.mentionsBadge.+?}(?=var)(?<=function (\i)\(.+?)/
replace: "$&$self.method=$1;"
}
}
$& is useful
and knowing that the first group is $1 is also useful
shorter
I have to look at the match to understand what's $1
eh, that is debatable
oh you meant it like that
Guys, get how to sideload a plugin?
do i have to copy the built file into Vencord\dist every time pnpm watch gives a new build
i just recreated it
uhh, you put ur plugins in src/userplugins and they get built with vencord
iirc
ye
thirdparty plugins arent mature yet
yes but it seems that i will have to copy them into my %appdata%/somewhere/Vencord/dist and open the vencordinstaller to install it and restart my client to apply it if i did not misunderstand
nope
the vencord installer only patches discord, discord loads the files from the build folder
wait, did you not clone the repo?
yes i did
not the plugin template
here lul
ok so, the vencord installer, makes discord load vencord when it starts
depending on how you installed vencord, it will load it from a different place
for us devs, it should be the build folder
for that we do pnpm inject
but first remove the other installation
sure
i'm trying to port this cool plugin https://github.com/Pitu/Magane but seems like a lot of work 
oof uses svelte
instead of port I'd suggest you remake it
i can help if you want
svelte in a fucking bd plugin
woohooo, got a keybind to work!

Gives the user the ability to toggle which notification should be suppressed or not.
what? That extension is just BD for web, how does that in any way relate to the mobile app
waait why did u close? @cunning canyon
that plugin is really good, I was just waiting for array settings types because currently there's a lot of plugins implementing their own logic for that
oh i changed branch name lol
oh 
I should finish that asap tbh
vap was working on it I think but probably not anymore
this guy is opening the weirdest issues ever
I'm so confused
I think he doesn't understand the stack at all, because he also opened an issue for armcord to use xposed on android??
fucking finally
so many patches just to get this to show up in the settings
wooohooooooo
@austere talon keybinds can only be created when discord loads
that means that the keybinds api must iterate over all the plugins to gather their keybinds, if a plugin gets disabled, I cant remove the keybind w/o reloading
what? That extension is just BD for web, how does that in any way relate to the mobile app
Because that extension literally injects every feature and support for BetterDiscord client in the web version of Discord so if that extension gets modifications i to those scripts to be optimized for mobile phones lile the optimizations (modifications) of the injected both Discord standard and BetterDiscord UI, elements, animations and etc to be more mobile-friendly, it's possible.
It takes time t...
just imagine Vencord android version with full support of desktop BetterDiscord API
what are they thinking
can we just make it a requirement to not make dumb issues?
like a checkmark
and if the issue is dumb we delete w/o warning
you have to pay $8 dollars/month to make an issue in vencord repo
we're not interested in that in the slightest. Vencord is a different mod not affiliated with betterdiscord. If someone else wants to do this then cool but that's very out of scope for this project
$1000/month if you're affiliated with a company
only allowing certain results on a myers-briggs to open issues
whaaat
why would you close the issue
i sense something
I sense 13 year olds being less than smart
guys you should use vendetta for Vencord mobile api
truie
i took a break cus i realize it would require making the setting inputs a lot more modular/generic than they are right now
docs shouldnt be behind iq test
But issues and discord server for sure
I will make
Redundant now, functionality implemented by updated versions of Vencord from plugins: ViewIcons & ImageZoom.
I think it would be neat to be able to load stickers from a folder on your local machine that are displayed in the stickers tab and clicking them sends them as an image in a similar way to the FakeNitro plugin.
So in other words favourite media, which is already requested!
@austere talon best way to iterate over all the plugins within a plugin?
(cause technically APIs are plugins)
it won't cause a circular import, right?
or I guess, I could just modify the code a bit to avoid doing that
yeah I'll do that
mmm that's a cool feature tho, and we need a animated pfp
import plugins from "~plugins";
u cant use it on top level but u can use it in a deferred function call, like start() or even inside a setTimeout(..., 0)
what global
Vencord.Plugins.pluginsWithKeybinds
but why
why are you asking me why?
^^
^^
realized too late
and asked if its ok to keep it the way it is
and you ask me why?
forget it
no global
ffs, cant just say no to a yes/no question
have you done anything yet?
Edit: dont => done
I just finished what I was working on so I am free to help
PronounDB (had no effect):
ID: 507250
Match: /\(0,.\.jsx\)\((?<PronounComponent>[A-Za-z_$][\w$]*\..),(?<pronounProps>{currentPronouns.+?:(?<fullProps>[A-Za-z_$][\w$]*)\.pronouns.+?})\)/
UserVoiceShow (had no effect):
ID: 1764
Match: /,{user:\w{1,2}}\)(?!;case)/
WebContextMenus (had no effect):
ID: 638525
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
WebContextMenus (had no effect):
ID: 638525
Match: /("submit-button".+?)(\(0,[A-Za-z_$][\w$]*\.jsx\)\([A-Za-z_$][\w$]*\.MenuGroup,\{children:[A-Za-z_$][\w$]*\}\),){2}/
PronounDB (found no module):
ID: -
Match: .Messages.USER_POPOUT_PRONOUNS
None
Cannot use SettingsStoreAPI without setting as dependency.
Will I get banned if I Vencord? ^^
Thanks for app. It's great ngl
is it the same plugin that katlyn posted in 3rd party
Using third-party clients breaks Discord TOS.
In reality, it's not enforced unless you abuse the API. I've been using client mods for years, it's fine.
PronounDB (had no effect):
ID: 507250
Match: /\(0,.\.jsx\)\((?<PronounComponent>[A-Za-z_$][\w$]*\..),(?<pronounProps>{currentPronouns.+?:(?<fullProps>[A-Za-z_$][\w$]*)\.pronouns.+?})\)/
UserVoiceShow (had no effect):
ID: 1764
Match: /,{user:\w{1,2}}\)(?!;case)/
WebContextMenus (had no effect):
ID: 638525
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
WebContextMenus (had no effect):
ID: 638525
Match: /("submit-button".+?)(\(0,[A-Za-z_$][\w$]*\.jsx\)\([A-Za-z_$][\w$]*\.MenuGroup,\{children:[A-Za-z_$][\w$]*\}\),){2}/
PronounDB (found no module):
ID: -
Match: .Messages.USER_POPOUT_PRONOUNS
None
Cannot use SettingsStoreAPI without setting as dependency.
I want to make a plugin
But I have zero idea how to compile it so it runs on web
I don't really "do" the proton
Is there a guide or something that could help me?
what
you mean how to compile vencord for web?
or what cause i actually dont understand
I am curious as to what you mean by "proton"
git clone https://github.com/Vendicated/Vencord
cd Vencord
pnpm install
pnpm buildWeb
Those are the steps
And just run the last command every time you want to build it for web
lil idea here, do you think a "fast voice messages playback" plugin could be a thing? would love to listen in 2x those 3 minutes vocal messages........
Wrong channel to ask
wouldn't that sound funny though xD
While this is a Windows only solution, it does add some very nice additions for theme creators.
And since it's not exactly night and day to simply switch out an ASAR for transparency anymore, I think if Vencord Desktop added support for Vibe it would attract more users.
More about vibe here: https://github.com/pykeio/vibe
I agree. acrylic and mica support wen 😔🙏
Isn't this something that should be in a plugin?
Someone was already looking into this
Tbh if Vibe doesn't get added, I'm gonna say that I'll learn everything necessary to get it added to my own copy and then maybe try to get it integrated and pulled
Only to just not do that because I'm lazy asf- 
vibe is not published on npm, and no binaries are on github releases
that means the user must build the project
that also means that we have to build it for all the architectures, since it is a native library
not very convenient
When running the installer on my tablet running Fedora 37 with Gnome 43.4 on Wayland there is a broken title bar. It doesn't have any button to close the window, you have to either press Alt+F4 or kill the process, which is probably not how it is intended to be. If you need any other information, just reply to this issue.

Damnit, I see, that's a bummer
Might be due to gnome hiding window action buttons (you know, minimize, maximize and exit)
Have you enabled those icons using GNOME Tweak?
this might restore the exit button
nvm
@shut verge
they are just too lazy to provide an npm link in the readme
nvm
it does not include binaries
useless package
smh
Oh oof
@ArjixWasTaken You can't hide the close button in Gnome, you can only hide Maximize and Minimize, But the Title Bar is not even the same as the title bar of my other windows. Below is a screenshot of my settings in Gnome Tweaks:

I will try to enable the maximize button and move them to the right to see if that makes the title bar appear correctly.
I now changed the settings to the default ones and it didn't change anything. It doesn't play a role if i run the program as root or not.
Yes I know, but some apps have this glitch, and this is how I fixed it.
Although I doubt this will fix the installer.
one more way to close the app is from the window name in the top bar

The issue seems to be fixed on X11. (My desktop looks that big because fractional scaling is not supported on X11 and everything is scaled to 200%.)

how do i reverse engineer discord's new markdown feature?
like
where is the parser that does it etc
how can i find the correct modules that do it?
add a feature into the fakenitro plugin so we can use sounds form another servers sound board in another server
discord uses hljs
so search for hljs in discord
look at the shikicodeblocks plugin for some info
bad idea?
no not the code blocks
channeltabs? :o
yo i love that plugin
Discord Account
The Prodigy#0001
What is it that you'd like to see?
The MessageClickActions Plugin works similarly like the "Double Click To Edit" BetterDiscord Plugin .(https://betterdiscord.app/plugin/Double Click To Edit), But it lacks one amazing addition to it, Which is the ability to double click to reply as well, it is mentioned in the link I provided above and already added there, so it would be awesome if it gets added here on Vencord too!
Request Agreement
- [...
...
I gave you what to search
not what to patch
comedy
nuh uh beocord
nuh uh beocord
MaCoS
MACoS
pls no
why is apple so complicated
deliberately messing up the MAcoS capitalisation cause I know it upsets apple fanboys

lmao u love random tenor gif name
i dont even like apple that much
i am just annoyed at things being obviously wrong ;w;
MacOs is obviously correct
i am in pain ;w;
apple sucks
nuh-uh-beocord-no-lol
Hiya! If I understood correctly, anyone with the plugin will be able to encrypt & decrypt your messages? Or how does this work?
Plugin that adds custom badges
- It would add custom Badges to profile
- Support for the database: https://github.com/WolfPlugs/BadgeVault
it would be great for profile customization
have you seen my pr?
arhghhH!!!
i do have to say that looks way better!
thank you!
i wonder where i got the inspiration ;)
i removed a bit of duplication for the preview and the actual tab
luckily github has a merge conflict solver
in the web ui!!
yay so easy
you can merge now!
i don't think you need to review because it's already a pr
umm, i haven't got the icon for server discovery working because it's not a channel... and clicking back on the tab goes to friends
hopefully you can fix this
(same for nitro)
i just made it display friends if it doesn't know
except you did that while i was resolving myself 
still ty
oh haha
i also wanted to add middle click to close
couldn't get it to work :c
BadgesAPI already exists
@verbal pumice it doesn't compile any more! xD
do you mind if i shrink the icons down to 20px because with channel name emojis it looks a bit crammed
how does it look?
tried to undo changes to take a before screenshot and lost the changes i made 
well too bad then it's staying like this for now
typical
did u add them to git?
/ commit them
no
you could've stashed
what'd u do
forgor
oh
when you both have an unread and someone is typing it's still pretty bad
will probably shrink down just the emoji then (or maybe hide it when someone is typing?)
gen
Yes, I intend on adding profile support with a popup when right-clicking the icon, although I'm not sure how to do that yet. I may do it with slash commands if I cant figure it out :3
Big bump, this is the only thing holding me back from switching to vencord. I use discord on the top half of a vertical monitor, so this is a must
when right-clicking the icon, although I'm not sure how to do that yet
You can use React's onContextMenu prop for this, then either open a context menu (you can find an example for this in the welcomeStickerPicker plugin) or a modal (you can find an example for this in many places, for example EmoteCloner)
Isn't this something that should be in a plugin?
Yeah, it's kinda in the title (the Fake Nitro plugin)
Does it automatically update the extension?
Haven't really touched anything similar to this, so I have zero idea what to do 😅
Could be possible by downloading the sound and playing it but otherwise no, API blocks it if you dont have nitro
Couldn't figure out how to fix the issue with the CI but it builds and runs fine... shows the same error in VSCode.
Because String.fromCharCode expects a plain array, not a TypedArray. Why not use a TextDecoder instead? new TextDecoder().decode(theArray)
If I do that, then I get the error DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.. Do I have to decode it a different way than btoa(new TextDecoder().decode(str))?
instead of manually subscribing, you can use the flux property on your plugin:
flux: {
MESSAGE_CREATE(e: IMessageCreate) {
// ...
}
}
return btoa(new TextDecoder().decode(str));
return new TextEncoder().encode(atob(str));
function base64UrlDecode(str: string): Uint8Array {
Could be possible by downloading the sound and playing it but otherwise no, API blocks it if you dont have nitro
That's a shame
If I do that, then I get the error
DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.. Do I have to decode it a different way thanbtoa(new TextDecoder().decode(str))?
Wait what? What kind of text are you dealing with? Maybe try btoa(unescape(...))
Alternatively, you could still use String.fromCharCode, I think if you spread instead of using apply, ts should no longer complain:
String.fromCharCode(...theUint8Array)
The base64UrlDecode function needs to do what it did before... I'm dealing with random bytes from the Crypto API. TypeScript isn't complaining anymore, at least on VSCode.
Yeah don't worry about unescape, i realised it's actually deprecated oop
but using a TextEncoder in decode should work fine? Works fine for me

It might be failing for the 3rd part which is the actual encrypted message. I'll test it.. hold on.
oh i see, you're not using all charCodes. Isn't that bad?

yeah it is lol
talking on github is kinda painful haha
nya>.<pj+QGVp/9Hc=>.<Oq309LCX6H3jJLwU/sQHiQ==>.<bptMjBSamgyjvv9cwIDewkbQW+o=
this is what it outputs with what it was before
Yeah the reason the TextEncoder one doesn't work is because it uses every codepoint whereas the .split() version only uses the first codepoint of each character
But I think only using the first one is not ideal anyway, doesn't that mean it only supports ascii?
so emojis and non latin characters won't work i think?
lets find out
i'm not fully sure, utf8 is confusing 
nya>.<catSQbva6vs=>.<I0c76W0VnGfEV4Yc2nvFNA==>.<jomuguEIe7G4H5i9L12xRRJuEAGBMdgVn228S8R2
apparently those arent latin-1
can't think of any that arent twemojis on discord
nya>.<adoH3rn1Jq0=>.<l25Us+3JJ1UF/GpfXgaD6A==>.<h8ttmrYDh6VdD5yajVANZNhKkolN9kN+ylQ+nSaRozU=
btoa sucks unfortunately, it doesn't properly support utf8
but well just keep using ur .split().map() version then!
btoa is annoying
I just recommended the TextEncoder version cause it's generally cleaner and faster
I like how its deprecated but I cant find an alternative that works on web
but thats probably just me
oh and vscode thinks its node?
you can get rid of the deprecation warning by explicitly using the web version
- btoa()
+ window.btoa()
yeah that removed the warning
yeah because Vencord uses nodejs types because it has code in both node and web
the node and web differences confused me too
btoa/atob are just terrible, that's why node deprecated them 
I thought that plugins were in node
yeah in node you just use Buffer
i wish they made better versions that supported utf8 for web
also the fact that atob returns a string instead of a uint8array
is just so bad
is it possible to have like an array in a plugin settings
unfortunately no for now, you have to do it yourself or make the comma enter a comma separated list or similar
but planned
what kind of data do u wanna store?
like encryption profiles:
Public: blah
Test: whatever
Another Profile: skdfjbdhjsfbdjkh
so multiple strings?
yeah
I could just make the syntax like this Public:blah,Test:whatever,Another Profile:skdfjbdhjsfbdjkh
thats kinda horrible but yeah
seems like the only way
I could make a command to add them so it doesnt have to be manually modified like that
werent u gonna do right click menu for that
yeah makes sense... how would i store the data though
smth like this and then an add button at the bottom
could I do a context menu for a context menu option
lmao
because then you can right click to delete/edit
huhhh?
im not fully sure what u mean
ohhh wait i do lmao
i think that's not a thing no
but you could just do a radio like here and then at the bottom
- Add New
- Delete "Message"
where "Message" would be the name of the selected profile
stolen code for you to re-steal if you care ```js
function lurk(id) {
findByProps("joinGuild").joinGuild(id, {lurker: true})
.then(() => {setTimeout(() => patchGuild(id), 100)})
.catch(() => {throw new Error("Guild is not lurkable")});
}
function patchGuild(id) {
findByProps("getGuildsTree").getGuildsTree().root.children.unshift({type: "guild", id, unavailable: false, children: []});
findByProps("getGuildCount").getGuild(id).joinedAt = new Date;
findByProps("lurkingGuildIds").lurkingGuildIds().pop();
findByProps("joinGuild").transitionToGuildSync(id);
}
lurk("guildid");

try with guild id 1090311153802031315
nuh uh
token steler!!1!1!!11
!show
why not just post it in #📜-js-snippets
@austere talon
wha?
i can just use a
(async () => {
})();```
or something
nvm its in console shortcuts im dumb
i thought i had it findByProps from a different script
ya but make sure the snippet works without consoleShortcuts on
husk
looks like MessageTags does almost exactly what I want with DataStore
I like that all plugins are just here because you can use them for reference
yeah lmao
Surely I'll get it right this time 
how could I add a right click event to a button
sorry 
:3
so mean
wait why have greet mode
the greet ep has no advantage over the regular create message ep
doesnt really matter 

is there a better way to update plugin changes than pnpm run build and pnpm run inject every time
yeah! you don't have to inject every time, only the first time
and you can use pnpm watch to autorebuild :P
ohh cool
how can i use async functions in a component
useAwaiter!!

bros been made aware
stealing is my passion
crazy jup
how about you make it 🔥

same

thats your next assignment juppy

jup do you own a switch
yeah i meant nintendo switch
i do not
more HIV in that regex shit than there is in the congo
😭
srs
or do what the snipper does
whats patchGuild for
@calm shore

that script does yes
it makes the client think you joined it
makes sense
are you happy now
Error: Rendered fewer hooks than expected. This may be caused by an accidental early return statement.
hate this
shw code!!!
Or a custom component
I figured out how I wanted to do it :3
Don't mind me, just backreading
COLOURPICKER NOW!!!!

we should put discord colourpicker into webpack commons
i'll do it I just don't feel like it nor know how
!
hehe
I'm adding functionality first
We should put all discord exported stuff to webpack commons
(I'm talking about the named exports)
hmm why isnt the contextmenu updating after checking one of the boxes
you have to go out then go to it again
Some parts of discord have a weird non-updating react state.
Try making a separate component with all ur states and use it in the context menu
(if that ain't the issue, then you are doing smth wrong)
I'm probably doing something wrong because it works for ven's plugin that's similar
yeah I know why
nvm
Did you forget to update the state?
Or was there no state and you directly read settings?
there was no state it was just a let
actually, how do i turn a string returned from a function into a state
i have a getCurrentProfile and setCurrentProfile
You use useState
const [str, setStr] = React.useState("")
// If the function that returns the string is not async, then pass it instead of an empty string, otherwise use useEffect
I know that but I'd like to use the function to set and get, since it saves it to a DataStore
I can understand each and every word in that sentence, but not the sentence.
What?
uhh
ok so
const getCurrentProfile = () => DataStore.get(CURRENT_KEY).then<string>(c => c ?? "Public");
const setCurrentProfile = (name: string) => DataStore.set(CURRENT_KEY, name);
Which function?
i have these 2 functions
Ok
and in the component I'd like to call them, but since they're not states
the component wont update
Yes
const [profile, setProfile] = React.useState<string | null>(null);
React.useEffect(()=>{
getCurrentProfile().then(setProfile);
},[]);
I think you can figure out the rest
so like this?
For the loading part, yes
yeah now how would i set it with the original function
Can I see the original function?
That works as well
you should use that instead
Actually, can you set state on useAwaiter?
It returns a tuple of the data, the error and pending
No set stuff
Ig a force update could solve this?
this should work
Nooo
right
So it might be useless
Yes
why would you setState?
But only read
Cause the component updates the data
It fetches the stored data and updates it
I meant the original component
function ProfilesMenu() {
const [currentProfile] = useAwaiter(getCurrentProfile);
const [profiles] = useAwaiter(async () => {
const p = await getProfiles();
let matchedPublic = false;
p.forEach(async profile => {
if (profile.name === "Public") matchedPublic = true;
});
if (!matchedPublic) {
const p2 = await addProfile(publicProfile);
console.log(`not p: ${p2}`);
return p2;
}
console.log(p);
return p;
}, { fallbackValue: [publicProfile] });
return (
<Menu.Menu
navId="meowcrypt-profiles"
onClose={() => FluxDispatcher.dispatch({ type: "CONTEXT_MENU_CLOSE" })}
aria-label="Meowcrypt Profiles"
>
<Menu.MenuGroup label="Profiles">
{profiles.map(profile => (
<Menu.MenuRadioItem
key={profile.name}
group="meowcrypt-profile"
id={"meowcrypt-profile-" + profile.name}
label={profile.name}
checked={profile.name === currentProfile}
action={() => setCurrentProfile(profile.name)}
/>
))}
</Menu.MenuGroup>
<Menu.MenuSeparator />
<Menu.MenuGroup
label="Options"
>
<Menu.MenuItem
key="add-profile"
id="meowcrypt-add-profile"
label="Add Profile"
action={() => buildAddProfileModal()}
/>
<Menu.MenuItem
key="delete-profile"
id="meowcrypt-delete-profile"
label="Delete Current Profile"
action={async () => await removeProfile(currentProfile as string)}
/>
</Menu.MenuGroup>
</Menu.Menu>
);
}
Nope
useAwaiter returns a list with three items
The first is the data
The 2nd is an error if it errored
And the third is a bool indicating if the promise resolved
Instead of iterating over the profiles and setting a boolean, you can use [].find in an if statement
good to know
do u know how react works
ah u already figured it out
Not really
u gotta use state for anything u want to be reactive
I figured out the issue but didnt figure out how to fix it yet
There is one issue, useAwaiter is read-only
That means what you did, did not fix the issue
The way I sent you first is the default way of fixing this
unless i use Settings for the current profile
By default I meant standard
yeah I know that but I need it to save outside of the component
or.. somehow have the component to save it on change
use the old way arjix told u
then make a function that sets the state and updates the datastore
And
action={()={
setCurrentProfile(profile.name);
setProfile(profile.name);
}}
oh yeah that could work
Yeah that, and call it smth like saveProfile()
we should make a useDataStore hook :3
That would be epic
how do i take the value from the useAwaiter and set it for the state
somehow I'm creating a loop
Don't use the useAwaiter
PronounDB (had no effect):
ID: 507250
Match: /\(0,.\.jsx\)\((?<PronounComponent>[A-Za-z_$][\w$]*\..),(?<pronounProps>{currentPronouns.+?:(?<fullProps>[A-Za-z_$][\w$]*)\.pronouns.+?})\)/
UserVoiceShow (had no effect):
ID: 1764
Match: /,{user:\w{1,2}}\)(?!;case)/
WebContextMenus (had no effect):
ID: 638525
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
WebContextMenus (had no effect):
ID: 638525
Match: /("submit-button".+?)(\(0,[A-Za-z_$][\w$]*\.jsx\)\([A-Za-z_$][\w$]*\.MenuGroup,\{children:[A-Za-z_$][\w$]*\}\),){2}/
PronounDB (found no module):
ID: -
Match: .Messages.USER_POPOUT_PRONOUNS
None
useEffect(async ()={
// Async code here
},[])
The empty array is to say to react that this useEffect should run only once
ViewIcons (had no effect):
ID: 74188
Match: /style:.{0,10}\{\},([A-Za-z_$][\w$]*)\)/
PronounDB (had no effect):
ID: 507250
Match: /\(0,.\.jsx\)\((?<PronounComponent>[A-Za-z_$][\w$]*\..),(?<pronounProps>{currentPronouns.+?:(?<fullProps>[A-Za-z_$][\w$]*)\.pronouns.+?})\)/
UserVoiceShow (had no effect):
ID: 1764
Match: /,{user:\w{1,2}}\)(?!;case)/
WebContextMenus (had no effect):
ID: 638525
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
WebContextMenus (had no effect):
ID: 638525
Match: /("submit-button".+?)(\(0,[A-Za-z_$][\w$]*\.jsx\)\([A-Za-z_$][\w$]*\.MenuGroup,\{children:[A-Za-z_$][\w$]*\}\),){2}/
PronounDB (found no module):
ID: -
Match: .Messages.USER_POPOUT_PRONOUNS
None
Cannot use SettingsStoreAPI without setting as dependency.
someone fix it

WebContextMenus isnt actually broken
call an async function and save the value to a state
i figured
this is literally what useAwaiter does
cant u just use that
somehow creates an infinite loop```ts
const [currentProfile, setCurrentProfile] = React.useState<string | null>(null);
const [p] = useAwaiter(async () => {
const current = await getCurrentProfile();
if (!current) {
return "Public";
}
return current;
}, { fallbackValue: "Public" });
setCurrentProfile(p);
saving it to a separate state because I need to be able to set it later






