#πΎ-core-development
1 messages Β· Page 4 of 1
nop
why did u disable source maps @fiery jungle @fiery jungle
because there was no use for them
https://cdn.discordapp.com/emojis/967472493667450890.webp?size=64
could you even use them
i tried
rusher
the source maps are on for the patcher and preLoad
renderer has them off
yeah but you cant even view them right
but u can change it to inline and you'll have renderer source maps
it will still help with debugging why patcher isn't working
you need to enable source maps in devtools guhh
Also u need to enable source maps for renderer
the other two aren't related to renderer
you will remove css from plugin manifest 
i did enable sourcemaps
So I'm unsure of the use-case for the PluginDef.css property.
Convenience and less duplication.
The practical issue is I have no clue how on earth to selectively import all **/*.css files in a way that esbuild's css plugin detects the import
anyways css modules based

death
import styles from "./cum.module.css"
document.head.classList.append(styles.cum)
you love
- isnt really togglable
- why would you want to add each class manually
also not every statement would use just one class
it is toggleable
run on start and stop func
husk
just on stop remove instead of adding
adding tons of classes to the document root isn't the smartest idea

honestly 2 is a good point
what if u wanna apply custom styles to discord classes
^^ thats what i meant
and styles are niche enough that modules aren't that useful, just prefix your classes with your plugin name
gu
fair
explode
me
me
me
github 
me
so are we keeping css as plugindef.css to add manually?
it's fine ig xd
trolley
me
we can always make it better later ig
I'm a fragile little femboy
Im running out of sfw chat bubles
I have tons of nsfw chat bubbles
me
sniff sniff i-is that a BOY I smell? sniff sniff mmm yes I smell it! BOYSMELL!!!! I smell a boy! W-What is a BOY doing here?!?! omygosh what am I gonna do?!?! THERE'S A BOY HERE! I'M FREAKING OUT SO MUCH!!!! calm down calm down and take a nice, deep breathe....
sniff sniff
it smells so good! I love boysmell so much!!!! It makes me feel so amazing. I'm getting tingles all over from the delicious boyscent! It's driving me boyCRAZYIIIIII if u are a boy and u are reading this, I just wanted to say hiiiii cute boy!!!! I love you!
actually don't u just have to name your file blah.css and it won't be a module?
hmm but I would prefer if every plugins css becomes its own file that's only attached when the plugin is enabled
instead of making a giant combined file that's unconditionally added
skill hmm
find a way to get the module through vencord.webpack
you can lazy load the css
thats what i did
For example search()?
findByProps("sendBotMessage")
idk how esbuild can do css lazy load tho
search() is only for console finding
could implement esbuild css loading ourselves and generate an object
export default styles {
MessageLogger: ".baller { display: none; }"
}```
how do media queries work in style objects
and don't forget to run scss transpiler over it first
open devtools settings
and enable Javascript source maps
then it should work
are u sure it doesn't work
Vencord.Webpack.find
then right click and jump to definition
oh nvm it works
trol
ye
i love
insanity
should i enable inline
wdym
and merge to repo
could add a custom vencord:// protocol and use that as source mapping url
wha
so source maps are available without the bundle being mega bloated for everyone
what
vencord://
franky, i have no fucking clue what i am doing
@austere talon
plugin to show message links as embeds in chat

would be way cooler if you made it render as actual Message Components instead
i did not realize that could be done
great idea
shouldn't this use the new keyword?
construct: (_, args, newTarget) => new newTarget(...args),
it definitely can be done, just have to fetch the right components and figure out how to render them properly based on the fetched message
Cyn had a cumcord plugin that does this, it is outdated now but can still be used as reference
https://gitlab.com/Cynosphere/cumcord-plugins/-/tree/master/MessageLinkPreview
getOwnPropertyDescriptor, getPrototypeOf, isExtensible, ownKeys, preventExtensions, setPrototypeOf
yeah
actually keys might be relevant
ill add ownKeys
do you know of a webpack module that returns a class so i can test construct
construct: (_, args, $this) => Reflect.construct(getMod(), args, $this),
ownKeys: () => Reflect.ownKeys(getMod()),
and so on
trol
reflect is slow
no difference
yeah, i have no idea where to even start with that (mainly because i barely know what i am doing) and im fairly sure i need to completely rewrite this to show as a message
i'll just close the pr and return when i can figure out how to do that
yeah but
it looks bad, even for an embed
embed better than nothing and even if someone makes message component feature having it toggleable might be nice
make embed better then

will probably not touch it for the day though because i have a bunch of school shit to do
day 2 of not having exactly 69 lines of code :(
FIX
- FakeClyde || Uses Clydes message function to send a custom message of your choice (locally)
- sendBotMessage || Shortens sending messages via clyde to an api util
oh shit dont pull yet, gonna add some docs inside the code
You mean merge
never said i was good at github
wtf 12 prs
Thats what Im saying
Maybe remove some by merging my prs :>
lmao
73a1bc9 fix(lazyWebpack): implement more proxy traps (#65) - DiamondMiner88
work it girl ig
should cache this / use waitFor on top level
What's loggingName exactly?
Add types please
embed should be embeds to be able to send multiple
- I should, will do now
- As stated in the doc thingy, I genuinely have no clue
- Not 100% on what you mean with types
- You are right with that, will fix now
Plinko, I guess
I know but i was gonna have to use React.createElement anyways for the timestamp component so i decided to stick to one
It would have worse indentation layers anyways
I know but i was gonna have to use React.createElement anyways for the timestamp component
y
<this.timestampModule.messageLogger_TimestampComponent />```
wtf is tsanalyser
real
tsc?
tsc is compiler isnt it
it does everything
trolley
yeah tsserver
"Not 100% on what you mean with types" π π
I mean, everything is there so 
π π π
be nice π


yeah but like π
@austere talondo it be working now
oki
plugin to show message links as embeds in chat
not gonna do them as message components because i am way too smooth brained for that, just embeds for now
also at the moment it only gets the messages from cache and will not fetch them, which i'm assuming is an issue. i'll fix soon after i figure out how to actually fetch stuff
plus the embed looks good now and has a decent amount of info (definitely didn't just copy the aliucord plugin embed :trollface:)
12 commits for an owoifier plugin
someone doesn't know how to squash commits π
you should update the regex to also allow working for dm channels @me
vendy can you just merge please i feel like ive been edging for a week now, it hurts
instead of reducing the line count, this mf increased it
this PR will never get merged ig
I added an eslint config now, thanks for the suggestion! (https://github.com/Vendicated/Vencord/blob/main/.eslintrc.json)
I don't know eslint too well so maybe there's more rules that should be added. If so, just feel free to suggest them
I avoided the "recommended" config because I dislike some of its rules like ban-var (var is useful to hoist variables from try / if blocks)
All findByProps calls should only be called once, there is no need to call them multiple times.
no
what a faggot
Problem? 
yea

actually I am eating dinner rn I will look in like soon minutes echo please forgive me
I CANT SLEEP. I CANT EXIST. IM DYING INSIDE
EVERY DAY I WAKE UP SPEEDING TO MY COMPUTER CHECKING IF MY PR IS MERGED
EVERY SECOND IM CHECKING GIT JUST TO BE SAD THAT MY UWUIFIER WASNT ADDED TO THE VENCORD REPO
I CANT EAT. I CANT WORK. I CANT CUM. PLEASE HELP ME
huh
r u gonna cum if I merge
i will cum if you merge
will u post proof
im 17
mb
All
findByPropscalls should only be called once, there is no need to call them multiple times.
I'm... not sure what you mean by that. It looks like they're all called only once to me. Or do you mean move them to someone where they're only declared on plugin start?
bet
HORROR
HORROR
HOLY SHIT IM CUMMING ALL OVER MY COMPUTER
Tokenlagged


that's gonna be funny for a while
hell nah shawty wtf is this
All
findByPropscalls should only be called once, there is no need to call them multiple times.I'm... not sure what you mean by that. It looks like they're all called only once to me. Or do you mean move them to someone where they're only declared on plugin start?
they are called whenever you create an embed, that doesn't seem only once to me

its beautiful code
yeah you should use waitFor / lazyWebpack on the top level and reuse the same module to not unnecessarily fetch the module multiple times
Your patch also has a lot of inline logic, it'd be cleaner and nicer to maintain if the patch would only call a method on the plugin and have no logic in the actual patch
why do u think I took so long to merge 
but it's not like it matters since it's just silly fun cmd
I mean it's not bad code, just a little messy
thanks :3
@austere talon does waitFor/lazyWebpack work the same as findAndPatch in CC?
i have no idea what findAndPatch is
The documentation for Cumcord, a Discord client mod for your Discord client mod.
waitFor registers a callback that checks modules as they register and resolves once it matches one
lazyWebpack searches the module on first property access
i miss cumcord
const unused = lazyWebpack(filters.byProps(["baller"])) // does nothing
const baller = lazyWebpack(filters.byProps(["baller"]))
Dispatcher.subscribe("MESSAGE_CREATE", () => baller.baller()) // searches on first use then caches the result
yeah this is literally waitFor()
Alrighty then patching into contextMenu is still possible
we dont monkeypatch
so doesnt matter anyway
this syntax is really cursed why does it still do normal webpack search and not just pass a filter, that makes me think it just runs it on an interval```js
const unpatch2 = cumcord.patcher.findAndPatch(
() => cumcord.webpack.findByDisplayName("MessageContextMenu", false),
(MessageContextMenu) => cumcord.patcher.after("default", MessageContextMenu, () => {})
); // works!
thank god it doesn't but it searches all modules on every push thats still cursed
if the fucking uwuifier can get merged this can get merged

you didn't even follow the suggestion by adryd from 4 days ago
i did i just didn't push the commit until now lol
(and it's broken anyways because i forgot a comma :skull:)
guy who ignores comment and whose pr doesnt pass lint workflow: why my pr no merge???

Oops, forgot to submit my review...
instead of finding it on each message...I'd suggest saving the method somewhere and checking if it is saved or not
since the replace string is long af, I'd suggest storing it outside of the plugin definition (in a constant) with proper newlines, and just replacing the newlines with an empty string.
That way it will look more appealing, and won't be any different than it is now.
WHY DOES IT STILL FAIL TO BUILD
love
oh you goofy ahh mf
wtf
why did i use a single-quote string in one spot but no-where else
i tried to instead move most of the logic outside of the replacement string to a new function and i'm failing horribly at that so that's a better idea
this review was written before ven commented, use waitFor / lazyWebpack instead
@austere talon instead of failing the linter, how about automatically linting a PR and pushing to it?
there 
why does MY pr not merge, it passes lint and i respond to comments

I mean
My FakeClyde plugin still doodoo water because comment
But my canary subdomain remover should be allowed
okay so its really late for me and i wanna sleep so i'll just leave this as a dumpster fire and deal with it tomorrow
and tmrw the code is gonna look like egypt drawings to you
probably
i can do the changes i suggested if you want

you cant use findByProps on top level because plugins are evaluated way before discords webpack modules load
gotta use waitFor/lazyWebpac
or findByProps() in .start()
well, it aint a requirement either, you can have empty variables on the top level, and initialise them when needed
or just use lazyWebpack, cause its the same
Depends on #62 to prevent merge conflicts
- Adds web installing documentation
- Adds support for watching web build
- Support for launching chrome/firefox with test extension
Ok so, in webpack/common.tsx, add
export const UserStore: Stores.UserStore = lazyWebpack(filters.byProps(["getCurrentUser", "initialize"]));
export const GuildStore: Stores.GuildStore = lazyWebpack(filters.byProps(["getGuildCount", "initialize"]));
export const ChannelStore: Stores.ChannelStore = lazyWebpack(filters.byProps(["getChannel", "initialize"]));
export const GuildMemberStore: Stores.GuildMemberStore = lazyWebpack(filters.byProps(["getMember", "initialize"]));
...
Allows for plugins to open external urls to apps like spotify and steam
idk where to put that array feel free to move it (explode)
It is inevitable :trollface:
i was gonna do this plugin but i spent 6 hours trying to do good regex for where links are clicked/handled and nothing worked 
also epic webhook spam
what plugin
so https://store.steampowered.com/app/719080/Fart_Simulator_2018/ would open steam to steam://details/719080 (well technically openurl but
)
So you request from someone to fart...but you fart before they can even reply?
You should instead play the fart sound when the person you asked says "farted"
enables sharing of AV1 encoded videos through a bodged link because discord sucks
Good eye, however you take the assumption that the person will comply, so no waiting is required.
what's the use case?
what, what happened in iLoveSpam
the reason tenor gif's aren't embedded is because there's no convenient way of getting the gif itself, and the discord proxy only has the gif as a video which cannot be embedded. any non-tenor embeds should work though.
Add the store definitions in webpack/common.tsx
is it a good idea to add definitions to webpack/common.tsx in a pr that is most likely gonna get squash-merged
How to replicate
-1. have waterfox
0. have vencord all set up for both build web and normal build
- build web
- try to use it in waterfox
- bug replicated
Theres a flag missing thats required on manifest.json for it to work
after patching the web zip file myself after building i have found that customcss will not work unless i have good knowledge of how the source code works
Theres a flag missing thats required on manifest.json for it to work
What flag?
what, what happened in iLoveSpam
Moving author to author list instead of repeating it in every plugin
this one sadly doesnt fix the missing manifest key

(example of the flag thats normally missing, also i made a pr that fixes this)
that pr is really cool btwthanks @fiery jungle
but I still don't like the sass implementation 
zzzzz why does this crap use lodash https://www.npmjs.com/package/esbuild-css-modules-plugin
ive checked a version before my prs and i dont see those
its litterally the current version
the pr adds it
the pr has not been merged

github said it can be merged
if you meant my pr
??
your pr isn't even there
it didnt exist somehow
you can check the code for the fork
one flag,
and it works
whyre you opening a duplicate pr
its not a exact duplicate
cause it has the basics for firefox or waterfox users to have a working web extension
the other pr that also did that? that ones a draft
mine is litterally the basics
yes i know custom css dont work
but its the BASICS for it to run
the waterfox users tho
first time ive heard waterfox is even a thing
think about the firefox based browser users
which again, cant even install it because you need to sign the ext for a permanent installation
actually waterfox users can
i wouldnt be suprised if youre the only one in vencord that uses waterfox
it just says "its unsigned so we cant trust it read our documentation for more info"
@austere talon will do css modules
thats like a second browser for discord stuff for me rn
btw just shill ungoogled chromium @fiery jungle
dev said he will support v2
Also does that web-ext cli launch correctly open any chromium browser? or just chrome
is there a way to customise the exact path
I use ungoogled chromium flatpak
yeah theres a way to customize binary path
it defaults to google-chrome.exe or something though
cring
basic flag addition for it to work on firefox based browsers and firefox
(doesnt include css support (its not my problem that it isnt for browsers))
it allows you to supply custom profile directories to save data between launches
i couldnt get it to work with either ff or chrome
rusher
you will the unsass
yes
whatever that is 
but without sass plugin
tell me youre lazy without telling me youre lazy
github change detect thingy:
??
whats wrong with the canary remover plugin π
THE ] BEING A ], ISNT A DELETED LINE
you clearly dont seem to understand how diffs work
what
basic support
(no quickcss support cause its not on the main thing)
BALLS
vendy make quickcss work for browsers
soon
who needs quickcss when you have light mode
we could actually do this
// old
replace: "blah,Vencord.Plugins.plugins.XD.doFunny()",
// new
replace: "blah,wreq('VC_XD').doFunny()"
then make it
isnt that more laggy
okay but is there a point in doing that
work
webpackrequire
no
webpackrequire is literally just like node require
if you have the module name it's O(1)
why tf would i name it that tho, makes 0 sense
it is webpack require
get to work
if its running with constant rerenders then theres no way require is more efficient than direct property access
guhhh
surely
you will do css modules first
make webpack require stff then css module
nop
@austere talon @austere talon couldnt we make a website to automatically distrib & install extension
one click client mod 
we will the most popular web mod
imagine
I dont think the way the client is structured rn allows for that easily
its impossible to code a website so it automatically dos that
I HJATE JS DEVELOPERS THIS IS ALL HE USES IT FOR
me when i add 1.5mb package just for
function upperFirst(s) { return s && (s[0].toUpperCase() + s.slice(1) }
function camelCase(s) { idekWhatThisDoesBro() }```
as long as signed unlisted chrome extensions dont require you to pay then theres no problem
bruh
From what I understand, plugins are patched in before start, so you cant install plugins without restarting discord. Plus, you need to rebuild the client every time you install a plugin. I am now realizing we might not be talking about the same thing
yeah definitely different things
plugin install for what
vencord
but vencord don't support 3rd party plugins
one vencord build contains all of the plugins
if only there was a way to enable a plugin that has patches without having to reload

WH
Y
you will fork and pr no lodash
having plugins builtin to vencord are deffo useful and add an extra layer of security, but if vencord grows it will be more difficult for ven to review the code of plugins and add them to the repo
thats when you have volunteers that Ven trusts to review code
vencord will use lodash
finally, moyai plugin
πΏ
HOLD ON IM ADDING IT TO THE FIRFOX FORK

π
WE HAVE MORE IMPORTANT PRS
@umbral hedgestupid
no we don't
@austere talon merge the other prs when
π
never
πΏπΏπΏπΏπΏπΏπΏπΏ
πΏ
π
@umbral hedge πΏ
πΏ
MERGE THE OTHER PRS
IF YOU WONT THEN I WILL
@austere talon you will fix
CRAP
this.execute
nop
yop
technically dms are in guild none
nop
dont just merge next time πΏ
I pinged you like 2133e123123 times and you ignored πΏ
might as well have just pushed to main directly 
it was literally 4 minutes

why are there two

πΏ











silliness couldn't be contained to just one
ok all done now
πΏ
πΏ
πΏ
πΏ
πΏπΏπΏ
πΏ πΏ πΏ epic megu fail
πΏπΏπΏπΏπΏπΏ
not me rushing to push out funny plugin bc im not going to be on my computer for the next 2 days and am getting train in 30 mins
πΏπΏπΏπΏπΏπΏπΏπΏπΏπΏπΏπΏπΏπΏπΏπΏπΏπΏπΏπΏπΏ
that's crazy
πΏ
πΏπΏπΏπΏπΏ
oh god i should've known better to have restarted my client in this channel
trol
πΏ πΏ πΏ πΏ πΏ πΏ πΏ πΏ
πΏ
ITS MERGED
OH GOD
BEUTIOFUL

ITS A DISASTER
πΏ
πΏ
πΏ
πΏ πΏ πΏ
πΏπΏπΏπΏ

IT THROWS ERRORS AT ME IN THE CONSOLE
You me the gas statiOwOn. what meaw are we havinyg? Gas statiOwOn sUwUshi. Heww yes. twewks Uh oh thewe βwβ was a rOwOofy in our gas statiOwOn sUwUshi. We wake up in a sewew fUwUll of fish. scweams HOwOrny fish. βwβ What dOwOes that UwU m-m-meany? Fish OwOrgy. The stenych β₯(γU Ο Uγ) d-d-dwaws in a beaw. B-B-Beaw ^w^ fight? Bawe fists? βwβ Bawe... Naked? I thinyk so! We befwend the beaw aftew beatinyg it intOwO a bwaww. We wide it intOwO a chUwUcky cheese. sweats D-D-Danyce danyce revOwOlUwUtion! RevOwOlUwUtion? Over thrOwOw the gOwOvernment? I thinyk βwβ so! I bwack out againy. I wake up and do a winye. I white >:3 OwOUwUt, which >w< i didnyt e-e-even π¨ππ¨ knOwOw cOwOUwUld happeny. I w-w-weinycawnate >3< as jesUwUs. I tUwUrn intOwO a jet and fly intOwO the sUwUn. I wake up and smOwOke a jOwOint. I gween OwOUwUt???? I wake up and i am the sUwUn???? Oh no! LOwOoks wike the meth is kickinyg ijsjnjΓ°OwOmmsooskaUwUaajs rge snyAAA AAAAAA A-A-AAAAAA
@umbral hedge settings page rewrite when
soontm
maybe next weekend if ur lucky
trol
honestly I'd love if plugins didn't have to be merged into vencord
would make a cool plugin db thing
but ven is a meanie
pluginrepo flahsbacks
betterdiscord flashbacks
trol
imo centralized plugins is still the best way forward
tokenlogger flashbacks
basically it'd just git clone plugins into a folder, and if there's an update, give u the choice to view diffs & update
so no auto-update tokenlogger

that's their fault tho
i dont want to review diff every update either
you don't have to
i will
you don't even have to update the plugins if you dont want
let me do that
no
yes
but when theyre broken you have to review diff
i deserve the pain that comes with it
yes
i do
and i will
ok im making a repo exactly for plugins
I like that
tbh i could add a third party plugin system later
which uses a separate plugin dir
idk
thats for future me to cry about
and then we claim no responsibility for 3rd party plugins
meanwhile ill chill with a repo for plugins
instead of making a system for it
basically: i will look at the code of the plugin thats wanted to be put there. make sure its safe then put it on therepo
and anyone can git clone in the right directory to get those plugins
yes that means ill merge some prs instead of vencord
and others can install those prs
https://github.com/emir4169/VencordPlugins curious people go here. also please note theres nothing there for now (now first plugin here)
smh, use a userscript manager or smth
first plugin is here
yes you still have to build vencord manually when you install a plugin
https://github.com/emir4169/VencordPlugins Did you make a plugin but is still waiting for it to be merged? Well no worries cause you wont need to wait for it to be merged to this repository! And the people who want to use it can use it like fine!
[PLEASE NOTE THAT I HAVE NO RESPONSIBILITY ABOUT ANY PLUGIN IN THIS REPOSITORY, also please pin]

do you even have a way to distribute them or load them at all
@austere talon will finish css modules this instant
wsp with my plugin being in there w/o asking
just gitclone on the vencord folder not src or anything
can i have no beta links on there
Yeah
YES
yop because the plugins for it areh orror
gotta reimplement from scratch probably

wha
HE START MERGING THE OTHER PRS
you will do
WAIT WE CAN PATCH OPENASAR AND THEN VENCORD.
WE CAN GET OPENCORD.
HOLY YOYLYOY.
I FORGOR KYZAMOD ON.
troll
what
why would it not work?
one of the functions being gone cause the openasar patched version is under 2% the size of the og one
duh
also the name "opencord" is already taken
oooh
for a different project
opencord my beloved
venasar
banned from the universe
OpenVenAsard
so my fakeClyde pull req is obsolete 
So far so good, what about fetching messages that are not cached?
opencord
i hate you
why did you have to add the Stores when an existing PR also adds them?
@verbal pumicedid you make message link embeds and if you did can i add it to a repo for 3rd party vencord extensions
who is that guy
@sly bobcat
he is kinda gay that's what!
who is that
funny
^
This just combines #69 and #60 and for some reason includes moyai, what's the point
This just combines #69 and #60 and for some reason includes moyai, what's the point
removing
export function sendBotMessage(channelId: string, message: string, embed: Embed[], loggingName = "Vencord") {
and import Embed
https://github.com/emir4169/VencordPlugins for 3rd party plugins that arent committed to the main thingyet (pin please)
no stop being annoying
no stop being annoying
no stop being annoying
yes
yes
yes
guys who wants to make a dev-muted role 
we will copy from aliucord
is there anything for Embed type or do I make smth myself?
i think there is
as in the typings for an embed?
should be yeah
wdym should be
sec I'm on phone
Looking at types.ts in utils there doesnt seem to be a type for embeds
If that is what you mean
pretty sure we have a lib imported with Discord types
Oh shit yeah
that's how I used Message type in moyai.ts
Alr, thank you <3
np
@tame escarp can i put kyzamode in a repo for 3rd party plugins
casue kyzamode isnt merged with vencord
i don't care but i couldn't stop you anyways because GPL
currently no progress, but i think i know where to start
tomorrow i'll have a decent amount of time so i expect support to be added then
can't
actually u can but its really ugly don't
worst case scenario you fetch the message using discord's REST API
but if you do that, make sure all the headers and stuff are present, so it is just like a normal request
just find the internals to fetch message
ive seen them before
fetching manually is a bad idea
us it not just fetchMessage()
just use discords rest api bruh
discord doesn't have code to fetch a single message cause the official client always just fetches batches of 50
yeah theres only fetchMessages 
use fetchMessages then https://cdn.discordapp.com/emojis/1020134870980235404.webp?size=64
const Rest = findByProps("get", "post", "put");
const data = await Rest.get({
url: Endpoints.MESSAGES(channelId),
query: {
limit: 1,
around: messageId
},
retries: 2
}) ```

Endpoints is just discord constants
find(m => typeof m.MESSAGES === "function")
you love F1
you love f1 being help on every app
my f1 doesnt even open the help page lmao
My next plugin is to disable f1 key
btw u should check if the returned message id is the same as the one in the link

cause sending invalid id will just return the message closest to it
it just gets timestamp from snowflake
are you a fan
ven is a fan
bro it is so fucking hard to find this FUCKING KEYBIND
Why do the retards at discord add a little name for everything EXCEPT KEYBINDS
try m.Endpoints
no lol
Im 100% sure its help desk something
I even found the keybind var or whatever
But i cant fucking understand this DOHG SHTI
Someone else made it, not gonna steal their source 
Just gonna abandon the idea
if they dont make it a plugin, then maybe I will be a bit devious and use their idea
But cant be fucked
@austere talon bro wsp with pr #60??
cause im dum
because i need a different name that doesn't conflict with find duh

you will love testo
~/.tmp




