#development

1 messages ยท Page 1590 of 1

lament rock
#

to the gateway, 1 client ws connection is still considered shard 0

crimson vapor
#

yeah

#

so therefore

#

stop saying sharding at x servers

#

its dumb

blissful coral
#

without sharding, you are on shard 0

delicate zephyr
lament rock
#

0 based indexing kinda weird

nimble kiln
#

wrong channel

delicate zephyr
#

Also, it's never bad to test scalability

#

Just because it isn't required until 2500 doesnt mean you shouldnt do it just in case

agile lance
#

Quick.db

How do you delete a specific thing for a inventory thing?

Basically I use db.push(`inv.${message.author.id}`, "cookie"), But how can I say, reach a specific item, and remove it from the database?

glossy spoke
#

Ya

lament rock
#

IPC kinda easy to do

delicate zephyr
#

meh I use eris-sharder

#

so it's mostly done for me

#

which has clustering capabilities too

glossy spoke
agile lance
glossy spoke
#

Np

lament rock
#

The person I worked with made a TCP socket based IPC solution which is kind of jank, but it's alright. I'd have rather done over http, but eh.

umbral zealot
#

unless quick.db supports that which might be the case, since it's just a string.

quartz kindle
earnest phoenix
#

I don't think that works in quick.db

lament rock
#

I forget if the delete keyword works on Arrays to remove elements, or if it just shows removed element

earnest phoenix
#

I could be wrong though

umbral zealot
#

Ah yes I've confirmed from the code

#

delete() only supports objects.

earnest phoenix
#

Rip

#

I'm gonna have to rewrite that sooner rather than later then

umbral zealot
#

Just make a wrapper around enmap Kek

glossy spoke
agile lance
#

hmm

umbral zealot
#

that's what push does.

glossy spoke
#

o

#

xD

earnest phoenix
#

a wrapper of a wrapper. ah yes! peak bloat

glossy spoke
#

I thougth he was setting an individual string

umbral zealot
#

it'd still be faster than quick.db is right now though Kek

earnest phoenix
#

I think you're wrong with that

#

I'm not sure

umbral zealot
#

setting an individual string would be set not push

lament rock
#

My logic behind wanting to have done http ipc was that http has responses which in most cases are necessary depending on the op. socket might have a little bit of overhead since you'd have to process other packets and see if it's a response to a specific thread.

quartz kindle
#

wat?

blissful coral
#

watdafuq

earnest phoenix
#

http-based ipc sounds like a bad idea

quartz kindle
#

http is built on top of TCP, any overhead will be way bigger

blissful coral
#

yeahhh

umbral zealot
lament rock
#

02shrug I'm masochistic

blissful coral
#

Hi masochistic

quartz kindle
#

comparing quick.db to enmap is not completely fair though

earnest phoenix
#

yeah it is

quartz kindle
#

since enmap keeps a copy in memory

lyric mountain
#

Yeah, enmap is fully buffered

earnest phoenix
#

im gonna make a quick little benchmark

umbral zealot
#

You're right that is true, but the benchmarks I've seen were for initial load and a set of changes that would not be affected by memory

glossy spoke
umbral zealot
#

especially since that cache is only used for features like filter, map, etc, not for sets and gets.

earnest phoenix
#

im gonna do a simple bench of set & get

agile lance
umbral zealot
#

Like, logically speaking, enmap should be slower if you're going to do, say, 10,000 loads at once and then close. but it's faster apparently, from what I'm told

agile lance
#

Is there a way with db.fetch to find a specific index for that user

umbral zealot
agile lance
#

Or I can try db.all() [Object] and use Object.entries(db.all().find(...)) right?

umbral zealot
#

quick.db doesn't have many array/object helpers.

#

Next up: add remove() ๐Ÿ˜›

earnest phoenix
#

^ this will change eventually

agile lance
#

Yeah

#

Welp ima go for now, byeee

glossy spoke
#

Also

umbral zealot
#

Try enmap it has all you need
kthxbaiiiiiiiiiiiiiiiiiiiiiiii

glossy spoke
#

you can set something into an array without push

#

like

earnest phoenix
#

lol evie

ornate otter
#

So

#

Does anyone know about the css update and the name and short description wrapper? cus mine got fucked up in the updat

umbral zealot
#

@glossy spoke we're not imagining we're literally talking about, specifically, the features of quick.db, which is db.push()

#

which, quite specifically, uses array.push() internally

umbral zealot
ornate otter
#

yes

#

but i cant figure out which specific part is broken

#

and i know im very dumb, cus i didnt do my own css

umbral zealot
#

looks like the css class is .entity-user-content

ornate otter
#

ok, what should i replace with that

umbral zealot
#

actually might be just .content

ornate otter
#

( i did say im very dumb)

umbral zealot
#

yeah .content is the right selector

#

that's the correct one

ornate otter
#

Evie, ill be honest

umbral zealot
#

ah shit you said short description

ornate otter
#

im so unbelievably lost

glossy spoke
#

Yo

#

Can someone change my nickname?

ornate otter
#

no

umbral zealot
#

.entity-header__short-description is the one

glossy spoke
#

My username is actually mentionable

umbral zealot
ornate otter
#

I know it is

#

But evie... can i dm u

umbral zealot
#

no

#

The proper selector is ```css
.entity-header__short-description {
css here will affect the header
}

ornate otter
#

Ah,

#

evie

#

you dont quite understand

#

i know that

#

but like, i dont wanna post the screenshot here cus of self ad but here

glossy spoke
#

m

umbral zealot
#

How about you show us what CSS you currently have

#

and what exactly is broken about it

glossy spoke
#

Finally

ornate otter
#

This is what it used to look like

#

This is what it now looks like

umbral zealot
#

ok so what's your CSS

opal plank
#

which class did u use for the header?

#

i had mine but somehow it broke

ornate otter
#

Dont ask me, i didnt code this

opal plank
#

header and footer actually

#

u have the bot id?

umbral zealot
#

Ok but can you at least go to your bot edit and copy the right CSS?

ornate otter
#

can i post pastebin links here

umbral zealot
#

or do we have to do ALL The work for you

ornate otter
#

yeah i know evie but like i was talking to erwin

#

about the class

#

Im not THAT dumb i can get the css

opal plank
#

i'll take a look at theirs, i used on mine but something broke

#

worked fine for a whole month

umbral zealot
#

a simple copy/paste of the appropriate css block here in a codeblock should be sufficient

ornate otter
#

Ok i have the css in a pastebin

umbral zealot
#

for both of us to see

opal plank
#

logged in couple days ago, boom, not working

umbral zealot
#

And yes you can link pastebin not problem

ornate otter
#

Ok ill get that then

opal plank
#

i'll take a look at the source dont worry

ornate otter
#

oh ok

#

here

opal plank
#

well too late

#

footer header

#

thats one

ornate otter
#

im so confused

umbral zealot
#

I have a feeling the issue isn't the actual short description but rather the image

ornate otter
#

Ok,

opal plank
#

there, thats the header

umbral zealot
#

could it be the margin itself that's breaking?

opal plank
#

dont ask me why the fuck footer-header affects the header

#

but thats a thing

#

now which one is the ACTUAL footer?

ornate otter
#

is so confused

opal plank
#

footer

#

thats the bottom of the pahe

ornate otter
#

i know that

opal plank
#

header, is the top of the page

#

so, whats confusing?

ornate otter
#

but like i just wanna know how to fix my css

opal plank
#

apart from the misleading name

#

footer-header

ornate otter
#

what do u want me to do with that

opal plank
#

nono, not you, im trying to fix mine

ornate otter
#

(i know im dumb but ken did my css and hes big brain im not)

opal plank
#

cuz some of the classes are used legit broke

ornate otter
#

ohhhh

umbral zealot
#

interesting - the font-size is what breaks it

#

as if...

#

no rather the font family

ornate otter
#

Oof

#

Chonky Font

#

I could ask xetera but i dont wanna bother them

#

and i know ken is busy and dont wanna bother him either

umbral zealot
#

honestly I'm absolute shit with CSS and that's precisely why I don't fuck with it

#

I'm a web developer not a CSS Designer

#

frameworks ftw

mellow kelp
#

bootstrap go brr

ornate otter
#

ok thanks anyway evie

quartz kindle
#

since when is css not part of web developing lmao

drifting wedge
#

css is very important

#

float: left guys im a pro

solemn latch
#

raw html op

drifting wedge
#

^

mellow kelp
#

markdown ftw

drifting wedge
#

but u cant do selectors

misty sigil
#

i agree

#

raw html

mellow kelp
#

uncooked html

drifting wedge
#

u cant do like :hover and stuff

quartz kindle
misty sigil
#

this css shit makes me want to explode

blissful coral
#

lul

mellow kelp
#

wait i finally got a question

#

how do i connect to my vm instance ssh in a github actions workflow?

placid iron
#

Float is actually the worst css thing

#

If they removed it, it would be better

quartz kindle
#

they exist for a reason

#

although that reason is rarely used these days

ornate otter
placid iron
#

Float has basically been superseded by the power of flexbox

mellow kelp
#

flexbox for life

placid iron
#

From my experience at least

green kestrel
quartz kindle
#

^

drifting wedge
quartz kindle
#

flexboxes cant wrap text around like floats can

drifting wedge
#

like flex-direction row is THE BEST

#

like its a life saver

green kestrel
#

that above is the use for floats, you wouldnt use flex for it

drifting wedge
#

u can use flex-wrap wrap

green kestrel
#

same as you shouldnt use float for positioning boxes in relation to each other

quartz kindle
glossy spoke
#

What the hell is that

blissful coral
#

an example

green kestrel
#

thats an image float: left

glossy spoke
#

I mean the text

quartz kindle
#

lorem ipsum

green kestrel
#

youve never seen lorem ipsum?

drifting wedge
delicate shore
#

Can I get remote access of my Linux VPS?

#

or do I need to ask the VPS provider

drifting wedge
#

can i get like desktop of a vps?

delicate shore
#

yes

drifting wedge
#

GIB

#

NOW

quartz kindle
#

depends

drifting wedge
#

i wANT

quartz kindle
#

lol

green kestrel
#

lorem ipsum is dummy text that predates electricity

drifting wedge
#

no i want

#

rn

#

gib

#

i have water gun that will break ur pc

#

๐Ÿ”ซ

mellow kelp
#

there should be a "joe mama"-type lorem ipsum joke

green kestrel
#

In publishing and graphic design, Lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document or a typeface without relying on meaningful content. Lorem ipsum may be used as a placeholder before final copy is available. It is also used to temporarily replace text in a process called greeking, which allows designe...

delicate shore
quartz kindle
delicate shore
#

I am paying

#

But i only have ssh access

#

I get host is down

quartz kindle
#

ssh is remote access

delicate shore
#

no

#

I mean

mellow kelp
#

how can i get the ssh key of my instance?

drifting wedge
#

@delicate shore galaxygate right?

delicate shore
#

Remote Desktop

delicate shore
solemn latch
#

most VPS's dont have a gpu

quartz kindle
#

ah

drifting wedge
#

can u get desktop for that?

solemn latch
#

so desktops are very high cpu usage

quartz kindle
#

depends on what operating system you run

#

most "server" versions of operating systems are called "headless"

#

meaning they have no video

#

however you can install a desktop on a headless linux for example

drifting wedge
quartz kindle
#

and then use something like rdp or vnc

drifting wedge
#

i mean it must be a birth defect

mellow kelp
#

im trying to use github actions to deploy my bot with ssh

green kestrel
#

why would you need a gui

drifting wedge
#

@quartz kindle do u have a desktop in ur vps?

green kestrel
#

a gui on a server is something even microsoft are pushing out of fashion

drifting wedge
#

cool

#

tim hows ur job doe?

#

u said the company thingy is bad?

quartz kindle
#

wut

drifting wedge
#

but is it better now?

#

like ur job

#

u said they treat you bad

quartz kindle
#

wutยฒ

green kestrel
#

there are some legit reasons to have a gpu in a server, rather than just for console access, and that is for using them for shader processing, e.g. bitcoin mining and stuff

#

and AI

quartz kindle
#

and cracking passwords

green kestrel
#

yes

#

but just like bitcoin, if you want to crack passwords the most efficient way is an ASIC

#

an array of ASICs to be exact

delicate shore
#

will it slow down my vps

quartz kindle
#

yes

delicate shore
#

Thanks

green kestrel
#

it'll take tons of ram and a fair bit of cpu

delicate shore
#

oh

#

Was wondering if I can use it for mining as well along with hosting

#

๐Ÿค”

#

Or should I get another vps for mining

solemn latch
#

99% of hosts will delete your vps

delicate shore
solemn latch
#

the vast majority of VPS's are shared cpu's meaning you are not allowed to use 100% cpu usage 24/7

delicate shore
#

Ah

#

I see

#

what if I have a dedicated vps

solemn latch
#

as in a dedicated server?

quartz kindle
#

vps's with GPUs are expensive af tho

delicate shore
quartz kindle
#

gpu costs way more than ram and cpu

green kestrel
#

gpu cant be shared thats why

solemn latch
#

most hosts will probably allow it, youd have to ask your provider

green kestrel
#

each user that requests it needs to be moved to a dedicated instance with a spare gpu in it on a pci-e bus

#

and that hardware dedicated to their vps

quartz kindle
#

for sure there must be ways of sharing gpu computing power

green kestrel
#

not afaik

#

thats why its pricy

solemn latch
#

gpu's are also generally just more expensive

green kestrel
#

its cheaper to get a dedi and have a gpu put in it, OR to co-locate and put a high end gpu in your server hardware

delicate shore
#

My Father has a business and he has few Windows vps (with remote desktop)
They are dedicated as well
He needs it for hosting all apps and softwares
So maybe I can just use one of those mmLol

quartz kindle
#

but if you can run multiple programs on the same gpu, you can come up with ways of sharing its power

#

even if you have to virtualize the shit out of it

green kestrel
#

you cant run multiple programs on a gpu

#

their processors arent made to do it

delicate shore
green kestrel
#

you can only run one "program" on a gpu, thats the one your OS uploads to it

quartz kindle
#

you can run multiple hashing programs and mining programs on one gpu

green kestrel
#

then that program (the firmware) accepts shaders

#

pixel, vertex and compute shaders

delicate shore
#

I will just keep my laptop on 24*7 for mining ig weirdsip

#

It's a Mac 2015

#

I think it can handle it

green kestrel
#

most hosting have terms of use against using them for mining

delicate shore
#

o

green kestrel
#

its damaging to the hardware in the long term on dedicated servers

delicate shore
#

oh

green kestrel
#

and disruptive to vps

#

theres a reason that graphics cards that have been used for mining are worth tons less second hand

delicate shore
#

ok

#

Thanks

green kestrel
#

np

#

if you want to do it on home hardware, feel free, but be aware it does tax the gpu to the point that it can fail earlier

#

as gpu's arent designed to run at 100% all the time, like a cpu is

delicate shore
#

I won't keep it on 24*7

#

I use laptop for like 13 hours a day

#

I will keep it on during that

green kestrel
#

last time i ran a laptop at full pelt 13 hours a day for months, it died ๐Ÿ˜›

blissful coral
#

lmao

#

That's too much

green kestrel
#

i killed the battery, the wifi module, and the motherboard

delicate shore
green kestrel
#

laptops arent designed for long periods of use like that

delicate shore
#

as soon as I unplug the charger my MAC shut downs

#

??

blissful coral
#

what

green kestrel
#

@feral lantern my id is 1

#

1!

#

๐Ÿ˜„

blissful coral
#

I have the ID 2

solemn latch
#

id 2 op

#

what about id 3

green kestrel
#

PGamerX is 3

blissful coral
#

wait ima try to fetch user with the ID 1

#

LMAO

green kestrel
#

@daring fjord

blissful coral
#

sad

#

@plush plover

#

Prob deleted use

#

user

green kestrel
#

its a malformed id

solemn latch
#

ids have timestamps

blissful coral
#

??

green kestrel
#

snowflakes have a certain format, where certain bits must be set

#

you can tell what region and what time and date a snowflake id was created from its value

blissful coral
#

YEAH

#

Yeah(

delicate shore
#

:bruh:

blissful coral
#

IDs are bitfields right?

green kestrel
#

hmmm, anyone else noticed that then

#

discord is randomly rejecting non-built-in-emojis

blissful coral
#

Please don't randomly add people @feral lantern

green kestrel
#

:/

delicate shore
#

how does uh
Discord recognise it's token when we put it on github

green kestrel
#

they have a format too @delicate shore

#

and they have an agreement with discord to examine all commits for that regex

delicate shore
#

oh ok

green kestrel
solemn latch
#

thats terrifying

#

one billion leaked tokens from "Devs"

green kestrel
#

They scan for tokens from Atlassian, Dropbox, Discord, Proctorio, and Pulumi

solemn leaf
#

I mean

#

are they helping developers

#

or abusing them

#

wait nvm

#

that was stupid

#

dont answer

delicate shore
#

I-

fluid basin
#

which is why making public repos is bad with credentials

#

and there isn't really proper training/tutorials on how to not commit sensitive info

solemn leaf
#

.gitignore
config.json
*config.json

#

welcoem

#

just saved your asses

mellow kelp
#

+github secrets

#

.env

grizzled raven
#

env.txt

fluid basin
#

and the thing is

#

those bots scan commit history too

fluid basin
solemn leaf
#

if you commit your token just regen it

mellow kelp
#

ezpz

fluid basin
#

and even if you wiped commit history, if you can get the commit ID you still can go back to it

solemn leaf
#

ive committed liek 20 tokens so far

fluid basin
#

well people think they "deleted" their secrets and tokens

#

ยฏ_(ใƒ„)_/ยฏ

solemn leaf
#

I need soem help with creating messages api

#

Anyone know it

crimson vapor
#

know what?

solemn leaf
#

I need help with stuff

crimson vapor
#

yeah, with what?

solemn leaf
#

never mind I think I got it?

solemn leaf
crimson vapor
#

you set the content type to "formdata/multipart" iirc then send a FormData

solemn leaf
#

I meant liek

#

bcs Im getting this

#
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'name' of undefined
#
form.append("file", await getBuf(options.attachments.file), options.attachments.name);
#
{
  content: 'Pong',
  tts: true,
  attachments: {
    file: 'https://tenor.com/view/sad-cute-anime-pillow-hugs-gif-17231623',
    name: 'file.gif'
  },
  embeds: { title: 'Ping?', description: 'Pong!' },
  reference: '810729619967049729'
}
crimson vapor
#

attachments should be an array iirc but idk

solemn leaf
#

do they have to be?

#

Can you help me with this thou

crimson vapor
#

what are you attempting to do?

solemn leaf
#

send an attachment

crimson vapor
#

a link or FormData?

solemn leaf
#

FormData

#

I need help with it

#

I already got the buffer . stream

crimson vapor
#

it takes a buffer

solemn leaf
#

what

crimson vapor
#

do you use form-data?

solemn leaf
#
(node:10720) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'name' of undefined
    at FormData._getContentType (C:\Users\Owner\Desktop\jscord\node_modules\form-data\lib\form_data.js:249:29)
    at FormData._multiPartHeader (C:\Users\Owner\Desktop\jscord\node_modules\form-data\lib\form_data.js:178:26)
    at FormData.append (C:\Users\Owner\Desktop\jscord\node_modules\form-data\lib\form_data.js:70:21)
    at createFormMessage (C:\Users\Owner\Desktop\jscord\jscord\src\utils\resolve.js:79:10)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async Object.createMessage (C:\Users\Owner\Desktop\jscord\jscord\src\utils\resolve.js:37:22)
    at async Client.<anonymous> (C:\Users\Owner\Desktop\jscord\index.js:13:13)
#

Please don;t think me as stupid

crimson vapor
solemn leaf
#

?

crimson vapor
#

attachments can't be undefined

solemn leaf
#
async function createFormMessage(options = {}) {
    console.log(options)
    const form = new FormData();
    form.append("content", options.content);
    form.append("nonce", makeid(12));
    form.append("tts", options.tts.toString());
    form.append("file", await getBuf(options.attachments.file), options.attachments.name || "file");
    form.append("payload_json", JSON.stringify({ "embed": options.embeds, "message_reference": { message_id: options.reference || null }, }), { contentType: "application/json" });

    return {
        headers: {
            "Content-Type": "multipart/form-data"
        },
        body: form
    };
}
crimson vapor
#

since file didn't error

solemn leaf
#
const fetch = require("node-fetch"), fs = require("fs");

module.exports = {
    getBuf: async function (path) {
        var buf;
        if (path.startsWith("http")) {
            const response = await fetch(path), content = response.headers.get("content-type");
            if (content && content.startsWith("image/")) {
                buf = response.buffer();
            }
        } else if (fs.existsSync(path)) buf = fs.readFileSync(path);
        return buf;
    }
}
#

Is somethign that Im doing wrong in any of these

crimson vapor
#

umm

solemn leaf
#

Now you got the scope

#

soo

crimson vapor
solemn leaf
#

what

#

done still didnt work

crimson vapor
#

hmm

solemn leaf
near stratus
#

How do I put ` in json ?

pale vessel
solemn leaf
#

oh pls no

#

@pale vessel you heree I need helps with form dats

near stratus
#

SyntaxError: /app/res/commands/resource/helpmessage.json: Unexpected token ` in JSON at position 229

pale vessel
#

you can't, it's not part of the JSON specification

pale vessel
#

can you show the full line?

near stratus
# pale vessel can you show the full line?
{
    "content": "Take a look\n\nMy prefix for this server is  `.` \n\nHere are my commands catagories:\n\n**๏ฟฝ ANIMME\n`.help anime`\n\n๏ฟฝ MANGA** aka **COMIC\n`.help manga`\nn\nโšช MEMES\n\`help  memes` \n\n๏ฟฝ PET\n`.help pets`\n\nโšซ  IMAGES\n`.help images`\n\n๏ฟฝSEARCH\n`.help search`\n\n๏ฟฝ MAII NTENANCE\n`.help maintenance`\n\n๐Ÿ”ต MODERATION\n`.help moderation`\n\n๐Ÿ”ด OTHERS\n`.help others`\n\nโ™ฅ๏ธ  NSFW** aka  ๐Ÿ˜ˆ\n`.help nsfw`"
}
pale vessel
#

that looks fine

#

are you sure it's not somewhere else?

near stratus
#

but

SyntaxError: /app/res/commands/resource/helpmessage.json: Unexpected token ` in JSON at position 229

Imma google what's in pos 229

icy skiff
#

Why don't you use ' instead of `

pale vessel
#

i thought that was the error, but it's not

solemn leaf
#

Flaze

icy skiff
icy skiff
near stratus
pale vessel
#

can you bin the file?

near stratus
#

'poop' and poop

near stratus
icy skiff
#

Oh that's what u r aiming for

#

Got it

pale vessel
icy skiff
#

My guess is that the problem lies on the way you are splitting the string lines maybe

pale vessel
#

can you bin the file?

heady gazelle
#

does top.gg have an api where I can GET data on certain bots

pale vessel
#

yes

icy skiff
#

Can you test replacing the ` for ' just to see if the problem really lies on the '

heady gazelle
#

where is it

#

I canโ€™t find it

pale vessel
heady gazelle
#

thank

#

how long does it take to update

near stratus
#

oh f
I figured it out now

#

sorry for disturbing

icy skiff
#

What was it

#

Im curious

near stratus
#

I'll show it

near stratus
#
{
    "content": "Take a look\n\nMy prefix for this server is  `.` \n\nHere are my commands catagories:\n\n**๏ฟฝ ANIMME\n`.help anime`\n\n๏ฟฝ MANGA** aka **COMIC\n`.help manga`\nn\nโšช MEMES\n\`help  memes` \n\n๏ฟฝ PET\n`.help pets`\n\nโšซ  IMAGES\n`.help images`\n\n๏ฟฝSEARCH\n`.help search`\n\n๏ฟฝ MAII NTENANCE\n`.help maintenance`\n\n๐Ÿ”ต MODERATION\n`.help moderation`\n\n๐Ÿ”ด OTHERS\n`.help others`\n\nโ™ฅ๏ธ  NSFW** aka  ||PORN|| ๐Ÿ˜ˆ\n`.help nsfw`"
}
``` This dosen't work but ```json
{
    "content": "Take a look\n\nMy prefix for this server is  `.` \n\nHere are my commands catagories:\n\n**๏ฟฝ ANIMME\n`.help anime`\n\n๏ฟฝ MANGA** aka **COMIC\n`.help manga`\nn\nโšช MEMES\n\`help  memes` \n\n๏ฟฝ PET\n`.help pets`\n\nโšซ  IMAGES\n`.help images`\n\n๏ฟฝSEARCH\n`.help search`\n\n๏ฟฝ MAII NTENANCE\n`.help maintenance`\n\n๐Ÿ”ต MODERATION\n`.help moderation`\n\n๐Ÿ”ด OTHERS\n`.help others`\n\nโ™ฅ๏ธ  NSFW** aka  ||PORN|| ๐Ÿ˜ˆ\n`.help nsfw` "
}
``` this works
icy skiff
#

I never saw that before

#

Interesting

near stratus
#

IKR

icy skiff
#

Good u got it resolved

near stratus
#

my brain went numb now

icy skiff
#

Thx for the new info

heady gazelle
#

does the api let me get votes too or no

pale vessel
#

ye

#

or if you mean users

opal plank
pale vessel
#

there's another endpoint

opal plank
#

past that you need to use webhooks and manually sotre votes

heady gazelle
opal plank
#

nono

#

not voteCOUNt

#

ALL users who voted

heady gazelle
#

yeah Iโ€™m looking for vote count

opal plank
#

then you can use what flaz sent

heady gazelle
#

monthlyPoints?

#

represents monthly ye

#

how long does it take the api to update

pale vessel
#

like instantly last time I tested it

heady gazelle
#

an interval for 10m should be fine then ye

earnest phoenix
pale vessel
#

yeah, I posted my server stats and refreshed the endpoint and it's already updated

heady gazelle
#

oh damn lul

#

thank

#

it doesnโ€™t have to be my bot correct?

pale vessel
#

correct

heady gazelle
#

alr

#

wait... i deleted my bot off top.gg do i need an application for the api key?

opal plank
#

@heady gazelle you do

heady gazelle
#

oh ffs

opal plank
#

you cant use top gg's api without an approved bot

heady gazelle
#

erm

pale vessel
#

why not

heady gazelle
#

is there any way i can get my old bot added back then lol

#

or do i need to be added to a team

opal plank
#

ask the owners, you need a valid approved bot to use the api

#

cuz of the token

pale vessel
#

unless he can't access the webhook section for unapproved bot

heady gazelle
#

apparenlty i cannot

opal plank
#

you nned a token to connect

pale vessel
#

oh

opal plank
#

tokens wont work without it being approved

heady gazelle
#

is there any special conditions for it? or do i need to be added to a team to interact w/ the api

opal plank
#

i need to get back to detritus

heady gazelle
#

ye alr

#

i thought i didnt need an application for it so i just deleted mine lul

solemn leaf
#

Erwin

opal plank
#

wusup

solemn leaf
#
(node:3200) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'name' of undefined
    at FormData._getContentType (C:\Users\Owner\Desktop\jscord\node_modules\form-data\lib\form_data.js:249:29)
    at FormData._multiPartHeader (C:\Users\Owner\Desktop\jscord\node_modules\form-data\lib\form_data.js:178:26)
    at FormData.append (C:\Users\Owner\Desktop\jscord\node_modules\form-data\lib\form_data.js:70:21)
    at createFormMessage (C:\Users\Owner\Desktop\jscord\jscord\src\utils\resolve.js:79:10)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async Object.createMessage (C:\Users\Owner\Desktop\jscord\jscord\src\utils\resolve.js:37:22)
    at async Client.<anonymous> (C:\Users\Owner\Desktop\jscord\index.js:13:13)

https://sourceb.in/N71FdMydg3 (error emits from line 7 on this paste)

#

can you help me with this

#

Ive been trying for hours

opal plank
#

either force options.attachment or do nullilsh

solemn leaf
#

what

opal plank
#


async function createFormMessage({
attachments: { name: string, file: any } 
}) {
#

either do this to force users to pass attachments

#
  form.append("file", await getBuf(options.attachments?.file), options.attachments?.name ?? 'temp_file' || "file");
#

or this

solemn leaf
#

Im not using ts

opal plank
#

then the second option

#

thats vnilla js

#

should probably use ts btw

#

for proper code

solemn leaf
#

Second errors

#

What does ?? do

opal plank
#

update node version

#

that just checks if the resul is falsey

solemn leaf
#

Im on 14

opal plank
#

if it is, it sets it to the next item

solemn leaf
#

okay

#
form.append("file", await getBuf(options.attachments?.file), options.attachments?.name ?? ("temp_file" || "file"));
#

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'name' of undefined

opal plank
#

that ?? is the equivalent of that

#

also u butchered my code

#

thats not what i sent

solemn leaf
#

?

#

It said it was missing ) after argu list

opal plank
#

("temp_file" || "file"));

#

actually

#

does node 14 even have conditional chaining?

#

i think it might, but that'll give users errors

#

just check if attachments is there

#

if it isnt, set it to something

#

or throw if theres noa ttachments

solemn leaf
#

yes it does

opal plank
#

there you have it then

solemn leaf
#

?

#

its bcs you did the or

opal plank
#

i didnt do the or

#

you did

#

i copied ur code

solemn leaf
#

yeah I se enow

#

still undefined

opal plank
#

also remember

#

options = {}

#

you aren not checking at all

solemn leaf
#

the user doesnt call this btw

#

I do

opal plank
#

you should make some defaults

solemn leaf
#

I dont need to

opal plank
#

attach a debugger to your code too

solemn leaf
#

because Im sending it

opal plank
#

instead of console logging

solemn leaf
#

I dont know how to debug honestly

opal plank
#

console logging is bad in cases like urs

#

use debugger instead so you have real time variables and locals

solemn leaf
#

imma do this tmr

opal plank
#

well imma go back to code in detritus

solemn leaf
#

you have fun

#

changing 10 lines of code

#

on all of your files

opal plank
#

if that was only it lmao

#

so worth it though

solemn leaf
#

uh writing my own lib

#

unless you want me to copy the code sure

wind berry
#

@halcyon kite

do this
} else {
do this }
restive furnace
#

what

pale vessel
restive furnace
#

that else in your code will be never executed

#

(probably)

#

unless you're doing ```js
if (num = 0)
{

}
else
{
// in this case else will be ran
}```

wind berry
cinder patio
#

I had a stroke reading that

crude light
#

i know its probably illegal to ask here

#

but.........

#

does anyone know how to use the ||discordbotlist ||api

restive furnace
#

and thats kinda false

#

if the variable is 0 then it will execute the else

#

otherwise the if

#

and i was assigning num to 0, so if was never executed

drowsy epoch
#

does that apply to heroku lmao

pale vessel
#

Heroku is fine

#

Used it for more than a year, no problems but it's not enough when you gain more guilds and have to restart constantly

#

I linked a card

earnest phoenix
#

550*

eternal osprey
#

hey guys

#
  const filter4 = m => m.content.startsWith('+');```how do i filter this also on message.author.id?
summer torrent
eternal osprey
summer torrent
#

yeah

eternal osprey
#

thanks

#

okay it didn't work

#
onst filter4 = m => m.content.startsWith('+') && message.author.id == targetMemberd.id;``` this sadly takes all messages
summer torrent
#

use m instead of message

eternal osprey
#

let collected = await message.channel.awaitMessages(filter4, { max: 1, time: 15000, errors: ['time'] })

#

this should also be m instead of message

#

so m.channel.await right?

summer torrent
#

nope

eternal osprey
#

ah okay

summer torrent
#

m is message which collected by collector

eternal osprey
#
 let m = await message.channel.send(targetMemberd + "What pokemon do you want to use against: " + found.name + "?. Only input your pokemon-name, starting with +. Example: ``+Charizard``.")
                    const filter4 = m => m.content.startsWith('+') && m.author.id == targetMemberd.id;
                    let collected = await message.channel.awaitMessages(filter4, { max: 1, time: 15000, errors: ['time'] })```i think i got it, i will test it out!
eternal osprey
eternal osprey
#

i could literally write anything, even without the +

#

@summer torrent

summer torrent
eternal osprey
#

yeah me too.

#

have no clue what is wrong tbh

#

do you know what is wrong by any chance?

zenith ruin
#

Hai

fresh verge
#

I am assuming I have to download an express module since I have downloaded the ones that were said on the website, but it says cannot find module 'express'.

zenith ruin
digital kiln
#

@zenith ruin <style> </style>

viral iris
#

can i convert gif to canvas buffer?

const buf = canvas.toBuffer('image/gif')
console.log(buf)//undefined
near stratus
zenith ruin
#

thanks

solemn fox
#

biลŸey sorucam ben bot kodluyorum iรงine baya komut girdim ama รงalฤฑลŸtฤฑrmaya รงalฤฑลŸฤฑnca action diye bir bรถlรผmde sฤฑkฤฑntฤฑ รงฤฑkartฤฑyo

earnest phoenix
#

I need advices

#

It's for web development

#

But idm what's the best looking thing

pale vessel
earnest phoenix
#

Either

#

I put like

#

5-10 blog posts in index page

#

and a "View all" button

#

to view all blog posts

#

or i put the same but with the ability to switch pages on index

pale vessel
#

so instead of view all, you can go to next page?

earnest phoenix
#

but also view all

#

both

#

view all and next page

pale vessel
#

what's the view all for though

deft tundra
#

yall i need help with something

slender thistle
#

-ask2ask

gilded plankBOT
#

Don't ask to ask.
Just ask your question, it wastes time if you say "i need help" or "can someone help me?" instead of just saying what the problem is. Save your time and other people's time and just ask the question.

Please read https://dontasktoask.com/ for an explanation on why this is an issue.

deft tundra
#

wtf is this

pale vessel
deft tundra
#

anways

earnest phoenix
deft tundra
earnest phoenix
#

but what's best then, view all or next page

pale vessel
#

yea if you gonna add "next page", just remove "view all"

deft tundra
#

im

#

confusion

pale vessel
earnest phoenix
#

/blog/blog-post-slug

pale vessel
#

o

lament rock
#

Look at your library's reaction add event and then it's just regular logic

pale vessel
#

is the whole website the blog itself?

earnest phoenix
#

not really

pale vessel
#

hrm

earnest phoenix
pale vessel
#

ah

earnest phoenix
#

That's current view

pale vessel
#

the index should only be for last 5-10 blog posts then

#

and then you can have "view all" that redirects the user to the listing

earnest phoenix
#

Aight

#

and for the listings

#

should i put like

#

Date - Title

#

or like now

pale vessel
#

now

#

you can put the date in the post itself ig

#

if you still want to put it, put it below the title at least

earnest phoenix
#

ight thanks, will do everything

earnest phoenix
#

oh and @pale vessel

#

should i make pages on the view all

#

to not have people to scroll forever

#

but like 20-30 per page

pale vessel
#

yeah

#

paginate them

earnest phoenix
#

``` { name: 'โ™ชNow playingโ™ช', value: ([**${song.title}**](${song.url})), inline: true },

#

not working

pale vessel
#

Why not?

earnest phoenix
#

weit

#

``` author: 'โ™ชNow playingโ™ช', value: ([**${track.title}**](${track.url})), inline: true },

#
2021-02-15T11:55:28.710969+00:00 app[worker.1]:     });
2021-02-15T11:55:28.710969+00:00 app[worker.1]:     ^
2021-02-15T11:55:28.710970+00:00 app[worker.1]: 
2021-02-15T11:55:28.710970+00:00 app[worker.1]: SyntaxError: Unexpected token '}'
#

@pale vessel ^^

pale vessel
#

show your embed code

earnest phoenix
#

    if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);

    if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);

    const track = await client.player.nowPlaying(message);
    const filters = [];

    Object.keys(client.player.getQueue(message).filters).forEach((filterName) => {
        if (client.player.getQueue(message).filters[filterName]) filters.push(filterName);
    });

    message.channel.send({
        embed: {
            color: 'AQUA',
            author: 'โ™ชNow playingโ™ช', value: (`[**${track.title}**](${track.url})`), inline: true },
            footer: { text: 'HAPPY' },
            fields: [
                { name: 'Channel', value: track.author, inline: true },
                { name: 'Requested by', value: track.requestedBy.username, inline: true },
                { name: 'From playlist', value: track.fromPlaylist ? 'Yes' : 'No', inline: true },

                { name: 'Views', value: track.views, inline: true },
                { name: 'Duration', value: track.duration, inline: true },
                { name: 'Filters activated', value: filters.length, inline: true },

                { name: 'Progress bar', value: client.player.createProgressBar(message, { timecodes: true }), inline: true }
            ],
            thumbnail: { url: track.thumbnail },
            timestamp: new Date(),
        },
    });

};```
earnest phoenix
pale vessel
#

It shouldn't be there, you probably took it from a field

earnest phoenix
#

I want to take that

earnest phoenix
pale vessel
#

I don't think you want that as the author

#

That should be inside the fields

earnest phoenix
#

Is it that horrible to send embeds on JS?!

misty sigil
#

can be

unkempt ocean
#

I'm using this way, looks more clean at least

pale vessel
#

Erwin: NO NO NO THAT'S SLOWER!!!!!!!

umbral zealot
#

obviously it would be a lot more lines if it were the same embed as what was shown - which is just about the largest embed you can send in the first place

misty sigil
#

by what?

pale vessel
#

0.00000003044344 nanoseconds

crimson vapor
#

so small it only matters at > 50k guilds on one process basically

earnest phoenix
#

convert*

#

title+url

#

in

#

    if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);

    if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);

    const track = await client.player.nowPlaying(message);
    const filters = [];

    Object.keys(client.player.getQueue(message).filters).forEach((filterName) => {
        if (client.player.getQueue(message).filters[filterName]) filters.push(filterName);
    });

    message.channel.send({
        embed: {
            color: 'AQUA',
            author: { name: track.title},
            footer: { text: 'HAPPY' },
            fields: [
                { name: 'Channel', value: track.author, inline: true },
                { name: 'Requested by', value: track.requestedBy.username, inline: true },
                { name: 'From playlist', value: track.fromPlaylist ? 'Yes' : 'No', inline: true },

                { name: 'Views', value: track.views, inline: true },
                { name: 'Duration', value: track.duration, inline: true },
                { name: 'Filters activated', value: filters.length, inline: true },

                { name: 'Progress bar', value: client.player.createProgressBar(message, { timecodes: true }), inline: true }
            ],
            thumbnail: { url: track.thumbnail },
            timestamp: new Date(),
        },
    });

};```
solemn fox
pale vessel
quartz kindle
#

yes, split should be faster

solemn fox
#

Can you help me get an error like this?

slender wagon
#

does sharding require alot of server space?

quartz kindle
quartz kindle
solemn fox
#

That's the head

quartz kindle
#

weird

#

do console.log(Discord) after require("discord.js")

unkempt ocean
#

wait

#

no

pale vessel
#

Wh

#

no

solemn fox
analog tinsel
#

WEOW

pale vessel
earnest phoenix
slender wagon
#

so I've noticed something with my bot, when i run a command that sends canvas pics on another server it just sends it within a few miliseconds but when i do it on another server it takes like 2 minutes and then after that you can use the rank command all the time without any problem

#

it seems like i have to wake up my bot

#

does this have to do with the vps? or is it just something that has to do with my db

earnest phoenix
#

restart and retry

quartz kindle
#

does your rank command use guild.members.fetch()?

slender wagon
#

i think it does

quartz kindle
#

then thats why

slender wagon
#

i have to double check later

#

do i have to use users instead?

quartz kindle
#

no

slender wagon
#

is there anything i can do?

quartz kindle
#

how many users do you display in you rank command?

slender wagon
#

leaderboard 5

#

rank 1

quartz kindle
#

so fetch only those users

slender wagon
#

but it takes longer for the canvas one rank command

#

and the users are stored on the db

quartz kindle
#

if you use .fetch() instead of .fetch(id) it doesnt matter

#

.fetch() fetches ALL in the guild

slender wagon
#

oh i gotta have a look into that

#

thanks, it is getting very annoying

astral nova
#

My bot is returning an API error when performing moderate actions where it has auth2 for moderators. How can I solve this?

quartz kindle
#

wat

#

and wat

astral nova
quartz kindle
#

presences have nothing to do with moderation lol

#

first of all, what error are you getting?

#

what moderate action?

#

why does it need oauth2?

stone ermine
#

Is there a recommended way to store and use options that servers have set, such as permitted roles? Because right now the idea would be to just create another table in the database, then fetch and compare on every call, and that just feels like it'd bog down quickly.

quartz kindle
#

database + cache

astral nova
# quartz kindle first of all, what error are you getting?

Oh, I realized the mistake. The server needs AUTH2 to perform the moderating actions. If the user does not own Auth2, is there any way I can send a message warning them? (UnhandledPromiseRejectionWarning: DiscordAPIError: Two factor is required for this operation)

distant bramble
#

Hmm the bot need 2fa to do that

#

If u meant that's the use missing 2fa i dont think so

#

Thats more like the bot needs 2fa

astral nova
latent willow
#

You as the application owner need to enable 2fa for your account

quartz kindle
#

2fa is not oauth2

#

2fa is 2 factor authentication

#

autenticaรงao de 2 fatores

#

you need to enable 2fa in your discord account

astral nova
#

Oh, so I put 2FA in my account to be in the bot?

quartz kindle
#

yes

astral nova
#

Oh, thanks bro.

#

โค๏ธ

#

And there's a way I can put an error message? @quartz kindle

quartz kindle
#

you can catch it

astral nova
quartz kindle
#

you can catch any api request

#

.ban().catch()
.kick().catch()
etc

astral nova
#
    return message.channel.send(`:errado: | ${message.author}, a mistake happened, try again later.`);
  }```
astral nova
quartz kindle
#

you can also use try {} catch {} but you need to await

#

try { await .ban() }

astral nova
#

message.channel.bulkDelete(fetched).catch(message.reply(`Error!`))

quartz kindle
#

with await

astral nova
astral nova
waxen scroll
#

like 1663ms of response time

#

or this one

crimson vapor
#

how do you do your ping?

#

assuming you send a message then do subtraction, it would be because of longer REST times, if you use message timestamps, that could be an inconsistency between sending and discord receiving

waxen scroll
#

hly s*** the bot crashed

crimson vapor
#

poggers

cinder patio
#

Let's say I have a 2D coordinate object. What would be the best way to store them, in order to get O(1) lookup and a simple data structure (no nested arrays / maps)

#

^ for js. I saw a few solutions in other languages which cannot be done in js

crimson vapor
#

is that possible?

umbral zealot
#

why not nested arrays though, those are fine for this

#

coord[x][y]

waxen scroll
crimson vapor
#

wouldn't it be coord[x-1][y-1] depending on how you do your code?

crimson vapor
waxen scroll
#

yep

umbral zealot
#

the point is that a 2D array is perfectly fine in JS

crimson vapor
#

it seems to me it would be more efficient to do a nested map

umbral zealot
#

no, maps are slower than arrays

crimson vapor
#

Coords.get(x).get(y)

#

they are?

#

ah

#

I never knew that

#

I thought maps and arrays were the same speed

umbral zealot
#

I mean sure, alternatively you can use something like ```json
{
'x-y': value,
...
}

But then you can't do things like looping over only one row, for example
cinder patio
#

yeah a nested array is the best option at a first glance, but I'm wondering if there's another solution, which uses less memory / less complex data structure

#

I don't need to loop through anything though, just lookup

crimson vapor
#

you could loop thought an object like that right? it would just be some ugly code

umbral zealot
#

A 2D array is not "complex", and you can't save memory by using a "simpler" structure.

#

the data size will be essentially the same

#

Unless you're doing something like a 100k+ rows/columns, all this is really just pointless optimization anyway. Use a 2D array it's the best for what you're doing.

crimson vapor
#

Evie do you have a degree in cs or are you self taught?

umbral zealot
#

I've been doing development full time professionally for 5 years, but 20 years before that as a hobby.

#

In other words, I have more development experience than most people here have life experience ๐Ÿ˜„

crimson vapor
#

bruh

#

weird flex

umbral zealot
#

But to answer your question: no diploma beyond high school, all self-taught with some work training in the last 5 years.

crimson vapor
#

poggers

#

same as Tim iirc

cinder patio
#

I'm just wondering if there's another solution, which uses only one map, for example. A 2D array is definitely a good way to do it

umbral zealot
#

I mean yeah sure you can use a simple object

cinder patio
#

(without turning the two numbers to a string)

umbral zealot
#

like I said, have the key be x-y or something

crimson vapor
#

ah

umbral zealot
#

Geeze, you like shooting yourself in the foot after moving the goal post don't you

#

stop having such unreasonable weird expectations.

crimson vapor
#

is there a function that takes 2 numbers and outputs a different number, that won't be outputed UNLESS you input the same numbers

#

in the same order*

umbral zealot
#

No, you can't store a 2-number pair as a key in a map for access, and if you could, it would be slower than a 2D array.

west agate
#

how do i make a economy system which works for different servers

umbral zealot
#

Just. Use. A. 2D. Array. That's the solution.

umbral zealot
crimson vapor
#

getting a 2D array would be O(2) or O(1)?

west agate
#

yeah

#

but i cant put more than 1 user into it

quartz kindle
#

whats the use case for the coordinates?

umbral zealot
#

Or just key to the guildid-userid then instead of just the guild ID

#

ยฏ_(ใƒ„)_/ยฏ

smoky herald
#

can client.users.fetch("user_ID") really access users even outside its own shard? I thought this part will break with implemented sharding but it seems to work still the same AsuShock

crimson vapor
#

yes

#

it should

quartz kindle
#

it works even if you dont share guilds

crimson vapor
#

fetch uses the api, which isn't locked to a shard

smoky herald
#

ohh, great, thanks for clarifying ๐Ÿ‘Œ

cinder stratus
#

https://haste.ntmnathan.com/epunohafow.sql error I previously had an newer version of node so I downgraded and then deleted my node_modules folder and package-lock.json file thw I tried npm install then I tried to install all the package using npm install but it throwed error

crimson vapor
quartz kindle
#

you shouldnt be using sudo for npm

#

try installing without sudo

crimson vapor
#

the error will still happen probably, npm doesn't have permissions to write in that dir iirc

cinder stratus
crimson vapor
#

hmm

quartz kindle
#

A rule of thumb as I have learned is to never run npm install with sudo. That creates items with root being the owner as opposed to your username.

cinder stratus
#

it worked without sudo

#

what does that mean that error

quartz kindle
willow mirage
cinder patio
#

advertising much

quartz kindle
#

well... the english could improve

willow mirage
#

lmaoo

outer perch
#

opinion question

lyric mountain
willow mirage
#

well

outer perch
lyric mountain
#

what?

#

do you mean "DIY functions VS libraries"?

lyric mountain
#

depends on what you're doing

willow mirage
#

idk, but poeple don't use message.mentions.members stuff, I prefere to convert string to ID

cinder patio
#

if it's something simple I'd say DIY

outer perch
#

if I can do them myself, I'd rather choose DIY

lyric mountain
#

it really boils down to what you're trying to do

#

curse words filter? library
is thirteen? diy

outer perch
#

example: Tim told me a way to remove VIP status from DB, using setInterval() each day, to check if any VIP term ends in 24h or less, and then timeout() to remove everything VIP from a certain user

crimson vapor
#

@lyric mountain if something is 2 operations, is it O(1) or O(2)?

outer perch
#

I actually liked the idea and used it

crimson vapor
#

so O(1)

lyric mountain
#

depends

#

what 2 operations?

crimson vapor
#

lets say 2d array

outer perch
#

but I have node-schedule already installed, I could use node-schedule for that

outer perch
crimson vapor
#

arr[0][0]

#

2 operations

#

O(1)

lyric mountain
crimson vapor
#

even if its 2 operations?

lyric mountain
#

yes

#

because it's a constant access operation

#

no lookup

outer perch
crimson vapor
#

so O(1) is actually O(k) k being any constant integer

#

well

outer perch
#

guess I named it badly

crimson vapor
#

other way around

#

O(k) translates to O(1)

lyric mountain
#

O(1) means "independent of collection size, it'll be constantly 1:1 operation"

crimson vapor
#

ah

#

that makes more sense

lyric mountain
#

O(n) means "times is equal to collection size"

lyric mountain
#

setInterval has the drawback of resetting the timer on each shutdown

#

cron is based on calendar/clock

outer perch
crimson vapor
#

for my mutes I have a 5 minute interval

#

realistcially if its only doing 3 operations thats not blocking

#

I should be moving it off to a different process using worker threads tho

outer perch
crimson vapor
#
    this.muteInterval = setInterval(() => {
      this.worker.db.guildDB.getMuteDocs().then(docs => {
        const now = new Date();
        for (const doc of docs) {
          const timestamp = new Date(doc.timestamp).getTime();
          if (timestamp < now.getTime()) setTimeout(this.unmute(doc.userID as any, doc.guildID as any, doc.timestamp), (timestamp - now.getTime()));
        }
      });
    }, 5 * 60 * 1000);```
outer perch
#

kinda confused on what that is

#

is it a cooldown to usethe command?

pale vessel
#

bro

outer perch
#

or it mutes for 5min.?

pale vessel
#

db request every second?

#

why

crimson vapor
#

shit

outer perch
crimson vapor
#

thats

#

umm

#

5 minutes

#

pretend