#๐พ-core-development
1 messages ยท Page 182 of 1
I don't think so
My point is that since datastore is local only, any settings that use components aren't transferable without a js snippet or something else
ahh ic
So there could be a function that allows it's info to be saved just like any of the other optiontypes
y macos-only? 
is there no other way to interface with that app?
also what app
pain
also to answer your initial question: no there isn't
ideally you would modify both the installer and the build scripts
you could also jankily detect the running system and check everytime but 
I'm suprised there's no way to make a plugin require an os
That should exist, seems like it would be useful for future cases
yeah most patches work on every platform
Pop off
@placid hinge as a janky workaround, you could display a error banner if the platform detected isn't macos
in the plugin settings
I just added the os checking thing to my fork and it works wtf that was so easy
It works if i switch the target to .linux
Pretty cool
isn't apple music cross platform?
our plugin targets like web, desktop, dev, etc are at compile time
that would require us to make separate builds for each platform
Ah i get it
So it would work fine for a fork where manual building is required anyway?
I won't mind The cutest devtools mod
Patches FakeNitro to allow posting subscription-locked emojis, hopefully shouldn't cause issues ๐
return e.roles.some(role => userRoles.includes(role))
That makes Typescript think the code below is "unreachable" (when it is reachable), I changed it to if (e.roles.some(role => userRoles.includes(role)) !== true) return false; instead in the latest commit, which avoids that by explicitily returning
Explicitly sets the project to not use flat config because it doesn't
@long stream to have the fully correct behaviour, you should patch this func instead of replacing the export, its still the same module
what i suggest doing is adding like:
if (!e.getTrueValue) return true;
at the very top
then you can still call the func from the message replacement like:
EmojiChecks.isUnusableRoleSubscriptionEmoji({ ...emoji, getTrueValue: true }, currentGuildId)
or you could go the easier route
and change it to
n.d(t, {
isPurchasableRoleSubscriptionEmoji: function() {
return a
},
isRoleSubscriptionEmoji: function() {
return r
},
isUnusableRoleSubscriptionEmoji: () => () => false,
isUnusableRoleSubscriptionEmojiOriginal: function() {
return s
}
});
both seem so complicated tho
veee did you forget about my struggles with replacing the export
i'll definitely lose my mind trying to do either BocchiPain
you're already matching isUnusableRoleSubscriptionEmoji:function\(\){ and inserting the return () => false inside the func
omg okay i'm disabling fakenitro
What does this actually change? I donโt understand
flat config is new eslint shit
blehh

add ";" and it outputs like it should, but then js complains about an unexpected ";"
remove the ";" and it outputs completely wrong, and js still complains
i'm struggling with that and you're expecting me to be able to both patch the function and create a clone of it 
you need comma not ;
@limber skiff hello your commit kinda broke this function
it's now receiving an empty object as the 2nd param
even tho it's being called with the proper one
(idk how to use ErrorBoundary.wrap so i can't really fix it myself)
no it's main
yes cause that's how react works
you need to pass an object and destructure it
would it be possible for u to also add the "same channel message" sound here. the id for it is "message3" so all u really need to do is put { name: "Same Channel Message", id: "message3" }, here
o
it's caused by clans
huh, it was working for me
but yeah makes sense if it doesn't work
dumb me
its impossible for it to work correctly :p
and even some of the others arent really correct
this is basically worthless
return (
<ErrorBoundary>
<Foo bar={foo.bar} />
</ErrorBoundary>
)
xd
how so
Okay, we just replace the old button so you now have a list of options. You can still add your own custom engine using the plugin settings.


yeah idk how that happened cuz I tested it
odd
nah it's caused by supplemental application ids or whatever being null
MutualGroupDMs was one that I tested if it worked and it did so yeah....
๐คทโโ๏ธ
fg64 said it was related to clans, but I didn't check it myself yet
proper ErrorBoundary.wrap vs what you used
so how does using error boundary as component even work in other cases
it's fixed in 292752 anyway
generally ErrorBoundary thats in the same component as other code wont catch errors there
so wrap is safer
yikes
this will catch errors inside the Button component, but if props.type.analyticsName access errors it wont catch that
even if Button is null it will catch that
i think
it deosnt lol
what does wrap do differently
wrap does it like this:
const YourCode = () => {
....
}
<ErrorBoundary>
<YourCode />
</ErrorBoundary>
YourCode is always a valid component and can't error
only inside YourCode it can error
which will be caught
well it depends, if you do ErrorBoundary.wrap(null) it will still error and not catch it
but ErrorBoundary.wrap(() => {throw Error()}) is safe
i see
this condition is always false
if (settings.store.customEngineName && settings.store.customEngineURL) {
you copied this from ReverseImageSearch, right? pretty sure i only had this because the saucenao icon looks awful when circle cropped, so you can probably remove this
it'd be better to use the context menu api
try to avoid having too much code inside your replacements, it's hard to maintain and easy to mess up! plus doing it this way allows you to reuse the same func for both avatar patches
replace: "$&,style:$self.getAvatarStyles($1)"
i feel like this is kinda limiting. perhaps you could remove this setting and just declare multiple variables? like
{
"--avatar-url-128": ...,
"--avatar-url-256": ...,
"--avatar-url-512": ...,
"--avatar-url-1024": ...,
"--avatar-url-2048": ...,
}
Yes, this style was originally copied from ReverseImageSearch to try maintain consistent styles throughout Vencord.
you want me to remove the borderRadius?
Wouldn't that mean we would add to the context menu instead of replacing the pre-existing "Search with Google"
Small patch that allows cloning an emoji from a message reaction.
Would solve this request: Vencord/plugin-requests#179
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
very small change to add an option to disable the CheckedTextInput component, along with enabling the option for the one located in the vencord cloud section because it kinda bugged me
images
before:
after:
this doesn't seem right
this form is for changing the backend url, and this also affects the enable cloud integrations option
the ui is a bit confusing i guess, the backend url form should be above the enable option
9621dc7 EmoteCloner: allow cloning from reactions (#2458) - axiand
you can just remove it from the array / override it
yes and see if it still looks good! like i said im pretty sure i just added it for saucenao
and this also affects the enable cloud integrations option
ah ok, didnt know about that feature, just seemed weird that you could edit the backend url even though you didnt enable the feature
should i close the pr then?
the enable switch is moreso for opting into the feature & authorising via discord oauth
if you change the backend url option, the switch will authorise with that backend instead. so yes this pr in its current state doesn't make a lot of sense...
but it did make clear that the ui is a bit confusing, the backend url option would make more sense on top i think?
bd6f9e6 fix(MutualGroupDMs): properly pass props (#2457) - aamiaa
alright understood, but yeah i think it would make more sense if it was at the top - might create another pr later
5d04953 FakeNitro: allow using subscription-locked emoj... - nakoyasha
I'm fixing my past mistakes with the error boundary
1f1c80c ValidUser: fix crashing when viewing a valid-us... - Vendicated
f676581 ValidUser: fix rendering old mentions when mess... - Vendicated
59ee9c5 feat(ShowHiddenThings): Remove Discovery banned... - dolfies
9621dc7 EmoteCloner: allow cloning from reactions (#2458) - axiand
bd6f9e6 fix(MutualGroupDMs): properly pass props (#2457) - aamiaa
wtf we dont have Endpoints as a common
Constants.Endpoints
you say right as I find that
8921674 MessageLogger: use discord variables instead of... - AnubisNekhet
ugh found one place I missed kinda
looks good for the most part
i don't think it will be obvious to many people that you can click the (edited) marker to view what was edited. it needs to be communicated better in some way... not sure how
instead of accessing the setting in discord's code, it would be better to use a predicate on this patch
this patch needs a predicate
nvm
I guess lol
huh
9621dc7 EmoteCloner: allow cloning from reactions (#2458) - axiand
bd6f9e6 fix(MutualGroupDMs): properly pass props (#2457) - aamiaa
5d04953 FakeNitro: allow using subscription-locked emoj... - nakoyasha
8921674 MessageLogger: use discord variables instead of... - AnubisNekhet
9dc8e4e Properly ErrorBoundary recent changes - Nuckyz
thanks for the contribution!
a few thoughts:
- how safe is this? using dangerouslySetInnerHTML is sketch. we don't want any XSS happening
- there are some commands that may load external files, such as
have you made sure these are disabled?\includegraphics[height=0.8em, totalheight=0.9em, width=0.9em, alt=KA logo]{https://katex.org/img/khan-academy.png} - does this prevent infinite loops? e.g.
\def\x{Hello!\par\x} \x
i'm also not sure h...
ok good
59ee9c5 feat(ShowHiddenThings): Remove Discovery banned... - dolfies
9621dc7 EmoteCloner: allow cloning from reactions (#2458) - axiand
bd6f9e6 fix(MutualGroupDMs): properly pass props (#2457) - aamiaa
5d04953 FakeNitro: allow using subscription-locked emoj... - nakoyasha
8921674 MessageLogger: use discord variables instead of... - AnubisNekhet
what's the point of this option? isn't this the same as just disabling the plugin?
can confirm it works as expected now in that regard!
however there seems to be a new issue: when using the currentServer option, the emoji picker (ctrl + e) will only show emojis of the current guild. the other two options will show all servers
i think the purpose of this plugin is to just hide it from the autocomplete menu when you type :a, right? so i think this is a bug
i like the idea of this, but i don't think calling it a "Trial Moderator" is gonna be accurate for many users. Perhaps "Chat Moderator" would be more accurate?
cc @sunnniee
i think the old migration has existed for long enough now, so feel free to just remove it
actually i guess we still need the settings.store.tagSettings = defaultSettings, but the legacy migration is obsolete now
assuming this can be closed now as superseded by #2249?
try to match as little as possible and avoid using .+
match: /(?<=(\i)\.which===\i\.KeyboardKeys.ENTER&&).{0,100}(\(0,\i\.hasOpenPlainTextCodeBlock\)\(\i\)).{0,100}&&(?=\(\i\.preventDefault)/,
replace: "$self.shouldSubmit($1, $2) &&"
thanks for the fix!
untested but it should probably work
famous last words /j
Wow, this looks great so far, especially for a first time contributor!
This is only a partial review for now, mainly cause i feel bad for taking so long to get to it
I'll have to do a more thorough review soon, hopefully tomorrow, due to the size & potential security issues there could be
I still see a bunch of TODO comments... Do you need help with those or are you still working on them?
Vencord has a custom \i escape sequence that matches identifiers!
match: /href:(\i),onClick:(\w{1,3}),target:(\w{1,3}),rel:(\w{1,3}),className:(\w{1,3}),"aria-label":(\w{1,3}).default.Messages.DOWNLOAD,/g,
NativeSettings.store.plugins ??= = {};
please remove all these debug lines once you're done
also might i suggest using the debugger instead? it's underrated! you can just search some code of your plugin in devtools (ctrl shift f), jump to the source code (make sure you have js source maps enabled) and put breakpoints
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
5c7fa55 XSOverlay: Adjust message length timeout (#2445) - nyakowint
fd7dafb fix(MessageLatency): Adjust for Discord kotlin ... - dolfies
902b6bc PinDMs: ErrorBoundary renderChannel - Nuckyz
1f1c80c ValidUser: fix crashing when viewing a valid-us... - Vendicated
f676581 ValidUser: fix rendering old mentions when mess... - Vendicated
I used a cleaner patching approach. The <kbd>Ctrl</kbd>+</kbd>E</kbd> picker is also fixed.
i feel bad asking for changes so often but having this much code in your replacement is error prone (e.g. super easy to miss a bracket). always prefer declaring a method on your plugin and using that
replace: "$& if($self.someFuncYouPickTheName($1,$3))return $2;"
this is how you did it, nice
Those are good points. I personally have no issue with dangerouslySetInnerHTML, but I understand that it can be seen as sketchy. I'm pretty sure there's an option in katex to set a time limit, and there probably is one for external urls too; I haven't looked.
And yeah the value of this plugin is pretty low. It came up as a plugin request a while ago, and it was fun to make. Perhaps it's better off remaining as a userplugin. I don't mind if you choose to close this.
Discoverability is really hard... I do set the cursor, but that's not really enough. Underlining the marker would make it stand out a little more, but don't want it to stabd out too much. Making a default-on option to underline it would be possible, but ML already has quite many options. Requiring usercss to remove the underline would be very poor UX. Maybe just some explanatory text on inlineEdits option. Though do people even read that?
Gonna be a bit busy the next few days, but I'll s...
it can allow for custom notification sounds for certain messages
Basically this. The original goal was to make the moyai plugin but for the skull emoji with the bad to the bone riff. Figured it would be duplicate work so I opted to make a generalized plugin that allowed you to make your own custom sounds.
It's been a hot minute since this was updated so I'll need to do that if you're okay with actually adding it.
@Golonchy I'll finish working on it today when I'll get home in a few hours or so
please make sure you validate that you have configured the security options in katex to prevent people from abusing it
Nothing like abusing a plugin :)
girl i already said basically that before ๐ญ
Sounds interesting
Discoverability is really hard... I do set the cursor, but that's not really enough. Underlining the marker would make it stand out a little more, but don't want it to stabd out too much. Making a default-on option to underline it would be possible, but ML already has quite many options. Requiring usercss to remove the underline would be very poor UX. Maybe just some explanatory text on inlineEdits option. Though do people even read that?
exactly my thoughts... i think specifying it in t...
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
Bad Patches
Settings (had no effect):
ID: 394644
Match: /\{section:(\i\.\i)\.HEADER,\s*label:(\i)\.\i\.Messages\.ACTIVITY_SETTINGS/
StartupTimings (errored):
ID: 620163
Match: /{section:\i\.UserSettingsSections\.PAYMENT_FLOW_MODAL_TEST_PAGE/
Error: Unexpected token '{'
BetterSettings (had no effect):
ID: 923422
Match: /\(0,\i.default\)\(\)(?=\.filter\(\i=>\{let\{section:\i\}=)/
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
๐ญ @limber skiff
WHAT DID THEY COOK
we cant patch that in a compatible way
shrug
getter jumpscare
looks good
function I() {
let e = function() {
let e = (0,
S.useUnseenOutboundPromotions)().length
, t = (0,
c.useIsPrepaidPaymentPastDue)()
, s = (0,
n.useStateFromStores)([E.default], ()=>E.default.getProps().impressionSource)
, a = (0,
u.usePendingRequestCount)()
, i = (0,
m.useShouldShowOverlaySettings)()
, _ = (0,
o.useEnableClips)()
, [g] = (0,
d.useGetDismissibleContent)(_ ? [l.DismissibleContent.CLIPS_SETTINGS_BETA_TAG] : [])
, I = "useGenerateUserSettingsSections";
(0,
r.useTriggerDebuggingAA)({
location: I + " auto on",
autoTrackExposure: !0
}),
(0,
r.useTriggerDebuggingAA)({
location: I + " auto off",
autoTrackExposure: !1
});
let {shouldMergeGameSettings: h} = T.GameSettingsMergeExperiment.useExperiment({
location: "settings"
});
return (0,
f.getConfig)({
unseenGiftCount: e,
showPrepaidPaymentPastDueWarning: t,
impressionSource: s,
numOfPendingFamilyRequests: a,
isOverlaySupported: i,
isClipsBetaTagShowing: g === l.DismissibleContent.CLIPS_SETTINGS_BETA_TAG,
shouldMergeGameSettings: h
})
}()
, t = a.useMemo(()=>[{
header: g.default.Messages.USER_SETTINGS,
settings: [_.Setting.ACCOUNT, _.Setting.GAMES, _.Setting.PROFILE_CUSTOMIZATION, _.Setting.PRIVACY_AND_SAFETY, _.Setting.FAMILY_CENTER, _.Setting.AUTHORIZED_APPS, _.Setting.SESSIONS, _.Setting.CONNECTIONS, _.Setting.CLIPS, _.Setting.FRIEND_REQUESTS]
}, {
header: g.default.Messages.BILLING_SETTINGS,
divider: !0,
settings: [_.Setting.PREMIUM, _.Setting.GUILD_BOOSTING, _.Setting.SUBSCRIPTIONS, _.Setting.GIFT_INVENTORY, _.Setting.BILLING]
}, {
header: g.default.Messages.APP_SETTINGS,
divider: !0,
settings: [_.Setting.APPEARANCE, _.Setting.ACCESSIBILITY, _.Setting.VOICE_AND_VIDEO, _.Setting.POGGERMODE, _.Setting.CHAT, _.Setting.NOTIFICATIONS, _.Setting.KEYBINDS, _.Setting.LANGUAGE, _.Setting.WINDOW_SETTINGS, _.Setting.LINUX_SETTINGS, _.Setting.STREAMER_MODE, _.Setting.SPEED_TEST, _.Setting.SETTINGS_ADVANCED]
}, {
header: g.default.Messages.ACTIVITY_SETTINGS,
divider: !0,
settings: [_.Setting.ACTIVITY_PRIVACY, _.Setting.REGISTERED_GAMES, _.Setting.OVERLAY]
}, {
divider: !0,
settings: [_.Setting.CHANGELOG, _.Setting.MERCHANDISE, _.Setting.HYPESQUAD, _.Setting.EXPERIMENTS, _.Setting.DEVELOPER_OPTIONS, _.Setting.HOTSPOT_OPTIONS, _.Setting.DISMISSIBLE_CONTENT_OPTIONS, _.Setting.PAYMENT_FLOW_MODALS, _.Setting.TEXT_PLAYGROUND, _.Setting.TEXT_COMPONENTS, _.Setting.PROFILE_EFFECTS_PREVIEW_TOOL, _.Setting.QUEST_PREVIEW_TOOL]
}, {
divider: !0,
settings: [_.Setting.LOGOUT]
}, {
divider: !0,
settings: [_.Setting.SOCIAL_LINKS, _.Setting.CLIENT_DEBUG_INFO]
}], []);
return a.useMemo(()=>(function(e, t) {
let s = [];
return e.forEach(e=>{
0 !== e.settings.length && (!0 === e.divider && s.push({
section: i.SectionTypes.DIVIDER
}),
null != e.header && s.push({
section: i.SectionTypes.HEADER,
label: e.header
}),
e.settings.forEach(e=>{
s.push(t[e])
}
))
}
),
s
}
)(t, e), [t, e])
}
this is what we need to patch
but theres no clean way to patch it
so i did this
@limber skiff
basically t (aliased to e inside the useMemo) contains object with only the labels
and then e (aliased to t inside the useMemo) contains mapping of label to proper object with element
we need to like push here
which optimally we'd do like js ), $self.addSections(s), s
but thats really ugly
just do whatever is less likely to break
does that hook not exist on stable?
That should have resolved all of your requested changes.
i deliberately made the patch as generic as possible
@austere talon they fucking pushed to stable already
maybe we should monkey patch settings as fallback
if you want you can patch a total different place
and use the thing I showed to you to put elements in array
if it's needed
what thing u showed
right lmao
i was thinking of that
What happened this time
Fixes ended up being relatively straightforward, should be working as of now.
Least Privileged GitHub Actions Token Permissions
The GITHUB_TOKEN is an automatically generated secret to make authenticated calls to the GitHub API. GitHub recommends setting minimum token permissions for the GITHUB_TOKEN.
- GitHub Security Guide
- [The Open Source Security Foundation (OpenSSF) Security Guide](https://github.com/ossf/scorecard/blob/main/docs/c...
do not contribute machine/ai generated changes. this entire pr is bogus.
no way they tried to do that to facebook
inb4 theyre actually trying to put a backdoor in a bunch of repos
like 
no that's fine
they're just commit hashes, that's actually good security practice
but you dont need that on trusted actions, only on ones you don't trust
it's to pin the versions to specific commits because tags are technically mutable
but commit hashes arent
unless you somehow manage to reassign a commit hash 
if that ever happens we will explode
it's not possible
well with infinite time it is
but
that would also mean all passwords are unsafe
infinite time and/or infinite computing power
anyway actions/* are official github actions
so those are trusted
and if pnpm wants to hack us, it's gonna happen anyway
so there's no reason to pin those two
couldn't you put commit hash of fork

you can put commit hash of fork in url of parent
the ability to view it is purely a git UI thing, it doesnt actually exist in the repo
you can try it on the command line if u wanna

it's just cloning and building the action, then running it
this is commit from my repo
oh wait this might be arjix's branch which i cloned
๐ญ
yeah that's just a githubism
that doesnt actually exist in the vencord repo on teh git side of things
yeah sound-changer != cusotm-sounds
for some reason i ended up pushing arjix's code to one branch and mine to another

i didn't base off arjix's in the end
would google get pissy if you made the extension fetch something on the gh repo and parse that for extra patches to apply
for when discord breaks smt important and it needs to be pushed out fast and google wont approve quick
yes
no remote code allowed
fair
actually if it's just regex
yeah thats what i was thinking
maybe they won't realise
its not remote code
but better not to risk
fair
mozilla thanos snapped the extension one day
chrome ext has like nearly 100k users somehow
what about querying a server to display a message that something is wrong
instead of ppl needing to check the server
actually you could do that with @nimble pendant
@austere talon how the fuck is google okay with the eval in oneko plugin btw
i guess its commit hash pinned so its okay?
eh true
although iirc it originally wasnt and google didnt notice
you should be more worried about github going rogue
it was always pinned
i swear it wasnt and korbo noticed it or something stupid
just "commit hash pin it" but instead of fetching from github.com fetch from like gjthub.com and update it with time, no one will notice
but yeah technically they don't allow it
chrome extension review team is stupid then
d8b3869 ThemeAttributes: add larger avatar url variable... - BoardTM
will be closing as too niche. if you'd like to post it in third party plugins, feel free to do so after making sure the security concerns are addressed!
sorry and thank you anyway
looks good now! but i still don't understand the purpose of Unicode emojis and all server emojis (Discord default). how does it differ from just disabling the plugin?
No difference, but you can switch to that option without refreshing your client. This is useful when one occasionally wants to send an external emoji.
5232a85 new plugin NoServerEmoji ~ hides server emojis ... - UlyssesZh
thank you
let's hope discord doesn't rewrite their entire chatbox key handler logic again
I was deperatly looking for a plugin like this. When I have Discord open on my second monitor and have an eye on it, I am there. Hands on my keyboard and mouse, and always an eye on Discord. But I still get set to idle when I don't actually click into the client for too long and then they think I'm not available and nobody messages me any more :( I'm so glad there's a plugin in development to fix this!!
I have a question though. I am absolutely not familiar with github though, so sorry if th...
you should try to pr this upstream instead, seems cool
oh you changed the default settings location ven?
this is cool but i think oneko is perfect in its current form
thank you regardless!
this is cool but i think oneko is perfect in its current form
thank you regardless!
this is cool but i think oneko is perfect in its current form
thank you regardless!
yeah i did
the reason is that the old default location might be removed in the future
theres an experiment that puts activity settings in the profile section
I see
Bad Patches
Settings (had no effect):
ID: 394644
Match: /\{section:(\i\.\i)\.HEADER,\s*label:(\i)\.\i\.Messages\.BILLING_SETTINGS/
StartupTimings (errored):
ID: 620163
Match: /{section:\i\.UserSettingsSections\.PAYMENT_FLOW_MODAL_TEST_PAGE/
Error: Unexpected token '{'
BetterSettings (had no effect):
ID: 923422
Match: /\(0,\i.default\)\(\)(?=\.filter\(\i=>\{let\{section:\i\}=)/
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
enable this
huh
Bad Patches
Settings (had no effect):
ID: 394644
Match: /\{section:(\i\.\i)\.HEADER,\s*label:(\i)\.\i\.Messages\.BILLING_SETTINGS/
StartupTimings (errored):
ID: 620163
Match: /{section:\i\.UserSettingsSections\.PAYMENT_FLOW_MODAL_TEST_PAGE/
Error: Unexpected token '{'
BetterSettings (had no effect):
ID: 923422
Match: /\(0,\i.default\)\(\)(?=\.filter\(\i=>\{let\{section:\i\}=)/
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
nah cause i also wanna future proof it by adding another patch
u can do the others :p
yeah i'm only stupid enough to think "hm, maybe this could do with more features" then get overwhelmed trying to reasonably figure out how to make it
just merge this i'll get around to it in 3-5 business months
we love business months
Is there anything i should do about it? or..
Also i changed the name to "Chat Mod" like u mentioned earlier
this is cool but i think oneko is perfect in its current form
thank you regardless!
couldn't this be an option for the people who still want it? or do you think this is just a bad idea entirely
its a cool idea but i don't really want to first-party oneko because it's just unnecessary
97dd56c MoreUserTags: Add chat moderator tag (#2424) - eepyfemboi
startup timings is annoying to add now
vee will never touch the plugin that vee half made
[Vendicated/Vencord] New comment on pull request #1245: feat(PronounDB): Add local pronoun overrides
a looot of time has passed (my apologies) and you can use hooks in context menu patches now, so technically you could do that now
anyway, i'm not sure if we even need this feature in pronoundb? we just really need an EditUsers plugin, that could also cover editing anyone's pronouns even without the pronoundb plugin
i don't really understand your draft reason... is it just that you're unsure if all channel types can actually be deleted server side? i think it's fine to merge this way and if some can't be, surely people will complain sooner or later
if it's really just that, let's just merge it (if the patch even still works)
Bad Patches
Settings (had no effect):
ID: 394644
Match: /\{section:(\i\.\i)\.HEADER,\s*label:(\i)\.\i\.Messages\.BILLING_SETTINGS/
StartupTimings (errored):
ID: 620163
Match: /{section:\i\.UserSettingsSections\.PAYMENT_FLOW_MODAL_TEST_PAGE/
Error: Unexpected token '{'
BetterSettings (had no effect):
ID: 923422
Match: /\(0,\i.default\)\(\)(?=\.filter\(\i=>\{let\{section:\i\}=)/
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
Bad Patches
Settings (had no effect):
ID: 394644
Match: /\{section:(\i\.\i)\.HEADER,\s*label:(\i)\.\i\.Messages\.BILLING_SETTINGS/
StartupTimings (errored):
ID: 620163
Match: /{section:\i\.UserSettingsSections\.PAYMENT_FLOW_MODAL_TEST_PAGE/
Error: Unexpected token '{'
BetterSettings (had no effect):
ID: 923422
Match: /\(0,\i.default\)\(\)(?=\.filter\(\i=>\{let\{section:\i\}=)/
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
@austere talon settings and startup timings working together ๐ค
heh
it's just a joke cuz they patch the same thing
looks pretty good!
can definitely go forward with a merge after addressing a few issues and making sure it still works
also unrelated to your pr, but in hindsight the XOR encryption is a bit cursed... maybe we could instead move the quotes to a separate file quotes.txt (in plain text) and use
import QuoteLines from "~includeFile/quotes.txt"
perhaps you'd like to do that in your pr as well, and maybe we could then also add some fresh quotes
with the new option of toggling default discord badges, maybe this setting should be changed to "enableEventQuotes" that's independent of normal discord quotes? not sure how feasible that would be
split on an empty string will yield [""] so if you don't use the custom quote feature there's a small chance to get an empty quote
result.push(...settings.store.additionalQuotes.split(settings.store.additionalQuotesDelimiter).filter(Boolean));
return result.length > 0 ? result : ["Did you really disable all loading quotes? What a buffoon you are..."];
very small nitpick but do e.settings?.[0]
the new settings patch is very smart
honestly pretty cool! instead of storing stuff in variables, why not JSON.stringify + copy to clipboard instead? (& make paste button read from clipboard)
that way you can also copy between clients or even back it up somewhere
please do not include screenshots in source code. that will quickly bloat the repo and git is awful at storing binary files! post it in https://github.com/Vendicated/Vencord/issues/1749 to get a github cdn link
also default value for everything that isn't a simple text input is null, not empty string!
i think you forgot avatar decorations and profile effects
can this already be installed and if so, how?
it can be installed, but it's not an official plugin yet (vee needs to approve it first) so you need to install the dev version of Vencord. then you download the index.ts in this pull request and you move it to src/userplugins/customidle (create a folder)
however you won't get any support with dev versions/unofficial plugins like this one so you have to figure it out...
milliseconds is not a very userfriendly unit. would be better to change it to seconds & use a slider instead
pretty useful! are you still working on this? i think it's already fine in its current state, there isn't really a use case for ignoring quick edits
match: /\i\.guildMemberAvatar/,
looks good mostly. could you please test if this still works?
match: /this\.guildMemberAvatars\[\i]/,
description: "Disables server avatars",
mine?
yeah

I hate scroll problems
at least I found what's causing it
or I mean, the function that makes the scroll change
works
i should make clicking this copy more useful info
thats pain to do cause discord uses an insane component for it 
oh I think I found the issue
yep
the useEffect to call the scrollToGuild depends on the guildTree
but guildTree will always change because I modify it and create a new everytime
so it keeps calling the effect
I just need to cache :)
didnt work ๐
stable 293362 (73826fe)
Vencord 840d571c (Dev)
Electron 29.1.1
Chromium 122.0.6261.111
now it copies that
old patches haha
well it hasnt broken ever so no need to change it
but do
nah lol
i did yeah
aww im really sorry, this was added a while ago via https://github.com/Vendicated/Vencord/pull/2320
thanks a lot anyway! :3
can you still reproduce the issue you mentioned? if not, this seems mergeable
but please undo the unrelated changes to the descriptions. all those strings are converted to full caps anyway so it doesnt change anything and just adds noise
only very little users will know what FFMSB stands for. you can add it via the tags: property instead
description: "Disables forward/back navigation with mouse side buttons",
seems too niche, especially considering you need to selfhost these which most people won't be able to do
much more reasonable is for people to just use a discord bot or even use the recent userapps that add slash commands to your account
thanks for the contribution anyway!
what, like /vencord-debug style?
i don't think this is a good idea to have... too niche, and if people want encryption, they should instead use something like matrix, xmpp, signal, etc. Having it on discord just makes little sence
you may still post it in the third party plugins channel if you'd like
and thank you for your work regardless!
i don't think this is a good idea to have. dumb users may change this field then wonder why it doens't work
plus this is so niche, someone who needs this should probably just build from source. thank you anyway!
in the current state this isn't mergeable and you haven't addressed the feedback comment
thus i'll be closing this for now, if you're still interested in finishing this up feel free to just respond
thank you either way!
god finally I fixed it
hmm after further testing this setting doesn't work as well as the extension
but i wanted to remove the opinioated extension suggestions anyway and only leave the 100% required ones in, so i'll still merge this
46801de chore: tidy up suggested vscode extensions list... - mcpower
@austere talon does memos that depend on component props need to include it on the dependencies?
I thought if the props changed the component rendered again completely
I guess not
you mean no as in they dont need to include?
i get the idea but this is borderline selfbotting and kinda creepy, so i think i'll have to deny this one
thanks for the effort anyway!
The image option for the PetPet command has not been working for about 5 months now, as noted in the closed #2070 pull request. This finally fixes it so it actually works again. This also includes clearing the slash command draft after you run it, so if you run the slash command again, the previously uploaded file from the previous slash command run will not be there in the upload area. The code to clear draft is placed in more than one area within PetPet's code to make sure the slash command...
thanks, looks good!
your formatting doesn't follow the project's configured formatter. make sure you're using vscode & have the suggested extensions installed! also in general i recommend using more newlines to separate different sections/"paragraphs" of the code
I'll review this
4d57267 new plugin ValidReply ~ fix "Message could not ... - waresnew
i get the idea but i feel like people would just abuse this to spam / mass mention. maybe you have an idea how to reduce the spam potential
thanks, looks good!
your formatting doesn't follow the project's configured formatter. make sure you're using vscode & have the suggested extensions installed! also in general i recommend using more newlines to separate different sections/"paragraphs" of the code
thank you! I'm kinda busy rn but I'll update the formatting of my other prs when I have time.
in terms of the formatting, I use jetbrains and it has eslint + editorconfig installed, so idk why it didn't autoformat
this line is redundant and can be removed. was this maybe added due to being in a third party repo?
unless you deliberately want it here, then you can leave it, but i would suggest adding your name
this entire split.map.trim isn't needed. you can just use settings.store.replyPingWhitelist.includes(id)
Overrides notification settings for replies to your messages to either always notify, or never notify, regardless of if the author enabled reply mention or not
or something like that
ah, that's because Vencord is configured to use the vscode formatter via .vscode workspace config file
it isn't really configured to work with other editors. i suggest just formatting your code once with vscode before pushing to github. sorry for the inconvenience...
it look good on quick glance
yeah
but ofc functionality needs testing
which psychopath uses these slash commands bro
f4d6461 feat(plugins/openInApp) Add tidal support (#2404) - Aztup
What do you mean by being independent of normal Discord quotes? Discord disables the normal quotes during events, so they are exclusive to each other. If you mean enabling the normal quotes on top of the event quotes during events, I may be able to do that.
What new option of toggling default Discord badges?
yeah you're right, I could do the seperation of delete/edit in another PR if/when I ever get to it. Apart from your review/changes I don't have anything else left to do on this heh
imo this ternary inside an if (essentially nested conditions) is kinda hard to parse. it'd be a lot nicer to do like
const moduleMatches = typeof patch.find === "string"
? code.includes(patch.find)
: patch.find.test(code);
if (!moduleMatches) continue;
looks good other than that
@austere talon wanna look more into it or can be merged?
What new option of toggling default Discord badges?
quotes, not badges, brainfart! i was mainly referring to this setting being quite confusing now that you can toggle default discord quotes. it'd probably be better to reword it a bit
Thank you for the fix! I also pushed a commit with just a small clean up and sneaked in a fix for things I did not realize earlier.
82f9e36 Merge remote-tracking branch 'upstream/dev' int... - Nuckyz
like Cats said, make sure you have that enabled. the plugin doesn't change anyhting about reordering, so it really shouldn't interefere
but even if it does somehow, it'd be best for you to just temporarily disable the plugin to reorder channels
god really
Ah I see your point. What about this: replaceEvents says "This plugin effects events (e.g. Halloween)", and enableDiscordPresetQuotes says "Enable Discord's preset quotes (including event quotes, during events)".
works for me and this issue contains no relevant info (e.g. error logs) so there's nothing we can do
if you're still experiencing this issue, use our support channel
okay I'm merging regex finds
can't reproduce and not vencord's fault either way! likely an issue on your/arrpc's end
[Vendicated/Vencord] New comment on issue #1647: [Bug] local settings persist across account changes
i think this should be fixed now? if there are still any plugins with this issue, please let usknow
c72099f feat: Allow finds to use regex (#2452) - Nuckyz
NOOOOO WHY WOULD YOU MERGE || /s ||
god there are still so many prs
hey at least its already down 50prs
fire
a few days ago it was still at 180
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
lets merge main
how
idk git is weird sometimes
d8b3869 ThemeAttributes: add larger avatar url variable... - BoardTM
5232a85 new plugin NoServerEmoji ~ hides server emojis ... - UlyssesZh
81d3f5d new plugin CtrlEnterSend (#1794) - UlyssesZh
97dd56c MoreUserTags: Add chat moderator tag (#2424) - eepyfemboi
840d571 Fix BetterSettings & StartupTimings patch - Nuckyz
I ran a merge and it forgot the merge commit
i wish google let u like temporarily disable ratings while you have updates pending
its so frustrating to have users complain and leave negative reviews just cause google is still delaying the update
well at least the two top guys left good stars anyway
true
google should just let us load vencord dinamically
it's not something that can survive without constant updates
we could make an alternative chrome extension that updates vencord internally
and then distribute it on vencord.dev as alternative that you need to manually install
but need to figure out how to store the code in a way we can load it synchronously
btw i plan to rehaul docs soon
the one thing I didn't test... because well it was jsdocs
maybe we can use some tool to auto generate docs from jsdoc
nvm
jsdoc is still poof without the omit apparently
whatever
it's because this is strongly typed I think, instead of being Patch[]
probably the fault of definePlugin
oh yeah also regex finds dont support \i
I just realized that
4d57267 new plugin ValidReply ~ fix "Message could not ... - waresnew
f4d6461 feat(plugins/openInApp) Add tidal support (#2404) - Aztup
4da8b9a PetPet: Fix Upload Image Option (#2461) - ScattrdBlade
f74da73 feat: Allow finds to use regex (#2452) - Nuckyz
54f58cd Fix: Canonicalize regex finds - Nuckyz
Converting to a draft because I suddenly cannot get my installation of Vencord working. The last commit is untested.
mf, I did not even finish the PR
lol
Anyways, I was not actively going to work on this either way, my procrastination kicked in
fear
or put it on the store and don't make it obvious so they don't notice
meh i don't like that
ticking timebomb
mozilla also didn't notice the violations for like a year then randomly nuked the extension out of nowhere
can't we email google and explain well why we should be allowed to do it
or like
how is tampermonkey allowed
you can eval anything there
and has auto update
because the user enters it i think
so why dont we do it
we would have to make it so that the user has to paste vencord url in ig
make the person paste the code for vencord once
it's way better than having google review everything
and for loading vencord we just need to cache it, and when it needs update we update the cache and restart the page
I think we can maybe use the extension storage for it, idk if it's async
which is fine
just make it possible to use custom vencord forks
and have a sane default 
make the url auto filled lmaoo
i think having a default is already not allowed
Back on. It should be good now.
I'm so happy you've made this dream come true! I understand it isn't officially released, But, I found it amazing how BetterDiscord had something like it, and I was just wondering beyond wonder why Vencord didn't have any option for it! Thanks @waresnew
How ready would you say this is or whatโs blocking this from being added to the plugin library, @Vendicated?
@R00tB33rMan there's nothing blocking it from being merged, it's just that i haven't gotten to it yet! there's quite the backlog of pull requests so it sadly takes a while sometimes. anyway ill look at this some time in the coming few days
you (and anyone reading this) can always help by testing open pull requests early and leaving constructive feedback / finding bugs yourself
...
please add a readme file
This was meant for staying together when in a big server, not for being creepy but I get that
yeah i get that haha
but it's still a bit questionable
not every user is reasonable like you
it's probably better to keep it a user plugin, you don't want dozens of people stalking your vc location 
Should i open a PR that add arch to vencord-debug, i think support people would love to have it
the arch doesn't really matter
I see
unless you like have trouble running the installer but at that point you can't run vencord debug anyway :p
it's just to deal with people using 32 bit version on Windows and complaning that it is slow
can you still reproduce the issue you mentioned? if not, this seems mergeable
honestly looking back i might've been stupid and forgot to rebuild after the second commit or something, but it seems to work now after testing with people
but please undo the unrelated changes to the descriptions. all those strings are converted to full caps anyway so it doesnt change anything and just adds noise
yep sounds good, i've gone ahead and reverted all of that
wdym? upstream as in PR into Vencord:main?
https://github.com/Vendicated/Vencord/issues/1985#issuecomment-2111487834
@Vendicated, do you know how to diagnose what component's fault it is, so that we might be certain? Regardless, I've reported this to https://github.com/OpenAsar/arrpc/issues/90#issue-2297485776 as directed. Thanks for the assistance.
overall appears fine to me, I won't approve now because I didn't do the greatest review but it seems fine and there's nothing super out of place except error filtering might be useful to tell the user they put in the wrong webhook url rather than flooding them with the full error
might be worth checking the error (I don't fully remember API error codes) but some filtering might be good so the user isn't flooded with a massive error message if they put in the wrong webhook url
Maybe for venmic
ok it looks like a lot of people use this plugin to partially solve idling while the window is in the foreground
i think i'll be able to add that as a separate setting at some point
in terms of formatting, i can't access vscode rn so i'll fix it in like 10 hours
i'll add a readme in a moment
Discord Account
Komkry#0630
What happens when the bug or crash occurs?
Plugin VcNarrator doesnt work or wont even start
Vencord: v1.8.4 โข f74da73 - 15 May 2024
...
tested and should be ready to merge
This seems to be a weird problem with some Android ROMs (mainly AOSP-based ones without heavy changes like LineageOS for example). There is a hacky solution by using the Xposed based themer, but it breaks most themes. I can post it here when I have time.
ServerProfilesToolbox
Added avatar decorations and profile effects.
However I still can't test it because I don't have Discord Nitro
Changed it to use an object instead and added buttons for clipboard copy/paste
for anything that isn't a simple text input
:p
Agreed, changed according to suggestion
^ ? ;p
i get the idea but i feel like people would just abuse this to spam / mass mention. maybe you have an idea how to reduce the spam potential
Added some logic to only show the button for channels the user is currently in. The main idea is to quickly mention friends, what if there was a limit to how many people can be in the vc (what would a good limit be?) or only mention people you have a relationship with?
To the upstream oneko code
Fixes #2462
the issue mentioned above applies to all plugins without a start/stop function defined (like MoreKaomoji)
this occurs because the stopPlugin and startPlugin functions in plugins/index.ts rely on a stop/start function being defined respectively
so when I disable VcNarrator, p.started will still be true bc VcNarrator doesn't have a stop() function defined
then when i try to enable it again, it'll error bc it thinks it's already started
fix is to move the `p.start...
Lets you view the icon of group channel icons by adding an entry in the context menu "View Icon".
thanks for the contribution!
would be useful to also make this image clickable
thanks for the contribution!
would be useful to also make this image clickable : Show milliseconds option ... - rozbrajaczpoziomow
okay nvm I fucked up more
horror
a bit of skill issue
@austere talon lmao look at showtimeout duration with compact mode
however I fixed this crazy space on normal mode
I took the liberty to clean it up a bit, thanks for the fix!
fb19642 fix(readAllNotificationsButton): Mark threads a... - PonyGirlDShadow
Couldn't be happier when I received the notification the issue is resolved. Thank you everyone โฅ๏ธ
Yeah I haven't been able to figure it out (couldn't find the thing to patch) sorry I'm too inexperienced with patches ๐ญ, but if anyone wants to add it go ahead it's also possible for the user icons when you open a normal dm next to username I guess.
I did it for you
thanks
no prob!
yeah that's the one thing I didn't test on that PR, sorry
it's okay no worries
all fixed now, and everything was still on dev so it caused no issues
Thank you for the new feature!
should be fine to close the plugin request I made that PR from now
I dont have permissions to manage that repo lol
I can't believe I had to use a regex find one day after it got merged
Why don't you have permission lmao
I never asked for permission
I guess that doesnt need to be a regex find
horrible find but I found something
.cursorPointer:null,children
also was kinda funny to see you fix my PR and then have to fix it twice more again, probably better that I didn't add to Devs just for that lol ยฏ_(ใ)_/ยฏ
aight imma shut up now
oops
way better to not use a regex find
push war
prs going down
I think I've mentioned this before, but "Tablist" is a confusing name for this API
Something like ExpressionPickerTabAPI or like that would be more clear to anyone building upon this
I have no idea about https://github.com/Vendicated/Vencord/pull/2421/
vee reverted the other fix but I dont have a single idea of what are the issues
Yeah I haven't been able to figure it out (couldn't find the thing to patch) sorry I'm too inexperienced with patches ๐ญ, but if anyone wants to add it go ahead it's also possible for the user icons when you open a normal dm next to username I guess.
I did it for you
Thank you ๐
const backOnlineMessage = "Welcome back! Click the button to go online. Click the X to stay idle until reload.";
if (Notices.noticesQueue.some(([, noticeMessage]) => noticeMessage === backOnlineMessage)) return;
Notices.showNotice(backOnlineMessage, "Exit idle", () => {
Notices.popNotice();
FluxDispatcher.dispatch({
type: "IDLE",
idle: false
});
});
The way this is currently done has a big problem. The same function that handles setting mobile notifications to true is the function that sets the idle. It is ran using a setInterval as seen here:
Modifying IDLE_DURATION to MAX_SAFE_INTEGER causes "C" to run on loop non stop. But also, modifying it means you are still making setting mobile notifications depend on the new idle timeout, bec...
I have applied my suggestion of a better of handling showing the notice, and also better formatting. But the issues I mentioned are still present
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
I'm not entirely sure what this code will actually do because it seems a little redundant given that the error has already been thrown, so instead, better to check if the api is returning a 404 error which (if my memory of actually querying the api is correct) would mean the webhook url doesn't actually exist.
@Vendicated the feature request to add an option to change oneko speed has been there for a while all this does is allow customization and it also moves it to the oneko plugin from the decrypted plugin decoration thing to the new one.
Adds a plugin called "File Share" which adds a /fileshare slash command that allows you to upload files to gofile.io and then pastes the link into chat box to share with others. Since its a quick and easy way to share files, this would be very convenient for people who want to upload big files but don't have Discord nitro. Plus, it doesn't require other users to directly download the file if they'd like to view the file without downloading (such as a PDF).
Discord Account
No response
What happens when the bug or crash occurs?
Messages from likely spammers are completely hidden despite not being blocked. iLoveSpam fixes this as it completely overrides the flag I'm guessing.
What is the expected behaviour?
I would expect them to render as usual, with an option to show messages
How do you recreate this bug or crash?
- Find a message from a likely spammer
- Enable NoBlockedMessages
- Press Ctrl+R
- it has gone :o
##...
The way this is currently done has a big problem. The same function that handles setting mobile notifications to true is the function that sets the idle. It is ran using a setInterval as seen here: 
Do not do this, name your plugin folder fileShare.desktop instead
Also, is this even required to be marked as "desktop only"
ok i just realized that setInterval's delay has to be a 32 bit integer
so MAX_SAFE_INTEGER was making it overflow to 0 :skull:
technically this made it so the setinterval was still being run but this probably caused lag
lol yeah i was gonna say that
oops
Working on this PR
https://github.com/Vendicated/Vencord/issues/1556
And it seems .hide() will requires you to call .show() in code to re-show the window, so, i am asking how should be tackle this?
GitHub
Discord Account No response What is it that you'd like to see? I would like an option that makes Discord minimize itself to the system tray when using Alt+F4, instead of closing completely, sim...
could add an item to menu bar but eh it gonna be complicated
Honestly, I wasn't sure originally if it'd work on the web and never ended up removing it later
oh no this is a bad approach, woops mb
yeah you can just listen to the quit event
and if a given condition is met cancel it
Good idea
But when we hide the window, how will we re-open it? do we let the user click the Discord app icon? or do we add a new item to the Menu?
my dumbass really called it file uploader instead of changing it from gofile uploader to file share in the pr title 
never staying up till 4am ever again
decided to not work on the PR futhur, i have school
@Vendicated I was wondering if this could be merged anytime soon... It looks like it slipped through the cracks
I think I've mentioned this before, but "Tablist" is a confusing name for this API
Something like ExpressionPickerTabAPI or like that would be more clear to anyone building upon this
don't you think that a bit too long? I will see others opinions, there is probably better namings then TablistApi as you said.
in my opinion there's never too long
better a long, descriptive name, than something misleading
Resolves https://github.com/Vencord/plugin-requests/issues/564
Waiting for confirmation if the logic is okay
NoDefaultHangStatus
@Vendicated all updates that you asked got implemented!
did discord bomb legacy icons entirely
Don't update this file, another pr is already targetted for it
I agree, is it possible to just avoid the update hang status being fired for when you join the channel?
I had no idea 32 bit was the max, tried to search about it and couldn't find anything
I wanted to do that too but I don't know if there's a way to cancel events :o
I already waited for this comment yeah should probably format back
What is sending that event? The client or the server websocket?
I'm certain the client dispatches it
Should I just revert my changes?
okay but based on what? what is the root cause that causes this to be fired? ws event? joinChannel function?
I don't think it's gonna be needed
okay but ideally we don't wanna cancel it
we want to avoid sending
the setinterval was firing very often so i googled it
never thought i'd had to worry about overflow in javascript
thought i could just slap on safe_integer
makes sense haha
I tried to slap infinity and had the same issue
ain't infinity just a zero with a special bit?
no idea what it is internally
nvm
The IEEE Standard for Floating-Point Arithmetic (IEEE 754) is a technical standard for floating-point arithmetic established in 1985 by the Institute of Electrical and Electronics Engineers (IEEE). The standard addressed many problems found in the diverse floating-point implementations that made them difficult to use reliably and portably. Many...
Now it's using a patch to cancel the event
Bad Patches
None
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None
Bad Patches
FakeNitro (had no effect):
ID: 176354
Match: /if\(!\i\.available/
Bad Webpack Finds
None
Bad Starts
None
Discord Errors
None

๐ญ
does anyone know what are these COMMUNITY_CONTENT emojis
also kinda of cleaned up module that determines if you can use an emoji
const Constants = n("185923");
function isGuildEmoji(emoji) {
if (emoji.type === r.EmojiTypes.GUILD)
return !0;
return emoji.guildId != null;
}
function isEmojiFromSameGuild(emoji, guildId) {
return emoji != null && guildId != null && (!isGuildEmoji(emoji) || guildId === emoji.guildId);
}
function canUseEmoji(props) {
var propsGuildId;
const { emoji: emoji, channel: channel, intention: intention, forceIncludeExternalGuilds: forceIncludeExternalGuilds } = props;
if (intention === Constants.EmojiIntention.COMMUNITY_CONTENT_ONLY && emoji.guildId == null)
return Constants.EmojiDisabledReasons.ONLY_GUILD_EMOJIS_ALLOWED;
if (!isGuildEmoji(emoji))
return null;
const guildId = (propsGuildId = props.guildId) !== null && void 0 !== propsGuildId ? propsGuildId : channel == null ? void 0 : channel.getGuildId()
, isGuildTextChannelType = channel != null && (0, s.isGuildTextChannelType)(channel.type)
, isGuildVocalChannelType = channel != null && (0, s.isGuildVocalChannelType)(channel.type)
, emojiFromSameGuild = isEmojiFromSameGuild(emoji, guildId)
, canUSE_EXTERNAL_EMOJIS = o.default.can(E.Permissions.USE_EXTERNAL_EMOJIS, channel);
if (intention === Constants.EmojiIntention.COMMUNITY_CONTENT || intention === Constants.EmojiIntention.COMMUNITY_CONTENT_ONLY)
return emojiFromSameGuild && emoji.available ? null : Constants.EmojiDisabledReasons.DISALLOW_EXTERNAL;
if (!(0,
Constants.isExternalEmojiAllowedForIntention)(intention) && !isEmojiFromSameGuild(emoji, guildId) && !forceIncludeExternalGuilds || (isGuildTextChannelType || isGuildVocalChannelType) && !emojiFromSameGuild && !canUSE_EXTERNAL_EMOJIS)
return Constants.EmojiDisabledReasons.DISALLOW_EXTERNAL;
if (!emoji.available)
return Constants.EmojiDisabledReasons.GUILD_SUBSCRIPTION_UNAVAILABLE;
const currentUser = l.default.getCurrentUser();
if (!c.default.canUseEmojisEverywhere(currentUser) && !emojiFromSameGuild) {
if (intention === Constants.EmojiIntention.STATUS)
return Constants.EmojiDisabledReasons.PREMIUM_LOCKED;
if (!emoji.managed)
return Constants.EmojiDisabledReasons.PREMIUM_LOCKED;
}
if ((0, a.isUnusableRoleSubscriptionEmoji)(emoji, guildId != null ? guildId : void 0))
return (0, i.shouldHideGuildPurchaseEntryPoints)(emoji.guildId) ? Constants.EmojiDisabledReasons.ROLE_SUBSCRIPTION_UNAVAILABLE : Constants.EmojiDisabledReasons.ROLE_SUBSCRIPTION_LOCKED;
return !emoji.animated || c.default.canUseAnimatedEmojis(currentUser) || (0, a.isPurchasableRoleSubscriptionEmoji)(emoji) ? null : Constants.EmojiDisabledReasons.PREMIUM_LOCKED;
}
ah
it seems
tbh idek how to open emoji picker in channel edit
but this is like channel edit
oh for forums
@austere talon are those pay to use emojis not handled here?
oh wait nvm it's here I think
sorry for ping
are u in a server with p2w emojis
need an invite?
invite anyway 

@austere talon i know you're using #1240831391298490419 for testing, do you mind setting a channel topic on it and not absolutely nuking it for a few days
why



