#development

1 messages · Page 1878 of 1

rose warren
#

Nitro scams going ham tonight

stray seal
#

Where…

lyric mountain
#

^

stray seal
#

Ty lol

#

How i apply for reviewer?

astral rivet
#

Hey @rose warren

lyric mountain
#

aaaaand he did it again

grim aspen
#

Lol

#

Oh come on

lyric mountain
#

nineth

astral rivet
#

¿¿

grim aspen
#

Tf what

astral rivet
#

What I do

lyric mountain
#

u don't need to fill any of those

grim aspen
#

What are you trying to do

#

Those aren’t usually required

astral rivet
lyric mountain
#

development doesn't start there tho

grim aspen
#

Those aren’t required

astral rivet
grim aspen
#

Oh no

lyric mountain
#

ha, forget about it

astral rivet
lyric mountain
#

you ain't going too far with music stuff anymore

grim aspen
#

What are you going to get the music bot from Spotify or YouTube?

astral rivet
lyric mountain
#

not only it is one of the HARDEST things to do but now you're basically running undercover

grim aspen
astral rivet
#

Can you help me to create a bot plz

grim aspen
#

I don’t do music bots

#

Idk

earnest phoenix
#

im bored what should i curse do in react

#

Never have I been so offended by something I 100% agree with

astral rivet
grim aspen
#

Huh?

#

Not sure I understood that

earnest phoenix
#

imma make a box shadow generator

lyric mountain
rose warren
#

Have you ever watched Kitboga?

earnest phoenix
boreal iron
#

huh, never heard that term before, tbh

#

don't forget I'm a old ass bitch

#

Mac

grim aspen
#

@earnest phoenix make something that would not make sense

rose warren
# boreal iron huh, never heard that term before, tbh

Kitboga is a Twitch streamer who calls up tech support scams and does improv to waste their time. It's really funny. Some of the calls last for hours over multiple days and get totally crazy. You can look him up on YouTube.

earnest phoenix
#

KuuHaKu knows why

boreal iron
#

Scaming scammers sounds funny tho

#

Like I got scammed with an invalid Windows server key a few minutes ago... Payed standard edition and the key can be activated for datacenter only. I mean wtf

earnest phoenix
#

the real question is why no archlinux

boreal iron
#

Because the software requires Windows

earnest phoenix
#

windows is haram

#

this comment was made by linux gang

quartz kindle
#

just finished installing ghostspectre's version of windows 10 on another pc

#

looking dope af

#

no defender, no store, no updates

#

500mb ram usage

earnest phoenix
#

who's ghostspectre

boreal iron
earnest phoenix
#

why would you run windows on a server

boreal iron
#

wtf

#

Because the software requires Windows

quartz kindle
boreal iron
#

Why else should I choose Windows as server...

boreal iron
#

I wonder dude, they already sent me a new key

#

I mean 9,99 isn't a bad price at all

#

Compared to like.. idk 189

quartz kindle
#

cheaper than the league of legends account i bought

#

:^)

boreal iron
#

lol

#

You damn cheater buying game accounts, I knew it

rose warren
quartz kindle
#

but nothing ever came close to that

rose warren
#

Lol

quartz kindle
#

i mean the guy is very boring

#

but the scammer is amazing

#

im in love with her

boreal iron
quartz kindle
#

shhh

#

arch gang is coming to make fun of you

#

hide

boreal iron
#

Isn't a arch an OS for clients?

quartz kindle
#

nop

#

i mean

#

its stupidly barebones

#

it doesnt even have a desktop when you install it as a client

earnest phoenix
#

switch to arch if you want the love of your life to kiss you uwuwhdsu89rhe insert copypasta text here

boreal iron
#

Never saw any supported server image by any provider I rented servers

quartz kindle
#

well, its the kind of thing you only use if you know what you're doing

#

therefore there is no support for it

boreal iron
quartz kindle
#

its like 5mb big

#

idk

#

never used it myself

lyric mountain
# earnest phoenix switch to arch if you want the love of your life to kiss you uwuwhdsu89rhe inser...

copypasta?

Active: Jax enters Evasion, a defensive stance, for up to 2 seconds, causing all basic attacks against him to miss. Jax also takes 25% reduced damage from all area of effect abilities. After 1 second, Jax can reactivate to end it immediately.

At the end of the duration, Jax stuns all nearby enemies for 1 second and deals physical damage to them, increased by 20% for each attack dodged, up to a 100% increase.

quartz kindle
#

it has nothing, you have to install everything you need

#

all the basic linux tools

#

etc

brittle oyster
#

i want to write a new line into a textarea using js, the problem is it doesn't work?
when i do: js textareaelem.innerText = 'blahblah\nnewline';
it will just write 'blahblah\nnewline' into the textarea instead of \n making a new line.

quartz kindle
#

rrrrrrright through the counterstrike!

lyric mountain
#

the arab version is better

boreal iron
#

Sounds even more complicated to get the right network drivers, etc. if you wanna run it as server.

#

Not any provider supports a KVM like console to manage your server if you fuck up your CLI.

quartz kindle
#

there are many vps-specific images depending on the hosting company

grim aspen
#

i'm thinking of making my bot hybrid

#

python and nodejs

lyric mountain
#

why

grim aspen
#

why not

#

i'm bored

lyric mountain
#

learn jsfuck

#

or uwulang

grim aspen
#

wtf

lyric mountain
#

there's also amoguslang

grim aspen
#

oh hell no

lyric mountain
#

among us (language)

grim aspen
#

that should not exist

lyric mountain
#

uwulang

#

jsfuck

quartz kindle
#

fuckjs

lyric mountain
#

hm, is it possible writing a bot entirely in sql?

tulip ledge
#

that's be funny

#

but how would u do that?

lyric mountain
#

like, sql is a turing complete lang isnt it?

boreal iron
#

Why not making things even more complicated than needed lol

tulip ledge
#

won't it be vulnerable to sql injection tho?

quartz kindle
#

from SO:

It turns out that SQL can be Turing Complete even without a true 'scripting' extension such as PL/SQL or PSM (which are designed to be true programming languages, so that's kinda cheating).

In this set of slides Andrew Gierth proves that with CTE and Windowing SQL is Turing Complete, by constructing a cyclic tag system, which has been proved to be Turing Complete. The CTE feature is the important part however -- it allows you to create named sub-expressions that can refer to themselves, and thereby recursively solve problems.

The interesting thing to note is that CTE was not really added to turn SQL into a programming language -- just to turn a declarative querying language into a more powerful declarative querying language. Sort of like in C++, whose templates turned out to be Turing complete even though they weren't intended to create a meta programming language.

Oh, the Mandelbrot set in SQL example is very impressive, as well :)

lyric mountain
grim aspen
#

That’s it. I’m making a bot on msDOS

simple stump
#

It returns 0 reactions

lyric mountain
#

do you have the reaction intent enabled on client?

boreal iron
#

Do you also use a calculator with letters only?

earnest phoenix
#

i have a question, do u still need a webhook to send something like this even through an actual bot? or can it be done just through the bot

lyric mountain
#

both can send embeds

earnest phoenix
#

i know, but do i need to have a webhook to send it through a bot

#

cuz i dont like webhooks

lyric mountain
#

...both webhooks and bots can send embeds

earnest phoenix
quartz kindle
#

if you mean the vote webhook, thats not a discord webhook

#

and yes you need it to receive votes

simple stump
tulip ledge
#

isn't a bot technically a webhook tho?

tawdry osprey
#

Everything is technically an api

sinful belfry
#

the webhook tells some other process that something has happened, by sending data over the internet

tulip ledge
#

yes I know

sinful belfry
#

so a bot isn't a webhook, but it can utilise webhooks

tulip ledge
#

but isn't a bot technically a webhook

#

oh ok

sinful belfry
#

but yeah many bots are moving over to slash commands so they can just receive webhooks from discord and respond to those

quartz kindle
tawdry osprey
#

Reject slash commands, embrace prefix commands.

shy turret
#

i cant think of a single database that isnt sql or nosql, besides json (which is not supposed to be used as a database) lmao, does anyone know a database that doesnt use sql or nosql?

shy turret
tulip ledge
tawdry osprey
shy turret
#

i dont- i just want to know if they exist

tawdry osprey
#

Graph databases (such as Neo4J)

rose warren
#

discord-db

tawdry osprey
#

discord-db is almost an abuse of discord

tulip ledge
#

pretty sure it can get u banned no?

tawdry osprey
#

Yeah

rose warren
#

I'm just kidding guys :^)

solemn latch
#

Time series databases typically isn't nosql or sql right?

tawdry osprey
sterile lantern
#
dba.connect(process.env.mongo, {
  useUnifiedTopology : true,
  useNewUrlParser: true,
  useFindAndModify: false
})

(node:1533) UnhandledPromiseRejectionWarning: MongoParseError: mongodb+srv URI cannot have port number

shy turret
sterile lantern
#

ah wait its bc i have a special character in the password

#

nvm

shy turret
#

well, yep cant think of a single db that isnt sql or nosql (besides json) lmao

tawdry osprey
#

So I've got an interesting question.
Currently I'm planning on self hosting a bot.
Do you think a 20mbit/s upload connection would be a limiting factor for a bot that only deal with messages?

#

I'm kinda doing a new chat filtering algo that's better than direct string matches.

shy turret
#

it's ok for a small bot probably

#

and a medium sized bot

tawdry osprey
#

Medium meaning about how many server?

shy turret
#

2.5k servers

#

minimum

#

aka you need to have 2 shards no matter what

tawdry osprey
#

Well, that exceed my expectations. That's nice to know.

blissful coral
#

kekw

shy turret
#

if you are running mee6 though- and have a web dashboard- maybe thats a bad idea

#

if you are running a website on your bot, make sure to have ddos prot

tawdry osprey
#

My new chat filter algo can handle processing upwards of 30,000 messages per second. :D
I can't wait to put it to the test and light up all the cores on my server.

shy turret
#

you can proxy the web under stuff like cloudflare

lyric mountain
blissful coral
#

Or just use a seperate process for web dash

shy turret
#

^

lyric mountain
#

unless you're dealing with heavy shit like 3d renderers and uploading giga files

tawdry osprey
#

Imagine using a web dashboard.
blaze

shy turret
#

wouldnt you consider discord a website dashboard

#

dashboard to chat /hj

tawdry osprey
#

Wouldn't be me. I take the KISS philosophy to heart.
Keep it Simple Stupid.

blissful coral
#

Imagine not using a web dash

shy turret
#

imagine using phpmyadmin

tawdry osprey
#

I'm thinking about it, and its pretty nice. No site to worry about

shy turret
#

cant be me

lyric mountain
#

discord is just a fancy terminal

shy turret
#

it's just a website

blissful coral
#

if you use phpmyadmin what are you doing

lyric mountain
#

bots are just apt softwares

solemn latch
#

It's just irc

blissful coral
#

discord is just a site in a exe

tawdry osprey
#

If you use php, what are you doing with your life

shy turret
#

it's called electronjs™️

shy turret
#

but you can use cf workers or something to host a nodejs process in cf i heard

blissful coral
#

You can

tawdry osprey
#

Load balance at the DNS level like a chad

#

KISS

solemn latch
#

100k free requests daily, $5 for every 10 million after

#

And the workers scale practically automagically

tawdry osprey
#

cloud bad >:c
Invest 10's of thousands of dollars into your own server infrastructure

#

:)

solemn latch
#

Aparently discord uses cf workers?

shy turret
#

ngl 10 mil for $5/m seems a little but its a lot

sterile lantern
#
 let data = tickets.findOneAndUpdate({
          Percentage: args[1],
        });
        data.save();```

okay so basically i want to update the `Percentage` string in my DB, I already found the ticket Id and it just needs to update the percentage of it, so how would i do so
tawdry osprey
#

What database are you using?

#

I see no SQL and im scared.

sterile lantern
#

oh wait i forgot the ticket id nvm

#

damn i miss the basic things

earnest phoenix
#

mongob ,sql,others

sterile lantern
lyric mountain
#

just a tip, don't store the percentage but a current/max relation

#

except if percentage is integer, then it's fine

tawdry osprey
#

store everything as binary blobs

sterile lantern
#

yeah percentage is an integer

#

wait so how exactly do i update a specific value

#

tickets.update doesnt work, or the one above

lyric mountain
#

the one above will probably search a value by Percentage

tawdry osprey
#

Are you using a library to abstract away the database calls?

tawdry osprey
#

oh lmao.
I've never seen mongo

lyric mountain
#

welcome to nosql shittery

sterile lantern
#

ohh alright

solemn latch
#

Should be the same with mongooose

lyric mountain
tawdry osprey
#

I've only written SQL statements by hand

sterile lantern
solemn latch
sterile lantern
solemn latch
#

You can do that

sterile lantern
#

So I just want that percentage to change to whatever I supply

#
const casea = await tickets.findOne({ "TicketID": args[0] }); ```
solemn latch
#

You can do it all in one call

sterile lantern
#

case.findOneAndUpdate("Percentage", args[1])

#

something like this? idk

#

well case.findOneAndUpdate wouldnt work actually

#

ooh wait i think ik what to do one sec

solemn latch
#

I didn't do caps dumb mobile

sterile lantern
#

yeah i was planning on doing that

#

tyy

#

worked:D

solemn latch
#

It also returns a promise with the updated doc if you need it in code

plain talon
#

Has anyone gotten

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2

While trying to connect a remote server to the db server?

#

Tried like 50,000 things and nothing is changing this error.

solemn latch
#

After 8 minutes? Or instantly

plain talon
#

instantly

#

but we have another server also separate that can connect just fine

#

i dont understand

lyric mountain
#

mysql is known for having ridiculous issues

plain talon
#

this is a fresh ubuntu vps

lyric mountain
#

especially with connections

solemn latch
#

Yeah main reason I moved everything off mysql

plain talon
#

e

lyric mountain
#

postgres is just a better mysql in every subject

plain talon
#

need to get my site up on this new dedi so we stop getting discord rate limit banned KEKWLaugh

#

but cant connect to mysql

solemn latch
#

A few good suggestions

plain talon
#

i believe we were binded to 0.0.0.0 but right now its binded to the servers ip from a SO suggestion

#

will get it back to 0.0.0.0

lyric mountain
#

btw, if you really want to continue with mysql, NEVER use VARCHAR(255)

#

use VARCHAR(191)

plain talon
#

we do

sterile lantern
#

okay so i also have this

const casea = await tickets.findOne({ "TicketID": args[0] });

how would i now make it send the percentage

lyric mountain
plain talon
#

yeah lol

lyric mountain
#

it basically corrupts the whole row, disconnects clients, ignore requests, etc

sterile lantern
#

wait maybe its just casea.Percentage, nvm

plain talon
#

I always have to set this in my applications boot

solemn latch
plain talon
#

otherwise I get errors

solemn latch
#

The findoneandupdate returns a promise with the new doc

plain talon
#

I don't know if this helps

sterile lantern
#

Hmm alr

plain talon
#

but from my site I get these 2 errors:

SQLSTATE[HY000] [2006] MySQL server has gone away
 (PDOException(code: 0): Packets out of order. Expected 0 received 1. Packet size=101 
lyric mountain
#

there are a lot of topics about that, just give it a search

#

it's guaranteed to error if you use surrogate pairs inside the string (as in, newer emojis)

#

and randomly errors with common data

#

it used to give me so much headache trying to find why stuff were failling seemingly at random

sterile lantern
#

okay let's say i have like 5 different tickets, how would i place them all in an embed with only the Ticket ID and User ID (there's also guild ID and other stuff associated with the data), and no, it isn't an array

tawdry osprey
#

what lib are you using for bots?

blissful coral
#

Then map them and call the .TicketID and .UserID when you do so?

#

Lib doesn't matter in this situation

tawdry osprey
#

It doesn't? I thought he was asking about placing them in an embed.

blissful coral
#

No

sterile lantern
#

well embed part i already have

#
            if(err) throw err;
            if(data.length == 0) ```
#

i assume it would be like

blissful coral
#

data.map(d => d.TicketID + ' ' + d.userID).join(' ')

sterile lantern
#

data.map isn't a function

blissful coral
#

do find() instead of findOne()

#

findOne doesn't return a array find() does

sterile lantern
#

okay but

#
      if(data) {
let array = data.map(d => d.TicketID + ' ' + d.UserID).join(' ')
let on = 0;
let content = "";
for (let v of array) {
   on++;
   if (on == 4) {
       on = 0;
        let abc = new Discord.MessageEmbed()
                    .setTitle(`Order Logs`)
                    .setDescription(
                        content
                    )
                    .setColor("BLUE")
                    .setFooter("Order Logs")
                message.channel.send(abc)
              
   } else {
      content = content + v + "\n";        
   }
}```
#

i want it so like

#

if there are 5+ orders,

#

make another embed and send

blissful coral
#

what the

#

Why are you doing a for loop

#

Remove the .join() if your going to do that

sterile lantern
#

o

solemn latch
#

Does mongoose return an object if it only finds one?
Will probably need to check for that too. The projection says it can return an object

blissful coral
#

I don't think so?

#

Maybe actually

#

I haven't really ever seen it

solemn latch
blissful coral
#

I usually check if its a array and set it if not anyways

sterile lantern
#

well now its not sending anything

blissful coral
#

if(!data.isArray()) data = [data]

#

And set it to a let

#

if you wanna check in case

solemn latch
#

Did you set data?

blissful coral
blissful coral
#

oops

#

edited

sterile lantern
#

oh that makes a lotmore sense

#

also im trying to make it

#

so if there are 4 values

#

like 4 tickets

#

then make a new embed, and put another 4

#

etc

blissful coral
#

I suggest just making a pagination

solemn latch
#

Can just do array.length for those checks

#

Tbh bots can now send 10 embeds right? Just always do one ticket per embed

blissful coral
#

in a single message?

solemn latch
#

Yeah

#

Was added in api v9
Same as webhooks

sterile lantern
#

multiple embeds would b better

blissful coral
sterile lantern
#

k wait so

#
let array = data.map(d => "Order ID: #" + d.TicketID + '\nUser: <@' + d.UserID + `>`)```
#

i edited it to this

#

now in the array if there are 4 of these values, make a new embed

#

or 5

#

well tbh

#

i think i can do 10 values

#

since the embed limit is like 2k characters i think

solemn latch
#

If you want to do multiple embeds, just map into embeds

sterile lantern
#

but idk how many embeds

#

id want

#

like it just depends on the values

solemn latch
#

One for each? Or just entirely depending?

sterile lantern
#

depending

#

one for each would be kinda weird

#

actually

#

yeah one for each would work i guess

solemn latch
#

You can always group into seperate with some checks, or whatever way you want

sterile lantern
#

hmm so how would i just make it send each order in an embed

#

rn its just

#
  let abc = new Discord.MessageEmbed()
                    .setTitle(`Order Logs`)
                    .setDescription(
                        array
                    )
                    .setColor("BLUE")
                    .setFooter("Order Logs")
                message.channel.send(abc)
    ```
proven lantern
#

put them all in fields

solemn latch
#

With your map you make each one its own embed, then send them in the same message

proven lantern
#

what happens when you put multiple embeds in the same message

#

sounds dangerous

lyric mountain
#

Nothing, it'll send up to 10 embeds at once

#

Like, in the same msg

solemn latch
#

Direct support was added awhile back for multiple embeds

#

Was in webhooks forever, finally bots can now too

proven lantern
#

webhooks were always needed

#

i cant wait to shut down my vpc

#

april 2022

lyric mountain
blissful coral
solemn latch
#

Maybe some rpc too, real private corn

blissful coral
#

Speaking of RPC

#

I wanna mess around with discord's RPC a bit more ngl

tawdry osprey
#

Korn?

solemn latch
#
let array = data.map(d => return new Discord.MessageEmbed()
.setTitle(`order logs`) 
.addField(thing, d.property)
)

Then just {embeds: array} for what your sending

sterile lantern
#
  if(data) {
let array = data.map(d => 
"**__Order ID: #__**" + d.TicketID + '\n**__User__**: <@' + d.UserID + `>\n` 
)
let string = "";
let on = 0
for(let d of array) {
on++;
if(on == 1) {
  on = 0;
        let abc = new Discord.MessageEmbed()
                    .setTitle(`Order Logs`)
                    .setDescription(
                        string
                    )
                    .setColor("BLUE")
                    .setFooter("Order Logs")
                message.channel.send(abc)
    
} else {
      string = string + d + "\n";        
   }
}```
#

this works

#

but it doesnt give

#

the description

#

like it sends two embeds without descriptions

wheat mesa
#

Because you’re never giving string a value other than an empty string

sterile lantern
#

like theres two orders and it sends two embeds, which its supposed to do

#

o

#

well im not too sure how to make string just one singular order

#

or well actually 5 orders

#

one singular order was just testing

#

so i want 5 orders to be the string

#

in the order that its mapped in

proven lantern
#

let string = "";

solemn latch
#

Your sending them as seperate messages which you probably don't want. Will get awfully close to the ratelimit

sterile lantern
#

rate limit?

#

ill just use setTimeout

proven lantern
#

are rate limits global or per guild?

wheat mesa
#

Global

proven lantern
#

oof

sterile lantern
wheat mesa
#

120 req per second iirc

solemn latch
#

In this case per channel

#

5 messages per 5s per channel

sterile lantern
#

huh

#

ill just have each embed send 3-4 seconds apart

#

that'll be fine right

#

considering popular bots send like 3 messages at once im pretty sure that sfine

solemn latch
#

Sure, but if the option exists to do one message why not use it

sterile lantern
#

alr

#

so how would i have

#

5 out of x orders

#

be the string content

#

like maximum 5

#

so if there's 3 orders, string would be the 3 orders

solemn latch
#

So you want all of them to show in the description?
Then just use array.join() in the description

sterile lantern
#

no no, not all of them

#

only 5 max per embed

#
let string = "";
let on = 0
for(let d of array) {
on++;
if(on == 5) {
  on = 0;```
#

here it resets the on value if it hits 5

#

and once it hits 5, it creates an embed of those 5 orders

#

but the description isnt working for some reason

solemn latch
#

Temporary would then be joined and used as your description

sterile lantern
#

so temporary.join()

#

would be the description

solemn latch
#

Yep, youll probably want to join by newline or whatever you want

sterile lantern
#

alr

#
      if(data) {
let array = data.map(d => 
"**__Order ID: #__**" + d.TicketID + '\n**__User__**: <@' + d.UserID + `>\n` 
)
var i,j,temporary,chunk = 1;
for (i = 0,j = array.length; i < j; i += chunk) {
    temporary = array.slice(i, i + chunk);
}
        let abc = new Discord.MessageEmbed()
                    .setTitle(`Order Logs`)
                    .setDescription(
                        temporary.join('\n')
                    )
                    .setColor("BLUE")
                    .setFooter("Order Logs")
                message.channel.send(abc)
    
}
     })
    }
}```
#

i only want 2 orders per embed

#

(as an example)

#

rn its only sending one

#

like as soon as there are 2 orders, split it and send to another embed

solemn latch
#

You are chunking by one, you'll want to set that to 5

sterile lantern
#

why would i set it to 5 though

proven lantern
#

how does this code look for protecting against rate limiting? js let apiCallCount = 0; const MAX_CALLS = 120; const queue = []; setInterval(() => { apiCallCount = 0; while (queue.length && apiCallCount <= MAX_CALLS) { queue.shift()(); apiCallCount++; } }, 60000); const enqueue = (apiCall) => { if (apiCallCount <= MAX_CALLS) { apiCall(); apiCallCount++; } else { queue.push(apiCall); } } module.exports = enqueue;

solemn latch
sterile lantern
#

Chunk is set to 1 rn

#

There are 2 values in the array

#

It only sent one embed

solemn latch
#

You want one embed right? 5 values per embed, you only have 2

sterile lantern
#

No i want multiple embeds

sterile lantern
#

Okay wait so I added 2 more values into the database

#

4 values in DB

#

I want 2 values per embed

#

So rn it should send 2 embeds

#

But it only sent one embed

novel snow
#

Never knew that existed lmao

sterile lantern
solemn latch
#

I'll hop on my pc in a sec, its hard to see what's going on

sterile lantern
#

I want multiple embeds, with a max # of orders in each page

#

This max I want to be 2

#

There are 4 orders

solemn latch
#

Your sending outside the loop

sterile lantern
#

2 orders per embed, meaning it should send 2 embeds

#

oh-

boreal iron
sterile lantern
#

okay it worked tysm

#

im dumb lmaoao

solemn latch
#

Honestly didn't see it either

proven lantern
#

is every discord api endpoint rate limited separately?

sterile lantern
#
     setTimeout(async() => {
      message.channel.send(abc)
}, 5000);```
#

idk if im doing this wrong but its still sending both embeds twice 😩

#

it waits 5 seconds before sending, but sends both at the same time

#

i want each 5 sec apart

solemn latch
#

Many are other than global

proven lantern
#

i'd think things like creating voice channels or sending DMs would be more limited than responding to a slash command

#

return await axios.patch(`https://discord.com/api/v9/webhooks/${application_id}/${token}/messages/@original`, data, { headers: { Authorization: `Bot ${discordTokens[application_id]}` } });

#

that endpoint shouldn't be limited

solemn latch
#

Is responding even ratelimited? Other than if you defer them

proven lantern
#

they must have some docs somewhere

solemn latch
#

Discord? Yeah one sec

proven lantern
#

think i found it

lament rock
solemn latch
#

Note to self ask Tim if responding to interactions ratelimited

sterile lantern
#
     let abc = new Discord.MessageEmbed()
                    .setTitle(`Order Logs`)
                    .setDescription(
                        temporary.join('➖\n')
                    )
                    .setColor("BLUE")
                    .setFooter("Order Logs")
          await message.channel.send(abc)
              ```

will this get ratelimited
#

if there's like 5 embeds

solemn latch
#

Not at 5

lament rock
#

it's 120 calls per minute

#

but your code never shows the count getting reset

sterile lantern
#

wym

#

why would the count get reset

proven lantern
#

can 1 make 120 call in the first second of the minute and then 120 calls the first second of the next minute?

sterile lantern
#

oh wait ur not talking to me

#

nvm

lament rock
#

actually. Let me check the actual limit

#

one sec

proven lantern
lament rock
#

ah ok

#

120 every 60sec

proven lantern
#

i should just use a queue service

#

sqs+sns

lament rock
solemn latch
sterile lantern
#

I just want each embed to send like 3 seconds apart

#

That won't trigger rate limits

#

Or any other limits right

lament rock
#

If you're using a lib like discord.js, you'll never hit that limit effectively

solemn latch
#

Still should respect the ratelimits

sterile lantern
#

so i should be fine right lol

#

i mean i doubt i'd have 200 orders open at once

proven lantern
#

do i really want to rate limit? it might be weird for the user to input a command and then a couple minutes later it happens

sterile lantern
#

as soon as a ticket closes, it gets removed from the DB

proven lantern
#

or i could rate limit, but not queue

lament rock
#

should still be fine. POST /channels/channel_id/messages is 5 calls per 5 seconds

#

and that's it's own bucket per channel id

solemn latch
#

Gotta love buckets

#

Still trying to figure out how buckets work entirely.
Especially with webhooks

lament rock
#

in most cases, major parts of the route delimit their own bucket where you cannot reach their limit by requesting to another bucket. Unless you hit the global rate limit if applicable. Not all routes have a global limit

proven lantern
#

is there a good breakdown somewhere?

#

i guess that;s a reason to use a library

solemn latch
#

If you track the bucket ids/ratelimit remaining you can deal with it that way right?

lament rock
#

Not that I'm aware of. Where I learned the most was just analyzing SnowTransfer's code as I was rewriting it and trying to make it better

lament rock
#

That's how you're supposed to

proven lantern
lament rock
#

you should always update your cached bucket limits based on response headers

solemn latch
#

Each webhook I think is its own bucket afaik. So it should be quite easy in my case then.
Currently the lowest remaining I've had is 3(out of 5) so it's not been a big concern

proven lantern
#

does the header say how close you are to a rate limit?

solemn latch
#

Yep

lament rock
#

Yeah

proven lantern
#

niiice

solemn latch
#

It's on the docs, forget the exact header

lament rock
#

It'll usually say X-Ratelimit-Remaining

solemn latch
#

Yep that's it

#

I also need to figure out queuing while being on a cf worker then I should be fine

lament rock
#

I'd recommend just analyzing the links I sent or just using those libs to begin with hippoapproval

solemn latch
#

Oh perfect, I'll save the links.

I'd like to properly learn about it rather than using a lib

lament rock
#

Fair enough

#

I'd rather write low level libs which make little to no assumptions and give the user control rather than using bloated libs like djs

#

I mean. I ported SnowTransfer to API V9 because it's a low memory footprint

#

Still need to bug DasWolke about adding me as a collab to npm and git

solemn latch
#

It looks like it's a lot simpler than I thought

prime mist
lament rock
#

180MB stable at almost 5k guilds is nice

#

gonna port to / commands at some point and be stateless

#

can't deal with 600MB at startup

#

Don't have the money to fund that memory hog

lone pulsar
#

Hi guys

prime mist
#

My bot only has like 50 guilds, so it just sits there using 20mb or so lol.

lament rock
#

most of that is coming from node internals as well which is cool

thorny flume
#

I'm wanting to make a subcommand
exemple: prefix-command1 command2

lone pulsar
#

as I know I can update bot on topgg and after that I just wait for you will check bot right ? if smt wrong pls let me know

lament rock
#

That's how it usually goes

lone pulsar
#

and I will get the pending

#

and I heard smt like I need make a list with the command of bot

solemn latch
#

Yeah, we need to be able to see the commands to use the bot

#

Same for users

lone pulsar
#

I need explain for you why and how this work or not

solemn latch
#

Why people need to know the commands of your bot?

Because how else will they know what commands your bot has?

lone pulsar
#

um.. I mean is differnt

#

just I mean how 1 command run

solemn latch
#

Ah, what library?

thorny flume
#

help

lone pulsar
solemn latch
#

I dont join random servers

lone pulsar
#

I will sent you the link

solemn latch
#

I just said no? Please don't dm ads people 😔

lone pulsar
#

so sorry

#

I dont know how to explain for you

#

wait a mins

#

it's the drop and pick up command. For normal operation, it is not possible because need to pickup a certain amount, the amount of the person in the account is equal to or higher than the amount of the pickup, When the player picks up but the amount on the floor is not enough, the money will be lost. falls to the floor by the amount of pickup

#

this is complẽx command

solemn latch
#

What library? What have you tried? What database?

proven lantern
#

i think this should be good enough for rate limiting.

#

i need to remove the check on line 29

quartz kindle
#

is this for rest or for websocket?

blissful coral
#

yeah

proven lantern
#

rest

#

lambda

#

which will just shut down after 15 minutes and delete the queue anyways

quartz kindle
#

rest doesnt have a 120 limit

#

its 50 per second global, plus per-route and per-bucket limits

proven lantern
#

dang, thats so low

#

especially for global

quartz kindle
#

if you are close to hitting 50 per second, discord will likely increase it for you

#

provided you have a good reason of course

proven lantern
#

do i need to keep an eye on it and ask them once i see it happening a lot?

quartz kindle
#

yes

#

it would be a good idea

proven lantern
#

mmkay

#

they should do that for me

#

im lazy

quartz kindle
#

what are you doing that needs so many reqs?

proven lantern
#

creates voice channels and sends embed messages

#

also deletes voice channels

quartz kindle
#

welp, 50 per second is a lot, you shouldnt hit it very often, if at all

solemn latch
#

Does responding to interactions/button presses contribute to ratelimits?
I dont know anything about how interactions work, but as your responding to something it feels like it wouldn't. @quartz kindle

proven lantern
#

mmkay, i'll make some alerts to see if it happens

quartz kindle
proven lantern
#

good to know. does that mean i just dont respond to the interaction?

quartz kindle
#

but if your app is distributed like in a lambda, each instance of it will hit it once

#

which counts towards the invalid requests ban threshold

proven lantern
#

it's only 1 lambda

quartz kindle
#

is it not globally distributed and what not?

#

like cloudflare workers

proven lantern
#

it's just a machine that runs for 15 minutes then shuts downs and starts back up

quartz kindle
#

ah ok

#

then you should be fine

proven lantern
#

it can scale up

#

it wouldn't call the api twice. each lambda would handle their own set of requests

solemn latch
quartz kindle
proven lantern
#

ah yeah. so it would do a couple extra calls to the api depending on how many lambdas are spawned

quartz kindle
#

at most one error per instance per second if done properly

#

the threshold for ban is 10k errors in 15min i believe

proven lantern
#

oh dang

#

i need to do some math

quartz kindle
#

10k in 10 min, just checked

proven lantern
#

10k after the 429 header?

quartz kindle
#

in general

proven lantern
#

do 429 responses count towards the total?

tawdry osprey
#

Is there a rate limit when it comes to deleting messages?

quartz kindle
#

any request that returns 401, 403 or 429 counts towards it

proven lantern
#

oof

#

well it might be worth making sure my bot cant get banned

quartz kindle
tawdry osprey
#

I don't know what that rate limit is either lmao

solemn latch
#

That's still 10k errors though

proven lantern
#

if i stop for 1 minute after a 429 is it still possible to hit the ban limit?

quartz kindle
#

depends how many instances you have

proven lantern
#

50 calls until a 429 right?

quartz kindle
#

if you hit a 429 once per second, thats 600 in 10 minutes

#

if you have 10 instances doing it, thats 6000

#

still within range

proven lantern
#

wouldn;t it be less

quartz kindle
#

yes 50 calls in less than 1 second

proven lantern
#

if you have 10 instances doing it, thats 6000

proven lantern
quartz kindle
#

how so?

proven lantern
#

60 seconds in a minute

#

not 100

quartz kindle
#

60 seconds = 1min, 600 seconds = 10min

proven lantern
#

i might be doing soming wrong

quartz kindle
#

1 error per second = 600 errors per 10 min

#

10 instances = 6000 errors per 10 min

proven lantern
#

but instance are running for 15 minutes

quartz kindle
#

this is just theoretical

proven lantern
#

so they only error ever 15 minutes

quartz kindle
#

if you have 10 instances doing more than 50 requests per second, every single second, for 10 minutes non stop

#

it all comes down to 6000 errors

#

still not enough to get a ban

#

as long as it handles it properly

proven lantern
#

oh, each instance would reset every second and then get an error the next second so it would still get those errors like you said

quartz kindle
#

ye

modest maple
#

pithink that would have to be 10 ips or big bot rate limits

#

50 being global which is per ip

proven lantern
#

but if it scales automatically then it will hit it

#

i guess i could just limit it

modest maple
#

What are you doing?

quartz kindle
#

one requirement for handling it properly is to make all requests sequential, which means there is a network delay between every single request

proven lantern
#

rate limiting for serverless

quartz kindle
#

that delay in itself can already be enough to prevent 50 per second

modest maple
#

That seems overkill

quartz kindle
#

you can configure it for bursts as well

modest maple
#

But also, at that point just use slash commands and a http framework and not worry about it bloblul

proven lantern
proven lantern
tawdry osprey
#

Do rate limiting in the bot 😳

quartz kindle
#

technically interactions via webhooks should not have rate limits if you respond directly to them

#

because basically you would be the one ratelimiting discord

proven lantern
quartz kindle
#

imagine suing discord for violating your interaction webhook rate limits

tawdry osprey
#

Simply make your bot work through http website preview embeds :)

tawdry osprey
#

Cut out the middle man

quartz kindle
#

like why the fuck do we have to control ratelimits for both outgoing and incoming requests?

solemn latch
#

Yeah, seems backwards

quartz kindle
#

also, discord is the one making a request to you

#

if they make the request in the first place, they are by default expecting a response

proven lantern
#

i do an ACK and then a patch

quartz kindle
#

the patch is a separate request, so it falls under the webhook limits

#

but the ack is the direct response

#

it should not have a rate limit

solemn latch
#

Oh wait, the thing I screenshotted was followup responses, not direct

#

Yeah

#

No where else does it mention ratelimits for interactions

quartz kindle
#

yeah it wouldnt make sense

solemn latch
#

Are deferred responses also a direct response? Can't seem to figure that one out.

#

I would guess not, since you already responded you cannot respond again?

proven lantern
#

you have to make a patch request to update the message after responding with a deferred response

#

PATCH/webhooks/{application.id}/{interaction.token}/messages/@original

solemn latch
#

Yeah makes sense.

proven lantern
#

if you get a 200 back from that endpoint it shouldn't count toward the limit

solemn latch
#

It's always nice being the dumb one in #development
Let's me ask dumb questions and learn ^_^

proven lantern
#

is there a discord enforced rate limit put on users trying to input slash commands?

solemn latch
#

I would expect so

tawdry osprey
#

Anyone have a ballpark estimate of the rate limit for deleting messages?

lament rock
#

5 times per 5 seconds

#

but you shouldn't hard code rate limits

#

ever

#

request responses include details about rate limits

round cove
#

You can also bulk delete.

solemn latch
#

Dylan purple pandasad

lament rock
#

there are some caveats with bulk delete, but yeah

round cove
#

Hi woo.

tawdry osprey
#

Hmm almighty. 5 times per 5 seconds sounds really limiting.

round cove
#

It do be discord.

tawdry osprey
#

When it comes to a bot that would do chat moderation, that sounds like it would get in the way

round cove
#

Do you expect people to be like

#

spamming banned words?

tawdry osprey
#

I plan on having my bot in a lot of servers at some point.

#

It's better than every chat moderation bot that I'm aware of.
They only can do direct string matching.

#

Mine's better than that :)

lament rock
#

It's up to your discretion to determine when you should delete and bulk delete. You'd have to track patterns like if a server is getting raided, you could perhaps hold off on deleting immediately and bulk delete a collection of messages within a timeout

earnest phoenix
#

Mmm, why not set a minimum time that a server owner can change if they want (without going lower than the minimum) assuming its a spam issue?

lament rock
#

Users don't always know what's best for the bot

round cove
#

Well the 5 per 5 second is per guild, not globally.

lament rock
#

per channel I thought

round cove
#

I have an automod and it has no issues.

#

Most likely per channel.

earnest phoenix
#

Iirc Dyno does something similar with it's automod no?

tawdry osprey
simple stump
#

I'm a bit confused as to why reactions aren't working. The result is 0 reactions.

                        message.channel.send("Test reactions.").then(sent => {
                            sent.react("✅")
                        });
                        const filter = (reaction, user) => {
                            reaction.emoji.name === '✅'
                        }
                        message.awaitReactions({ filter, time: 20000 })
                            .then(collected => message.reply(`Collected ${collected.size} reactions`))
                            .catch(console.error);

I have the intent GUILD_MESSAGE_REACTIONS enabled.

earnest phoenix
#

Because you're collecting the reactions on the wrong message

#

guys

tawdry osprey
#

guys

earnest phoenix
#

You're sending a message but collecting the reactions on the message before the one you sent

#

Resolve the promise of sending the message and collect the reactions on it, example:

const m = await <Message>.channel
  .send('Collecting reactions!');

await m.react(...);

await m.awaitReactions(...)
  .then(...);

...
#

Imagine awaiting your sends

#

Nerdsss

errant flax
#

imagine using a .then chain

#

:yikes:

proven lantern
#

you cant use awaitReactions without .then

#

it's broken

earnest phoenix
#

I don't use await

#

I chain .then

errant flax
#

.then stanky

#

and messy

lament rock
#

Pre es6 was callback hell. Promises were not made to continue that hell

proven lantern
#

i dont like being stuck in a chain

earnest phoenix
#

I love nesting

#

It's fun nesting events

edgy vale
#

How do I have a simple userid based db

lament rock
#

You could use some DB that is key value based like redis or even some sql solution like Postgres works great so long as you set it up properly

tawdry osprey
#

you use a database and store the userid

#

make it the key row

#

If you are just getting into databases, sqlite is super easy to use

edgy vale
tawdry osprey
#

@edgy vale What language are you using?

tawdry osprey
#

In this Python SQLite tutorial, we will be going over a complete introduction to the sqlite3 built-in module within Python. SQLite allows us to quickly get up and running with databases, without spinning up larger databases like MySQL or Postgres. We will be creating a database, creating a table, insert, select, update, and delete data. Let's ge...

▶ Play video
#

Watch this

#

It'll get you started on databases and run you through everything you'll need to know

dense mirage
#

im trying to change my bot status to how many users it has, but i kinda messed it up and now its coming back as "undefined" and i cant fix it

#
client.on("ready", () => {
  console.log(`${client.user.username} ready!`);
   client.user.setActivity(`${client.users.size} | .help`, { type: "LISTENING" });
#

is wut i have

earnest phoenix
#

Well if you're using anything after v11 there's a cache thing now

#

So you have to use client.users.cache.size

dense mirage
#

yeahh that was it lol, ty<3

toxic dock
#

ok

proven lantern
#

is it possible to add buttons in the embeds[].fields[] somehow?

hybrid cargo
#

No

lament rock
#

Only buttons on the bottom of the whole message

#

You could be creative and have rows correspond with fields, but that may be confusing to some

earnest phoenix
#
  @commands.command()
  @commands.has_permissions(administrator = True)
  async def warn(self , ctx , user:discord.Member, * , Reason = None):
    uid = user.id
    guild_id = ctx.guild.id
    
    if collection.count_documents({"_id":uid,"Guild":guild_id}) == 0:
      collection.insert_one({"_id":uid,"Guild":guild_id,"Warns": 0})

      warn_count = collection.find_one({"_id":uid},{"Guild":guild_id})

      count = warn_count["Warns"]
      new_count = count + 1

      collection.update_one({"_id":uid},{"Guild":guild_id},{"$set": {"Warns": new_count}})

    embed = discord.Embed(description = f"Warned {user.mention}|Now they have {new_count} warns" , color = 0xED4245)

    await ctx.channel.purge(limit = 1)
    await ctx.send(embed = embed , delete_after = 5)
#

can someone help im making a warn command in mongodb

#

but the bot isn't doing what it's supposed to its not working at all

#

Well if you have any errors it would be useful to provide them

#

i don't have any errors

#

thats the problem

#

@earnest phoenix you there?

#

@earnest phoenix i don't think it's a good idea to mutate the _id property on a document but it probably isn't what's causing the issue

#

yes

#

i think so

#

lemme do it

#

done

#

now its OMGid

#

Any python coders willing to look at a piece of my code and help me figure out what is wrong and why it's not working properly. It should print errors from my website but it doesn't do that. It should also load data from my website but it doesn't.

#

The bot is fully functional and works properly except that part

earnest phoenix
#

Someone who knows python will eventually come along

#

the code for my bot is here: https://pastebin.com/6eFXxJ0D

What works fine is the bot scans images and dms users the results from the web.. what does not work is the key! each scan should query my webserver to make sure the guildid has a key, and, if it dont, make one! if it does then it should make sure the key isnt expired, and if it isnt then it should go ahead and scan the image and dm results.

the php is made very well, works great in URLs, doesnt work at all on the bot, my friend who coded this doesnt now what the issue is either, and i cant find any issue either but i dont know python well, im a php/sql coder, please.. please help me get accesskeys working 😦

earnest phoenix
#

null tells me to sleep and yet I'm being pinged

earnest phoenix
pale vessel
#

Just get muted like last time?

earnest phoenix
#

Angular

#

I wanna try svelte

#

nice

#

ddg stan using angular

#

Though not as much anymore

high crown
#

help 🥲

earnest phoenix
#

Update your node version

high crown
#

see

earnest phoenix
pale vessel
#

Needs 16.6+

earnest phoenix
#

Yea

earnest phoenix
#

You need what flaze said

#

Put it in a replit file

high crown
earnest phoenix
#

No

pale vessel
#

Actually yours isn't even 14+

#

?? is 14+

earnest phoenix
earnest phoenix
#

You need to execute the npm binary

earnest phoenix
pale vessel
#

Use Tim's solution

earnest phoenix
#

Put it as the run command in the replit file so you don't need to type it manually

earnest phoenix
earnest phoenix
pale vessel
earnest phoenix
#

AbortController is v16.6.1

#

djs uses it

hollow hull
earnest phoenix
#

They respond in one channel and instantly switch to the next and start talking

earnest phoenix
hollow hull
earnest phoenix
#

I trype fast

split hazel
#

he's hacking

earnest phoenix
#

Code doesn't hack

#

Code has multiple monitor setup

#

One for each server they're in

#

I'm using a phone

#

multiphone setup

#

One for each server

#

fuck split screen not supported in discord

#

Imagine being able to split screen on a multiplayer game on mobile

#

I wonder how annoying that'd be

#

you can do that

#

someone was watching tiktok while playing ff

#

Not what I mean

#

Like Xbox cod split screen

#

ff is a multi-player game take it or leave it

hollow hull
earnest phoenix
#

What even is ff

earnest phoenix
#

Oh free fire

#

Basically the game that took over pubg

#

yeah

#

because it was better

#

and had less toxic players

#

Kek

hollow hull
earnest phoenix
#

lmao we went off topic

#

If I knew java well

#

I'd take a crack at minstrom

#

I wanna learn svelte

#

I never liked the idea of svelte

#

Smth about it just doesn't sit well with me idk what it is

hollow hull
proven lantern
#

if a guildDelete event happens and guild.available === false does that mean there is just an outage and the guild still has my bot?

timber fractal
#

why does this code js let channel; if(oldState.member.voice.channel && newState.member.voice.channel) channel = "true"; if(oldState.member.voice.channel && !newState.member.voice.channel) channel = "left"; if(!oldState.member.voice.channel && newState.member.voice.channel) channel = "joined"; if(!oldState.member.voice.channel && !newState.member.voice.channel) channel = "false"; return "false" when a user left so it should be "left" and "true" if a user joined though it should be "joined"?

pale vessel
#

guildDelete is only when the client left/were kicked or banned

rose warren
#

I've had errors before where the guildDelete event fired for unavailable guilds. Best to check if it's available before doing anything in the guildDelete event.

proven lantern
#

mmkay. maybe if its offline for too long it thinks the bot is deleted

timber fractal
#

i tried to make the bot leave after 100 ms if nobody else was in the vc but from line 19&20 and on i dont get any console.log's anymore, no errors, can someone help? https://srcb.in/4NRSxzG5Bq

feral aspen
#

How can I view the source code of an exe file?

cinder patio
#

you can't view the source code, but you could disassemble an exe file and attempt to read the machine code

tardy hornet
#
bot.on('ready', async () =>{
  console.log("this bot is online!");
  setInterval(() => {
      bot.user.setActivity(`with money | e!help | in ${bot.guilds.cache.size} servers.`, ({type: "PLAYING"}))
}, 600);
setInterval(() => {
  dbl.postStats(bot.guilds.cache.size);
}, 1800000);  
})
#

i dont see anything wrong, its not updating the servers on top.gg

rose warren
#

You're using dblapi.js?

cinder patio
#

It's going to post it in 1800000 ms

#

not right away

#

have you waited?

earnest phoenix
#

damn, imagine waiting 30 minutes to see your server count

tardy hornet
tardy hornet
#

do i need to define dblapi.js?

#

like const it

#

yes i do sorry about the trouble

#

the problem is that i did const DBL = require("top.gg")

#

and not const DBL = require("dblapi.js")

round edge
#

hey i have some questions how do i host my discord bot on my own pc

#

like a permenant type thing

green kestrel
#

🦷

#

^ i repaired you broken tooth

#

@round edge its a possibility, if youre willing to leave your pc on 24/7

#

not the most energy efficient way to do it

round edge
#

but i dont mind '

#

thats not the problem

#

i have so many server's

green kestrel
#

if you want to host your bot 24/7 at home i suggest getting something like a raspberry pi 4 or similar. something with reasonable specs and the power profile of a router or tv set top box

round edge
#

i just need to know how to host it

green kestrel
#

i mean think of the trees 😄

round edge
#

haha

#

ok

green kestrel
#

well if youre hosting it on your own pc, just leave the program running

round edge
#

can u tell me how to

green kestrel
#

"dont click close"?

round edge
#

i got that

green kestrel
#

i have an on-off minecraft server i host like that lol

round edge
#

i have the code for a music bot

#

how do i like

#

turn it on

#

or like start it

green kestrel
#

hmm, so you got code for a bot that someone else made

#

and youre new to bots and programming and want to know how to run it

round edge
#

no

#

the api ovio

#

not the code

#

no im not the coder

#

im just the host and sponser

green kestrel
#

ok

#

so someone else wants you to run this for them and youre offering hosting it for them

#

yes?

round edge
#

becoz he is my friend

#

so yeah

green kestrel
#

ok

round edge
#

so how can i do it

raw gust
#

How to check the input is 1h, 1m, 1s. I do the mute command, but sometimes I get the error val is not a non-empty string or a valid number. val=undefined

green kestrel
#

just run it

#

but i advise NOT doing so @round edge

#

two reasons: 1) dont run a yt bot on your home pc, your home internet certainly wont be able to cope with the bandwidth requirements of a yt bot

#
  1. do you really think yt bots have a future rn? google/alphabet are coming down on TOS abuse of their platform with a giant lead ban hammer
modest maple
#
  1. if you do and you get IP banned everyone in your house hold is going to be rather pissed off
green kestrel
#

any yt bot anyone makes right now is also instantly hit with immense levels of usage that will kill your desktop pc

#

that too! ^

#

yeah YT bots need a pool of ipv4

#

not just one dynamic ip from your residential isp

modest maple
#

or massive pools of ipv6

round edge
#

its not a yt bot

#

guys

#

its a music bot

green kestrel
round edge
#

yeah

#

then

#

y are u mentioning a yt bot

green kestrel
#

then what service do you use for music

round edge
#

fair point

#

maybe that y when i put it on a free service like heruko and after the bot got invited to 10 server's it didnt wanna load

lapis dock
#

@round edge

round edge
#

yeah

lapis dock
#

you can use the cmd

round edge
#

is it safe for music bots?

lapis dock
#

just run the code

lapis dock
#

its actually really bad

round edge
#

k

lapis dock
#

since you have to keep it active all the time

#

even at night

#

also

round edge
#

ik that

lapis dock
#

music bots take a lot of resources

#

it takes 50% of ram and CPU on my heroku :/

round edge
#

will a i5 processer and 8 gigs of ram?

lapis dock
round edge
#

ok

lapis dock
#

what gen is it

round edge
#

5

#

th

lapis dock
#

i5 gen10? i guess

round edge
#

so how can i do it?

lapis dock
#

if its node.js, do npm install pm2

green kestrel
#

does it use yt-dl and ffmpeg?