#🧩-plugin-development

1 messages · Page 36 of 1

brisk dust
#

Roadhog

amber basin
#

real

brisk dust
#

I have custom plugins installed though

muted thunder
#

like

brisk dust
#

Like operagx sounds (my favourite)

muted thunder
brisk dust
#

And globalbadges

#

2nd fav

muted thunder
#

so true

rocky jackal
amber basin
#

patching discord code we mean

brisk dust
#

Oh, ok

muted thunder
#

I will see if i can make userpfp work

rocky jackal
#

custom settings go brrr (they broke all my patches, this was, once again, stolen from vencord's settings core api)

muted thunder
#

how do i regex

brisk dust
#

Idk

muted thunder
#

good

rocky jackal
#

I usually use this to test regex

muted thunder
#

imagine learning regex wtfhamster

brisk dust
#

I use AI

muted thunder
brisk dust
#

Because I've got no brain cells

rocky jackal
amber basin
#

dont

brisk dust
#

Could the plugin have functionality if alwaysanimate is enabled

muted thunder
muted thunder
#

nexpid wtfhamster

amber basin
#

i dont know how else to explain it

steep vapor
brisk dust
muted thunder
vapid oar
brisk dust
#

Like ?=

vapid oar
#

no

#

if it's an html element then html <a href="https://example.com" target="_blank">ghghfgh</a>

brisk dust
#

We are trying to create a Vencord plugin

#

I mean Wolfie is

vapid oar
#

yeah but

#

react uses html elements

brisk dust
#

I removed react from dependencies in the index.tsx file

muted thunder
#

im on my phone WHAT

vapid oar
#

then just

#

reimport it

brisk dust
#

Got told to

amber basin
#

no

#

you got told not to

muted thunder
#

performance wise it would just explode

#

probably

brisk dust
#

spookyblu

rocky jackal
#

hmm?

brisk dust
#

What should I ask AI to do

amber basin
#

dont

#

dont use ai

#

at all

muted thunder
#

AI should not be used unless you are ultimately stuck with something your brain cannot comprehend or stackflow doesn't have the answer

brisk dust
#

A great plugin developer is typing!

#

F53

cedar marsh
#

Only use ai to help name variables/functions/classes

"this function does _, list 20 names that would be good for it"

Then refine it's best results with "give me more names like _"

AI sucks ass at code but it is good at getting rid of that block of naming stuff

brisk dust
#

Can you help with making the plugin

rocky jackal
#

best use of ai I have ever seen

muted thunder
#

Ai should not be used to date as well

viral roost
#

ai is useful for understanding what minified functions do tbh

#

but it shouldn't be the one actually writing the code

brisk dust
#

Im going to build and then try out the edited version of the plugin with just a different url in the settings

viral roost
#

it should only help

muted thunder
rocky jackal
#

wait

#

wasn't the deco plugin merged?

muted thunder
#

i don't think so

#

yet

#

pretty sure the pr is still up

brisk dust
#

Not merged yet unfortunately

rocky jackal
#

though it doesn't seem to have a patch close to what we are looking for

#

so back to react devtools it is

amber basin
#

might have something

#

old wip plugin, has some patches that edit display names

brisk dust
muted thunder
#

doesn't user have like avatar field which u can just replace?

rocky jackal
#

wait

muted thunder
#

i think is the hash of the image

rocky jackal
#

couldn't we just tap into the user store directly?

amber basin
#

oo

muted thunder
#

yeah

amber basin
#

mayve

#

that would work

rocky jackal
#

but how would that go exactly?

#

cache, fetch, edit, replace

amber basin
#

hacky but we could monkeypatch

#

last resort tho

rocky jackal
#

or add a patch that just changes what the getuser function does

brisk dust
#

What are u doing?

muted thunder
#

patch

rocky jackal
#

checking the id of the user, matching it to the json file, replacing the pfp, then returning it

muted thunder
#

yeah

rocky jackal
#

wait

#

the e is the id

rocky jackal
#

so the p is the user array

#

wait

#

this is, almost too easy

muted thunder
#

it is

brisk dust
rocky jackal
#

just do the check, then edit the p[e] object

viral roost
#

how does fakeprofilethemes edit the user object? can't you just do the same thing?

muted thunder
#

doesnt it just tap into the getUser common?

#

or store

rocky jackal
#

exactly what we need to do, no?

muted thunder
#

getUser

brisk dust
#

It doesn't show the banners in the member list in:

amber basin
#

its broken

brisk dust
#

ok

#

Once you manage to get something sorted for the plugin, feel free to ping me (As many times as you like)

#

I want my discord to sound like the beeping of a microwave

amber basin
#

@stray imp ??????????????????????????

#

IM GETTING APPLE METAL ERRORS??????????????

brisk dust
#

how bad from 9 to 10

amber basin
#

i have zero clue

rocky jackal
#

where should I even start, I'm at a loss

#

should I try patching the getUser function(s)?

amber basin
#

try patching what adds to userStore

brisk dust
rocky jackal
#

uhh, whar?

brisk dust
#

I just did that

rocky jackal
#

and basically check the source url, split the id, match it with the list, and replace it

amber basin
#

oo yeah

amber basin
stray imp
proud cargo
proud cargo
#

it means get gud

knotty swift
#

For any plugin developers who are bored, please create a plugin that makes spotify previews not make you wanna blow your brains out ♥♥

dull magnet
#

already exists buddy

weary saffron
#

figured out the reason this line exists, the Modal is part of separator__925e8 class. I... Don't know how to make the modal not be a part of that class tho

dull magnet
#

you don't remove the line

#

just add a padding around the content and it'll look fine

weary saffron
#

that's what i am doing rn, but I really dislike the line

#

it looks like an easy fix

#

omfg all this time there was an arg to not have the seperator <ModalHeader separator={false}>

cedar marsh
cedar olive
#

I feel like writing a patching guide

#

like a deep one

dull magnet
#

do it

#

in markdown

#

So we can put it in upcoming vencord docs

cedar olive
#

yeah

cedar marsh
cedar olive
#

yes way deeper

#

it's gonna be focused on patching

#

finding the module you want to patch

#

and a bunch of examples

#

matching the code without writing super specific matches

#

and all the rest

weary saffron
#

that'd be awesome ngl!

cedar olive
#

yeah it's super hard for beginners

weary saffron
#

it is kinda fun trying to figure everything out without knowing what I am doing but it's not efficient

cedar olive
#

even for me it's not super quick sometimes

#

finding some things require you patience and a lot of use of the debugger to see where some data is getting generated and passed along

#

other times it's super quick though

weary saffron
#

So I made a modal with a bunch of text inputs. I just noticed though that pressing tab doesn't move through the different inputs

#

anyone know what I have to do to enable keybinds?

stuck falcon
#

ayo this seems cool

wooden dragon
#

ogange

#

ornag

#

orange

weary saffron
#

ogange

brisk dust
#

Oraneg

versed osprey
#

ogange

sacred eagle
#

Orang

steep vapor
#

range

cyan jay
#

orng

lone cedar
#

org

mint spruce
#

og

proud cargo
#

shu up

stable ridge
#

GitHub is scary now

ashen axle
#

i tried to commit and github is too scary send help

steep vapor
vale barn
#

@drowsy chasm

#

i need help

#

vencord wont install

drowsy chasm
#

help yourself to look for the right channel and to read the rules

potent fox
#

@drowsy chasm vencord wont install

steep vapor
proud cargo
proud cargo
#

explod

oblique lark
#

it doesn't even relate to sexuality at all 💀

wooden dragon
#

Confederacy of Infependet Systems

frigid nova
amber basin
#

:3

muted thunder
#

cant u test like patch stuff on vencord?

#

ive seen it before

#

not sure if its like hidden or sum

candid kraken
#

i think you have to run in dev mode (pnpm run watch or whatever it was)

muted thunder
#

ah

#

thanks

brisk dust
#

pnpm build
pnpm inject

#

Only inject if first time with Dev build

dull magnet
#

@cedar olive wanna see the worst thing you have ever seen

cedar olive
#

yes

dull magnet
cedar olive
#

oh no

proud parrotBOT
# dull magnet https://github.com/Tharki-God/ShowHiddenChannels/blob/main/src/plaintextPatches....

**plaintextPatches.ts: **Lines 24-30

find: /\.displayName="PermissionStore"/,
replacements: [
  {
    match:
      /(function\s*\w+\s*\(\s*\)\s*{\s*(\w+)\s*=\s*{\s*}\s*;\s*(\w+)\s*=\s*{\s*}\s*;\s*for\s*\(\s*var\s*\w+\s*in\s*(\w+)\s*\)\s*\w+\s*\[\s*\w+\s*\]\s*\+=\s*1\s*;\s*(\w+)\s*\+=\s*1\s*}[^]*)((\w+)\s*\.\s*getChannelsVersion\s*=\s*function\s*\(\)\s*{)/,
    replace: `$1$7.clearVars=function(){$2={};$3={};$4={};$5=0;};$6`,
  },
dull magnet
cedar olive
#

lmao I saw that already

#

how to not have an exact match

#

wait

#

he's using \s for space

dull magnet
#

how does replugged have so little useful plugin

cedar olive
#

WHY 😭

dull magnet
cedar olive
#

that's cursed

#

that has to be why

dull magnet
#

but also that developer is incredibly stupid

#

so it might just be dumb

cedar olive
#

he's trying to match a space after every thing

#

is that even performant lmao

dull magnet
#

test it xd

#

doubt its too bad

#

anyway i went through all replugged plugins out of curiosity

#

no clue why anyone would use this over Vencord or even BD

#

if you don't like vencord, BD seems way better than replugged

#

same principle but way bigger and so many more plugins

cedar olive
#

welp it didnt match anything

lofty crypt
muted thunder
trim shore
#

i've decided i kind of hate react

#

i say refactoring and updating an old class based react redux app from a decade ago

proud cargo
#

use solid :3

#

ryan my beloved

trim shore
#

meanwhile NestJS is love. NestJS is life.

#

do what now

#

i'm so going to have to argue my way into writing this new frontend in angular. i really don't want to use react again after this.

#

also TIL that react is run by meta. and fuck that.

austere mauve
#

who do you think makes angular

proud cargo
trim shore
#

isn't angular a google product?

austere mauve
#

yes

trim shore
#

google != facebook

proud cargo
austere mauve
#

they're both horrible

trim shore
#

yes, and?

austere mauve
#

why is ur point that

austere mauve
#

skulley

dull magnet
#

angular is even worse WHAT

proud cargo
#

use literally anything else
vue solid svelte

dull magnet
#

svelte is amazing

trim shore
#

i like angular. it's opinionated and organized and i understand it 😂

dull magnet
#

have u tried svelte

#

it's so cozy

trim shore
#

i needed to write a backend that someone else can pickup and use if something happens to me, or after i decide that i'm done and gone. and my options are pretty slim.

#

so next i need to write a frontend the same way

#

I'm using NestJS for my backend, and really like it

#

Angular is pretty similar, though, more of a nightmare

#

and once again, i have to reiterate my opinions of react are based on one app from 8 years ago that i'm learning to modify and update

dull magnet
#

nah react is pretty meh

#

i don't particularly like it either

#

svelte is my favourite, it's very cozy

trim shore
#

oooh

#

it's kinda bonkers to me everything is just compiling down to javascript these days 😂

#

svelte looks neat. and there's at least one furry on it's dev team, so you know it's good

proud cargo
#

englis

#

mb

trim shore
#

assembly ofc

proud cargo
#

if you swing that way, sure use leptos and compile your rust to wasm

trim shore
#

assembly in the browser. that's what we need in 2023

#

i legit want to learn rust. don't tempt me with a good time

proud cargo
#

MY ENGLISH

#

WHAT IS HAPPENING

trim shore
#

solid looks neat too.

#

god there's so many frameworks 😭

proud cargo
#

and you said options were slim xd

trim shore
#

yes. there's lots of frameworks. but few good ones

trim shore
#

and most tutorials are "here, learn to program from scratch using our tool" and like, i've been doing this for 20 years. i don't need to be that simplistic. i need to know how to be functional and build something real and useful.

#

so my problem is a more specialized one, in that i'm too lazy to get through the easy tutorials to get to stuff that's actually useful

#

which, once again, i realize is a me problem

glass oracle
trim shore
#

i was being serious. for the record.

glass oracle
#

I too am serious

wooden dragon
#

im trying to make my chip8 toolchain wasm compatible

#

so it all runs in the browser

pine schooner
#

im having a stroke trying to code C++

#

I don't even have the developer environment setup because I don't want to have to set it up everytime lmao

lofty crypt
#

why would you have to every time?

ashen sonnet
#

for the longest time I thought OOP stands for Object Orientated Programming instead of Oriented. I am truly at a loss for words

lofty crypt
#

truly

ashen sonnet
#

truly impaired I am

lofty crypt
#

not anymore

#

you know the truth now

steep vapor
#

me when I cannot decide to write code horizontally or vertically

muted thunder
#

what

wooden dragon
#

so true

glass oracle
steep vapor
#

thanks thumbsup

weary saffron
#

lmao

lofty crypt
#

coding diagonally has improved my life by ⛧♒ percent thank you arHSM!🙏🙏

glass oracle
#

You are welcome

rocky jackal
#

trying to recreate discord's saturation patterns, this will be fun

flint oxide
#

C++ is making my life flash in front of my eyes

steep vapor
flint oxide
#

I still have 8 errors left that I have zero idea how to fix

#

nvm it jumped up to 24

nova wraith
#

can you do sound board

#

like

#

custom sound for nitro

#

or

#

nitro join sound

rocky jackal
#

no

nova wraith
#

fake join sound?

#

fake leave sound?

#

fake nitro soundboard?

#

no?

rocky jackal
#

no

nova wraith
rocky jackal
#

one is css (saturation) and the other is server side features

nova wraith
rocky jackal
#

still no

nova wraith
weary saffron
#

hey guys, I got an idea for a plugin but I am having some trouble implementing it. So whenever you try and create a server the modal is always light theme. Dark theme does exist but discord doesn't bother check the user's theme. This is the part of the theme that controls what theme the modal is gonna be (0,c.getThemeClass)(N.ThemeTypes.LIGHT)

I created this patch ```ts
patches: [{
find: '"handleSuccess called before onGuildCreated"',
replacement: [{
match: /([a-zA-Z].ThemeTypes.LIGHT)/,
replace: ""
}]
}]

but idk what to write in `replace`
weary saffron
#

interesting

versed osprey
#

and if you wanna use a patch maker you open cmd in the vencord folder and run this command

pnpm watch

then reload vesktop
and in settings you will have a patch maker thingy

weary saffron
#

oh that's awesome!

#

thanks a lot for telling me about this

versed osprey
#

np

weary saffron
#

hmm, my patch doesn't seem to work

#

I was pretty sure it'd work with first try

versed osprey
#

what are you doing with the patch?

weary saffron
#

wdym?

versed osprey
#

what is the patch supose to do?

weary saffron
#

change this to dark theme

versed osprey
#

why dont you just use dark theam on discord?

weary saffron
#

I am...

#

This plugin fixes discord's whoopsie

viral roost
#

yeah they just left it as light mode

versed osprey
#

oh ya im stupid lol

viral roost
#

its been like that since 2020

versed osprey
#

i forgor

weary saffron
#

I am not sure if I am doing the patch correctly ```ts
patches: [{
find: '"handleSuccess called before onGuildCreated"',
replacement: {
match: /(\i.ThemeTypes.LIGHT)/,
replace: "($1.ThemeTypes.DARK)"
}
}]

viral roost
#

you forgot to put the variable in a group

#

(\i) instead of \i

#

you can also check console, it'll tell you the patch failed and what the error was

weary saffron
#

I changed it do (\i) but no change. Also nothing in console, hmm

viral roost
#

are you sure the plugin is enabled

weary saffron
#

oh right, user plugins aren't automatically enabled, I also can't enable it because

#

I don't understand it

viral roost
#

can you send your entire plugin

green vessel
#

@weary saffron what language is the plugins written in?

weary saffron
#

typescript

austere mauve
#

english

green vessel
#

(I just joined because Idk the lang)

#

Lmao

#

Because I'm tryna convert smth from BD to vc

austere mauve
austere mauve
#

what languages are plugins written in guysi cant tell

viral roost
#

vencord rust bindings when

austere mauve
#

i will make

green vessel
weary saffron
green vessel
#

You don't have to be a cunt about it

viral roost
#

cant see anything wrong so try removing that

#

oh

#

those are commands

weary saffron
#

yep

viral roost
#

im fucking blind

weary saffron
#

lmao

austere mauve
#

patches: [{ async execute(

green vessel
#

import { closeModal, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalProps, ModalRoot, openModal } from "@utils/modal";
import { Button, Forms, useState } from "@webpack/common";
import { sendBotMessage } from "@api/Commands";
import { getTheme, Theme } from "@utils/discord";
import { classNameFactory } from "@api/Styles";

const cl = classNameFactory("vc-eb-");

let addid = 0;

function sendBotMessageWithEmbed(channelId, embed) {
    // Imagining sending a message... *sigh* (⌒_⌒;)
    sendBotMessage(channelId, { content: "", embeds: [embed] });
}

function addField(theme, fieldElements, setFieldElements) {
    // Just adding a new field... N-nothing special! (/。\)
    addid++;
    setFieldElements([...fieldElements, <MyNewField key={addid} theme={theme} />]);
}

function MyNewField({ theme }) {
    // Um, a place to put your field data... (*ノωノ)
    const [name, setName] = useState("");
    const [value, setValue] = useState("");
    const [inline, setInline] = useState(false);

    return (
        <div className={cl("field")}>
            <input
                type="text"
                placeholder="Name, like... 'Field Name' (≧◡≦)"
                value={name}
                onChange={e => setName(e.target.value)}
                style={{ colorScheme: theme }}
            />
            <input
                type="text"
                placeholder="Value... what should I write here? (o_o)"
                value={value}
                onChange={e => setValue(e.target.value)}
                style={{ colorScheme: theme }}
            />
            <label>
                <input
                    type="checkbox"
                    checked={inline}
                    onChange={e => setInline(e.target.checked)}
                />
                Inline, maybe? (∩_∩)
            </label>
        </div>
    );
}

function BuilderModal({ context, rootProps, close }) {
    const [fieldElements, setFieldElements] = useState([]);
    const theme = getTheme() === Theme.Light ? "light" : "dark";

    // Trying my best to make a cool modal... (っ˘̩╭╮˘̩)っ
    return (
        <ModalRoot {...rootProps}>
            <ModalHeader>
                <ModalCloseButton onClick={close} />
                Embed Builder - Make your message fancy! (✿◠‿◠)
            </ModalHeader>
            <ModalContent>
                {/* More fields and buttons can be added here */}
                {fieldElements.map((field, index) => (
                    <div key={index}>{field}</div>
                ))}
            </ModalContent>
            <ModalFooter>
                <Button
                    onClick={() => addField(theme, fieldElements, setFieldElements)}
                    // Add a field? Okay, here goes nothing... (⊃。•́‿•̀。)⊃
                >
                    Add Field
                </Button>
                <Button
                    onClick={() => {
                        // Build and send embed logic here
                        // Something like "You're doing great! ᕦ(ò_óˇ)ᕤ"
                    }}
                >
                    Send Embed
                </Button>
            </ModalFooter>
        </ModalRoot>
    );
}

export default function myFancyEmbedPlugin() {
    // Main function for the plugin
    // Maybe something like, "Let's start this plugin! ᕙ(⇀‸↼‶)ᕗ"

    // Logic to initialize and handle the plugin actions
    // Example: "Handling clicks, opening modals, and more... ( •̀ .̫ •́ )✧"

    // Maybe add some event listeners or other initialization code
    // "Listening for your commands... ( ˘ ³˘)♥"
}

// Edited by [Your Name]
// Keep going! You're doing awesome! ヽ(>∀<☆)ノ
#

Good enough?

#

@weary saffron

weary saffron
#

lol, ty ig

weary saffron
rocky jackal
#

here you go, andreaw:

{
  find: '"handleSuccess called before onGuildCreated"',
  replacement: {
    match: /(\i)\.ThemeTypes\.LIGHT/,
    replace: "(Vencord.Webpack.Common.UserSettingsActionCreators.PreloadedUserSettingsActionCreators.getCurrentValue()?.appearance?.theme)"
  }
}
weary saffron
#

thank you all for helping me make this patch. It's such a niche change but I am quite happy

rocky jackal
#

NoLightInDark

#

wich fixes this issue with all of these .theme-dark .theme-light instances

weary saffron
#

oh lmao, that's awesome

tranquil coral
#
print("im going insane")```
dull magnet
lofty crypt
#

you had one job

#

/run py while True: print("im going insane")

worldly oxideBOT
#

Here is your py(3.10.0) output @lofty crypt

im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane
im going insane```
lofty crypt
#

pretty sane

tranquil coral
#

no youre wrong

#

im losing my sanity day by day

lofty crypt
#

my bad

dull magnet
lofty crypt
#

die Python

#

why do people dislike py? /genq

tranquil coral
#

no clue

lofty crypt
#

even if it’s just meming, what is it based on?

tranquil coral
#

wondering asw

lofty crypt
#

i don’t mind btw, just curious

#

@austere mauve is big python denier iirc

dull magnet
tranquil coral
#

how about we talk about ur playlist first

lofty crypt
#

i wanna learn about pyothono

tranquil coral
#

ok

dull magnet
# lofty crypt why do people dislike py? /genq
  • indentation having semantic meaning is horrible
  • weird syntax
  • horrible ecosystem, the default package manager installs globally and there are too many alternatives that are all kinda medifotr
  • poor performance
  • not fun to write imo
tranquil coral
#

how is it a weird syntax?

dull magnet
#

very different from other languages

#

and once again indentation based

#

i prefer C-like languages

tranquil coral
#

okay i guess

#

I can accept the other points

austere mauve
#

python is perl if people took it seriously

lofty crypt
#

hahahaha

austere mauve
#

first language to reach one morbillion tech debts

lofty crypt
#

xD

tranquil coral
#

NOW WE TALK ABOUT YOUR PLAYLIST

#

explain this

#

👿

lofty crypt
green vessel
#

vban @tranquil coral not coding related

tranquil coral
lofty crypt
#

fine haha Daniel Deluxe is my fav artist, most of his catalogue is good, particularly for working, driving beats, genre is Darkwave/ Retrowave. Is that at all the kind of info you were going for?

dull magnet
#

for scripting i much prefer js or even bash

#

but i did make some things in python

lofty crypt
#

^ with sin

dull magnet
austere mauve
#

you love adding blank __init__.py

dull magnet
#

and ive seen most python devs just casually have 1000 line long files which is insane

lofty crypt
tranquil coral
#

when i started learning python that shit was so weird to me

dull magnet
#

although that's more a criticism of the users than the language itself

glass oracle
# austere mauve i will make

Sounds like hell, you'd have to create bindings to get data from js and send it back too, wasm might help, but I can't imagine writing all the function signatures and findByProps porting hell

austere mauve
#

wasm is literally the only way

lofty crypt
glass oracle
dull magnet
austere mauve
#

plugins arent node

dull magnet
#

so porting that to wasm wouldn't be too hard

glass oracle
#

Oh right napi won't work

dull magnet
#

iirc it's broken cause some part throws an error, the fix is to just wrap that part into try catch and ignore the error

#

wrap line 38-39 in try catch

glass oracle
#

I was wondering about doing a rust client rewrite a couple days ago
But I got stuck when I thought about adding plugin support, I had 2 options, register plugins at compile time or register at runtime, compile time would be great and easy but that would mean shipping the plugins with the binary whereas runtime was another hell for 1 there's no common way of doing plugins in rust some embed a wasm runtime, some use dylibs, I wanted plugins to be language agnostic so I was looking into pipes

wooden dragon
#

it's pretty simple

#

you can inject js with frameworks like wry

austere mauve
#

wasm can be sync

glass oracle
austere mauve
#

i dont think ipc is needed

glass oracle
#

Nah doing plugins via wasm would mean I'd have to embed a wasm runtime in the client and plugins would be limited to languages that can compile to wasm

austere mauve
#

fym wasm runtime

#

browsers run wasm

wooden dragon
#

just do js injection

lofty crypt
wooden dragon
glass oracle
#

Which message of mine are you referring to, the one about rust client rewrite or vencord rust bindings

green vessel
#

anyone know how i probose a plugin idea to the devs?

lofty crypt
glass oracle
wooden dragon
wooden dragon
glass oracle
#

Xilem is such a great gui crate for rust

glass oracle
tranquil coral
#

neither do i

glass oracle
#

If I ever try rewriting the discord client in rust I'll let y'all know

dull magnet
#

i will try it tmrw yesyesyes

dull magnet
#

:(((

wooden dragon
#

and ugly

dull magnet
#

foiix

#

ill try anyway kurumiYay

wooden dragon
#

its only 100 lines of code tho

lofty crypt
wooden dragon
#

I'll not respond to you anymore

green vessel
#

dam

glass oracle
tranquil coral
#

damn

#

what did bro do

wooden dragon
#

creepy sexual jokes

lofty crypt
#

creepin i think

tranquil coral
#

oh

green vessel
dull magnet
#

also israel flag

tranquil coral
green vessel
#

i didnt mean it

dull magnet
#

bad enough

#

i love saying I'll sleep then not actually going to sleep

#

my brain is broken help MenheraScared1

lofty crypt
wooden dragon
#

go eep

stuck falcon
#

nop

green vessel
#

didnt mean it as a sexual joke

dull magnet
#

no sexual jokes allowed WatameNoNoNoNo

#

only shiggual jokes yesyesyes

tranquil coral
#

🔫

green vessel
#

i didnt mean that i thought it would be funny

lofty crypt
lofty crypt
#

not sure tho

dull magnet
#

okay I sleep fr now yui_Laugh

#

bye don't break the server

lofty crypt
#

okih gl

wooden dragon
lofty crypt
#

can’t make any promises

tranquil coral
tranquil coral
#

😈

wooden dragon
#

time to cause disturbance

tranquil coral
#

cause chaos. make the server suffer

lofty crypt
#

the cat is out, i hear there’s a mouse party on the table

glass oracle
dull magnet
#

I knew u were out for trouble

wooden dragon
#

gosh i wish gluonjs would have full bun support by now

tranquil coral
green vessel
rocky jackal
#

should I calculate discord's colors' saturations by value or by percentage? (
by value: 85.6 - 85.5 = .1 (that just gets added/removed)
by percentage: percentage difference between 85.6 and 85.5 is ~ .1% (this will be calculated and added/removed accordingly)
)

muted thunder
#

Tf

steady knot
#

I'm gonna do something funny with color calculations too, converting everything to oklch()

rocky jackal
cyan jay
#

how do i create an element and then add it to an existing one if i have its like id and stuff

cyan jay
radiant olive
#

Is there a way to search for a string and backtrack out the variable it's defined under? For instance, "message3.mp3" to then backtrack out the mapping for the sounds. I need to get the sound mapping modules to then inject custom sound files. I know you can hardcode it which is what I've done at the moment, but those mappings change on every update, so I just need I just need to be able to find the variable that defines the mapping. At the moment it's defined under 895637. Is there a simple way to do this?

cyan jay
# dull magnet for what

well i want to create an element for displaying the latest pinned message in the text channel and then place it at the top of the chat (under the like text channel name)
i think ill be able to figure out how to get the pinned message stuff but i wanna know how to do the element stuff

dull magnet
#

with vencord?

cyan jay
#

mhm

dull magnet
#

then ur question is a very wrong approach

#

use react devtools to inspect the top bar and get its source code

#

then patch it

cyan jay
#

ohhhh okie

#

and this is basically how i make elements im guessing

dull magnet
#

yes

cyan jay
#

okk thank u i will try to figure smth out now

woven lion
#

cant wait for this to be very nicely written into a documentation page

#

:3

steep vapor
#

still confused how you read whatever that jumbled mess is and "patch" it

jagged matrix
#

what #message thing would these ones be?

#

I tried #message-add-reaction but doesnt seem to be it, im probably just dumb

#

please ping if you have an answer or idea

jagged matrix
#

ah i didnt know you can just inspect element it, thanks

weary saffron
#

np

jagged matrix
#

ahh so thats what i was missing

#

it was #message-add-reaction 0 for the normal reactions, and #message-add-reaction 1 for super

#

note to self

#

do not try inspect elementing in vencord itself

#

damn it my css codes gone

#

bowomp

jagged matrix
#

anyone know the apps hover thing though? i honestly cant find this one

jagged briar
#

Inspect element > press the box with cursor button in the top left corner > click the element

jagged matrix
#

tried already

#

doesnt work as it just goes away

jagged briar
#

Try right clicking and alt+tabbing out

weary saffron
jagged matrix
#

ah alright

#

finally it fucking worked

weary saffron
#

GG

jagged matrix
#

now i just gotta find a way to fix this, the blue when you hover off

jagged matrix
lofty crypt
jagged matrix
#

fucks up if you dont use vesktop

lofty crypt
#

how?

#

crash?

jagged matrix
#

craswh

lofty crypt
proud cargo
#

how tf do i build a universal node native module

#

theres prebuildify but it looks funky and unused

rocky jackal
#

smol buton

nova wraith
# rocky jackal smol buton

cool!

idk whos can make like sound visualizator in voice call(based on callbanner experiment)? (pls i need it for things)
for example on photos and vids:
||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​|| _ _ _ _ _ _ https://www.youtube.com/watch?v=lb7CdUP5EXA
https://www.youtube.com/watch?v=OW4gJdNHm8Q
https://www.youtube.com/watch?v=smmEJLZFEnA

Original by Jael Peñaloza. Remix by NyxTheShield

Support me on Patreon!! https://patreon.com/nyxtheshield

▶ Play video

IMPORTANT:
Do you want to use this theme or create a remix? Please give all credit to @NyxTheShield.
I only created the melody. The final arranged version belongs to Nyx:
https://youtu.be/KwZ39X3NIZM

Listen XEvent!Chara theme by the amazing NyxTheShield:
https://www.youtube.com/watch?v=IipxjYZo3fY

Wallpaper Download:
http://jakeiartwork.devi...

▶ Play video

Theme for X!Tale Sans/Cross
“I just want my world back.”

Music by: Heve
Art by: Jael Peñaloza
AU Owner: Jael Peñaloza

Alternate Battlegrounds is a Roblox Undertale fighting game inspired off of Soulshatters by SenatorBunny made by Qnixu and the Deez Incorporated Team, P...

▶ Play video
rocky jackal
#
Math.round(((primary_saturation/100)*(100 + saturation_diff))*10)/10
```found a formula to calculate proper saturations for the primary colors
#

I also had to make this

steady knot
rocky jackal
#

aaaaand half of them are wrong

#

I compared some primaries with wrong primaries

#

eg I should be comparing 730 to 900 with 700, not 600

#

now I need to do the same for the brand colors, which was the problem that led to this

#

default blurple

steady knot
#

I feel like you're just making problems on top of problems lol

rocky jackal
#

colorwayified blurple

rocky jackal
#

it is optional

steady knot
#

whatever it is that you're making I would hate to try maintain it

rocky jackal
#

Doesn't need much maintenance

#

the only thing that could break are some classes that I can just update

#

except if they decide to suddenly hash their variables

proud cargo
#

WHAT IS THAT FORMATTING

#

230 star repo btw.

dull magnet
#

why do you want to make an universal binary

proud cargo
#

mm

#

preferably id have one build job that works for all platforms

#

i dont have platform dependant code

dull magnet
#

you should probably build addon for each arch separately

proud cargo
#

sad.

dull magnet
#

like this

proud cargo
proud cargo
#

i love how switching to zlib-sync made my heartbeat acks fail

#

@trim cedar hey mister cpp, how do i allocate a typed arrays arraybuffer if it doesnt have one yet? hasbuffer

trim cedar
#

With napi?

proud cargo
#

with whatever, i dont know

trim cedar
#

For node interop?

proud cargo
#

ya

trim cedar
#

If so, I'll have a look later I'm busy right now ^^

proud cargo
weary saffron
#

hey, does anyone know how I can create a checkmark input like the ones discord has? I am sending a modal with this input ```tsx
<input
className={cl("modal-content-input-checkbox")}
type="checkbox"
onChange={e => {...}}
/>

cedar olive
#

where does discord use it

weary saffron
cedar olive
#

oh

weary saffron
#

The connections tab in settings has checkmarks and you can find them in other locations

cedar olive
weary saffron
#

oooo, ty

proud parrotBOT
proud parrotBOT
weary saffron
#

oh that's interesting, let me look into it

#

wow, that looks so useful!!!

whole flame
#

how'd i do stuff like a language translation using plugins? i want to a language translation but it's a constructed language so discord will not add it to their platform (toki pona, if you're interested)

versed osprey
#

hey im trying to make a command that when ran opens a window in the middle of the discord window and can be closed any 1 has an idea of where to start with that?

#

do i need to make a patch for that?

jagged briar
#

you mean a modal?

#

like this

versed osprey
#

i wanna be abel to run my own html in it

#

but ya somthing like that

jagged briar
#

yeah you can with modals

versed osprey
#

any idea on how to make that?

jagged briar
#

look at the viewraw plugin

versed osprey
#

ok

weary saffron
#

idk man, if you're not a possum why are you possum shaped

dull magnet
trim cedar
proud cargo
#

guh i dont know how to explain but

#

i get an arraybuffer, turn it into a uint8array in js, and then the uit8array says it doesnt have a buffer in cpp

#

it does have one, its just.. lazy?

#

my code works if i console log the uint8array, so theres obviously some way to force it to get the buffer

#

ble ig ill try just using the arraybuffer tomorrow

trim cedar
#

hm

#

what if you just fully swap out the instance?

proud cargo
trim cedar
#

replace the instance you get with a fully initialized one

proud cargo
#

youve lost me

versed osprey
# dull magnet elaborate a bit more on what you're trying to achieve

i have an html file that lets me run doom

<!doctype html>
<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>DOOM</title>
    <style type="text/css">
      .dosbox-container { width: 320px; height: 200px; }
      .dosbox-container > .dosbox-overlay { background: url(https://js-dos.com/cdn/DOOM.png); }
    </style>
  </head>
  <body>
    <div id="dosbox"></div>
    <br/>
    <button onclick="dosbox.requestFullScreen();">Make fullscreen</button>
    
    <script type="text/javascript" src="https://js-dos.com/cdn/js-dos-api.js"></script>
    <script type="text/javascript">
      var dosbox = new Dosbox({
        id: "dosbox",
        onload: function (dosbox) {
          dosbox.run("https://js-dos.com/cdn/upload/DOOM-@evilution.zip", "./DOOM/DOOM.EXE");
        },
        onrun: function (dosbox, app) {
          console.log("App '" + app + "' is runned");
        }
      });
    </script>
  </body>
</html>

and i want it to open as a window in discord when i do a /command
i can do the comman fine but the problome that im having atm is that im getting erors inb the html when i try to put it in what @jagged briar told me to try
any idea on what to do next?

#

when i put it in i only use the <body> part and i remove the full screen button

jagged briar
#

What are the errors

dull magnet
#

put it on github pages then

const win = window.open("about:blank", "", "popup");
win.document.write(`
<iframe src="https://moxxie.github.io/doom"></iframe>
`)
versed osprey
jagged briar
#

What are the errors if you actually hover over them

#

Also remove <body>

dull magnet
jagged briar
#

Or do that

versed osprey
#

ill try what vee saied

dull magnet
#

loading scripts from some random site is the fastest way to get your discord account stolen

#

putting it into an iframe gives you security

versed osprey
#

lol

#

ok ill do that

#

ill just upload the zip to github for that

oblique lark
#

does anyone know how i can find the full list of discord emoticon to emoji replacements?

versed osprey
dull magnet
#

you need to allow the frame JavaScript

versed osprey
#

how do i do that?

dull magnet
lofty crypt
oblique lark
#

i have not yet 💪

lofty crypt
#

what’s 💪 about that!

proud cargo
versed osprey
#

no

#

i need doom in vencord

lofty crypt
#

vencor was the appropriate spelling for what you’re do(om)ing

lofty crypt
weary saffron
#

@lofty crypt @oblique lark if you go into Sources, search 🙂 you can find a big dict which converts emoticons into emojis

#

:-)*

oblique lark
#

how do you do a global search in sources

weary saffron
lofty crypt
#

a big dict

oblique lark
#

the searchbar on the bottom only searches one file

weary saffron
#

I just right clicked assets, pressed "Search in folder" it brought up a little search thing and then I remove the file:assets to search in other places

weary saffron
lofty crypt
#

you can right-click top instead, that’ll prefill file:* which is prbly fine to leave

weary saffron
#

yea that might be a better way

oblique lark
lofty crypt
chrome elbow
#

ctrl shift f

oblique lark
#

hey it worked! thanks for keeping up with my incompetence guys

keen creek
#

?

dull magnet
astral peak
wooden dragon
keen creek
#

omw to make some cursed shit

#

php is wild bcuz Gender\Gender::country

jolly robin
#

I changed the home icon to shiggy using CSS

It's probably trivially easy, but it was my first time ever using CSS, and I'm proud I got it working

lofty crypt
jolly robin
#

ah, wasn't on my channel list

#

thanks for the redirect

rocky jackal
#

without "discord saturation"

#

with discord saturation

weary saffron
astral peak
wooden dragon
#

bubble sort in pure css is real

dull magnet
wooden dragon
#

one day someone will make a compilation target for C to CSS

rocky jackal
wild drift
#

guys, I know that discord uses electron under the hood

but does discord use any UI library/framework? or it built on pure javascript?

proud cargo
brazen kindle
#

flatpak vesktop, wayland
randomly decided to package it for some reason

brazen kindle
lofty crypt
#

is ReactJS the dick responsible for the class hashes?

#

huh didn’t they only start using rspack recently?

#

then who was the dick responsible for the hashes before rs?

#

a

#

heard that name before!

#

ty

#

how else would i know where to address my pipebombs you silly goober

#

nah just general interest, overview just in case yk

#

yeah i do

#

*=actually

#

well most people do it

#

pros & cons

#

no, as .exampleclass_123abc

#

it can create ambiguity tho, e.g. between .wrapper__3670f and wrapper_a7e7a8

#

pros & cons nodKermit

lofty crypt
lone panther
lofty crypt
#

demoncord? x]

lofty crypt
#

if i had the executive function to put a plugin together, it’s plausible i’d use that capacity to touch grass instead, maybe hop off dc ~ entirely again for a longer while

proud cargo
#

did they already switch?

#

drake said its just preparation

#

or did i miss another bundler update

lofty crypt
#

i thought that was kind of a separate thing

#

which ig doesn’t make much sense lol

proud cargo
#

i do

lofty crypt
#

she does

proud cargo
proud cargo
simple folio
#

no they did move to rspack

#

apparently it drastically improved build times

#

i remember seeing something from a discord dev

proud cargo
#

discord should switch to bundling all code with the app hypershiggy

rocky jackal
#

I shall make aquacord (will fail miserably)

versed osprey
#

is there a way for a plugin to get somthing that is in the network tab?

#

im working on a plugin that gives you a list similar to the bettermsg loger but it loges everytime that some1 uses a soundbord in the vc and lets you download it but the file with the sound id from what i found so far is only showing in the network tab

#

ya

#

but i need to get the id of it

#

its for sounds that are from servers that im not in

#

or just sounds in general but i need to find how to chack when 1 is playing and get the id

#

i was abel to find the func that sends the soundbord SEND_SOUNDBOARD_SOUND now i need to se where it recives it

#

is there a way in the network tab to chack what trigerd it?

#

ok ill try that ty

#

ill just keep reading thru the funcs

#

i found this

#
GUILD_SOUNDBOARD_SOUND_PLAY_START: function(e) {
    var t, n, l;
    let {soundId: i, userId: u} = e
      , _ = (null !== (n = D.get(i)) && void 0 !== n ? n : 0) + 1
      , r = (null !== (l = U.get(u)) && void 0 !== l ? l : 0) + 1;
    D.set(i, _),
    U.set(u, r),
    u !== (null === (t = a.default.getCurrentUser()) || void 0 === t ? void 0 : t.id) && (g = !0)
}
#

now i juts need to retrive the sound id from this

glass oracle
#

you can always subscribe to that event

versed osprey
#

ya now i just need to extract the id from there and make a small menue with the sounds and a download button

#

wish me luck

versed osprey
#

ok i was abel to make a patch that console logs the sound id now i just need to save it to a list

#

its just e.soundId the e is hard coded in so it wont change lets go

dull magnet
#

whar?

#

the e is not hardcoded wdym

versed osprey
#

the e dosent change when reloading the client

dull magnet
#

that's not how it works

versed osprey
#

idk then

dull magnet
#

the names change occasionally when discord updates their code

#

hardcoding them is never safe

versed osprey
#

oh

#

well any idea on how to make it not brake when they update the code?

dull magnet
#

yes

#

you use \i instead of e

versed osprey
#

ok ty

green vessel
#

guys pritn(hell oworlld) = real

glass oracle
#

@versed osprey how about subscribing to the event via the FluxDispatcher rather than patching the event listener of some other store

dull magnet
#

and yeah that as well

rocky jackal
versed osprey
#

how can i get a url for twemoji?

dull magnet
#

what u trying to do

versed osprey
#

im trying to get a url from an emoji

#

for the defult ones

dull magnet
#

just right click copy

#

or do you mean with js

versed osprey
#

ya with js

dull magnet
#

\❤️

cedar olive
#

you mean like the unicode character or the svg for them

#

🤨

versed osprey
#

yah the svg for them

cedar olive
#

https://canary.discord.com/assets/2312e8ce1be96e4d58be.svg

#

like this

#

oh

versed osprey
#

yah somthing like that

dull magnet
#

pretty simple

#

findByProps("getEmojiColors", "getURL").getURL("❤")

versed osprey
#

ty

dull magnet
#

if u need a full url

#
new URL(findByProps("getEmojiColors", "getURL").getURL("❤"), location).href 
#

some really useful functions here

#

filterUnsupportedEmojis, applyPlatformToThemedEmojiColorPalette and triggerFullscreenAnimation are incredibly useful

cedar olive
#

what's triggerFullscreenAnimation

dull magnet
#

look at its code

#

it does nothing xd

#

it destructures args then does nothing with them

cedar olive
#

oh wait

dull magnet
#

same goes for the other two methods

cedar olive
#

lmao

#

I thought they were returning another function

dry patio
#

holy co w i made plugin

timid hinge
#

?

distant pumice
#

his uncle is clearly discord staff and will get us all banned

#

lmao yeah you gotta be 12

lofty crypt
# dry patio holy co w i made plugin

very cool! There have been cries for this feature for a long time and ≥ 1 or 2 started plugin projects too, not sure what become of those. Did you pr it?

dry patio
#

not yet

#

i posted to third party plugins

lofty crypt
#

oh ig i should have said camila instead of pinging you ;>

dry patio
#

yeah lmao

#

wait try it rn

lofty crypt
#

camila

dry patio
#

lets go

lofty crypt
#

epicly

dry patio
#

im surprised nobody has done it before because its dead simple

lofty crypt
#

true. Well i think they have, but maybe then didn’t follow that up with amendments required for inclusion in venc

dry patio
#

what kind of amendments would be needed

#

or do i hav to pr to get that info

lofty crypt
#

hm, lemme check

#

yeah i suppose it depends on the special case

#

maybe no amendments in your case

dry patio
#

it supports unlimited amount of regex cases

#

idk what else could be done

#

the one issue is that since i do hijack the mention system, it does count as a literal "ping"

#

so u get the red dot

#

and maybe people wont want that

lofty crypt
#

yeah might make for a useful toggle in a future revision but seems perfectly fine for me for a v1.0, not like anyone’s obliged to use it

#

does it keep a log for when you’re afk?

lofty crypt
# lofty crypt hm, lemme check

https://github.com/Vendicated/Vencord/pulls?q=keyword looks like there have been 3 previous attempts, 2 abandoned, one having 2 months ago applied amendments ven requested and waiting for their followup code review https://github.com/Vendicated/Vencord/pull/1621#event-10442510896

GitHub

Keyword notifier plugin
Also included:

New setting type: List (array of strings)
Markdown API to add new markdown rules (horrendous, I spent hours trying to find the best way to make this work)

dull magnet
lofty crypt
#

🙈 perfectionism

#

besides you said you don’t use msglogger uitaesdutribseadtruseatrusaiedtruseai

dull magnet
#

i specifically have it enabled for u and noone else

lofty crypt
#

checks out

lofty crypt
dry patio
#

but the numbers stay

#

so you would know which channels and which servers

glass oracle
#

i love js ecosystem

proud cargo
#

holy fuck ive managed to slow typescript to a crawl
takes 30 seconds to update a file

rocky jackal
#

trying to patch the guild bar in betterdiscord is such a pain without a source patcher (I don't remember exactly how vencord's patcher is called)

#

and half of the plugins that do it use a library

rocky jackal
#

I'm seriously considering dom manip for this part just because of how hard it is to patch

proud cargo
#

have fun

rocky jackal
#

I'm not having fun

rocky jackal
#

yay, I love obfuscated anti adblockers

desert holly
#

hello, does anyone know their way around discord themes code?

#

I downloaded a nice theme but there is one issue with it, when I hover on the eye icon in streams it doesn't show who is watching the stream

#

if anyone knows how to fix this I'd appreciate it

fringe frost
lofty crypt
#

i just sent this to the tool author:

@syndishanx suggestion for Class Updater:
replacing all \[class\^=([^-]+)-\]
with [class^=$1_]
and all \[class\*=([^-]+)-\]
with [class*=$1_]
you can wait for them to hopefully put that in or do those replacements yourself

#

syntax is regex, lmk if you want an easier syntax

rocky jackal
lofty crypt
#

skill issue, “just” needs better tampering 😛

steep vapor
#

you love confusing variable code

lofty crypt
#

inb4 we get ai adblockers duking it out in a battle of wits against ai anti adblockers

steep vapor
lofty crypt
#

ye

desert holly
#

I don't really understand it sorry

#

I'm a beginner in coding

lofty crypt
#

without regex, it looks like [class^=exampleClassName-] or [class*=exampleClassName-] and you want to replace the - by *
you can try it automatically by search-and-replacing -] with _]

green vessel
#

Bro knows his stuff

lofty crypt
#

hehe it’s not very advanced or uncommon knowledge in terms of css theming but i’ll take the compliment ty :3

green vessel
#

👍

cedar marsh
#

Discord bot idea:
I very often crosspost memes into other channels using discord's copy link thing
but discord file links will start to expire after 1 day
so to fix this, a bot that:

  1. searches for messages with attached media from discord
  2. downloads media
  3. sends media
  4. removes media embed from original message

This makes it so I don't have to change how I send memes, but memes will persist

viral roost
#

discord links shared within discord will still work fine

#

as long as you dont remove the signature part of the link

cedar olive
#

that could very well be a plugin too

proud cargo
viral roost
proud cargo
#

unsane

#

ill read the article next time :3 before i say something

#

i thought they were doing it to combat file hosts

viral roost
#

well yeah

#

you can just host shady exe's on discord

#

but also it gets rid of using discord as a cdn

lofty crypt
rocky jackal
#

so apparently my 5 year old extension for blocking ads on aternos still works

#

nevermind

abstract spire
#

i'm trying to get a vencord plugin to execute shell commands, is there any way to import the child-process module from node or some other way to go about it?

abstract spire
#

launching steam games

potent fox
#

Why husk

potent fox
#

With steam protocol

timid hinge
abstract spire
#

alright ty 👍

potent fox
timid hinge
#

user A asks user B to open steam game via this plugin

#

user A sends malformed input

#

plugin runs other shell command alongside steam launcher on B

#

-> remote code execution

potent fox
#

First of all our user is opening the game

#

Not some random user on discord

timid hinge
#

i would guess the plugin will have a feature to open a game from a reference another user sends

#

"join my game on <steam id>"