#๐Ÿ‘พ-core-development

1 messages ยท Page 5 of 1

charred monolithBOT
austere talon
#

why tf

#

why not use /tmp

tame escarp
#

and boring

austere talon
#

fuk u

#

oh god it copes about lockfile

#

i hate

long heart
#

๐Ÿ—ฟ

charred monolithBOT
long heart
#

when will the vencordussy support not overriding discount

#

or is it even possible

jagged cloak
#

discount tire

austere talon
#

i just kanged Aliucock workflow

jagged cloak
#

true

charred monolithBOT
austere talon
#

someone pr bad code i wanna test lint sorrykirino

tame escarp
#

there u go

austere talon
#

horror

austere talon
#

i will merge

tame escarp
#

what

#

goofy

austere talon
#

i was joking guh

tame escarp
#

does that even build ๐Ÿคจ

long heart
tame escarp
#

didn't i horribly mangle the plugin definition to the point where typescript hates it

austere talon
#

esbuilt doesn't check types

tame escarp
#

does eslint?

long heart
#

good code

#

pls review suggest

austere talon
tame escarp
#

damn

austere talon
#

horror

tame escarp
#

lol

austere talon
#

okay i made tsc happy now i will also add tsc to build script

charred monolithBOT
austere talon
#

god i hate lockfile so much

#

why does it force u to use it

austere talon
#

why tf is it always linting pull request 5

#

insane

bronze kiln
#

i guess somone made that the webhook likes the number 5

golden gulch
#

just tell people to pnpm i --frozen-lockfile when installing

jagged cloak
#

horror

#

extra arg annoying

golden gulch
#

it'd stop git from breaking

#

it's not the greatest but idk what the point of the lockfile even is when it updates it instead of using it to lock the versions of packages

jagged cloak
#

npm ecosystem just stupid tonguecat

#

and the people in it (sindorehsus)

charred monolithBOT
austere talon
#

only sane package manager

#

it has a setting to not touch lockfile if all requested versions are met and that's on by default

#

the issue was just that it was updating the lockfile version lmao

golden gulch
#

I don't think the default of npm install (or whatever package manager) should also update things, if I wanted that to happen I should explicitly use a command to update dependencies

#

good that pnpm doesn't update by default

charred monolithBOT
#
[Vendicated/Vencord] New branch created: installer\-custom
jagged cloak
#

does macos return darwin or linux

#

not going to review just curious

austere talon
#

idk megu made it return win32

#

probably mistake trolley

#

i just did it like it was

charred monolithBOT
jagged cloak
#

trol

austere talon
#

24 million weekly downloads TROLL

#
str.replace(/\n\r?$/, "");
tame escarp
#

this is your brain on nodejs

austere talon
#

but yeah i know what u mean

#

thats literally what that package does

tame escarp
#

oh yeah that's fair

#

but still yeah

quaint sapphire
austere talon
#
if (s[s.length - 1] === "\r") s = s.slice(0, -1);
if (s[s.length - 1] === "\n") s = s.slice(0, -1);
#

this is literally all the package does

tame escarp
#

guh

#

i think i could implement that better

austere talon
#

also gotta love how it's not even optimised

#

slice twice? that's wasteful since you're copying the string twice

#

it's more optimised than the regex but like come on at least if u make a micro package like that make it be fully optimised

quaint sapphire
tame escarp
#
if (s.at(-2) === "\n") return s.slice(0,-2)
else if (s.at(-1) === "\n") return s.slice(0,-1)
return s```
quaint sapphire
#

Uhh

#

You missed the point

#

They have two slices for the windows newline

#

Which is \n\r

austere talon
#
function stripFinalNewline(s) {
  if (s[s.length -1] === "\n") 
    return s.slice(0, 2.length -2);

  if (s[s.length -1] === "\r" && s[s.length - 2] === "\n") 
    return s.slice(0, s.length - 2);
  return s;
}```
tame escarp
#

no i'm just saying in general that their implementation is goofy regardless of how you implement it

quaint sapphire
charred monolithBOT
tame escarp
#
function stripFinalNewline(s) {
  if (s.at(-2) === "\n" && s.at(-1) === "\r")
    return s.slice(0,-2)
  else if (s.at(-1) === "\n") 
    return s.slice(0,-1)
  return s
}``` ez
#

.at is shorter and easier to read trolley

austere talon
#

thats just a less optimised version of mine dogsmirk

tame escarp
#

shorter though

#

what if you were code golfing

#

๐Ÿ™„

austere talon
#

then u would use regex

#

a=s=>s.replace(/\r?\n$/,"")

quaint sapphire
#

Imagine if that package updated to instead append a newline

#

Would that break software?

austere talon
#

a lot

#

lmao

quaint sapphire
#

I always just .trim()

#

You can also .trimRight()

austere talon
#

trimEnd u mean

quaint sapphire
#

Yeah that

#

On mobile rn

#

Too bad the js trim does not accept a character

#

Unlike python/kotlin/a billion languages

tame escarp
#

๐Ÿ™„

austere talon
quaint sapphire
#

Making ur own is not an excuse for bad built-ins

austere talon
#
function removeSuf(s, suf) {
  for (let i = s.length - 1; i > 0; i--) {
    if (s[i] !== suf) return i === s.length - 1 ? s : s.slice(0, i + 1);
  }
  return "";
}
quaint sapphire
#

Typescript could introduce better built-ins that transpile to normal function calls

#

Sadly it doesnt

#

Ig overwriting the trim method would not be an issue if it keeps the old behavior

#

No args? Normal trim

austere talon
#

overwriting prototypes is kinda ugly

#

and doesn't play well with typescript

#

also why do that when u can just use a function

charred monolithBOT
quick ibex
#

@austere talon reason why I didn't know what you meant with types is because I don't use typescript

main gale
onyx mica
main gale
#

since \r comes first

onyx mica
#

it's reversed

#

so n is first

austere talon
austere talon
main gale
#

ah

lament nimbus
#

noooooo you use your proxy

#

๐Ÿ˜ข

austere talon
jagged cloak
#

it was originally made for here anyway

charred monolithBOT
verbal pumice
#

there's currently no way to "hot reload" plugins are you have to restart from tray every time you make a change, right?

golden gulch
#

you just need to ctrl r if you use regex patches, not a full restart

long heart
#

fart

verbal pumice
#

fart

charred monolithBOT
charred monolithBOT
crude hearth
#

@austere talon merge

tidal cloud
#

do not merge

fiery jungle
#

@austere talon you will do css modules

charred monolithBOT
charred monolithBOT
charred monolithBOT
bronze sparrow
#

woah

austere talon
#

dual forking

bronze kiln
#

i guess not trippel

bronze sparrow
#

best plugin

bronze kiln
#

intrestuing plugin i will never use it

bronze sparrow
#

you will

bronze kiln
#

i would prefer to not share my discord token ^^

bronze sparrow
#

why

bronze kiln
#

making a new discord account is annoying

bronze sparrow
#

why would you make a new one

bronze kiln
#

becouse i am not in the mood to give my account away by randomly

austere talon
#

u should mark the plugin as required

bronze sparrow
#

fr

long heart
quick ibex
quick ibex
#

Got trolley in embed

quick ibex
#

@long heart meanie

long heart
#

real

quick ibex
#

shut up

#

stupid bot

austere talon
#

for ur plugin I would just use string replace

#

way more performant

quick ibex
#

what??

#

am i missing something?

tame escarp
#

regex replace != string replace

#

msg.content.replace("https://twitter.com", "https://fxtwitter.com")

long heart
#

replaceAll if you're using a string

charred monolithBOT
tame escarp
quick ibex
#

namely, profile urls

tame escarp
#

skill issue

quick ibex
austere talon
quick ibex
#

Bru

#

thought fxtwitter did same shit as vxtwitter

charred monolithBOT
charred monolithBOT
charred monolithBOT
austere talon
#

Good idea

charred monolithBOT
jagged cloak
#

yeah people stupid and will actually use that plugin trolleyzoom

umbral hedge
#

ye

#

I'm gonna close it

charred monolithBOT
umbral hedge
#

github mobile app shit tho

charred monolithBOT
long heart
#

NO

charred monolithBOT
long heart
#

just make a store that fetches an unofficial http api that users can input and can download from that yes yes

#

no need to bundle the plugin in the client

#

๐Ÿ‘๐Ÿ‘

charred monolithBOT
#

the idea of the scripts/nix folder is that the flake goes in there too, and the prepare:nix script (in package.json) will copy the flake files to root, where the user can then do stuff with it.

I'm not sure that's possible, since the first thing nix looks for on building is the flake and if it's not there it'll just fail

austere talon
#

as funny as it is

austere talon
high oracle
#

๐Ÿ’€

charred monolithBOT
long heart
#

when hte phonegumin

#

๐Ÿ˜ฑ

crude hearth
#

ITS NOT EVEN COMPLETED

austere talon
#

horror

#

so many mars

umbral hedge
#

horror

austere talon
#

Mars, Mars, Mars, megumin, Mars

tame escarp
#

you forgot ...

golden gulch
#

who sent megu to mars oooooh

fiery jungle
#

@austere talon css modules

#

NOW

austere talon
#

u will do

#

owo

fiery jungle
#

nop

austere talon
#

yop

charred monolithBOT
vale kayak
austere talon
#

lol true

#

discord momento

austere talon
#

whats that other guys discord

austere talon
#

@half shell (dont mind the ping)

fiery jungle
#

@austere talonexplain what css modules even are

austere talon
#
/* messageLogger.module.css */
.message {
  display: none;
}

/* otherPlugin.module.css */
.message {
  display: inline;
}```
#

these would usually conflict but css modules mangle all classNames

austere talon
#

so instead of .message it'd be .message-jsja819s

#

that's why discords classes are all like this

#

that's css modules

#

just a way to not have to worry about making ur css classNames unique

#

they're cool

#

but mmh also now that i think about it maybe we actually shouldn't use these

fiery jungle
#

how do you modify discord classes then

austere talon
#

cause it will make themeing plugin classes horror

#

and that

fiery jungle
#

yeah exactly

austere talon
#

but you can just not name ur thing .module.css

fiery jungle
#

just force plugin devs to prefix classes with plugin names

austere talon
#

foo.module.css -> module
foo.css -> not module

fiery jungle
#

oh

austere talon
#

but ig you're right

#

but your approach for it is kinda awkward

fiery jungle
#

ig

austere talon
#
// messageLogger.ts
import "./messageLogger.css";
#

this should be all you have to do

#

and it automatically handles loading it for u

fiery jungle
#

add on plugin start?

austere talon
#

when plugin enabled

#

i think the best approach would be simply creating an object

#
{
  messageLogger: "someCss{}",
  baller: "someCss{}"
}```
jagged cloak
#

horror ven is actually doing css modules

charred monolithBOT
jagged cloak
#

lol cypwn guy

austere talon
#

who

jagged cloak
#

its one of those goofy app repos

red musk
bronze sparrow
#

vencord bad

charred monolithBOT
austere talon
#

bruh the checks so spammy lmao

#

me when github actions checks action required on main

#

i removed checks

charred monolithBOT
austere talon
#

still works ok

fiery jungle
charred monolithBOT
austere talon
#

^

#

i dont think im ever gonna merge smth using some weird api

#

if it's a trusted/popular service then sure like if u wanna do ebay integration sure man trolley

swift fjord
#

you will merge aperii connection plugin

austere talon
#

now i wanna see someone make an ebay integration

#

it will put ebay banners everywhere

mortal fractal
#

can you even do so serverside yet

golden gulch
austere talon
#

yea

golden gulch
#

maybe i will make a plugin once I finish the moderation tools for it

lament nimbus
#

(it's a reliable api)

austere talon
#

love

#

gimme a good colour for contributor role

swift fjord
#

neon green

austere talon
#

nop

swift fjord
#

yop

#

bright yellow

#

#00FF00

#

that green

quasi gyro
#

b273eb correct color (real)

quasi gyro
#

or piss yellow

#

that yellow is nice prayumaru

austere talon
#

I did banana yellow

quasi gyro
#

it is nice and soft and cool umuakkoheh

swift fjord
#

#f2da80

jagged cloak
austere talon
#

LOL

jagged cloak
#

they removed it from ui but it still shows on kotlin version

austere talon
#

lmaooo it does

#

no icon tho

austere talon
#

omg the inline lint works now

#

so strange, I didn't change anything except switch from github node to @actions/setup-node

mortal fractal
#

i really need to get editorconfig plugin for neovim

#

or figure out how to get what im using already to use it

austere talon
#

the {spacing} is dictated by eslint I'm pretty sure

#

vscode Editorconfig sadly very limited ๐Ÿ˜”

mortal fractal
#

i just need to configure ale better then

austere talon
#

that's a pain, it's such a cool thing

#

but ig it makes sense, you gotta stay minimal if you want maximum support

#

what does ensureModule() do, does it just check if it exists?

mortal fractal
#

yeah

austere talon
#

probably no need to nop that as well then

mortal fractal
#

it basically is nop after that since it returns a promise

#

and everything discord does with it was in the .then()

#
ensureModule: function(e) {
                return l.embedded ? __OVERLAY__ && D.has(e) ? Promise.resolve() : y.nativeModules.ensureModule(e) : Promise.reject(new Error("not embedded"))
            },```
#

DiscordNative.nativeModules.ensureModule

#
async function ensureModule(name) {
  if (modulePromises[name] == null) {
    modulePromises[name] = electron.ipcRenderer.invoke(NATIVE_MODULES_INSTALL, name);
  }

  const moduleInstall = modulePromises[name];
  await moduleInstall.catch(e => {
    modulePromises[name] = null;
    return Promise.reject(e);
  });
  module.paths = getSanitizedModulePaths();
}```
austere talon
#

does disabling rpc actually improve performance noticeably?

mortal fractal
#

idk i didnt write it for performance increase tr

#

i wrote it cause i got tired of my other clients stealing my presence when developing

austere talon
#

lmao

mortal fractal
#

but maybe some weird paranoid person or someone in the same situation will find it useful

austere talon
#

you test on all branches? or just different mods

mortal fractal
#

should be testing on all branches but im really not

charred monolithBOT
mortal fractal
#

for swc i have a client with a reverted set of scripts

#

so i would just compare whats changed and find what i need post-swc

austere talon
mortal fractal
#

and if im in a call or something ill use another client to dev

austere talon
#

ripgrep nicer than devtools search

mortal fractal
#

ok figured out why eslint fixer in vim wasnt working

austere talon
#

lmao

#

reminds me of me trying to figure out why my plugin doesn't work but also doesn't error only to realise 30 minutes later that I forgot to enable it

iron elm
#

the smartest ven known to man

charred monolithBOT
jagged cloak
#

stupid merge commit why is that there git_expert

iron elm
#

yippee

mortal fractal
jagged cloak
#

coco pops

lament nimbus
#

guh I am trying to make pronoundb but the patch isn't working

#

nothing gets changed

#

even though the regex matches in devtools

#

oh nevermind vencord just is dumb and so am I

#

reading console helps sometimes

#

ok I fixed it

#

we do a little trolling

#

@austere talon hi help idk how to react
I managed to replace the component by simply doing this but how do I add a component after something else

austere talon
#

like you want both?

lament nimbus
#

I have to append after the timestamp

#

yes

tame escarp
#

presumably to have both the timestamp and pronouns in same thing this is why traditional patchers are still useful for react stuff ๐Ÿ™„

lament nimbus
#

for testing I just return early

austere talon
#

you can just return an array

mortal fractal
#

i will port username api eventually

austere talon
#

or pass the thing as prop to ur component and incorporate it somehow

tame escarp
#

or store it in the plugin object after finding with webpack and accessing it under the global or whatever

lament nimbus
#

whats the best way to capture that entire function then to wrap it with an array
I can't just (.+)} because that would end too early

tame escarp
#

really there are a multitude of ways to do this

mortal fractal
#

use .+?

lament nimbus
#

I guess I can just match the triple parens

mortal fractal
#

it not being greedy will lead to it capturing up to the last one

lament nimbus
#

that might work

mortal fractal
#

.+?})))

austere talon
#

you can use this

/\((\(.+?\)|.+)+\)/```
lament nimbus
#

yeah

austere talon
#

haven't tested but should work

lament nimbus
austere talon
#

mmh not really

lament nimbus
#

(regex is easy but reading it is horrible)

austere talon
#

but something similar to that could work

#

rusher wrote smth like that once

#

smart kid

lament nimbus
#

I find it funny I am having this conversation when all of the timestamps are replaced with "deez fucking nuts"

austere talon
#

anyway the easiest way is to match the end

lament nimbus
#

amazing chat list

austere talon
#
/return .+?\)\)\)(?=\}\)\)\))```
#

that'll match the end fine

tame escarp
lament nimbus
#

test 2

mortal fractal
#

no

lament nimbus
#

guh

#

it is

mortal fractal
#

oh

lament nimbus
#

not sure how to filter that

tame escarp
lament nimbus
#

its probably in a var

mortal fractal
#

are you in the timestamp element itself?

lament nimbus
#

yeah

mortal fractal
#

guh

tame escarp
#

probably not if the edited thing is being replaced, if they are then ๐Ÿคจ what is discord on today

mortal fractal
#

just append to username and style if

#

i will get find for username sec

lament nimbus
mortal fractal
#

wait im stupid

#

username doesnt include timestamo

lament nimbus
#

I could just append to username instead

#

but that might be confusing

#

especially with people who already have it in their nickname

mortal fractal
#

yeah

#

you want MessageHeader but idk how to find it post-swc

lament nimbus
#

look at the code before swc

#

and find some keywords

#

and then search

#

pro ven strategy

mortal fractal
#

yes but im on mobile rn

austere talon
#

excuses ๐Ÿ™„ ๐Ÿ™„

#

you will search on mobile

lament nimbus
#

time to clone giant discord files repo

austere talon
charred monolithBOT
lament nimbus
#

its not too horrible with depth=1 but still lmao

#

ok found it

charred monolithBOT
mortal fractal
#

guh

#

prob go into that element

lament nimbus
#

ok well thats kinda progress

#

its in the wrong place but it got appended appropriately

mortal fractal
#

youre going to use useEffect to fetch pronouns right?

lament nimbus
#

yes I already was told how to handle that

mortal fractal
#

ok good

lament nimbus
#

@mortal fractal ok so this works but the issue is I can't get deep enough in the tree without editing the timestamp itself

#

which is what I was doing originally

#

can I just somehow check if the outside is MessageHeader instead

mortal fractal
#

not easily

#

see where props.showTimestamp is used and work from there?

lament nimbus
#

right here
I replaced r.createElement with an array

#

and appended my own

#

but its not deep enough

#

u = showTimestamp
c = compact

mortal fractal
#

whats qe.Z look like?

lament nimbus
#

I assume that is the timestamp component

#

my div gets added right after it

#

yeah it is

#

the same component I was patching earlier

#

wait I have an idea

#

is it possible to pass the timestamp component to my component, and then patch it from my component

mortal fractal
#

yeah

#

you can either pass it as a child or pass it as a property

lament nimbus
#

can I just like

#

component.text = component.text + "pronounshere"

mortal fractal
#

i think that would be the least convoluted solution

lament nimbus
#

hm that would work
but if its easy enough to just modify component text then I would prefer that
let me console.log it to see how complicated that would be

mortal fractal
#

if its just a child you could just add another child to it probably

lament nimbus
quick ibex
#

That's bad out of context

mortal fractal
#

guh no children

#

so yeah my idea prob best bet sadly

mortal fractal
#

youd also need to pass down message author

lament nimbus
#

can you not just add children with like .children = []

#

idk how react works at all

mortal fractal
#

idk for sure

#

genuinely i dont like the idea of touching props after the element is rendered tho

#

because of cases like if react development is loaded, props are frozen

lament nimbus
#

uh well it worked lmao

#

mostly

#

it replaced the text

#

ok yeah I am just going to do the passing down props method

lament nimbus
#

The creators of regex did not have this in mind when they created it

#

this is horrible

lament nimbus
#

Ok well I need to sleep
Trying to figure out what the heck the regex is doing later is not going to be fun

charred monolithBOT
quick ibex
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
tame escarp
#

"is very useless"
has moyai plugin

austere talon
#

moyai is at least funny

#

this one is just a shitty copy of another plugin

#

also I say we merge all the single command plugins into one

tame escarp
#

yeah but then you cant finetune what commands you want enabled

#

add plugin settings first tonguecat

austere talon
#

like just register all commands who care

tame escarp
#

i dont but someone probably does

charred monolithBOT
#

this requires a lot more options to be specified. There used to be a createBotMessage() that created such a message for you but it's no longer a named export.

here's the old code to find it again. loggingName is only used for tracking btw which we disable so you can just ignore it

      t.createBotMessage = function (e) {
        var t = e.channelId,
          n = e.content,
          a = e.embeds,
          r = e.loggingName;
        return {
          id: c(),
          ty...
charred monolithBOT
mortal fractal
#

don't think it's possible, as the author of the automod message is the user that sent the message which got blocked, and there's no way to get it to show another user than the author. plus the message only has content and no image embeds/attachments/etc.
you have to parse markdown and create message accessories yourself, which the client has helper functions to do

austere talon
#

non exported members aren't a biggie just patch the module

mortal fractal
#

i checked and we dont wrap the module in a function with better names to access module, exports and require but i could be wrong

#

i guess you could like

#

attach it to your plugin class

austere talon
#

yeah

#

thats what commands api does

mortal fractal
#

ah

austere talon
mortal fractal
#

what about it

#

ChatMessageEmbedCard doesn't do the blocked highlighting by default

#

it uses the message prop to get the author

#

and then the highlighting and stuff is done in content

#

thus why you need to reparse markdown yourself

charred monolithBOT
austere talon
#

should maybe disable tags logging now

charred monolithBOT
tame escarp
#

lmao it deletes and recreates the tag

#

solid implementation ๐Ÿ‘

devout river
#

cuz i can change it

devout river
austere talon
#

eh it's nicer than having 3 billion tags

#

but that's also why u should pin 3rd party actions to commit hash

#

cause otherwise they could replace the tag with malware

fiery jungle
#

love

fiery jungle
#

lmao

austere talon
quick ibex
charred monolithBOT
#

As you can see from its description, this plugin is different than uwuifier because it owoifies channels, guilds, and even menus. I've renamed the uwuifier plugin to "UwUify command" (with permission from @exhq) to help distinguish them. This was originally a console script written by @Benricheson101 a few months ago, I just turned it into a Vencord plugin with a few tweaks.

vale kayak
#

best plugin ^

lament nimbus
#

At this point half of the plugins will just be joke plugins

glass mango
#

i love it

#

absolutely incredible

vale kayak
#

my favorite so far

lament nimbus
vale kayak
#

channel

#

and guild

lament nimbus
#

awwwww

vale kayak
#

actually wait nobody merge it pls

#

it needs to inject into guild create, guild update, channel create and channel update

#

currently in only owofies those on startup

charred monolithBOT
quick ibex
austere talon
#

actually u can just use mergeDefaults

#
const botMessage = createBotMessage({ channelId, embeds: [], content: "" });

receiveMessage(channelid, mergeDefaults(msg, botMessage));
#

it recursively merges the objects (second object into the first)

#

that's also how I fill settings defaults

quick ibex
#

Ooohhhh ok

#

Also, lazyWebpack

austere talon
#
mergeDefaults({ foo: 12, author: { name: "hi" }}, { foo: 12, bar: 42, author: { name: "hi", id: "12" }})
=> { foo: 12, bar: 42, author: { name: "hi", id: "12" } }
quick ibex
#
lazyWebpack(filters.byCode('username:"Clyde"'))
austere talon
austere talon
quick ibex
#

This approximately how lazyWebpack works?

austere talon
#

yes

quick ibex
#

Alright

austere talon
#

const createBotMessage = lazyWebpack()

#

on top of file

quick ibex
#

wait on top of file completely?

austere talon
#

yes

#

otherise you're doing a search that may take up to 40ms every time it's called

#

cpu waste

quick ibex
#

Then I should drag _receiveMessage to top as well

austere talon
#

yes

quick ibex
#

Also

#

Reason why I have the whole author embed is because it is customizeable

#

Would be interesting to see it be used to have a "Vencord" in-client bot sort of

#

@obsidian lintel

austere talon
#

its possible

austere talon
quick ibex
#

Ohhhhhhhhhh

#

I get it now

#

Ok

austere talon
#

basically for every property in arg2 (recursively), if arg1 doesn't have the property, add it to arg1

quick ibex
#

Confused asf

austere talon
#

you're merging the defaults on a string??

#

make it an object dogsmirk

#

sendMessage(channelId, msg)

fiery jungle
#

@austere talon I will close my css pr and remove css traces from ff pr

austere talon
#

yes please

#

400mb dependencies my nigtmare blobcatscared

jagged cloak
#

horror

quick ibex
#

oh

#
export function sendBotMessage(channelId: string, content: string) {
    let botMessage = createBotMessage({ channelId, content: "", embeds: [] });

    console.log(mergeDefaults(content, botMessage));

    _receiveMessage.receiveMessage(channelId, mergeDefaults(botMessage, { content: content }));
}
#

this?

#

Nope, still broken asf

charred monolithBOT
austere talon
#

webhook

tame escarp
#

not only a webhook
a โœ… WEBHOOK

austere talon
# austere talon

@mortal fractal why don't u just check if the message has a webhookId?

#

or do u want it to detect clyde messages

mortal fractal
#

didnt even realize that

charred monolithBOT
austere talon
#

oh god the tags

#

whats the point of 2fa if it just lets u use your password

mortal fractal
#

at least its not qr code login

austere talon
#

fuck u github

#

why do they have to be one event

#

do i really have to add it to ghwp

fiery jungle
#

yop

swift fjord
#

yop

charred monolithBOT
charred monolithBOT
#

I do have Node.js installed, which was the first thing I thought to double-check, and running node in the terminal does in fact work fine. Devtools console has this object logged but nothing else:

{
	cmd: "node build.mjs",
	code: "ENOENT",
	errno: -2,
	path: "node",
	spawnargs: [ "build.mjs" ],
	stderr: "",
	stdout: "",
	syscall: "spawn node",
}

Update seems to otherwise go smoothly, as if I open the directory up in the terminal, rerun pnpm build, and ...

charred monolithBOT
charred monolithBOT
main gale
charred monolithBOT
charred monolithBOT
lament nimbus
#

test

mortal fractal
#

they/them

lament nimbus
#

its a placeholder while I make stuff work

mortal fractal
#

figured

lament nimbus
#

aaaaAAAAAAAAAAAAAAA

#

I thought I fixed that

mortal fractal
#

clearly you didnt

lament nimbus
#

brilliant observation

#

oh I am stupid

#

ok thats fun

#

aaaaaaAAAAAAAAAAAAAAAAAAa

mortal fractal
#

they/themedited

austere talon
#

LOL

austere talon
#

they/themedited

lament nimbus
#

my method of editing properties did not go as planned

mortal fractal
#

i uh

#

think you're patching the wrong one

#

wait nvm

#

im stupid

lament nimbus
#

they use one component for all timestamps

mortal fractal
#

i read !1 as true

lament nimbus
#

I have to patch the timestamp component

mortal fractal
#

why cant you just make a span and style it to look like a timestamp

austere talon
#

bro

#

the releases kinda annoying cause I get an email every time

#

github make better webhook and notification categories when

#

nvm they have

lament nimbus
#

its dumb

mortal fractal
#

as a span???

lament nimbus
#

oh I was using div

#

span would probably be better

austere talon
lament nimbus
#

idk how to web dev lmao

austere talon
#

lmao

lament nimbus
#

web dev sucks

austere talon
#

span = inline div

mortal fractal
#
find: ".Messages.GUILD_COMMUNICATION_DISABLED_ICON_TOOLTIP_BODY",
replacement: {
  match: /\.timestamp,className:.}\)/,
  replace: (orig) => `${orig},Vencord.Plugins.plugins.PronounDB.createPronounElement(arguments[0])`
}```
fathom herald
#

im p sure you can just have $1 instead of a function

lament nimbus
#

GUHHHHH

#

wtf are you talking about electron

charred monolithBOT
#

Launched discord in the morning only to see the error

A JavaScript error occurred in the main process
Uncaught Exception:
Error: Cannot find module '/home/shiroe/Downloads/Vencord/dist/patcher.js'
Require stack:
- /opt/discord/resources/app/index.js
- 
    at Module._resolveFilename (internal/modules/cjs/loader.js:887:15)
    at Function.n._resolveFilename (electron/js2c/browser_init.js:261:1128)
    at Module._load (internal/modules/cjs/loader.js:732:27)
    at Function.f._l...
crude hearth
#

Smartest vencord user

lament nimbus
#

In electron

#

Not the best method but fuck cors anyways

#

Anyways time to finish this tomorrow
I am making a method of bulk fetching pronouns every 1.5 seconds because I got ratelimited in like 2 seconds

mortal fractal
#

are you not caching per user?

#

are you hitting a race condition because parallel requests???

mortal fractal
charred monolithBOT
austere talon
austere talon
vale kayak
#

@austere talon have you tried owoifier yet

austere talon
#

@quick ibex can you finish up #66 or do you still need more help?

quick ibex
#

I'll finish it once at pc

#

I think I know what the issue is, but not 100%

#

Issue that I was running into*

crude hearth
#

@austere talon why this is still not merged

charred monolithBOT
crude hearth
#

because kyza

#

he is a guy who follows punctuation rules 100%

austere talon
#

guy who's infamous for always typing with punctuation

quick ibex
#

You clearly havent met Chrome Beretta

#

Dudes a maniac

#

Why did you call me a retard.

#

First of all

#

Its a question, so question mark

#

Second of all, why punctuate if you are about to throw hands

austere talon
quick ibex
#

1 sec

crude hearth
#

I thought he changed it because he had different name in alicord

quick ibex
#

Dudes a little weird

lament nimbus
lament nimbus
charred monolithBOT
austere talon
#

nop

#

there isn't 404

#

it sends 200 even for invalid ids

tame escarp
#

deranged api

lament nimbus
#

you love

#

Idk where the ratelimit comes from but probably doesn't have cors

#

hm idk why I hit the ratelimit
I literally just spammed it with 1k http requests and hit no ratelimit

charred monolithBOT
austere talon
#

I'm so close to disabling issues why does everyone treat them like they're a support channel

charred monolithBOT
quick ibex
#

@austere talonFinished trolley

austere talon
#

enabled a bunch of branch protecton rules to test them

tame escarp
austere talon
#

whaaa how does this wokr

quick ibex
#

@austere talongonna add type-fest as dependency, alr?

austere talon
#

yes

#

dev dependency

#

it's sindresorhus so usually hard pass but this one has no dependencies so it's gud

charred monolithBOT
austere talon
#

@quick ibex do u not know how to merge?

#

click on resolve conflicts and then it looks like this

quick ibex
#

BRU I DIDNT SEE THE BUTTONS ๐Ÿ˜ญ

austere talon
#

anyway you just need to delete all the lines with arrows on them, that's to indicate the differences

#

it's to show you the comparison

#

so you would delete line 26 28 and 29

#

and keep line 27

#

it's weird in this case cause you're just deleting github added stuff but when there's more complex conflict both sections will contain many changes that might conflict so thats what they're for

quick ibex
#

Ok

#

Should be fixed

#

Dude

#

Github is so fuckign weird

charred monolithBOT
quick ibex
charred monolithBOT