#development

1 messages · Page 155 of 1

wicked pivot
#

I don't need to change anything

deft wolf
#

Most likely yes, it will eventually turn out when this sharding starts to work

lament rock
#

So many JS projects

earnest phoenix
#

Fr

lament rock
#

Do Discord modals only support text input?

deft wolf
#

Yea

lament rock
#

Lame

deft wolf
#

Maybe someday they'll add other options, but for now, just text

#

I would like to see some dropdown menu like select menu or buttons

lament rock
#

Or True/False

deft wolf
#

True

warm surge
#

I would give you mine but I can’t access my host

wicked pivot
#

I don't have this problem it is hosted in my living room Daltons_chien

warm surge
wicked pivot
#

outch

#

And I imagine that you only have the dashboard to connect to this kind of "host"

dense nimbus
#

How can i add a bot

#

Someone tell

#

pls

wicked pivot
#

Yours ? @dense nimbus

dense nimbus
#

no just a normal bot

#

to my server

#

hydra song request

#

or something

wicked pivot
#

Most bots clicking on them you have an "add bot" line

dense nimbus
#

For music

#

I don't find that option anywhere pls guide

#

im new to dc

wicked pivot
#

for example

dense nimbus
#

oh okYu

#

Where to find

#

that

#

got itttt

wicked pivot
#

click in bot ^^

dense nimbus
#

thanksss

wicked pivot
#

no problem

dense nimbus
#

Yessu

surreal sage
#

I need to split a string every time whenever it matches the regex /[^0-9a-z ]/gi

E.g.:
! . $ % a b %1
becomes ["! ",". ","$ ","% a b ","%1"]

How can I do this? (JavaScript)

surreal sage
#

that isn't it

tulip ledge
#

then your regex is wrong

surreal sage
#

Could you help me on that?

tulip ledge
#

well, splitting a string removes the character you're splitting on

surreal sage
#

mhm

tulip ledge
#

so if you split on ! it removes the !

#

and creates an array from everything before and everything after as the indeces

#

let me try smth

#

I'm not the best at regex

#

try this regex: /(?=[^0-9a-z ])/gi

#

@surreal sage

surreal sage
#

I'm here

#

Yess thank you

near grotto
#

This code is to send attachment to a particular discord channel. This code is working fine. But when I take more than 30 seconds to input the url, the program crashes

import server_id from config
import asyncio
import token from config
@bot.event
async def on_ready() :
    print("Connected !")
    channel_id = str(input("Enter the channel id: "))
    server_id
    while True :
        server_id
        url = str(input("Enter the url of the file: "))
        server = await bot.fetch_guild(server_id)
        channel = await server.fetch_channel(channel_id)
        async with aiohttp.ClientSession() as session: 
            async with session.get(url) as resp: 
                print("Reading file...")
                img = await resp.read() 
                with io.BytesIO(img) as file:
                    print("Sending file...") 
                    await channel.send(file=discord.File(file, get_filename(url)))
                    print("File Sent !")
        print()
        time.sleep(0.5)```

**The error is :**
```[2023-08-06 10:39:08] [WARNING ] discord.gateway: Shard ID None heartbeat blocked for more than 70 seconds.
Loop thread traceback (most recent call last):```
wheat mesa
#

because you're in a while true loop within your main thread

#

you're blocking everything else from working

#

never use a while true like this

near grotto
#

@wheat mesaAny solution please 🥺 ?

frosty gale
#

timers should yield processing time and not block your entire program

#

unless asyncio has some kind of yield function/wrapper which lets you use a while loop without blocking

#

wait does python even have an interval/timer function 💀

#

makes sense tbf since its single threaded by nature

wheat mesa
#

What I don't understand is why?

#

Why not make this a command?

#

Why are you waiting for console input?

near grotto
near grotto
wheat mesa
#

You should make this a command and restrict it to yourself, having blocking console input AND a while true loop in a discord bot is less than ideal to say the least

frosty gale
#

I didn't see the input

#

wonder how those skull oscillations around an axis are so perfect

near grotto
#

Is it illegal if I send the attachment using python requests?

deft wolf
#

Probably not, unless it's a self bot

near grotto
frosty gale
#

I'd assume you'd make a new thread and do a while true sleep

#

but idk if the python library is thread friendly

#

unless asyncio has its own stuff for that

wheat mesa
#

I don't know, I don't use python

#

I just know that this is terrible design

#

I assume there's some async input you can use without blocking

#

Where you can receive an event every time you get input

#

Something like that

frosty gale
#

I think it let's you add a function to the event loop

#

essentially turning it into a js process.nextTick or something

#

though when the event loop is free as opposed to the next tick

#

pythons weird

#

ironically it's single threaded nature by default makes it more confusing than simple

rustic nova
#

I hate doing async anything in python

#

I just end up doing threads

frank pollen
#

I have converted my code from discord.js v12 to v14. I am very new to v14 and I'm encountering some errors. Is there anyone who can help me?

wheat mesa
#

You need to specify intents in your client

#
new Discord.Client({
  intents: [ Some Intent Flags Here ]
});
peak drum
frank pollen
#

My main file

wheat mesa
#

You definitely do NOT need all those intents

#

Unless you somehow have a genuine use for every single one

deft wolf
#

You can't tbh

#

Like, why you need DirectMessageTyping

frank pollen
#

Which one should I add as intent then?

deft wolf
#

The ones your bot needs. If your bot doesn't receive private messages then the intents associated with them are useless

#

Same with everything else. If your bot doesn't need to see/handle webhooks then it doesn't need this intent

frank pollen
#

I added it because my bot is a generic bot, but it would be nice if you could point out the ones that didn't work.

#

Only direct messages?

#

I get the same error when I delete the intents of the direct message. I left my Discord.js version down.

peak drum
#

What does your bot do? You should only add the intents it needs

frank pollen
#

The bot serves categories such as moderation, server setting, giveaway, entertainment and more.

#

And my bot generally sends moderation actions to the server owner's dm.

jaunty basalt
deft wolf
#

This is not a good idea. Your bot may be blocked by rate limits related to creating new dms

frank pollen
#

Yes, the rate limit had been eaten.

frank pollen
deft wolf
#

Depends on what your bot is doing

frank pollen
#

Commands like caps-lock protection, profanity protection, antiraid, ban, kick, ad protection, role protection, channel protection, auto-role are available in moderation.

#

I have decided to convert it to V13, thanks for your interest.

peak drum
#

Yeah do that and then convert it to v14 xD

eternal osprey
#

does anyone have some ideas how i can improvide this page?

peak drum
#

Gekke Nederlander

#

Maybe you know do everything Dutch or everything English not both xD

eternal osprey
#

hahahhaha ja ik heb een paar woorden door elkaar gehusseld

peak drum
eternal osprey
#

maar qua design ?

peak drum
#

Is mooi zo thumbs_up_parrot

#

Misschien een dark theme toevoegen KEKBlem

deft wolf
#

Yea, dark theme would be great

rustic nova
#

Keep in mind to stay english

eternal osprey
#

yeah might add a dark theme indeed

#

me personally, i don't like this cart view

#

idk it looks so.. strange or something

#

but can't wrap my head around what to change

peak drum
wicked pivot
bronze owl
#

@bronze owl

#

Hello friends, there is an admin

deft wolf
#

Hm?

bronze owl
#

Hello

tulip ledge
#

Also you shouldn’t make a buy or submit button dark red

#

It bad ux

#

Should be an inviting color

#

Like blue, green, etc

#

Also your buttons are rounded but the image isn’t which breaks up the contrast

#

There are a few more small things that are bad ui/ux but I guess the rest is fine

tulip ledge
lament rock
#

If the user wants a compulsive experience then sure

#

Not so much bad ux rather than making people subconsciously think there is little in the way of making a purchase. If someone really wants something then mouse travel time/physically pressing towards the bottom of the viewport isn't an issue

eternal osprey
#

I see, thanks for all the tips!

tulip ledge
rustic nova
#

haha ufw go brr

#

now I fucked up and locked myself out

#

fun

#

time for rescue boot

deft wolf
#

I did that once too, luckily the day before I made a backup of everything from the VPS

rustic nova
#

yeah its not about the data idc about it

#

but its a dedi

deft wolf
#

F

rustic nova
#

so I have to boot into rescue, update ufw, and yeahhh

#

a restart disables ufw?

#

or just by default

#

time to fuck everything up

#

copy paste my ufw folder into the dedi

#

yolo

#

surprisingly worked

frosty gale
#

(idk what a ufw is im just trying to make conversation)

solemn latch
#

firewall stuff

frosty gale
#

ohh right

rustic nova
#

one thing I also extremely like is how mailcow's backup stuff works

#

funs

spark flint
#

gamerss

#

i need next.js help

#

ok basically - i am making an API route that returns a PDF file to only whitelisted users. however, it keeps trying to download the PDF file rather than render it

#

is there a way to fix this? i've disabled the responseLimit config option but its still happening

pale vessel
#

make sure you set the proper content type and content disposition to inline instead of attachment

spark flint
#

ooo yeah the inline part worked

#

tyty

eternal osprey
#

Currently transforming my desktop site to a mobile site without any fucking css library 😭😭

#

There’s a lot of space. Would anyone know a good suggestion ?

#

They just don’t have a lot of products to fill the space

#

When I click on add to cart I have like a little popup. Maybe have that at the bottom instead of top?

deft wolf
#

Put ads in there, lots of ads

eternal osprey
#

😭

deft wolf
#

Couldn't you make one instead of two columns?

cinder patio
#

maybe only one row and one column of products

#

make them bigger

eternal osprey
#

One product@per@tow basically

#

Wow that was good grammar

deft wolf
#

It would probably be easier to read when it comes to descriptions

eternal osprey
#

Indeed. Thanks for all the help guys, makes my web development career a lot easier

sharp saddle
#

Need some help, i'm trying to create an Player Notification on my app, but it gets (123, 44): Type mismatch: inferred type is PlayerNotificationManager but Notification! was expected.

Line 123:

val notification = createNotification(this)

startForeground(NOTIFICATION_ID, notification)```
#

createNotification function:

private fun createNotification(ctx: Context): PlayerNotificationManager {
// ...
   val playerNotificationManager = PlayerNotificationManager.Builder(
        ctx,
        NOTIFICATION_ID,
        "playbackChannel"
    )
// ...
   return playerNotificationManager
}
#

even if i try to change PlayerNotificationManager to Notification i'll get something like:
Type mismatch: inferred type is PlayerNotificationManager but Notification was expected

#

I tried searching for something to fix but all the example code I found is deprecated

eternal osprey
#

not sure what language this is, and unsure whether i can help you a lot but it looks like java so lets give it a try. what does the builder return?

#

the PlayerNotificationManager.Builder.

wheat mesa
#

it's kotlin

eternal osprey
#

what it seems like is that you are returning a PlayerNotificationManager and not a notification.

wheat mesa
#

I'm assuming that startForeground(_, SomeType) is expecting SomeType to be Notification

quartz kindle
#

why is the variable called notification and the function called createNotification, if the function and the variable return and hold a playerNotificationManager?

eternal osprey
#

If PlayerNotificationManager extends or implements notification you can try to cast manually but not sure whether that works like that in kotlin.

wheat mesa
sharp saddle
earnest phoenix
#

Question.
I have a lock channel command but it requires Administrator permission for some reasons, is that normal?

#

With any other permission, it just throws 403 forbidden

#

I've tried to put the bot's role at the top but no good

#

i guess it's because of the way i made the command

quartz kindle
earnest phoenix
#

im currently trying another method

#

yeah it worked rn, im rlly an idiot it was trying to overwrite @ everyone permissions

eternal osprey
#

Hey guys my mobile view looks kind boring imo. Would anyone have suggestions to add

#

Or would y’all think this is alright?

#

Idk i kept in mind that minimalistic is what I wanted to achieve

deft wolf
#

Personally, I would give some background to those "menu buttons" at the top

#

It looks weird when the logo has a background and the buttons don't

digital swan
peak drum
#

it is xD

eternal osprey
#

indeed good one

#

will remove the background

quartz kindle
#

you can add a white shadow on the top of the page to improve the contrast for the menus

desert verge
#

@peak drum Finally, I'm planning to make a documentation of my commands on my webserver

peak drum
#

Alright well goodluck with that xD

eternal osprey
#

does anyone know how to make a site fit in every browser?

#

for some reason some positions are different in safari than google chrome

marsh lark
eternal osprey
#

no not really

#

safari has a different styling than google

#

so what happens is that it ruins my fucking layout

#

as it reserves like 20% for the safari dock at the bottomn (or top) of the screen

lyric mountain
eternal osprey
#

chrome and safari is enough tbf

lyric mountain
#

your best bet is to stick to mdn docs and pay attention to the compatibility list for every thing you use

#

the 3 main browsers are chrome mozilla and safari

eternal osprey
#

but i changed everything to use vh and vw

#

still fucks up some container designs

#

ig i will have to learn bootstrap to make this easier

desert verge
#

@eternal osprey

#

3:17

#

use dvh on mobile

#

to not count adress bar

#

or svh

#

or lvh

sharp geyser
#

might just wanna give up on that endevour trollface

#

Safari is the problem child of web browsers

earnest phoenix
#

Apple try to implement web standards properly challenge (impossible)

sharp geyser
#

ong

desert verge
#

I'm loving flex-box

solemn latch
#

yeah ^-^

desert verge
#

Now I have to remember

sharp geyser
#

but hey it is actually fun

desert verge
#

Yup

sharp geyser
#

I learned something new about css

#

or re-rembered idk been ages since I touched it

#

but order is a valid property

desert verge
#

Yup

sharp geyser
#

took me 10m to figure this out

quartz kindle
#

@civic scroll css jail help

#

i have an angular component with some html stuff and some css stuff, but for some reason some of the css is not being applied

#

its not even being compiled, like there is no mention of it anywhere in the inspector

#

im using a PO-UI, an UI framework for angular

#

for example i have this in my component html

<div class="po-wrapper">
  <po-toolbar p-title="{{titulo}}"></po-toolbar>

  <po-menu [p-menus]="menus"></po-menu>

  <po-page-default p-title="AppName">
    <p> AppName page </p>
    <po-button p-label="meuLabel" (p-click)="onClick()"></po-button>
  </po-page-default>

</div>
#

and this in my component css

.po-button-label {
    color: black;
}

po-button {
    background-color: red;
}

the po-button-label element exists inside po-button, its part of the PO-UI framework, but for some reason i cannot target it with this css

#

i can target po-button, but i cant read the label inside the button, tried all types of selectors

#

is there some kind of component isolation going on that the child component cannt see the parent's css?

civic scroll
#

open devtools, is the rule present there?

#

it should be

#

and it's highly being overriden by other rules

quartz kindle
#

its just gone

#

dev tools shows this

desert verge
#

I need help! Why it doesn't select the others h2 after the first h2 ?

#

this doesn't work too

small tangle
#

Cant u just do
h2 {
Styles...
}

desert verge
#

Okay now it works

quartz kindle
#

in angular child components indeed cannot see parent component classes

#

unless you use ::ng-deep or disable encapsulation

desert verge
quartz kindle
#

po-button is an element/tag

desert verge
#

Ah ok

civic scroll
quartz kindle
#

i tried with :host but it didnt work

#

unless i did it wrong

civic scroll
#

oh wait...

civic scroll
#

say you have ExampleComponent - example-component
:host points to example-component when used in context of ExampleComponent's style defs

#

iirc there is a way to query parent

quartz kindle
#

in my case i have example-component which contains po-button, which is an element managed by an addon/framework

#

i dont have direct access to it

neon leaf
#

css is magic

civic scroll
#

you can assign a class

quartz kindle
#

unless i hijack it by creating a component for po-button?

civic scroll
#

class has higher priority than element selectors

quartz kindle
#

because po-button already has its own component, managed by this addon library

#

if i create a new component using the same selector, will it override it?

civic scroll
#

no, that would cause a conflict

#

if you wanna hijack it, use selectors with higher priority

quartz kindle
#

if you mean css selectors, i already tried it

#

do i create a component with a more specific selector or what?

civic scroll
#
<po-button class="button" .../>
#

in your code i didn't see it

quartz kindle
#

i didnt try class, but i tried with id

#

and it didnt work

civic scroll
#

the docs didn't yield much

quartz kindle
#

well what worked for me in the end was either disabling encapsulation or using ::ng-deep

#

thansk to stackoverflow

#

for example, this works

::ng-deep .po-button-label {
    color: black;
}

po-button {
    background-color: red;
}


#

po-button works because its visible in the component html

sage bobcat
#

One message removed from a suspended account.

quartz kindle
#

but po-button-label is something that is added inside po-button by po-button's own component

#

i dont see it from my component's html

sage bobcat
#

One message removed from a suspended account.

civic scroll
quartz kindle
sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

quartz kindle
#

oh my

frosty gale
#

oh dear

slender wagon
neon leaf
#

so how do people show their current discord statuses on their websites? Like does someone have a link to proper api docs for that

queen needle
neon leaf
#

ah, so it gets it through a bot

#

makes sense

eternal osprey
#

So dvh doesn’t include the safari bar,?

desert verge
#

Yup

#

you cange choose, dvh, svh or lvh if there is some issue

sharp geyser
#

wtf is ~ in css

eternal osprey
#

But does this mean that on pc view I must use vh and vw, but on mobile view using media queries using dvh dvw

desert verge
#

Uh I don't know, but maybe not recommended to use dvh, dvw, svh, etc for desktop

#

vh and vw is not recommend though

#

Just look at this

slender wagon
neon leaf
#

so ive made my own discord status listener, it works fine except for some reason I dont see vscode in the data ...?

{"event":"presence","status":"idle","data":[{"name":"Custom Status","type":4,"url":null,"details":null,"state":null,"applicationId":null,"timestamps":null,"party":null,"assets":null,"flags":0,"emoji":{"animated":null,"name":"🗿","identifier":"%F0%9F%97%BF"},"buttons":[],"createdTimestamp":1691435524650}]}


{"event":"presence","status":"online","data":[{"name":"Custom Status","type":4,"url":null,"details":null,"state":null,"applicationId":null,"timestamps":null,"party":null,"assets":null,"flags":0,"emoji":{"animated":null,"name":"🗿","identifier":"%F0%9F%97%BF"},"buttons":[],"createdTimestamp":1691435658515}]}
import Event from "@/bot/event"
import presence from "@/globals/presence"

export default new Event()
    .listenTo((events) => events.PresenceUpdate)
    .listen((ctx) => {
        console.log(ctx)
        if (ctx.interaction.userId !== ctx.env.BOT_PRESENCE_USER) return

        presence.set({
            event: 'presence',
            status: ctx.interaction.status,
            data: ctx.interaction.activities
        })
    })```
queen needle
#

It doesn't show on your profile either

neon leaf
#

my client crashed

#

it shows again now

queen needle
#

I still don't see it

neon leaf
#

hm

#

weird

queen needle
neon leaf
#

uhh

quartz kindle
#

i used to use viewport units a lot, didnt know about small and large viewports, also didnt know about the clamp() function in css, very cool

eternal osprey
frosty gale
#

why does html even have so many scaling types

desert verge
#

Okay I'm lazy, I'm gonna put the commands on my website later... my bot has like 30+ commands

hidden moth
#

Guys any advice on getting this intent accepted?

spark flint
#

Well

#

You need a valid reason to use it

#

If you don’t have a valid reason don’t apply

lyric mountain
hidden moth
#

Mainly to send my bot online however I still don't really know what function to create

lyric mountain
#

u dont need that intent to check if your bot is online

#

you always have your own status

hidden moth
lyric mountain
#

because you're trying to use the intent

#

you can get your own status without the intent

hidden moth
#

oh

lyric mountain
#

that intent is only required if:

  • you want to check if someone else is online (or their status whatsoever)
  • you want to see someone else's activity
#

besides, u dont even need to check your bot's status, as your client will already have the connection info

frosty gale
#

presence intent is literally so pointless

#

i think they only added it so not many bots have it bc its very heavy on the api

#

there is no data security implications on it

#

whats stopping you running a self bot and scraping everything

quartz kindle
#

it had a lot of privacy implications

#

bots watching whenever you come and go

#

and profiling your activity patterns

frosty gale
#

meh

#

i didnt exactly find discord as the targeted advertising type

wheat mesa
#

I can see the issue with having unrestricted access to presence, especially with the rise of more advanced AI technology, you could make a lot of assumptions about a lot of people

spark flint
#

wait until you hear about botlabs

#

they were offering a targetted ads service with information collected from YAGPDB, Carlbot, Piggy and all of their bots

quartz kindle
#

there was someone here who was offered 8k for his bot

#

by botlabs

#

he refused the offer

spark flint
#

good

velvet plume
#

2 472

radiant kraken
#

i thought bot labs was just a service to help big bots

#

dang bot labs pulling a google

spark flint
#

The service also seemed to scam people

#

If you look up the reviews it’s mostly negative and saying no payout

spark flint
#

lol

radiant kraken
#

they have a valid point tbh, a random pastebin from anonymous shouldn't really be considered as a credible source

#

the reality is probably not as bad as people thought it would be

#

especially since YAGPDB itself is open source

radiant kraken
rustic nova
#

Iirc bluestacks is also associated with botlabs in some way

radiant kraken
#

mhm

#

they are probably paid by bot labs to advertise it

rustic nova
#

Probably another sister company like thing yes

radiant kraken
#

imagine if top.gg bought bot labs

sinful raven
#

how can I make the Voting message coming from webhook in embeds and like attach links to texts

slender wagon
#
ERROR:  authentication failed: Your account is not permitted to use the agent ingress "connect.ngrok-agent.com".
ERROR:  
ERROR:  ERR_NGROK_122
ERROR:  

Does ngrok have a quota or what

sinful raven
#

can someone tell me how do I get png or jpeg link? like from where I can get it?

quartz kindle
#

there you will have the real image link with the real extension

neon leaf
#

whats a good react lib to display durations like discord does for activities?

slender wagon
#

so i am logging a table from terminal and this is what it shows, is it normal cuz it's supposed to be true and false

quartz kindle
#

t = true, f = false

#

i guess

#

thats how they chose to display it lol

#

for some reason

slender wagon
#

oh

#

scared me for a moment

sinful raven
slender wagon
#

when your brain freezes you just ask bing chilling

spark flint
quartz kindle
sinful raven
#

okay

sinful raven
#

like ?maxwidth=640......

#

that?

lament rock
#

Usually, query strings don't have that big of an effect on the response

sinful raven
neon leaf
#

use https://i.imgur.com/trKRerp_d.webp?maxwidth=640&shape=thumb&fidelity=medium

#

aka

#

replace the io with com

sinful raven
#

then it shows it isn't a jpeg

sinful raven
tulip ledge
lament rock
#

The error messages and what you have to do are pretty clear

sinful raven
tulip ledge
#

Then convert your webp to a jpeg and upload that to imgur

#

It’s not hard to read that error message right?

sinful raven
slender wagon
#

i think he is pasting in a jpeg file tho

#

try to remove the attributes after the questionmark

sinful raven
#

I did try it too

slender wagon
#

ohh

sinful raven
#

then also same error

slender wagon
#

it requires a jpg

#

you have a jpeg

sinful raven
#

I did try jpg too

slender wagon
#

wait no

sinful raven
#

and even png

slender wagon
#

it should be the same tho

sinful raven
#

yeah 🥹

slender wagon
#

please ask in #support this might be a known issue

deft wolf
#

It is

#

For a very long time

sinful raven
desert verge
#

Heyoo, someone has advice to give me for my website ?

#

more style to add ?

radiant kraken
#

looks a bit too generic imo

tulip ledge
sinful raven
#

I prefer using some other colours contrast

desert verge
#

Like what ?

#

Maybe change the secondary color (on container and navbar) ?

quartz kindle
#

try inverting the reds

#

light red on the background and dark red on the elements

desert verge
#

Okay

quartz kindle
#

so you have a better contrast with the white text

desert verge
#

Okay

#

What do I do for command containers ?

quartz kindle
#

you can leave them dark gray for now and see how it looks like

frosty gale
desert verge
quartz kindle
#

ye, looks better

#

what do you think?

gloomy cape
#

i need help

#

idk why

#

but my lvl card is french

#

but i wanna english

#

i use canvas

#

i wanna 1st no 1er

quartz kindle
#

you're using a library or code from a french developer probably

frosty gale
# desert verge

eh i liked the first one more its more clear and easier on the eyes to glance at but idk

#

it will depend on your final design

gloomy cape
#

how i can put this eng'

#

?

frosty gale
#

or did you copy someones code for that

gloomy cape
#

i use canvas

#

is a node addons

#

with npm

quartz kindle
#

show code

gloomy cape
#

ok

desert verge
#

Just rename rang by rank

#

And it's english

frosty gale
#

might not be that easy if its a library

desert verge
#

Just edit the source code of the library in your workspace

gloomy cape
#
const Discord = require("discord.js")
const Canvas = require("discord-canvas-easy")

module.exports = {

    name: "rank",
    description: "See the xp of a member",
    permission: "Aucune",
    dm: false,
    category: "Experience",
    options: [

    {
        type: "user",
        name: "member",
        description: "Which member you want to see the xp",
        required: false,
        autocomplete: false
        }
    ],

frosty gale
#

lets rule out the easier solutions first :p

gloomy cape
#

    async run(bot, message, args, db) {

        let user;
        if(args.getUser("member")) {
            user = args.getUser("member")
            if(!user || !message.guild.members.cache.get(user?.id)) return message.reply("No member !")
        } else user = message.user;

       db.query(`SELECT * FROM xp WHERE guild = '${message.guildId}'AND user = '${user.id}'`, async (err, req) => {

        db.query(`SELECT * FROM xp WHERE guild = '${message.guildId}'`, async (err, all) => {





        if(req.length < 1) return message.reply("This member don't have any xp !")

        await message.deferReply()

        all = await all.sort(async (a, b) => (await bot.function.calculXp(parseInt(b.xp), parseInt(b.level))) - (await bot.function.calculXp(parseInt(a.xp), parseInt(a.level))))    
        let xp = parseInt(req[0].xp)
        let level = parseInt(req[0].level)
        let rank = all.findIndex(r => r.user === message.user.id) + 1
        let need = (level + 1) * 500;

        let Card = await new Canvas.Card()
        .setBackground("https://media.discordapp.net/attachments/1127863739962621963/1138385468791193651/ROBLOX_PROFESIONNAL_LEAGUE_5-PhotoRoom.png-PhotoRoom.png?width=1000&height=375")
        .setBot(bot)
        .setColorFont("#ffffff")
        .setRank(rank)
        .setUser(user)
        .setColorProgressBar("#ff0000")
        .setGuild(message.guild)
        .setXp(xp)
        .setLevel(level)
        .setXpNeed(need)
        .toCard()


            await message.followUp({files: [new Discord.AttachmentBuilder(Card.toBuffer(), {name: "rank.png"})]})

        })
       })
    }
}
quartz kindle
#

ok discord-canvas-easy is not the same as canvas

gloomy cape
#

so what i put?

frosty gale
#

yeah doesnt appear to have any way to change the language

#

youd have to modify the library or use something else

radiant kraken
#

just use node-canvas

frosty gale
#

weird library tho

#

its half english half french

#

developer was in a goofy mood

gloomy cape
#

lol

quartz kindle
#

they dont have a github repo either

radiant kraken
#

most discord bot npm libraries/wrappers are like that

quartz kindle
#

so you cant PR or create an issue

frosty gale
#

bro needs to start caching

quartz kindle
#

yandev is that you

radiant kraken
#

this is why i always refuse to use wrappers of wrappers

quartz kindle
#

yeah, most of the time their code is crap

#

they have no idea what they're doing

radiant kraken
#

pov: the entire bot dev community

#

learn discord.js and canvas before knowing about the basics of programming onesieKEKW

neon leaf
# neon leaf uhh

turns out it were my privacy settings cat
Im proud of the result now though

quartz kindle
#

learn english before programming

#

:^)

desert verge
#

For short

#

canvas

quartz kindle
#

its the same thing

desert verge
#

Nope

#

not the same lib

quartz kindle
#

it is

desert verge
#

npm i canvas

#

npm i node-canvas

#

not the same lib

quartz kindle
#

canvas is their npm name, node-canvas is their github name

desert verge
#

Mhh

#

Okay

quartz kindle
radiant kraken
desert verge
#

But the npm lib node-canvas is not the same thing

#

this lib doesn't work

quartz kindle
#

ye

#

no idea why they use different names on npm and github

neon leaf
#

maybe to not confuse people with the web api

quartz kindle
#

yeah

radiant kraken
gloomy cape
#

guysà

desert verge
#

àùéè

quartz kindle
#

xDDDDD

neon leaf
#

glad I went through the pain and always just tried to do everything myself. definitely not always the best but Im very good at devops and programming now thanks to that

radiant kraken
#

self-learning is 💪

quartz kindle
#

yeah, like, software development is such a huge world, its impossibe to learn it in a couple months like people these days do

#

we, as devs, have been inside this world for like 10+ years and still learning new shit every day

#

and newcomers are building entire full stack apps after a 3 month udemy course

radiant kraken
#

i've only been developing for 3 years

neon leaf
#

ive only been developing for like 1.5 years

radiant kraken
#

took me a year to fully get used to nodejs and another year to get comfortable with it

#

same goes for my learning process with C/C++ and Python

quartz kindle
#

if you know most fundamentals, everything gets quite easy to undrstand and get into, but those fundamentals do take a lot of time to get

#

and thats where people get lazy and skip

#

:^)

radiant kraken
#

*bot devs

neon leaf
#

*js devs

quartz kindle
#

bot devs and app designers

#

xD

radiant kraken
#

the js community is a mess

quartz kindle
#

jabbascript

frosty gale
#

is it true js developers love boba

desert verge
#

wut

radiant kraken
quartz kindle
#

boba and vegana

#

and fetta cheese

desert verge
#

I have been doing like programming for 3 years

#

(I'm older brother is way better than me)

neon leaf
#

I think the earlier you start the easier you have it, I started learning at 13 (with 0 knowledge) and now with 14 I can basically accomplish everything I dreamt of

quartz kindle
#

yeah, the younger you are the more flexible your brain is

radiant kraken
#

i'm 17 and i've learned pretty much every tech stack myself

quartz kindle
#

it has an easier time adapting to different ways of thinking

desert verge
#

I want to make a video game but can't shiba_sad

radiant kraken
#

i started when i was 13

quartz kindle
#

programming and computer science in general should be taught in schools tbh

slender wagon
#

Hacking into a company evaluated at more than $100 millions feels good.
FIlling the report rn hoping for a big bag

quartz kindle
#

starting with middle school

quartz kindle
radiant kraken
#

it was a sudden hobby change lmao

quartz kindle
#

i didnt actually start programming until i was like 25

earnest phoenix
slender wagon
quartz kindle
#

before that it was just bits and pieces of html/php/wordpress

slender wagon
quartz kindle
#

my advantage was that i started messing with pcs at 15

#

so i had a good grasp of how computers work

slender wagon
#

i grew up with computers lol

radiant kraken
#

i mean 10 years from now there are going to be devs learning since they were 2

slender wagon
#

when i was 16 my dad opened up a computer shop

#

and service

earnest phoenix
#

I started programming like 4-5 years ago, now look at what I've become and what I do :^)

radiant kraken
quartz kindle
radiant kraken
quartz kindle
radiant kraken
#

i have no time and 0 IQ

#

😔

quartz kindle
#

like how do you even have time for school + job + maintain 10 different projects

radiant kraken
#

he doesnt do uni iirc

#

he's working

earnest phoenix
earnest phoenix
quartz kindle
#

you're the goat

earnest phoenix
#

Though I'll most likely not try to become a maintainer of any other large projects because that would ruin my schedule and would put a lot of more stress onto the whole process of maintaining all of them

#

Maybe I'll join the Unicode consortium, but that's the last one, probably

quartz kindle
#

you're crazy

earnest phoenix
#

:^)

frosty gale
#

join linux

#

just agree with all of linus torvalds controversial ideas and he will welcome you

peak drum
frosty gale
#

how do the linux core maintainers even work

#

i know theres a few of them

#

and if you want to propose a pr or issue you email them

#

but are they responsible for different parts of the kernel or

tulip ledge
tulip ledge
earnest phoenix
#

These are called code owners

tulip ledge
#

Also tim if you started so late how did you get so good at it? Did you just code 24/7 or did you try problems or how did you?

frosty gale
#

what do you even count as a module/part

#

and what if more are added

#

do they assign an existing maintainer or

earnest phoenix
quartz kindle
earnest phoenix
# frosty gale do they assign an existing maintainer or

If an existing maintainer is interested in maintaining a new part/module, they're assigned to it, if not, the person who added it is given responsibility (however they don't necessarily become a Linux kernel maintainer, just a code owner)

frosty gale
#

interesting

#

good idea tho

#

its better to specialise in an area than in everything

#

because youll get confused quickly

#

and half ass stuff

tulip ledge
#

Do you have tips on fixing that?

quartz kindle
#

large projects are not easy, i have trouble with them too (been rewriting my api countless times instead of actually getting it done lol)

#

but just keep thinking about it and eventually you'll think of something

#

im basically thinking about my projects 24/7

#

always checking all possibilities and joining the pieces togther in my head

tulip ledge
quartz kindle
#

thats just experience i guess

tulip ledge
#

And usually I’m like oh now I wanna add that and then I realise oh I should’ve implemented that part in that way and then I don’t wanna rewrite that complete thing

quartz kindle
#

maybe you didnt see the better way of doing it because you havent tried doing it like that before or havent seen it done like that before

tulip ledge
#

Yeah probably

#

So I should just code more

quartz kindle
#

and its never perfect

tulip ledge
#

Yeah I’m kind of a perfectionist in that way

#

i rewrote my project 5 times already

#

And have yet to release it

earnest phoenix
tulip ledge
#

And have been working on it for 3 years now

quartz kindle
#

i am too, but that becomes a problem eventually, if you cant get a project finished

tulip ledge
tulip ledge
quartz kindle
#

he maintains half of the internet

tulip ledge
#

Haha what

quartz kindle
#

lmao

eternal osprey
#

in djs, how can i send a voice channel join embed?

earnest phoenix
#

I basically maintain almost all the technologies almost all systems and programs rely on

eternal osprey
#

Like it would display the user and in what vc he is in, with a green button to join the vc

tulip ledge
#

Wow ok damn

eternal osprey
#

Forgot what the peroperty is called

tulip ledge
#

Like what?

quartz kindle
#

node, v8, chromium, llvm

tulip ledge
#

Haha what how do you manage to maintain all of that

earnest phoenix
#

Node.js, V8, LLVM, the JavaScript programming language, Chromium, many web standards, the internet standards

quartz kindle
#

hes nuts

tulip ledge
#

How do you get good enough at coding to maintain all of that

#

Like don’t you have to be a computer to do that

plain talon
#

well hes not the ONLY person who works on all of them things

tulip ledge
#

Yeah but still

quartz kindle
#

its not that much about being good at coding, sure you need a solid undrstanding of how everything works, but being a maintainer is more about having a vision of where to go and how to continue from where we are

earnest phoenix
#

I don't even have a PC, I do all of them on a phone mmLol

quartz kindle
#

and of course being interested in being part of that

earnest phoenix
#

Yeah

quartz kindle
#

so its kind of like, becoming a politician

tulip ledge
#

Ah I see

quartz kindle
#

in the coding world

radiant kraken
#

i'm very skeptical on the impact of your contributions besides Node.js tbh

tulip ledge
#

So voltrex for president?

quartz kindle
#

president of js

#

and soon president of google

#

:^)

tulip ledge
#

Haha

earnest phoenix
#

The president of the programming world mmLol

quartz kindle
#

poresidento sama

radiant kraken
#

i dont really agree

eternal osprey
#

I know voltrex is sleeping on a matress made of gold fr

plain talon
#

yes lets inflate ego more

eternal osprey
#

my guy wipes his ass with money

radiant kraken
#

after looking at your contributions on your LLVM profile page

tulip ledge
#

No but I’m starting uni in september is comp sci and I probably have better understanding of pcs and coding than like 90% of the people attending but do you guys have any tips of getting better at coding and computers in general?

plain talon
#

^

earnest phoenix
eternal osprey
#

I will have to say, comp sci is probably not what you tihnk it's gonna be like. You think that you will mainly get to coding and creating programs, learning languages etc

#

that's not it chief

plain talon
#

and by what we were doing, i just mean the coursework

eternal osprey
#

You are getting A LOT of theory, and A LOT of math

plain talon
#

not programming in general

tulip ledge
#

I want the math and the theory

eternal osprey
#

Maybe like 2-3 languages max per year, atleast that was the case for me.

plain talon
eternal osprey
plain talon
#

you use your language to big yourself up

#

i see it a lot

#

not that i give a crap tho its a random chat on the internet

tulip ledge
#

Alr but thanks for the advice

eternal osprey
#

Damn Jake 🔛 🔝

quartz kindle
earnest phoenix
#

^

quartz kindle
#

but it still shows your dedication towards a project

radiant kraken
#

tim

#

have you seen his llvm contributions

earnest phoenix
#

"I help maintain the JavaScript programming language" is not what a maintainer would say, contributors help the maintainers which is what they're supposed to say

But this does not apply to maintainers because they're literally the ones who maintain the thing

quartz kindle
#

to be accepted as a maintainer in a big project means that you need to have been invested into it for quite some time

quartz kindle
plain talon
#

him saying hes a maintainer doesnt prove he was accepted by the project tho lmao

earnest phoenix
# radiant kraken after looking at your contributions on your LLVM profile page

I really don't get your point whatsoever, we've been over this many times now and you keep bringing it up, sure I don't have much contributions to the LLVM project itself but I am a part of the infrastructure and technical steering committee where I make important decisions, I was declared a maintainer by being invited as an expert by the LLVM project's owners

earnest phoenix
plain talon
#

okay, and how am i meant to know that from you saying you work on it and having a link in your bio

#

i could do that ffs

radiant kraken
#

calm down jake

#

mods lurking might mute you

earnest phoenix
#

Have you tried checking my GitHub? Any of the teams I am a part of? All the projects I have worked on?

#

Done any research?

radiant kraken
#

i don't agree with your arguments but i agree on what you're trying to say

earnest phoenix
#

You must provide a reason as to why you don't agree with my arguments

eternal osprey
#

Why the fuck do you guys even care KEKW

#

For my part he's saying he built Windows idgaf

radiant kraken
earnest phoenix
#

Ahh

desert verge
#

Hey, I have a problem, I don't know how to put the logo on the same level as the title

civic scroll
quartz kindle
#

float right

#

:^)

civic scroll
#

meanwhile idk how to deal with linux errors

desert verge
#
 <div class="container info">
      <img src="/logo.png" alt="logo" class="logo" />
      <h2 class="title">COMMAND PREFIX</h2>
      <p>Prefix: <code>/</code> <i>(Uses Slash Commands)</i></p>
      <p>
        Examples: <code>/help</code>, <code>/characters</code>,
        <code>/register</code>
      </p>

      <h2 class="title">COMMAND USAGE SYNTAX</h2>
      <p><code>()</code> - optional parameter</p>
      <p><code>[]</code> - required parameter</p>
      <p><code>[option1 | option2]</code> - select one of these options</p>
    </div>
civic scroll
civic scroll
eternal osprey
#

how can i create a voice channel invite in djs v14?

civic scroll
#

@quartz kindle LMAO YOUR NAME

desert verge
#

Doesn't work

quartz kindle
#

wtf

#

there

civic scroll
desert verge
#

Does that

civic scroll
#

well

#

you better finna group them h2 and img together

desert verge
#

Okay

civic scroll
#

or img inside a span

#

like

h2
    text
    img
desert verge
desert verge
civic scroll
#

or, set h2 to be flex

desert verge
#

Oh I know I forgot to put flex-direction to row

#

Bruh

#

This gives this, but now I can't put the image at the very right

plain talon
#

put flex-glow: 1 on the title to make it fill the space

#

you'll want min-width: 0 with that too so it doesn't overflow the container

desert verge
#

The image stays in the h2 ?

#

If yes it doesn't work

plain talon
#

no the image should be separate to the title, thats why its next to it

#

flex applies to the parent and first sub-children on it

#

so the img being inside the h2 makes it not apply to it

desert verge
#

Like that

plain talon
#

it will defo help

desert verge
#

But I don't find what I'm seeking for

plain talon
#

flex should be on .info

#

not on .title

#

<div class="info"> <-- parent
<h2>title</h2> < -- child
<img.... <-- child
</div>

desert verge
plain talon
#

oof

desert verge
#

You broke it gg

plain talon
#

ahh

desert verge
plain talon
#

it aplies to the entire section

desert verge
#

Yes

plain talon
#

so it should be like
<div class="info"> <-- parent
<h2>title</h2> < -- child
<img.... <-- child
</div>
<div class="info"> <-- parent
<h2>title</h2> < -- child
<img.... <-- child
</div>
<div class="info"> <-- parent
<h2>title</h2> < -- child
<img.... <-- child
</div>

#

where info is the container for each block of h2/img

#

use a diff class if not info

#

i didnt see that info was the whole page container

#

so add a .container and put flex on it, and wrap your h2 and img in it

desert verge
#
* {
      color: #ebd4cb;
      font-family: sans-serif;
      -webkit-user-drag: none;
      user-select: none;
    }

    .info .title:first-of-type {
      flex-grow: 1;
      min-width: 0;
    }

    .info .logo {
      width: 6%;
      height: 6%;
    }

    body {
      background: rgb(218, 159, 147);
      background: linear-gradient(
        100deg,
        rgba(218, 159, 147, 1) 51%,
        rgba(182, 70, 95, 1) 100%
      );
      margin: 0;
      padding: 0;
      min-width: 100%;
    }

    .list {
      display: flex;
      flex-direction: column;
    }

    .list .command .usage {
      padding-bottom: 10px;
    }

    .list .command {
      background-color: #890620;
      margin: 5px;
      border: 1px solid #ebd4cb;
      border-radius: 5px;
      padding-left: 5px;
      padding-right: 5px;
    }

    .list .command .subtitle {
      color: #b9bbbe;
      line-height: 16px;
      font-size: 12px;
      letter-spacing: 0.5px;
    }

    .list .command .description {
      padding-left: 5px;
      opacity: 0.9;
    }

    .data {
      display: flex;
      flex-direction: row;
    }

    .data input {
      border: 5px;
      color: gray;
      opacity: 0.9;
      text-indent: 6px;
      height: 30px;
      width: 500px;
      margin-left: auto;
    }

    .container {
      margin-inline: 20%;
      border-radius: 5px;
      background-color: #890620;
      text-align: left;
      padding: 5px;
      margin-bottom: 25px;
      text-indent: 5px;
    }

    @media only screen and (max-width: 768px) {
      .container {
        margin-inline: 2%;
      }

      .data input {
        width: 300px;
      }

      .data .results {
        font-size: 0.8rem;
      }
    }

    .title ~ .title,
    .list .command .name ~ .list .command .name {
      padding-top: 40px;
    }

    .title,
    .list .command .name {
      padding-bottom: 10px;
      border-bottom: 1px solid #ebd4cb;
    }

    code {
      user-select: text;
      padding: 0.2rem 0.4rem;
      font-size: 80%;
      border-radius: 0.25rem;
      background: #3b3d43;
      opacity: 1;
      word-break: break-all;
      font-family: "Courier New", Courier, monospace;
    }```
desert verge
plain talon
#
<div class="info">
  <div class="container">
     <h2>title 1</h2>
     <img/>
  </div>

  .. continue your page as normal here
</div>
#

the divs you want to be on one line together should be the ONLY thing inside the display: flex parent

#

nothing else matters

desert verge
#

Okay but now my padding top doesn't work

#

And the border-bottom is cut

plain talon
desert verge
plain talon
#

apply border to the wrap-1

desert verge
#

Okay

plain talon
#

lmao u just gotta add shit to where it needs to be

#

thats all

#

you might want to just add padding to the img in that case tho

desert verge
plain talon
#

yeah so thats happening because you're reusing a class that should really be separate

#

you should have a info and info-with-image or something

#

remove the border and padding from the h2 on info-with-image

#

and apply it to wrap-1

desert verge
#

I can't remove it

#

Because it applies to every h2

plain talon
#

undo what you do inside of wrap-1 then

desert verge
#

every .title

plain talon
#

.wrap-1 h2{
border: none;
padding: 0;
}

#

then apply those to wrap-1 instead

desert verge
#

Thanks!

#

Now Where do I add the padding-top ?

#

for the title ?

plain talon
#

on wrap-1

#

this would have been another way to do it

#

which instead of placing it next to your h2, it places it on-top of it basically

#

but fixed positions like that are ehh

desert verge
#

Alright, I just removed the title class in the wrap-1 div

#

Now it is perfect

plain talon
#

awesome

desert verge
#

And added:

.info .title {
      padding-top: 40px;
    }
#

For the second h2 in the .info

#

Thank you!

plain talon
#

np

radiant kraken
#

@earnest phoenix ok i take that back, you're amazing iaraHug

frosty gale
#

that sounded rude

quartz kindle
#

oh hey, amoled mode works again

sharp geyser
#

@scenic kelp so I heard there was a svelte api type thing, does this just allow you to make an api that your frontend can interact with easily or am I mishearing?

rustic nova
#

Need that

#

Istg

#

I still can't figure out how tf I'm supposed to do it

sharp geyser
#

hm?

scenic kelp
sharp geyser
#

I see

#

so just use an external api then

#

Im still trying to figure out how to apply a dark background to all pages 😔

#

I figured I would need to make a root +layout

#

wait can't I just use the @apply thing that tailwind has and just override the body/html background color in the global css

#

yea I don't get this dark mode shit whatever ima just make it dark mode permanently

rustic nova
#

why not just do a root layout yeah

#

how I tried to work with Svelte is by having a Base Component that has the head, scripts etc within it

#

then you could toggle a dark mode through that, including with stores

sharp geyser
#

a root layout didn't seem to allow me to change the background color tho

rustic nova
#

why not

sharp geyser
#

cause nothing I tried was affecting the bg

#

it just stayed white

rustic nova
#

or have all your components inherit another component called "Themable", which would then have access to a global store including the current theme collection

#

subscribing to it, then having it change the theme accordingly

#

which would also allow you to specify how a certain component should behave when the theme changes

#

so for example, you dont want that specific component from white to dark, so you can just tell it to ignore a theme change

#

ez

sharp geyser
#

god this looks hideious why did I think web dev was a good idea

#

😔

rustic nova
#

I prefer backend too

#

fuck frontend

#

idk how shit works

sharp geyser
#

time to ask chat gpt

rustic nova
#

I have access to copilot chat

#

It does help very often

#

but it hates navbars and bootstrap for whatever reason

#

so it just filters it

#

I've like, tried making a website that requires authentication, but the vibe of "exposing restricted sections within the source code while the user is not authenticated" makes me cring internally ngl

sharp geyser
#

I thought adding a blur to the background would look better

#

turns out no

#

🙂

rustic nova
sharp geyser
#

Mainly because I can't get the background to blur and not the text

#

😄

rustic nova
#

me when exposing restricted sections to an unauthorized user

sharp geyser
#

You should do so

rustic nova
#

why

#

actually elaborate

sharp geyser
#

Honestly best website i've made yet

sharp geyser
rustic nova
sharp geyser
#

Nope its just a completely useless website

#

:)

rustic nova
#

everything I make

sharp geyser
#

I hope my site ends up on that useless site generator thing that we used back in 2014

rustic nova
#

the useless web

sharp geyser
#

yep

#

omg this shit sucks

#

my eyes hurt

lyric mountain
sharp geyser
#

blur filter with 40 px

scenic kelp
sage bobcat
#

One message removed from a suspended account.

lyric mountain
#

make a 20px blue/red squares checkerboard, blur 40px

#

will it go pink or purple?

sharp geyser
surreal sage
#

I want to not match the number (ack. id) before the payload (json array)
I tried using negative lookahead and a nice star but it's acting lazy
(?<=^\d+\/[a-z]+,).*
42/general,2["sendChatMessage",{"message":"x"}]

#

I have regex to match the ack. id

#

the ack. id isn't in all strings

earnest phoenix
# surreal sage

Wait I'm confused, what exactly are you trying to match here?

surreal sage
#

The payload

earnest phoenix
surreal sage
#

after the comma there can be a number of any length

#

CAN

#

and then the first character of a json object/array

#

the \[" is temp. btw

earnest phoenix
#

You basically just get the value of the first capture group

#

Remember that + and * are not the same in regex, + means 1 or more, * means 0 or more (meaning it's optional)

surreal sage
#

I know the difference

surreal sage
earnest phoenix
#
const match = 'fo5m'.match(/fo\d+(\w)/);

console.log(match[1]); // 'm'
surreal sage
#

I'll take a look once I'm done with dinner 🫡

earnest phoenix
eternal osprey
#

regex in programming languages is always so fucking strange, they always add strange syntaxes

#

while the automata theorem is pretty doable

lyric mountain
#

regex is regex in any lang

surreal sage
#

regex 🗣️ 💯 💩

surreal sage
#

What's the best way to not include a key-value in an object if it's falsy?

sage bobcat
surreal sage
#

like

{
  "value": null
}

would become

{
}```
js ofc
tulip ledge
lyric mountain
#

yes, undefined for non-existing keys

#

null by itself is a value

tulip ledge
#

Never knew null would also do that?

lyric mountain
#

null means there can be a value, but it's absent

#

where's my toilet paper example

tulip ledge
#

Haha thats well explained actually

lyric mountain
#

yep, that's why I use it

tulip ledge
#

But does it have the same behaviour as undefined for objects?

lyric mountain
#

best way to remember the differences

lyric mountain
#

but I believe stringify skips undefined values

tulip ledge
#

Yes but if you set a key as null it doesnt remove the key like undefined right?

lyric mountain
lyric mountain
tulip ledge
#

Alr ty

lyric mountain
eternal osprey
#

I wasn't talking about a language specific, read my message again.

#

I was talking about the way programming languages tend to incorporate the automata theorem.

eternal osprey
#

Also i am unsure who taught me to use dvh and dvw, that person is a life saver. My website finally scales well on most of the devices

surreal sage
#

i want to kill someone right now

crystal wigeon
#

anyone uses knex?