#🪅-progaming

1 messages · Page 1 of 1 (latest)

drifting cloak
#

pro gaming

native spruce
#

omg

#

program

crimson cave
#

pro gaming??

native spruce
spring swallow
#

new channel?

heady dew
#

silly =w=

dawn ledge
#

meow

fleet cedar
#

But this isn't the channel formerly known as progaming

dawn ledge
#

yeah

golden narwhal
#

new channel !!?

#

genuinely thought the emote was 🧌

halcyon spire
#

pro gaming

quick crow
#

Oh this exists again

cerulean plover
quick crow
#

Real

formal belfry
#

This was gayming no?

fleet cedar
#

This branch office is brand new

potent cloud
#

whar is this channel for??

#

just for programming in general?

formal belfry
#

They changed it lol

#

Look at chat above

#

O wait

royal nymph
#

me when i spread misifnormation online

#

this is a new channel for off topic programming

formal belfry
formal belfry
#

So where is gayming?

royal nymph
#

archived

formal belfry
#

O alr

nimble bone
native spruce
#

This channel was needed I kept posting programming stuff in off topic

#

@woven mesa

royal nymph
#

i "deleted" the old programmign channel because it wasnt very active and programming stuff was fine in off topic

but now that off topic is EXTREMELY active and filled with whitenames, it's better to have a separate programming channel so u can have intellectual conversations away from the crackers

frosty obsidian
#

this server hates white people

nimble bone
#

wing wong so racist

native spruce
raw wigeon
#

Can anyone guide me if there's a channel for themes?

alpine pecan
#

there isn't

raw wigeon
#

ok

native spruce
#

i liked ur other banner
@alpine pecan u want it back

alpine pecan
#

yopppp (i deleted because i realized what channel this is)

glacial mirage
#

holy shit css clip-path is so cool

delicate sinew
#

Marketing statistics predict great success for a huskboard

olive niche
#

razy

#

this channel is not progamer locked though lol

jade stone
#

is this programming or progaming

olive niche
#

both

jade stone
woven mesa
severe jay
native spruce
#

@woven mesa wtf swiftui animations are easy and cool

woven jolt
#

me when i never read this lsp message

dapper jacinth
#

bro is that the minecraft chat font

royal nymph
#

the () are so ugly

#

but yeah that's a thing blobcatcozy

woven jolt
fickle olive
pine coyote
#

progaming

fleet cedar
#

So much .then...

#

Why not await

fickle olive
#

Callback/promise hell I see in ur near future

dapper jacinth
fickle olive
#

Fr 😂

winged mantle
woven jolt
half ferry
#

The only thing i will say is that i only know 1-2% javascript

#

or lower

native spruce
pure shore
#

i ported the silly

#

now theyre on your desktop

slate rose
#

give me 1 yen

woven mesa
native spruce
woven mesa
#

you should make the next part come from the right rather than the left

native spruce
#

o

#

idk how to do that yet

woven mesa
#

what does your code look like

native spruce
#

nor do I know how to make it so this view appears first and be able to dismiss it

woven mesa
#

do you want me to implement that

native spruce
woven mesa
#

maybe

woven mesa
native spruce
woven mesa
#

i can try at least

native spruce
#

I like seeing others do stuff so I can learn

#

but reminder this is a UIKit swiftui hybrid so its like completely different than what ive seen with swiftui lol

#

ah fuck I need to push my code

#

There we go

#

Had to boot up mac

golden narwhal
native spruce
#

ysah

severe jay
#

y'all did an excellent job with the website

#

the discord frame is so cool

formal belfry
#

fr

kind portal
native spruce
#

so its native to ios

kind portal
#

Oh i see

twilit trellis
cerulean plover
dim cave
#

is this new

formal belfry
#

Ye

quick crow
#

Kinda

#

Programming channel existed before but it got removed

#

Then un removed

quiet swift
woven mesa
cloud heart
shrewd maple
#

The only one I know that makes an attempt at TTFs is Cozette and I believe that’s the font in question edit: nvm Cozette doesn’t have italics, nvm then

red socket
fleet cedar
#

For peoples who grammar very good

red socket
#

could somebody please give me the image posting role so i can post screenshots of my stupid apps?

red socket
red socket
royal nymph
#

huh what are u cooking here @odd vigil

quick crow
#

That is so cursed

royal nymph
#
<script>
  const userPromise = getUser(id);
</script>

{#await userPromise}
  <p>Loading</p>
{:then user}
  <Profile {user} />
{:catch error}
  <p>Failed to fetch user {error.message}</p>
{/await}
#

this is how u do promises in svelte

odd vigil
#

onmount way seems much snappier to me (altho my impl wasnt very safe)

#

i tried with disabling cache too

royal nymph
#

huh? snappier how

#

it shouldn't make a difference whatsoever

royal nymph
#

it's the same for me

#

the first page just takes longer to load

#

the second loads instantly but loads for a bit

odd vigil
#

svelte await consistently takes 100-200ms more time to fully load

#

it might just be the additional check rather than onmount vs await itself

royal nymph
#

what additional check?

#

there shouldn't be a difference ASpikaThink

odd vigil
# royal nymph what additional check?

well not a check exactly, just thought it could be the error safety considering i didnt have that and thats pretty much the only difference beside switching from onmount to svelte await

#

not sure how it works under the hood lol

#

but i just added typesafety to onmount and it still consistently finishes 200ms faster for some reason

royal nymph
odd vigil
#

this is where im looking for the total ms for each, maybe i should be looking somewhere else?

royal nymph
#

maybe try to remove your fallback

#
{#await userPromise then user}
    <Profile {user} />
{/await}
#

try just that

odd vigil
#

yeah that seems to reach the same average time

#

doesnt reach 1000ms anymore

royal nymph
#

maybe svelte has a transition between the fallback and the result

#

but that seems really weird

#

seems like å bug

frosty obsidian
frosty obsidian
#

best part about compose is that you can do this shit quickly

native spruce
#

I can’t wait to see what it looks like

frosty obsidian
#

i have the login flow completely done

native spruce
#

I don’t have any login features yet but I plan on doing it after I get my onboarding finished

frosty obsidian
#

their login api is incredibly simple

#

just basic auth

native spruce
#

Yeah I have code for that already

frosty obsidian
#

for now i just persist the token and a serialized user object

#

not even in a db bc i don't think a sophisticated caching solution is really needed here

native spruce
#

I only cache thumbnails

frosty obsidian
#

the image loading library ill use probably does that for me

native spruce
#

Something I wish the demonlist has was a history of changes to the list

#

but they only seem to have it for like each individual demon

frosty obsidian
#

idk how to do etags with ktor client

#

I've only seen stuff for them for ktor server

grand garnet
#

why does types/node not come as default

#

spent too long going why fs not work

magic shale
#

ikr

woven mesa
#

meow

dawn ledge
woven jolt
#

type some bitches

dim cave
#

some bitches

dawn ledge
#

they typed some bitches

finite isle
dawn ledge
#

nuh uh

ionic lake
royal nymph
pearl stagBOT
ionic lake
#

very good 10/01

woven jolt
serene elk
#

you can literally findByProps openLootbox instead

#

no posting manual http request

royal nymph
#

wow they decreased the rate limit

#

its like 1s now

shell crag
ionic lake
#

I recently used it and got annoyed that it blocks whatever (sub-)package's postinstall script it finds suspicious

#

one was core-js, I think, and it found a dyanmic import for a postinstall, "suspicious," and that they implemented this bespoke package.json spec

fleet cedar
#

Yeah that's certainly not a scam

worthy sun
#

it woudlnt work bc of ratelimit but the anim would play

cerulean plover
#

core-js spamming users logs and getting dev locked in prison since i forgot when

#

javascript ecosystem husk

#

though the guy did make a followup post a few years later

grand garnet
#

I forgor how to make multiline ternary not cursed

frosty obsidian
#

welp the apps done

#

@native spruce im a master at ui blobcatcozy

worthy sun
#

can see

fleet cedar
cerulean plover
native spruce
frosty obsidian
#

yeah i just needed something in order to test paging

fleet cedar
magic shale
#

i only like python's cause it's readable but really weird from a programming standpoint

grand garnet
royal nymph
#

your code is entirely synchronous. if there are dozens of files, try paralellisng it

grand garnet
#

yeah about 30 files and increasing, cheers I’ll take a look at that when I’m up

royal nymph
#

and use Promise.all to run everything in paralell

pine coyote
#

could someone translate this for me

fleet cedar
#

It means if you do def foo(bar = []):, that default value is evaluated when the function is defined, not when it's called

delicate sinew
#

You're not supposed to use mutable types as default values in python ever yop

#

When would you even do that

red mist
#

the "proper" way would be

def foo(bar: list|None = None):
  if bar is None:
    bar = []
  ...
#

also I love how the guy in the tweet is like, python doesn't work like js

#

who woulda thunk it

delicate sinew
fleet cedar
#

Python's behavior is ridiculous though

fleet cedar
delicate sinew
#

It isn't

#

But I can't come up with a use case where you would need an empty list as default argument

red mist
royal nymph
#

how does it make sense 😭

#

why tf would you ever want the same array shared across function invocations

calm ruin
#

by reinstancing it everytime

#

but also why the hell would you use a mutable object as a default value

#

but yea kinda horror for arrays

pine coyote
rugged berryBOT
#

Here is your py(3.10.0) output @pine coyote

1
1
pine coyote
#

am i stupid

fleet cedar
#

/run ```py
def funny(bar = []):
bar.append(1)
print(bar)

funny()
funny()```

rugged berryBOT
#

Here is your py(3.10.0) output @fleet cedar

[1]
[1, 1]
pine coyote
#

WHaT THE FUCKING IS THE DIFFERNT

fleet cedar
#

Integers aren't mutable

pine coyote
#

guh

fleet cedar
#

/run ```py
x = 1
y = x
y += 1
print(x, y)

x = []
y = x
y.append(1)
print(x, y)

rugged berryBOT
#

Here is your py(3.10.0) output @fleet cedar

1 2
[1] [1]
delicate sinew
#

:3

pine coyote
#

nop

#

c my beloved

fleet cedar
#

Ub my behated

red mist
# royal nymph how does it make sense 😭

mutables aren't copied when being passed around, and the way functions work in python is, it gives the def statement(the statement alone and not the body of the function) a once thru, at which point the empty list is initialized, and the same list is passed around upon calling the function however many times you call it, the list is initialized before you even call the function the first time if I'm not wrong

dawn ledge
#

python drfaults are global

fleet cedar
#

The thing that does not make sense is why the language was defined that way

dawn ledge
#

function argument defaults

royal nymph
fleet cedar
#

It makes sense from an implementation perspective, but not from a design perspective

red mist
#

or python for that matter

fleet cedar
#

Any case that would use an empty list as default already does that, just with a null check first

calm ruin
delicate sinew
calm ruin
fleet cedar
#

Every language does that

calm ruin
delicate sinew
rugged berryBOT
#

Here is your py(3.10.0) output @delicate sinew

140671911969136
140671911969360
delicate sinew
calm ruin
fleet cedar
#

Of course most languages don't box integers, but still conceptually the same

fleet cedar
#

Integers having identity is horror

calm ruin
#

ig it makes sense in some places like auto converting 32 bit to 64 bit number

delicate sinew
calm ruin
#

but also its horrible for perf prob

#

we know another reason of why python is slow trolley

fleet cedar
#

Python is slow for a multitude of reasons

calm ruin
#

yes

#

thats why I said "anothe reason"

woven mesa
native spruce
nimble bone
#

apple users are so good at design tbh

woven mesa
summer mulch
#

/run

console.log('bot test');
rugged berryBOT
#

Here is your js(18.15.0) output @summer mulch

bot test
fleet cedar
#

#🤖-bot-commands

summer mulch
#

ty

wispy palm
#

/run

puts 'hi'```
rugged berryBOT
#

Here is your rb(3.0.1) output @wispy palm

hi
wispy palm
#

/run

section .data
    hello db 'Hello, World!', 0x0a ; null-terminated string with newline character

section .text
    global _start

_start:
    ; write syscall
    mov     eax, 4          ; syscall number for sys_write
    mov     ebx, 1          ; file descriptor 1 (stdout)
    mov     ecx, hello      ; pointer to the message
    mov     edx, 13         ; message length
    int     0x80            ; call kernel

    ; exit syscall
    mov     eax, 1          ; syscall number for sys_exit
    xor     ebx, ebx        ; exit code 0
    int     0x80            ; call kernel
rugged berryBOT
#

Here is your nasm(2.15.5) output @wispy palm

Hello, World!```
wispy palm
#

o

#

/run js console.log(client.token)

rugged berryBOT
#

@wispy palm I only received js(18.15.0) error output

/piston/jobs/a81d7198-d3e0-4ae3-9c57-7a1950b3ef23/file0.code:1
console.log(client.token)
            ^

ReferenceError: client is not defined
    at Object.<anonymous> (/piston/jobs/a81d7198-d3e0-4ae3-9c57-7a1950b3ef23/file0.code:1:13)
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:23:47

Node.js v18.15.0
buoyant trellis
#

/run ```js
console.log(process.env)

rugged berryBOT
#

Here is your js(18.15.0) output @buoyant trellis

{
  PWD: '/piston/jobs/2ed159b9-c84e-42af-bde5-6b7c73db382e',
  SHLVL: '1',
  PISTON_LANGUAGE: 'javascript',
  PATH: '/piston/packages/node/18.15.0/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.',
  _: '/piston/packages/node/18.15.0/bin/node'
}
buoyant trellis
#

/run ```js
console.log(require("fs").readdirSync("/"))

rugged berryBOT
#

Here is your js(18.15.0) output @buoyant trellis

[
  '.dockerenv', 'bin',   'boot',
  'dev',        'etc',   'home',
  'lib',        'lib64', 'media',
  'mnt',        'opt',   'piston',
  'piston_api', 'proc',  'root',
  'run',        'sbin',  'srv',
  'sys',        'tmp',   'usr',
  'var'
]
woven mesa
#

@native spruce

royal nymph
#

VeeStack

frosty zodiac
#

/run ```lua
print(_ENV)

rugged berryBOT
#

Here is your lua(5.4.4) output @frosty zodiac

table: 0x55e6af663c10
native spruce
#

vee stack…

formal belfry
#

they should add this in html6

#

<skibiditoilet>

grand garnet
#

more html

magic shale
#

i think in html6 they should remove every tag except div

fleet cedar
#

They need to keep <style> and <marquee> too

magic shale
#

#justicefor<marquee>

grand garnet
#

they should add unlimited number of <h#>

#

in fact allow negatives as well

#

<h-1>

formal belfry
woven mesa
#

/run

print(":3")
rugged berryBOT
#

Here is your swift(5.3.3) output @woven mesa

:3
woven mesa
#

5.3.3???

#

😭

native spruce
#

@woven mesa is there a way in swift to detect if u have a certain device or newer

#

if not then man

woven mesa
native spruce
#

also, I love how i'm unable to sync my clipboard with the sim

woven mesa
#

rf

native spruce
#

had to type out like 50 chars manually

#

amazing

#

cool this app has the same problem

#

I wish I could get the default system insets

pine coyote
#
@Subscribe
    public void onSwitch(ServerConnectedEvent event){
        var username = event.getPlayer().getUsername();
        if (!Playtimev2.isPlayerOnline(username)){
            logger.info("player not found as online, adding player to list");
            Playtimev2.addPlayer(username, event.getServer().getServerInfo().getName(), String.valueOf(System.currentTimeMillis()));
        } else {
            logger.info("player is online, changed server. closing play in old server and opening in new");
            var playerInfo = Playtimev2.getPlayerInfo(username);
            if (playerInfo == null){
                logger.error("HOW");
                logger.error("something is going extremely wrong, so bad, very wrong. contact echo");
                return;
            }
            logger.info(username+ " playtime: " + (System.currentTimeMillis() - Integer.parseInt(playerInfo[2])));

        }
    }```
#

rate @calm ruin

native spruce
#

is it good ux to search through the api if its using the legacy list

#

but not if its using the other lists

native spruce
#

@woven mesa m

frosty obsidian
#

progress

native spruce
#

I should do that

#

for the numbers

frosty obsidian
#

i just need to pick good numbers for top 50 and 51-100

#

*colors

#

not numbers

native spruce
#

the main list is apparently 1-75

frosty obsidian
#

i think 100 is a better number

native spruce
#

yeah its pretty round

#

not sure why they've made it so weird

frosty obsidian
#

id really like do the color fade like you do, where its the dominant color of the thumbnail

#

i could even theme the text with that

native spruce
#

not sure how to do it with android but the fade I do is just a blur

frosty obsidian
#

blur on android kinda sucks

#

not easy to implement

native spruce
#

hmmm

frosty obsidian
#

rn im doing a simple gradient

native spruce
#

I think you should do the dominant color

frosty obsidian
#

ill just need to find a good library for doing so

#

maybe cache the color with the key being the thumbnail url

native spruce
#

the blur for mine reapplies itself for each item..

#

not sure how intensive that is

frosty obsidian
#

probably not too bad but id rather just not recalculate it very often

#

i wouldn't be doing a blur, id have to use some library that can extract the dominant color of a bitmap

#

i already know of a couple

frosty obsidian
#

i was not very happy with it

native spruce
#

the circles are not such a bad idea tho tbh

frosty obsidian
#

yeah im probably gonna swap out the rounded rectangles for a circle again

native spruce
#

also dear lord this font is gross

frosty obsidian
#

yeah the official site has some interesting design choices

native spruce
#

😭

#

you know they used to have ads but removed them

#

and.. with that they kept the padding for the ads

#

so its off centered

frosty obsidian
#

also i hate that they provide the lowest possible quality for the thumbnail

finite isle
native spruce
#

peak

frosty obsidian
#

another funny thing about their api is that they don't use the standard Link header for some reason

#

they use "links"

frosty obsidian
#

guh

native spruce
#

yeah I know

frosty obsidian
#

some thumbnails are discord links too

#

idk why they don't host the images themselves

native spruce
#

some thumbnails go to a random unlisted video btw

#

that is unrelated

frosty obsidian
native spruce
#

I think they do that to preserve thumbnails, so to prevent trolls

native spruce
frosty obsidian
#

yeah I've seen them

#

i don't handle image errors rn so they're just blank

native spruce
#

me neither

pearl stagBOT
# frosty obsidian https://github.com/wingio/Hellish/blob/main/app%2Fsrc%2Fmain%2Fjava%2Fxyz%2Fwing...

**app%2Fsrc%2Fmain%2Fjava%2Fxyz%2Fwingio%2Fhellish%2Futil%2FNetworkUtil.kt: **Lines 25-64

object LinkPageExtractor {

    private val LINK_REGEX = "<(.+?)>; rel=(next|prev)".toRegex()

    fun getPageInfo(response: HttpResponse): Pair<PageInfo?, PageInfo?> {
        val linkHeader = response.headers["links"] ?: return null to null
        val links = linkHeader.split(",")
        var next: PageInfo? = null
        var prev: PageInfo? = null

        links.forEach { link ->
            val match = LINK_REGEX.matchEntire(link)
            val url = match?.groupValues?.get(1)
            val rel = match?.groupValues?.get(2)

            when(rel) {
                "next" -> next = extractFromParams(url)
                "prev" -> prev = extractFromParams(url)
            }
        }

        return next to prev
    }

    /**
     * Extracts the necessary paging parameters from the [path]
     *
     * @param path Path returned inside the links header
     */
    private fun extractFromParams(path: String?): PageInfo? {
        if(path == null) return null
        val parsedUrl = Url("${BuildConfig.BASE_URL}$path")

        return PageInfo(
            after = parsedUrl.parameters["after"],
            before = parsedUrl.parameters["before"]
        )
    }

}
frosty obsidian
#

that's how i get the paging stuff

native spruce
#

I should do better paging

frosty obsidian
#

repurposed from a mastodon library i haven't touched in a bit

frosty obsidian
#

it does most of the work

native spruce
#

I dont use any libraries for the api sadly, its all manually done

frosty obsidian
#

im writing the api stuff myself too

native spruce
#

though the code is basically repurposed pixivapi that llsc worked on

#

I should make a package for this so other people can use it

frosty obsidian
#

androidx paging is just what calls the api when you scroll to the end of the feed

native spruce
frosty obsidian
#

all done myself

native spruce
#

woww

#

I dont understand much of kotlin sadly :c

frosty obsidian
#

im the same with swift

native spruce
#

though I think this is readable

#

actually this is extremely similar to what I have

frosty obsidian
#

convergent evolution

native spruce
#

hehe

frosty obsidian
#

most of that is reused from other projects

#

the only thing that's really new are the models

native spruce
#

something I have not done yet is do the rest of the stuff for the api

frosty obsidian
#

i just develop it as i go

#

i only support two routes right now bc so far that's all i need

#

im glad their ratelimit is so generous

digital wigeon
digital wigeon
native spruce
digital wigeon
#

nvm

dusky verge
#

Does anyone know how I can decode the Discord gateway websocket messages in the DevTools?
wss://gateway.discord.gg/?encoding=json&v=9&compress=zlib-stream it seems to connect to this URL

fleet cedar
digital wigeon
#

I have it enabled and my discord hasn't had any issues, so I assume it still works as expected

dusky verge
fleet cedar
#

Same way as any other version

fleet cedar
#

But what do I know

digital wigeon
#

uhhhh

dusky verge
worthy sun
#

..

dusky verge
#

I don't think that would work

digital wigeon
fleet cedar
#

That's not how you install plugins

dusky verge
#

I am not using Vencord

digital wigeon
fleet cedar
#

It's certainly risky

digital wigeon
#

😭

fleet cedar
#

But maybe it works anyway

#

I'd still refine the regex a bit just to be safe

#

Either that or whole-ass it and replace false with true in every module

digital wigeon
#

yeah it seems to be affecting some other functions as well

#

updated version:

import { Devs } from "@utils/constants";
import definePlugin from "@utils/types";

export default definePlugin({
    name: "zlibFreeGatewaySocket",
    authors: [Devs.Arjix],
    description: "",

    patches: [
        {
            find: "static isDiscordGatewayPlaintextSet(){return!1}",
            replacement: {
                match: /isDiscordGatewayPlaintextSet\(\){return/g,
                replace: _ => `isDiscordGatewayPlaintextSet(){return true;`
            }
        }
    ],
});
royal nymph
#

guys

#

enable experiments plugins > settings > developer settings > enable logging of gateway events

#

no need for plugin 😭

woven mesa
#

lmao

fleet cedar
#

But plugibs arw more fun

#

Why use existing stuff when you can build from scratch?

royal nymph
honest apex
#

4wjefhbwkjgerwm,rtjrmfhrtrkjfbwrwtikghrfdsk4rtgfbuderygtrkderyiesrkjbriirtgkh

fleet cedar
#

Really?

honest apex
fleet cedar
#

It's not valid haskell

#

So it has no value

golden narwhal
#

does anyone know why tf the website uhhhh

#

idk how to explain it

#

(its bright blue to demonstrate the change)

#

it kinda changes position and then adds another scrollbar

golden narwhal
#

Why does this stupid fucking scrollbar keep appearing

golden narwhal
#

nvm found it

native spruce
#

@woven mesa I just did this

#

looks pretty here

woven mesa
native spruce
#

i made a bold

native spruce
#

@woven mesa

nimble bone
native spruce
#

time to find yt svg

woven mesa
#

requires a thicker material ig

golden narwhal
narrow dagger
#

cute

native spruce
woven mesa
#

why not add visual effect layer instead

native spruce
#

no point in doing more blur if theres already some

woven mesa
#

i mean apple does it

native spruce
#

im not apple

woven mesa
#

the reason apple does it is because the blur effect doubles on overlap

#

creates better control contrast

#

check HIG

finite isle
#

@woven mesa

woven mesa
dim cave
#

(me)

native spruce
#

for now

#

since no idea how they calculate list points yet

frosty obsidian
native spruce
#

I know

#

I had code to change it when you scroll but

#

I forgot I removed it

frosty obsidian
#

guh

native spruce
#

thoughts on position label circles

frosty obsidian
#

i like

native spruce
#

pretty proud of them

frosty obsidian
#

colored

native spruce
#

oo

native spruce
frosty obsidian
#

i was also able to make the image loader i use switch to the lower quality version of the thumbnail if the high res one didn't work

#

automatically Shiggy

#

i love interceptors

native spruce
#

im just sticking with the lower res ones

frosty obsidian
#

that would have been easier but i hated staring at the mess of pixels

native spruce
#

xd

frosty obsidian
#

the Acheron one is just disgusting

native spruce
#

right

#

LOL

#

dear lord

#

they turned off the bitrate on this one

frosty obsidian
#

idk why the highres version just doesn't exist for some of them

native spruce
#

since I couldnt find it in the docs (from me looking anyway)

frosty obsidian
#

guh

native spruce
#

someone suggested me to preload the pages

#

im not doing that

#

💯

pearl stagBOT
# native spruce https://github.com/stadust/pointercrate/blob/fcbddfd9af7a042135bf2b28636d81a7730...

**mod.rs: **Lines 234-262

    pub fn score(&self, progress: i16) -> f64 {
        let position = self.base.position;

        let beaten_score = if 55 < position && position <= 150 {
            let b = 6.273f64;
            56.191f64 * (2f64.powf((54.147f64 - (position as f64 + 3.2f64) as f64) * ((50f64.ln()) / 99f64))) + b
        } else if 35 < position && position <= 55 {
            let g = 1.036f64;
            let h = 25.071f64;
            212.61f64 * (g.powf(1f64 - position as f64)) + h
        } else if 20 < position && position <= 35 {
            let c = 1.0099685f64;
            let d = 31.152f64;
            (250f64 - 83.389f64) * (c.powf(2f64 - position as f64)) - d
        } else if 0 < position && position <= 20 {
            let e = 1.168f64;
            let f = 100.39f64;
            (250f64 - f) * (e.powf(1f64 - position as f64) as f64) + f
        } else {
            0f64
        };

        if progress != 100 {
            (beaten_score * (5f64.powf((progress - self.requirement) as f64 / (100f64 - self.requirement as f64)))) / 10f64
        } else {
            beaten_score
        }
    }
}
frosty obsidian
#

i can't read rust at all lol

native spruce
#

me neither

frosty obsidian
#

doesn't help at all that they use single character variable names

magic shale
#

i can somewhat read rust but what the hell is that

native spruce
#

some amazing code

#

I translated it to swift

#

print(score(progress: 100, position: 2, requirement: 48))
my beloved

frosty obsidian
#

guh

native spruce
#

its so ugly

#

no idea why they made it like this

#
import UIKit
import Foundation

func score(progress: Int16, position: Double, requirement: Int16) -> Double {
    var beatenScore: Double = 0.0
    
    if 55 < position && position <= 150 {
        let b: Double = 6.273
        let exponent = (54.147 - (position + 3.2)) * ((log(50.0)) / 99.0)
        beatenScore = 56.191 * pow(2, exponent)
        beatenScore += b
    } else if 35 < position && position <= 55 {
        let g: Double = 1.036
        let h: Double = 25.071
        beatenScore = 212.61 * pow(g, (1 - position)) + h
    } else if 20 < position && position <= 35 {
        let c: Double = 1.0099685
        let d: Double = 31.152
        beatenScore = (250 - 83.389) * pow(c, (2 - position)) - d
    } else if 0 < position && position <= 20 {
        let e: Double = 1.168
        let f: Double = 100.39
        beatenScore = (250 - f) * pow(e, (1 - position)) + f
    } else {
        beatenScore = 0
    }
    
    if progress != 100 {
        return (beatenScore * pow(5, (Double(progress) - Double(requirement)) / (100 - Double(requirement)))) / 10
    } else {
        return beatenScore
    }
}

print(score(progress: 48, position: 2, requirement: 48))
frosty obsidian
#

so many magic numbers

native spruce
#

yeah

#

😭

pine coyote
#

spaghetti

formal belfry
#

Oki soo uh can someone help me connect oneko into a webpage?

wicked stump
#

yop

#

if you take a look at the demo.js it's pretty much as easy as including the script and making sure the image is in the right place

golden narwhal
#

is that a rock

north harbor
#

i making funny js snippet that "furry"-ifies your messages

grand garnet
#

explain

elder yarrowBOT
#

owo

glacial mirage
#

remember back when /uwuify was a mainline plugin

crisp ridge
#

hi

stone plinth
#

yall id really appreciate a point in the right direction, i just need a plugin that allows me copy in all the profile data from a profile when the user clicks on a button in the profile popout. just wondering how i would use react dev tools to search the source code for a place to inject this as im unfamilar with working with minified code

cerulean plover
#

Have you considered hooking into this context menu with ContextMenuAPI?

stone plinth
#

fantastic idea thank you

#

and to get get the data like bio and colors and img id ?

quick crow
#

Read how other plugins get parameters from context menu patches

north harbor
#

wat uwu?

grand garnet
#

Is it possible to get by automation the urls of every wumpus SVG?

gray heron
#

is it possible to grab the link to someones profile picture dynamically so it updates live (yes i know it creates a new string, but there are website that do it so i wanted a definitive answer)

native spruce
#

@woven mesa how do I change the statusbar style based on background content?

#

not sure how to

#

yet

native spruce
formal belfry
native spruce
#

dear lord does this look like something

native spruce
formal belfry
#

no

#

maybe

#

yes

native spruce
#

bye then

formal belfry
#

you will never know

royal nymph
#

LMAOO sam 😭

#

toxic sam arc 💔

formal belfry
#

hi vencord vendor

#

do you know why vesktop is making noises

native spruce
formal belfry
#

its even told me my address

gray heron
worthy sun
#

wym like ven does

#

if a plugin does what ur looking for, check its source :P

gray heron
#

in plugin authors

#

your pfp shows and updates

#

when you put your id in

gray heron
#

i'm talking about in general

worthy sun
#

yea look at how vencord does it

#

and u will know

gray heron
#

like userid->profile picture and updating

worthy sun
#

vns

#

oh right

#

cant do that here ig

frosty obsidian
#

obviously needs a lot of improvement but they weren't doing it seriously so nbd

native spruce
#

I took a lot of ideas from there

#

Genuinely pretty good imo

#

For a start at least

winged mantle
#

you should not be let near a javascript ide

north harbor
#

btw does anyone know what the Vencord.Webpack functions all do

#

am very confused

#

what its for

#

or how it works

#

or how to use it

glacial mirage
#

updated to use template tags (they don't need brackets for calling methods with strings, saving two characters)

globalThis['console']['log']['call']`${"Hello World"}`;
wicked stump
#

typescript jumpscare

export type NamedOptionMap = {
  [name: string]: Omit<ApplicationCommandOptionsWithValue, "name">;
};

type InteractionOptionsWithResolvedValue =
  | InteractionOptionsString
  | InteractionOptionsNumber
  | InteractionOptionsInteger
  | InteractionOptionsBoolean
  | { type: ApplicationCommandOptionTypes.ATTACHMENT; value: Attachment }
  | { type: ApplicationCommandOptionTypes.USER; value: User }
  | { type: ApplicationCommandOptionTypes.MENTIONABLE; value: User | Role }
  | { type: ApplicationCommandOptionTypes.CHANNEL; value: Channel }
  | { type: ApplicationCommandOptionTypes.ROLE; value: Role };

type OptionalFalse = false | undefined;
type RequiredBy<T, K> = T extends OptionalFalse ? undefined | K : K;
export type MappedCommandOptions<T extends NamedOptionMap> = {
  [K in keyof T as K]: RequiredBy<
    T[K]["required"],
    (InteractionOptionsWithResolvedValue & {
      type: T[K]["type"];
    })["value"]
  >;
};
#

writing complex types is sometimes a pain especially when you don't realize your tsconfig is incorrect but the end result is satisfying :]

grand garnet
#

when the type is scripted!

quick crow
#

Minecraft enchanging table

wicked stump
# quick crow What the FUCK is that

it takes an object typed like this

{
  test: { type: ApplicationCommandOptionTypes.STRING }
}
```and turns it into this type
```ts
{
  test: string
}
``` ![blobcatcozystars](https://cdn.discordapp.com/emojis/1128157563846922270.webp?size=128 "blobcatcozystars")
#

I have angered the typescript gods

wild seal
quick crow
#

The /j

fleet cedar
#

The nice thing about the Light Theme Law is that it's self-punishing

quick crow
#

Yep

#

It is a graceful and everlasting cycle

#

Right above god in the hierarchy of power you have punishment of light theme users

cyan wigeon
#

Hi

formal belfry
#

Hey, how you doing today bro🫡

wicked stump
#

some day discord users will finally outgrow light theme jokes and it'll be nice

fleet cedar
#

Never

royal nymph
#

i think that means that your ApplicationCommandOptionTypes.BOOLEAN are somehow not compatible

wicked stump
#

i spent like two hours trying the figure it out last night and woke up this morning with an idea for the fix

royal nymph
#

if u send full code i can see

#

is this for a bot lib or smth

#

it kinda reminds me of vencord's settings types

wicked stump
#

I haven't gotten on my pc to check yet but I think somewhere in the chain I accidentally un-narrowed the type from ApplicationCommand....BOOLEAN to just the ApplicationCommand... enum

#

so just missing a generic somewhere

royal nymph
#

like converting "hi" to string

wicked stump
#

it does loosely follow how some of vencord's stuff works though yeah

royal nymph
#

makes me cry

wicked stump
#

horror

royal nymph
#

i forgot what i needed this for

#

right i remember

#
// getOption(args, name, defaultValue)
getOption(args, "foo", "hi")  // string
getOption(args, "bar", 42) // number
#

basically you need to convert the last argument to a more generic type, cause you don't want the return type to be "hi" lmao

wicked stump
#

hm

#

i think I've seen people solve the same issue by writing a billion overloads but neither of those options are very nice

royal nymph
#

yeah you either need overloads for each type, or a DownCast type like that

wicked stump
#

typescript having a builtin BaseType<T> or smth would be neat

royal nymph
#

holy fuck BaseType is so much better than my name DownCast

wicked stump
pearl stagBOT
royal nymph
#

funny staircase

#

i wish ts type system wasn't ternary hell

glacial mirage
#

society if ts had a type-level switch case

wicked stump
#

it's so satisfying but also so frustrating when you think of a solution to a problem while in bed

#

like why couldn't I have figured that out while I was actually looking at the code???

royal nymph
#

i have that sometimes

try to fix issue for hours with no success
sleep over it
next day solve issue in 20 seconds

magic shale
serene elk
#

it takes the type definition of the args array and in the handler function it makes an object with the props

#

supports optional args and nested too

#

if you want me to send to you I can

wicked stump
#

that would be awesome if you wanted to share that

serene elk
#

(done using oceanic btw)

wicked stump
#

that's pretty much what I've been working on doing

#

but with less experience with advanced types so I tried to avoid arrays and stuff too much (but now I realize that it would have been easier with infer)

frosty obsidian
#

@native spruce improved the color palette generation

#

now any image that isn't black and white will work

#

before it didn't for some reason

royal nymph
#
public args = {
    emoji: ArgTypes.GuildEmoji,
    name: { type: ArgTypes.String, description: "The new name" }
  } as const;

  public async callback(ctx: CommandContext, { emoji, name }: IParsedArgs<Command>) {
    emoji; // type: GuildEmoji
    name; // type: string;
  }
#
public args = {
  scope: {
    type: ArgTypes.String,
    choices: ["server", "user"],
    description: "prefix scope"
  },
  action: {
    type: ArgTypes.String,
    choices: ["add", "remove", "set"]
  },
  prefix: { type: ArgTypes.String, default: process.env.DEFAULT_PREFIX, description: "new prefix" }
} as const;

public async callback(ctx: CommandContext, { scope, action, prefix }: IParsedArgs<Command>) {
  scope; // "server" | "user"
  action; // i think you get the idea
}
serene elk
#

it's super cool doing stuff like that

royal nymph
serene elk
#

very hard but when you can do it 🔥

pearl stagBOT
# royal nymph horror https://github.com/Vendicated/VendyMachine/blob/main/src/commands/Command...

**CommandArguments.ts: **Lines 227-245

type IPossiblyOptionalArg<Arg extends Argument, T = ArgLookup[Arg["type"]]> = Arg["optional"] extends true ? T | undefined : T;

// This hurts my brain but I somehow made it work
type IParsedArg<Arg> = Arg extends Argument
  ? Arg["choices"] extends ReadonlyArray<infer T>
    ? IPossiblyOptionalArg<Arg, T>
    : IPossiblyOptionalArg<Arg>
  : /* --------------------------------- */
  Arg extends ArgTypes
  ? ArgLookup[Arg]
  : never;

/* Converts Command args object to interface with strongly typed parsed arguments */
export type IParsedArgs<Command extends IBaseCommand, Args = Command["args"], Flags = Command["flags"]> = {
  -readonly [prop in keyof Args]: IParsedArg<Args[prop]>;
} &
  {
    [prop in keyof Flags]: boolean;
  };
serene elk
#

I have to say crazy typescript is SO unreadable

pearl stagBOT
# royal nymph cursed type map https://github.com/Vendicated/VendyMachine/blob/main/src/command...

**CommandArguments.ts: **Lines 205-225

interface ArgLookup {
  text: string;
  boolean: boolean;
  number: number;
  float: number;
  channel: Channel;
  message: IMessage;
  user: User;
  role: Role;
  url: string;
  "server emote": GuildEmoji;
  "server emotes": GuildEmoji[];
  "custom emote": ParsedEmote;
  "custom emotes": ParsedEmote[];
  "default emoji": ParsedEmoji;
  "default emojis": ParsedEmoji[];
  "custom emote or default emoji": ParsedEmoji | ParsedEmote;
  "custom emotes or default emojis": Array<ParsedEmoji | ParsedEmote>;
  _empty: undefined;
  _never: never;
}
serene elk
#

like you have to stare at the code for so long to understand what's happening

#

it's something you do once

#

and never touch again

royal nymph
#

true..

tight fern
cerulean plover
tight fern
#

i hate typescript

wicked stump
#

after looking at @serene elk's code I was able to make my types a lot better and things work how I wanted them to blobcatcozystars

#

this is what I have now (it doesn't handle subcommands at all but I will add that later + autocomplete)

function defineCommand<T extends ApplicationCommandOptionsWithValue[]>(
  command: ChatCommandDefinition<T>,
) {
  // logger.trace(`Command "${command.name}" defined.`);
  return command;
}

type InteractionOptionsWithResolvedValue =
  | InteractionOptionsString
  | InteractionOptionsNumber
  | InteractionOptionsInteger
  | InteractionOptionsBoolean
  | { type: ApplicationCommandOptionTypes.ATTACHMENT; value: Attachment }
  | { type: ApplicationCommandOptionTypes.USER; value: User }
  | { type: ApplicationCommandOptionTypes.MENTIONABLE; value: User | Role }
  | { type: ApplicationCommandOptionTypes.CHANNEL; value: Channel }
  | { type: ApplicationCommandOptionTypes.ROLE; value: Role };

type RequiredBy<T, K> = T extends true ? K : K | undefined;

type InteractionOptionsWithResolvedValueType<T> =
  InteractionOptionsWithResolvedValue & { type: T };

export type ArrayMappedOptions<
  T extends
    ApplicationCommandOptionsWithValue[] = ApplicationCommandOptionsWithValue[],
> = {
  [K in keyof T & `${number}` as T[K]["name"]]: RequiredBy<
    T[K]["required"],
    InteractionOptionsWithResolvedValueType<T[K]["type"]>["value"]
  >;
};

type ChatCommandDefinition<
  T extends
    ApplicationCommandOptionsWithValue[] = ApplicationCommandOptionsWithValue[],
> = CreateApplicationCommandOptions & {
  options: T;
  handler: (
    this: ChatCommandDefinition<T>,
    interaction: CommandInteraction,
    options: ArrayMappedOptions<T>,
  ) => void;
};
#

and then you can go (non-important properties removed for brevity)

const result = defineCommand({
  options: [
    {
      name: "test",
      type: ApplicationCommandOptionTypes.STRING,
    },
    {
      name: "another",
      type: ApplicationCommandOptionTypes.BOOLEAN,
      required: true,
    },
  ] as const,
  handler(options) {
    options.test; // Possibly undefined
    options.another; // always boolean
  },
});
tight fern
#

is that rust

wicked stump
#

it is your beloved typescript blobcatcozystars

gray heron
#

ShiggyCord

What is ShiggyCord? :0

ShiggyCord is the ultimate tool to shiggyify your Discord experience with the one and only adorable Shiggy! Yippee!!! :3

What Can ShiggyCord Do? :D

  • Shiggy-fy Your Discord: Inject some cuteness into your Discord chats by spawning adorable Shiggy gifs all over your screen! :0
  • Customizable Shiggys: Use Ctrl+Shift+J to spawn a single Shiggy, or Ctrl+Shift+K to summon five at once! :3
  • Shiggy-bonuses: Want to clear the screen of those bouncing Shiggys? No problem! Just press Shift+Esc to make them vanish! :D

How to Use ShiggyCord? :3

  1. Download and run the shiggy.exe file.
  2. Open Discord and focus on the app. :0
  3. Use the hotkeys to summon Shiggys and spread the cuteness! Yippee!!! :D

Important Note :0

Keep in mind that ShiggyCord is a fun tool meant for entertainment purposes only. Use it responsibly and remember to keep Discord fun and respectful! :3

Credits :D

ShiggyCord is brought to you by the one and only Shiggy lovers' community. Special thanks to Viggy, our beloved inspiration! (Oxygen not included, Viggy died) :(
--remember ctrl+alt+f to exit the program, as it doesnt show in task manager, tray, or taskbar.

shell crag
#

oh ok cool

#

i recall someone made shiggycord or onekocord that added shiggys in different locations using css

gray heron
#

:3

#

mine is a no install, just run an exe and it's done, it perfectly resizes and doesnt interfere with click either

#

your clicks pass through shiggy

#

:p

#

wanna try it?

balmy lintel
#

downloading an exe isnt really no-install lol

shell crag
#

i'd rather have a plugin than an external program

#

and no i dont trust you enough to run your exe

gray heron
gray heron
gray heron
#

they are lol

balmy lintel
#

how u gonna use it without installing it

#

nvm im stpid

#

dont mind me

#

do you have a github repo

gray heron
#

"The file you downloaded in most cases is a program that performs the install, not the actual program itself"

balmy lintel
#

for your project

gray heron
#

it's just a program no install

gray heron
#

i forgor

winged mantle
#

thanks for the RequiredBy trick (i haven't worked that out)

gray heron
#

i have to download github desktop

#

today is a sad day

winged mantle
#

use git

#

github desktop is for normal people

#

don't be normal

gray heron
#

i dunno how to upload with that lol, my damn file is 30 megabytes but the limit is 25 in web

#

sob

winged mantle
#

i think you might be using github wrong

gray heron
#

probably

#

the 28750238752803750th coding application on my shitty pc

#

hooray

balmy lintel
#

me when I accidentally commit node_modules

winged mantle
gray heron
#

i already did it on github desktop

#

actually pretty easy :0

#

i'ma do that more often

balmy lintel
#

me, my trust issues and a random .exe file husk

gray heron
#

LMAO

#

i saw it anyways

#

:p

#

it's pretty cool tho right?

balmy lintel
#

are they supposed to be animated

gray heron
#

i'm thinking of adding functionality for a menu for custom pet

balmy lintel
#

because I saw like 10 gif frames in your files

gray heron
royal nymph
balmy lintel
#

im not a total idiot

gray heron
#

it's just python man

#

and 30 mb at that lol

balmy lintel
#

you can do a lot of harm with 30mb

gray heron
#

although i should put a src folder so people can see the source code

#

one day when i'm not too lazy

royal nymph
#

python exe 😭

cerulean plover
cerulean plover
balmy lintel
#

that thing used 15% of my cpu

royal nymph
#

funny pygame

gray heron
#

it's just to make it look cooler

gray heron
cerulean plover
#

nop

gray heron
#

IT DOESNT EVEN USE 1% FOR ME

balmy lintel
gray heron
#

HUH???

balmy lintel
#

i clicked the button probably a bit too much

gray heron
#

bruh

cerulean plover
gray heron
#

real

#

yeah it's detected as a virus by defender cuz like the description on git says, to exit the program the ONLY CHOICE is to run ctrl+alt+f. you will not find shiggycord in tray, TM, or taskbar.

#

i dont remember how i did that

#

it was 6 am

cerulean plover
#

uses skidding tool
why antivirus think malware?!!?!?

gray heron
#

whar

#

huh?

gray heron
#

@balmy lintel just fixed the animations, i was a bit busy lol so it took a bit

frosty obsidian
#

@deep mulch you love

/**
 * Uses [Palette] to retrieve a seed color from any image
 */
class PaletteGeneratorInterceptor(
    private val paletteManager: PaletteManager
): Interceptor {

    private val logger = AppLogger("PaletteGenerator")

    @OptIn(ExperimentalCoilApi::class)
    override suspend fun intercept(chain: Interceptor.Chain): ImageResult {
        val result = chain.proceed()

        result.image?.let {
            // Only generate if image is a bitmap and hasn't been processed before
            if (it is BitmapImage && !paletteManager.hasSeedColor(result.request.data.toString())) {
                Palette.Builder(it.bitmap.copy(Bitmap.Config.ARGB_8888, false)) // Force bitmap to use different Config due to Config.HARDWARE not being supported
                    .addTarget(Target.DARK_VIBRANT)
                    .generate { palette ->
                        palette?.getSwatchForTarget(Target.DARK_VIBRANT).let { swatch ->
                            if (swatch == null) logger.warn("Couldn't generate color for: ${result.request.url}")
                            else paletteManager.setSeedColor(result.request.url, Color(swatch.rgb))
                        }
                    }
            }
        }

        return result
    }

}
deep mulch
#

did you know that theres a library for that already

frosty obsidian
#

it sucks

deep mulch
#

kmpallete

frosty obsidian
#

it would eat all the memory

deep mulch
#

good

#

you will fix

frosty obsidian
#

i use materialkolor to make a colorscheme from the color that palette generates

deep mulch
#

@frosty obsidian

#

c++ so cursed

frosty obsidian
#

i am the only programmer that hates ligatures

deep mulch
#

wrong

#

i didnt notice i had them on

#

trying to see if i can get the nokee plugin to work in the kmp project

#

would make it easier

frosty obsidian
#

i have no idea what that is

deep mulch
#

c++ compilation

#

having to use C++ so its as fast as possible

frosty obsidian
#

guh

deep mulch
#

rust would be funny

#

ive been wondering

#

if a gradle plugin could be made

#

that could automatically generate jni bindings

#

like

#

kotlin native can use cinterop easily

#

go is also a nice candidate but lacks any real gradle integration

#

would need some work making gradle call its compiler

royal nymph
#

there's rust jni

#

use

deep mulch
#

never

#

i dont see any good rust gradle plugin

frosty obsidian
#

when will we have venscript jni

deep mulch
#

soon

lilac raft
#

how can I inject vencord into an iframe

#

working on a proxy website and can't get it to inject before discord loads

royal nymph
#

what r u trying to do

#

like why proxy website why iframe

gray heron
# royal nymph like why proxy website why iframe

I think they're talking about proxy websites as in the one u use to bypass school restrictions (something I produce myself! :D), since they don't have inspect, most extensions, and no access to GitHub and a lot of other stuff like that and it's ChromeOS, they can't install without apk and dev mode, which ven doesn't have. The person is trying to create an app in-website which injects vencord and then loads discord fully in web within an iframe (basically an embed :p)

(Just saying you probably knew a lot of that but I just wanted to explain anyways)

#

I like talking

lilac raft
#

iframe as part of the ui

lilac raft
gray heron
#

Do you also hate him

#

💀

cerulean plover
#

are these wild TN members

lilac raft
#

doesn't matter

cerulean plover
lilac raft
#

tn is cursed anyways

cerulean plover
#

i have been warned about you lot

#

well

#

you are self aware

lilac raft
cerulean plover
lilac raft
#

I asked about the same question before

#

but not well

cerulean plover
#

??

ionic lake
#

I'm just guessing

ionic lake
#

I'm in desperate need for an well enough oceanic.js command handler

wicked stump
#

oceanic

#

my stuff is very broken though and not in a good state at all

#

hopefully it'll get there eventually but we'll see

ionic lake
#

the one I'm using is still on the lts v13 version of discordjs

#

and i want to use something else than discordjs

wicked stump
#

I've used slash-create for interactions on oceanic before

#

I'm not a fan of how much functionality it sorta sweeps under the rug and does for you though

#

other than that it's alright ig

wispy palm
#

/run

#include <stdlib.h>
int main()
{
  for (;;) {
    malloc(1024 * 10);
  }
}```
#

xd idk what would happen if i did it

#

/run

console.log(error)```
rugged berryBOT
#

@wispy palm I only received js(18.15.0) error output

/piston/jobs/b7edea74-3cb4-482b-8cc6-4d0ad6c4efbd/file0.code:1
console.log(error)
            ^

ReferenceError: error is not defined
    at Object.<anonymous> (/piston/jobs/b7edea74-3cb4-482b-8cc6-4d0ad6c4efbd/file0.code:1:13)
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:23:47

Node.js v18.15.0
ionic lake
#

/run

throw "meow"
rugged berryBOT
#

@ionic lake I only received js(18.15.0) error output


/piston/jobs/feb47beb-c453-48cc-8804-a24e94e9e7d4/file0.code:1
throw "meow"
^
meow
(Use `​node --trace-uncaught ...`​ to show where the exception was thrown)

Node.js v18.15.0
royal nymph
#

i use something super simple

pearl stagBOT
royal nymph
#

well it's only text commands not slash commands

#

fuck slash commands tbh snailcat

royal nymph
#

yes

#

not bloated asf, not java ported to javascript

#

discordjs has gone to shit it's insane

#

have u checked some of the code samples

#

they use builder patterns for everything

#

instead of

const conmand = {
   name: "balls",
   description: "cool beans"
}
``` they use like ```js
const command = {
    data: new SlashCommandBuilder().setName("balls").setDescription("coop beans")
}
#

it's awful

#
module.exports = {
    // data: new SlashCommandBuilder()...
    async execute(interaction) {
        const target = interaction.options.getUser('target');
        const reason = interaction.options.getString('reason') ?? 'No reason provided';

        const confirm = new ButtonBuilder()
            .setCustomId('confirm')
            .setLabel('Confirm Ban')
            .setStyle(ButtonStyle.Danger);

        const cancel = new ButtonBuilder()
            .setCustomId('cancel')
            .setLabel('Cancel')
            .setStyle(ButtonStyle.Secondary);

        const row = new ActionRowBuilder()
            .addComponents(cancel, confirm);

        await interaction.reply({
            content: `Are you sure you want to ban ${target} for reason: ${reason}?`,
            components: [row],
        });
    },
};
#

who wants to write their code like this instead of just using plain arrays / objects 😭

winged mantle
royal nymph
#

sure but why even do that

#

it's so useless 😭

winged mantle
#

since you can do
new ButtonBuilder({
custom_id: "cancel",
label: "Cancel"
})
idrc

#

simply make a vencord plugin for every bot

quick crow
#

I've used discord js a few times

#

It's not THAT bad

winged mantle
#

I personally would prefer using it due to maturity

royal nymph
#

oceanic is way better but it has occasional bugs

dusk otter
#

yo, where can i get support for vencord modding?

#

oh nvm just found it lol

winged mantle
#

😔

royal nymph
#

it is stable

#

@elder yarrow runs on it

winged mantle
#

💥

royal nymph
#

@undone sonnet runs on it

winged mantle
#

but how bad are the bugs?

royal nymph
#

@pearl stag also seems to use oceanic

#

basically all the bots in this server use oceanic

royal nymph
#

like there was a bug where threads created by the bot wouldn't properly be added to the cache

winged mantle
pearl stagBOT
winged mantle
#

oh, command framework for djs

#

:ducc>

#

DUCC

pearl stagBOT
winged mantle
#

GITDAB

#

this seems to be more up to date

royal nymph
#

oh

winged mantle
#

i wonder why you'd switch away

royal nymph
#

anyway oceanic is pretty stable

#

switch from, to?

winged mantle
#

the gitdab branch is using discord.js and is more up to date

royal nymph
#

no?

#

dysnomia is eris fork

winged mantle
#

confusion

#

ohh

royal nymph
#

wrong thing

winged mantle
#

there are too dysnomias

#

two in fact

royal nymph
#

oceanic is very similar api to eris

#

i think it's meant to be an eris replacement

#

also nuckyz is oceanic maintainer so you can just ping nuckyz with all ur bullshit trolley

winged mantle
#

cool i will switch now

winged mantle
#

funny

#

where vendymachine invite

nimble bone
#

figure out app id

#

when done, use hf!appinfo

#

and you have invite

winged mantle
#

@royal nymph can you add vendymachine here

nimble bone
#

is it the emoji bot

winged mantle
nimble bone
#

and why is it called vendymachine

#

and not emojis machine

winged mantle
#

emoji vendor

royal nymph
#

most of its features are obsolete if u have a client mod venniebwaah

nimble bone
#

you will still add vendymachine trolley

winged mantle
#

i guess hiddenphox has a ton of useful stuff

nimble bone
#

yeah

#

wish it was public tbh

winged mantle
#

😶

#

i'll just say... it's only semi-private

ionic lake
#

I'm currently maintaining a personal fork of alyxia's fork of onion-lasers, however the type dance and logic required to compile onion lasers commands to discord api understandable ones has been insane

winged mantle
#

@woven jolt why did you move to eris fork from oceanic

#

curious

ionic lake
#

she had a few problems with oceanic's maintainer

winged mantle
#

a

royal nymph
#

the furry or nuckyz

winged mantle
#

he has a name lol

ionic lake
#

"the furry" 💀

winged mantle
#

just call me the brit sip

winged mantle
#

slightly rude?