#development

1 messages Β· Page 1685 of 1

placid meadow
#

hahaha

#

my server located at lethal.click thats my actualy host

#

best hostname ever

simple zodiac
#

is it.. a logger?

#

like if i go there lmao

placid meadow
#

logger? hell no we are a community of developers and gamers

simple zodiac
#

oh ok

#

wanna make sure lmao

placid meadow
#

dude that host is protected by a DDoS Coreo smartwall protection, noway that i can do these weird things πŸ˜›

#

they would instantly remove my package

slender thistle
#

Discord bots usually don't need much

simple zodiac
#

i dunno what that is (what u said just now barret)

slender thistle
#

The cheap ones work most of the time

placid meadow
simple zodiac
#

shivaco do you have any cheapish vps's that you know of that would host my bot good?

placid meadow
#

i paid good money for that

slender thistle
#

There are few VPS companies listed in the pins here

placid meadow
#

my bots, websites are all behind there

#

safe and sound

simple zodiac
#

ill look at that

slender thistle
#

SkySilk might have something cheap

#

Oho, DDoS protection

#

Just don't leak your IPs WeSmart

simple zodiac
placid meadow
#

yeah πŸ˜‚

slender thistle
#

Err, look around and compare the specs/prices yourself

placid meadow
#

i was hit not so long ago by an angry script kiddie

#

dude pressed a SYN attack onto my doorsteps

#

pfff

simple zodiac
#

I mean, all of them for the starting at seem fine

simple zodiac
placid meadow
#

have u seen the visualization @slender thistle ?

#

was big

slender thistle
#

I don't even remember

#

I think you sent it somewhere

placid meadow
#

poof

#

that was me

#

in the middle

#

-.-

simple zodiac
#

oh

#

was that like a ddos or whateevr

slender thistle
#

Hahahaha oh dear

placid meadow
#

SYN attack ...sort of

simple zodiac
#

i dont know the terms BC_sadpee

placid meadow
#

it kept doing this 2 weeks

#

non stop

#

24/7

#

hoping it would die..

slender thistle
#

Lmao

placid meadow
#

so i stepped in, made some calls

#

paid some ppl

#

and it got fixed

#

so basically this script kiddie caused me damage πŸ˜› or at least a bill of payment

slender thistle
#

🀣

placid meadow
#

if i find him, ill make sure he will never be able to pick up a mouse

#

lil bastard

#

but thats not important ^^

slender thistle
placid meadow
#

not violence, its a federal offense obviously

slender thistle
#

Aha I see what you mean now

placid meadow
#

hehehe

slender thistle
placid meadow
#

anyway i gotta take a nap, work tomorrow

#

or today actually

simple zodiac
placid meadow
#

see you peeps soon again πŸ˜‰

simple zodiac
#

good bye

slender thistle
#

Ooh, ya, don't be like me staying awake until 6 am and waking up in the noon

#

Have a good sleep o7

placid meadow
#

3:30 now πŸ˜›

slender thistle
#

Oh boy someone's gonna have a rough morning

placid meadow
#

nah my work starts on 1400u

#

so im gud

slender thistle
#

Oh nice

#

Ya sleep well

placid meadow
#

seeya lads

simple zodiac
#

bye bye

#

so

#

shiv if you know

#

how would i actually host the bot?

#

If i were to buy a VPS

#

cause i'm looking at vultr.com and from what i saw in the pins it looks good for what i could pay for

slender thistle
#

Well it's a VPS

simple zodiac
#

yeah i dont know much about em

slender thistle
#

Connect via SSH to run commands in the terminal, FTP for file sending

simple zodiac
#

ehhhhhhhhhhh i have no idea what that means

#

well i kinda know what ftp is

#

i have like filezilla

slender thistle
#

File transfer protocol

simple zodiac
#

yeah but idk what ssh is really

winged linden
#

If linux u can use winscap to ftp

slender thistle
#

Secure Shell

winged linden
#

Or putty^

slender thistle
#

Yeah, PuTTY is an SSH client

simple zodiac
#

I'm looking at vultr.com and on the pricing it looks like its using linux?

winged linden
#

Yeah pretty sure

slender thistle
#

Yeah most VPS use Linux

simple zodiac
#

damn that suckks

#

atleast for me ig

slender thistle
#

How come?

simple zodiac
#

i dont know how to use it

#

lol

winged linden
#

Its simple once u are used to it

simple zodiac
#

i use windows

slender thistle
#

You have Google at your disposal

#

πŸ˜›

simple zodiac
#

well yeah

slender thistle
#

Though most commands are simple tbf

winged linden
slender thistle
#

Hell, all my Linux experience was gotten from Google

winged linden
simple zodiac
#

mhm

#

Do you know how i would like start to host it after i would buy it

winged linden
#

just upload the files, install node.js pm2 and some stuff and just pm2 start filename

winged linden
simple zodiac
#

would i need to re do all the npm i stuff i did in my terminal?

#

like npm i discord.js (and whatever else)

winged linden
#

Npm i and it will install all the modules

simple zodiac
#

if i just install node it will do everything?

#

im confused

winged linden
#

Yeah but if u have the files just do npm i in the your bots file

simple zodiac
#

oh would i upload like the packages.json

winged linden
#

Yeah

#

Atleast thats what i do and it works like a charm

simple zodiac
#

alright thank you

#

So like just any file in my repl, I would upload to the vps?

#

If i do end up getting one, would you mind helping me like in dms at some point? I understand if not

slender thistle
#

Try googling each step you do

#

Like "vultr connect ssh", "upload files ftp", yada yada

simple zodiac
#

I’ve done like one thing before using filezilla, so I think i’d know how to do that part

#

But yeah the ssh thing and prolly anything else is what would mess me up

slender thistle
#

Linux commands are easy

#

I'm sure you'll figure them out with Google

#

Can ask in this server in case Google fails you

solemn latch
#

if you use bitvise it will open a ssh and sftp(filezilla) at the same time, can make things a lot easier.

lost wadi
#

Do you know how to get the quantity of all the items?

let arreglo = [
["a", "e", "i"],
["o", "u"]
]
console.log(arreglo.length) //2
solemn latch
#

so, you want 5?

#

probably reduce.

lost wadi
solemn latch
#

yeah, reduce is how i would do it

lost wadi
#

I do not know how to do that

solemn latch
silver monolith
#

i am genuinely confused

#

so i have a currency and item system

#

and so you can give items to someone

#

so obviously not to make the command broken

#

i made it so that if you dont have any of that item you can't give it

#

but sometimes you can

#

note: SOMETIMES

#

like if you have 0 you can give someone and it'll be negative

#

most of the time it doesnt work

#

btw i use quick.db

solemn latch
#

whats your code look like?

silver monolith
#

one sec im sending it

#
//defining the item, i dont use db.push because im too lazy to actually use my brain idk
    let valoofheads = db.fetch(`valoofhed_${user.id}`)
    let uservaloofheads = db.fetch(`valoofhed_${author}`) //author was defined as message.author.id, i did that to not have to type so much
    if (valoofheads === null) valoofheads = 0;
//in the command, this specific item is broken, not the others
else if(args[1] === '5'){
                if(!args[2]){
                    if(uservaloofheads === 0) message.channel.send(`uh you don't have any Valentine's Day Oofheads \nget at least one Valentine's Day OofHead`)
                    else{
                    db.add(`valoofhed_${user.id}`, 1);
                    db.subtract(`valoofhed_${author}`, 1);
                    message.channel.send(`Gave 1 :LIMITEDicon:IMITED Valentine's Day OofHead to ${user.username}`)
                    db.set(`give_${author}`, Date.now())
                    }```
#

it was only discovered today

#

waait

#

i just realized

#

i never said if uservaloofheads === null its equal to 0

#

that may be the bug

#

wait

#

but that's the thing for all of the items

#

will update that right now

drifting wedge
#
TypeError: 'bool' object does not support item assignment``````py
        guild_data = self.gcollection.find({"_id":guild.id})
        for gd in guild_data:
            gd = gd["in_guild"] = False
            gd = gd["delete_timer"] = time() + 259200

            self.gcollection.insert_one(gd)```
#

any ideas?

half sable
#

Help me

solemn latch
#

oh .flat().length?

opal plank
#

yup

solemn latch
#

cool, thanks for the tip

sage bobcat
#

One message removed from a suspended account.

half sable
opal plank
#

linus got nothing on me

twilit geode
#

does anyone have a set of card emotes they use?
a zip folder would be wonderful :)

long crow
#

Not really on development, but how does one deal with UX? You know when I start applying my bot to top.gg, I only cared about it going pass. Now that it got into top.gg list, and surely will have more audience. The UX is come into my worries

twilit geode
twilit geode
#

for instance
!help
! help
@bot
should all return the help command
(sorry for rando ping)

long crow
#

ya, I did have the mention prefix

#

thinking to make feedback command

twilit geode
long crow
#

I have one, but as now it only me, and my 2 bots. lmao

twilit geode
long crow
#

Though, most ppl that invite my bot know me

twilit geode
#

but people filter through mine pretty regularly lol

long crow
#

so that;s that

twilit geode
lethal ermine
#

a question could someone tell me how to make a whebook of votes?

vivid fulcrum
#

a webhook?

#

webhooks in a nutshell are basically reverse APIs

#

so instead of you making a request to top.gg's API

#

so setting up a simple HTTP server

#

and then giving that url to top.gg (through the bot page settings) is enough

lethal ermine
#

How do I do that?

earnest phoenix
#

Is discord on scratch a library?

twilit geode
#

read

simple zodiac
#

Anyone with knowledge on VPS's know if this is good for the money? (5/month for this) I wanna host my bot on a vps but idk if this is good enough for it (the 1024 is memory, and the 1tb is bandwidth )

solemn latch
#

I dont see a problem there

simple zodiac
#

who me?

solemn latch
#

yeah

simple zodiac
#

oh aite cool thanks

solemn latch
#

i dont really know geek bench scores. most providers i know give the cpu model used rather than a score. so i cant really say if its a great cpu or performance. 2523 single core seems around normal for the price.

simple zodiac
#

alright thx

frigid mountain
#
const Discord = require('discord.js')

module.exports = {
    name: 'send',
    run: async (message, args) => {
    const channel = message.mentions.channels.first()
    const avatar = `${user.displayAvatarURL({dynamic: true})}`
    const embed = new Discord.MessageEmbed()
    .setTitle("Mod updates")
    .setDescription("These are very important messages for moderators")
    .setColor("#FF005B")//lime pink
    .addField("Modmail", `${sayMessage}`, true)
    .setTimestamp()
    .setFooter("Modmail", avatar)
    
        channel.send(embed) 
   
    }
}

It says error user is undefined so can someone pls help me define user

earnest phoenix
#

const user = author or something idk

old cliff
#

I smell copy pasta

#

but to help

#

Just do

#

const user = message.author

frigid mountain
river panther
frigid mountain
frigid mountain
#

Ok then

river panther
# frigid mountain ```diff const Discord = require('discord.js') module.exports = { name: 'sen...
const Discord = require('discord.js')

module.exports = {
    name: 'send',
    run: async (message, args) => {
    const channel = message.mentions.channels.first()
    const avatar = message.author.displayAvatarURL({dynamic: true})
    const embed = new Discord.MessageEmbed()
    .setTitle("Mod updates")
    .setDescription("These are very important messages for moderators")
    .setColor("#FF005B")//lime pink
    .addField("Modmail", `${sayMessage}`, true)
    .setTimestamp()
    .setFooter("Modmail", avatar)
   
        channel.send(embed) 
   
    }
}
#

wait

#

wot

frigid mountain
#

?

river panther
#

what are you trying to achieve in this command

#

and why have you made it so complicated?

frigid mountain
river panther
#
const { MessageEmbed } = require('discord.js')

module.exports = {
    name: 'send',
    run: async (message, args) => {
    const channel = message.mentions.channels.first()
    const avatar = message.author.displayAvatarURL({dynamic: true})
    const embed = new MessageEmbed()
    .setTitle("Mod updates")
    .setDescription("These are very important messages for moderators")
    .setColor("#FF005B")//lime pink
    .addField("Modmail", `${sayMessage}`, true)
    .setTimestamp()
    .setFooter("Modmail", avatar)
    channel.send(embed) 
   }
}
#

why does it say modmail then

#

?

frigid mountain
#

Cause im only gona use it for the mod channels in my server

river panther
#

i would rather do (let me type it down real quick)

#
const { MessageEmbed } = require('discord.js'); 
module.exports = {
name: "send",
run: async(bot, message, args)=>{
const channel = message.mentions.channels.first();
const text = args.slice(1).join(" ");
const avatar = message.author.displayAvatarURL({dynamic: true});
const embed = new MessageEmbed()
.setAuthor(bot.user.username, bot.user.displayAvatarURL())
.setTitle("Mod updates")
.setDescription("These are very important messages for moderators")
.setColor("#FF005B")//lime pink
.addField("the text:-", text, true)
.setTimestamp()
.setFooter(message.author.username, avatar)
channel.send(embed)
#

@frigid mountain

#

what is v?

#

you haven't declared it anywhere

frigid mountain
river panther
#

wait, what?

#

idts the command handler will make any difference

slender thistle
#

Fucking hell what's going on here even

river panther
#

i just did what you did just made it clearer

river panther
frigid mountain
#

Lol

river panther
#

breh, show me your command handler once

#

the thing which make the difference is the event handler

#

the MESSAGE event

earnest phoenix
#

```database.query(INSERT INTO captcha (guild_id, channel, logs, role) VALUES (${server}, ${verifyChannel}, ${verifyLogs}, ${verifyRole}))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

SyntaxError: missing ) after argument list```

river panther
#

the command handler is used for posting the commands

earnest phoenix
#

How can i do?

river panther
#

syntax error

#

it is

earnest phoenix
#

yes

#

for the latest `

river panther
#

what language?

earnest phoenix
#

sql

#

& js

river panther
#
database.query(`INSERT INTO captcha (guild_id, channel, logs, role`) VALUES (`${server}`, `${verifyChannel}`, `${verifyLogs}`, `${verifyRole}`)
#

now try

#

oh wait

earnest phoenix
#

since last night I have been looking (I am in France) but I cannot find where to place it

river panther
#
database.query(`INSERT INTO captcha (guild_id), channel, logs, role`) VALUES (`${server}`, `${verifyChannel}`, `${verifyLogs}`, `${verifyRole}`)
#

now it is correct

slender thistle
#

No lol

earnest phoenix
#

ok

river panther
#

no?

#

why

slender thistle
#

It's not correct

river panther
#

what will be correct?

earnest phoenix
#

πŸ‘€

slender thistle
#
database.query(`INSERT INTO captcha (guild_id), channel, logs, role`)
river panther
#

i also did this

slender thistle
#

Do you see what's wrong with this

river panther
#

umm

#

idk sql, but syntax...

earnest phoenix
#

wtf

river panther
#

wot

earnest phoenix
#

guild_id this is an info that I want to enter

slender thistle
#
database.query(`INSERT INTO captcha (guild_id, channel, logs, role) VALUES (`${server}`, `${verifyChannel}`, `${verifyLogs}`, `${verifyRole}`)`)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

SyntaxError: missing ) after argument list
river panther
#

@slender thistle oi, tell

slender thistle
#

Let's see where your string ends

#

:)

river panther
earnest phoenix
#

and what is in parentheses is the columns in which information must be entered

river panther
#

maybe

#

wait

#
database.query(`INSERT INTO captcha (guild_id, channel, logs, role`) VALUES (`${server}`, `${verifyChannel}`, `${verifyLogs}`, `${verifyRole}`)`)
#

now?

#

oh wait

earnest phoenix
#
database.query(`INSERT INTO captcha (guild_id, channel, logs, role`) VALUES (`${server}`, `${verifyChannel}`, `${verifyLogs}`, `${verifyRole}`))
#

this?

river panther
#
database.query(`INSERT INTO captcha (guild_id, channel, logs, role)` VALUES (`${server}`, `${verifyChannel}`, `${verifyLogs}`, `${verifyRole}`)`)
#

now?

slender thistle
#

Fucking blind poking into the dark

earnest phoenix
#

unitl ` (latest)

slender thistle
#

Does your framework support named parameters?

river panther
#

i shall just walk out of it since idk this nicely

earnest phoenix
slender thistle
#

Both of you

slender thistle
earnest phoenix
slender thistle
#

Then use them

silver lintel
#

how do i reduce my websocket ping? like what is it depended upon, it used to be 15ms and now its 200ms

#

so basically you want to have your terminal open for 7 hours, then wait 17 hours, then repeat. tada, now your bot is online 7/24

rocky hearth
#

it is possible to make bots with dart?

modest crane
#

yes

rocky hearth
#

how is there any lib available for dart?

modest crane
#

there's nyxx

median iris
#

My bot got approved

umbral skiff
#

hi

#

I bought a server, but up to now it always shows Error

#

Error [VOICE_CONNECTION_TIMEOUT]: Connection not established within 15 seconds
how to fix it

#

server ping 39ms

vagrant prairie
#

You mean 24/7?

pale vessel
rocky hearth
#

he meant a bot, that runs, exactly 7hrs a day

pale vessel
#

why limit it

vagrant prairie
#

l0l

pale vessel
#

/s/s/s

vagrant prairie
#

^

rocky hearth
#

jokes aside, I wanted to ask
if we can extend a class (with Structures) that is already extended by a command handler (Commando).

#

I want to structure the CommandoMessage which itself extends the Message.

silver lintel
#

will locating a vps server closer to discord's server make the websocket ping faster?

pale vessel
#

Yes of course

silver lintel
#

because i set one in sydney and now its over 200ms

vagrant prairie
#

I don’t care about ping bcz yes

umbral skiff
#

my bot ping 40

silver lintel
#

so where should i locate it if the options are

vagrant prairie
#

My bot ping m pong!

umbral skiff
#

but when i try to play music ping up to 500

#

and say error connection not established within 15 seconds

vagrant prairie
#

I’ve seen that error multiple times

umbral skiff
pale vessel
#

My VPS is located in Silicon Valley and the WS ping is 80ms

vagrant prairie
#

So, is it the only bot running on the server?

silver lintel
#

i hosted it on glitch before and it was 15ms

umbral skiff
#

my vps is located united states

vagrant prairie
#

Same here

silver lintel
vagrant prairie
#

I use a cheap VPS service

#

NY

pale vessel
#

New York I guess

silver lintel
#

ok

umbral skiff
vagrant prairie
#

Lol no

earnest phoenix
#
message.guild.channels.exists```
For v12 please ?
pale vessel
#

channels.cache.has(id)

umbral skiff
#

but it have administration , I do not think that there is a problem with that

vagrant prairie
#

I believe that’s a TPS/CORE error

#

Lack of cores

#

I have 10 v cores

#

And my bot still lags af

earnest phoenix
#
if (message.guild.channels.cache.has('name', "partner" || 'name', "partnership"))```
@pale vessel :/
pale vessel
#

you have to use .find() and provide a function

umbral skiff
#

@vagrant prairie I think there is limit speed per second

#

in my vps

earnest phoenix
#

hi guys do you have any host suggestions for my bot?

vagrant prairie
#

Contact your host provider to confirm

umbral skiff
#

Because only when I play the music does the ping rise

vagrant prairie
#

It’s cheap and nice

earnest phoenix
#

mmmh

vagrant prairie
#

Digital ocean is expensive ;-;

#

My friend runs like 1 BIG BIG BIG Minecraft server+2 BIG BIG BOG bots on a 18gb ram VPS paying 20$

earnest phoenix
#

okay i'll see your suggestions

#

thanks

#

have a good night or day

lusty quest
#

for hardware usually you get what you pay. most cheap VPS use some older Hardware that runs slower, while higher priced Hardware should also run on more recent hardware.
this is atleast my Opinion on it

lusty quest
#

depends on the generation

river panther
pale vessel
#

bruh

lusty quest
#

but yea i know hoster who run these Cheap VPS on some older Xeon CPUs from 2009

#

sure it works, but its inefficent to keep the hardware, but they wont get new one bcs stupid reasons

vagrant prairie
#

Intel Xeon E3-1230v3/1650v2
20GB Storage
4vCores
DDoS Protection included
Unmetered bandwith
Virtualization KVM
These kinds?

lusty quest
#

yea its a 2013 CPU sure still fine but slow

#

Digitalocean is fine to start with, they have some pretty good Support, some of the best Docs for almost everything. but yea they get relatively expensive if you need stuff like Compute Optimized CPUs (2 Cores , 4GB Ram for 40$/Month lol)

lofty nova
#

There are hosts who offer free hosting too

vagrant prairie
#

CPU Ryzen 7 3700X, 2 vCore
Clock Speed @4.0/4.4 GHz
DDR4 RAM 4 GB
NVMe SSD Storage 60 GB
DDOS Protection 250gbps
Uplink 1gbps
Bandwidth Unmetered
Virtualization KVM

lusty quest
#

if its free it sucks

vagrant prairie
lofty nova
#

The one i use is good

lusty quest
#

there are no Good Free Hosts

lusty quest
#

the only exeption i would say is the 1 year free credit from AWS or google

opal plank
opal plank
#

or forcing your friend to leave their computers running ur bot 24/7

lusty quest
#

thats noting that everyone can get

lusty quest
vagrant prairie
#

Lol

lusty quest
#

currently i have my Dedi with a Ryzen 3600 64GB ECC Memory and 2 512GB NVME SSDs in Raid 1

#

also Gigabit connection and unlimited bandwith usage

lunar patio
#

hmm

timber frost
#

quick Q, what the safe limit for a status to be updated every so often? am guessing that once every min should be fine??

dusky sundial
timber frost
river panther
#

send it again

frigid mountain
#
const Discord = require('discord.js')

modules.exports = {
    name: 'warn',
    run: async (message, args) => {
    const sayMessage = args.join(" ")
    const user = message.mentions.users.first()
    const avatar = `${user.displayAvatarURL({dynamic: true})}`
    const embed2 = new Discord.MessageEmbed()
    
    .setTitle("warned!")
    .setDescription(`${user.username} has been warned by ${message.author.username}`)
    .setColor("#FF005B")
    .addField("Reason:", `${sayMessage}`, true)
    .setTimestamp()
    .setFooter(`${user.username}`, avatar)
    
       message.channel.send(embed2)
       
    const embed3 = new Discord.MessageEmbed()
    .setAuthor(`${user.username}`, avatar)
    .setTitle("You have been warned")
    .setColor("RANDOM")
    .setDescription(`Moderator: ${message.author.username}`)
    .addField("Reason", `${sayMessage}`, true)
    .setTimestamp()
    .setFooter("dm warned")
          
        user.send(embed3)
     }
}
frigid mountain
river panther
#

yes

#
const Discord = require('discord.js')

modules.exports = {
    name: 'warn',
    run: async (bot, message, args) => {
    const sayMessage = args.join(" ")
    const user = message.mentions.users.first()
    const avatar = `${user.displayAvatarURL({dynamic: true})}`
    const embed = new Discord.MessageEmbed()
    
    .setTitle("warned!")
    .setDescription(`${user.username} has been warned by ${message.author.username}`)
    .setColor("#FF005B")
    .addField("Reason:", `${sayMessage}`, true)
    .setTimestamp()
    .setFooter(`${user.username}`, avatar)
    
       message.channel.send(embed)
       
    const embed2 = new Discord.MessageEmbed()
    .setAuthor(`${user.username}`, avatar)
    .setTitle("You have been warned")
    .setColor("RANDOM")
    .setDescription(`Moderator: ${message.author.username}`)
    .addField("Reason", `${sayMessage}`, true)
    .setTimestamp()
    .setFooter("dm warned")
          
        user.send(embed2)
     }
}
#

what have you declared the client as

#

bot or client?

frigid mountain
#

Client

#

Wait wdym?

river panther
#

ergh

#

show me your index.js

#

first 4-5 lines

slender thistle
#

What does it matter in this case

#

Isn't the client object passed as bot anyway

frigid mountain
river panther
#

nope, some define it as a bot some define it as a client

#

yes

#

its slient

#

client

frigid mountain
#

K

slender thistle
#

run: async (bot, message, args) => {

#

I'm referring to this

river panther
#
const Discord = require('discord.js')

modules.exports = {
    name: 'warn',
    run: async (client, message, args) => {
    const sayMessage = args.join(" ")
    const user = message.mentions.users.first()
    const avatar = `${user.displayAvatarURL({dynamic: true})}`
    const embed = new Discord.MessageEmbed()
    
    .setTitle("warned!")
    .setDescription(`${user.username} has been warned by ${message.author.username}`)
    .setColor("#FF005B")
    .addField("Reason:", `${sayMessage}`, true)
    .setTimestamp()
    .setFooter(`${user.username}`, avatar)
    
       message.channel.send(embed)
       
    const embed2 = new Discord.MessageEmbed()
    .setAuthor(`${user.username}`, avatar)
    .setTitle("You have been warned")
    .setColor("RANDOM")
    .setDescription(`Moderator: ${message.author.username}`)
    .addField("Reason", `${sayMessage}`, true)
    .setTimestamp()
    .setFooter("dm warned")
          
        user.send(embed2)
     }
}
#

try now

slender thistle
#

... what's the fucking difference...

river panther
#

there is

slender thistle
#

What's the difference exactly

river panther
#

this comes in the event handler

#

so you need to use whatever there is here

#

if there is client here

#

then you need to use client

earnest phoenix
#

@livid jackal

river panther
#

if there is bot you need to use bot

slender thistle
#

Dude the name plays no role

river panther
#

it does, read the discord.js docs

umbral zealot
#

it doesn't if you actually know javascript

slender thistle
#

If you assign your client object to client and pass it into bot parameter

umbral zealot
slender thistle
#

you use bot

#

Because that's what it's named

#

And that's how you refer to the object

#

There's no damn difference in this case

river panther
#

oh

slender thistle
#

Sure there can be cases where the parameter name can show a name from an outer scope

#

which doesn't apply here

frigid mountain
#

Still doesn't work :(

slender thistle
#

What's the error

river panther
#

^

#

show the stack

frigid mountain
river panther
#

is the bot even reading this file?

#

whagt did you put there, client or bot

#

maybe it might make a difference

frigid mountain
#

Client

river panther
#

try bot once

slender thistle
#

Sounds like either silencing exceptions or the bot doesn't even read the file

#

And I can't tell which one it is

frigid mountain
#

Still doesn't work

slender thistle
#

Can you send your full code

#

main file preferably

river panther
#

yes

#

you can also do

#
process.on('unhandledException', () => {})
#

this will fix all the errors by itself

#

and only a few will be shown

#

very rare

slender thistle
#

"fix"...

umbral zealot
#

yeah no that fixes fuck all

river panther
#

don't spoil it

umbral zealot
#

it just makes your code completely impossible to debug

slender thistle
#

Let's not troll here now

river panther
#

ok k

opal plank
#

so much for small voice of reason

river panther
opal plank
#

ur name

#

and then recommending this

river panther
#

exdi

marble juniper
#

I mean it fixes the issue since it removes all errors

opal plank
marble juniper
river panther
#

if i were to put some codes of discord.js on github

#

i would put that

#

and many bugs

marble juniper
#

isn't debugging the process of removing bugs and therefore errors as well?

river panther
#

would love to see the copy mpatsersstruggle

marble juniper
#

well you can straight skip to the remove error part using the snippet that @river panther showed

#

forget removing the bug

#

removing the error is where its at

river panther
marble juniper
#

true

river panther
#

exdi

marble juniper
#

bug becomes existen't if error doesn't show

river panther
#

^

#

hence proved

marble juniper
#

eri is developing an internal hate against us now

river panther
#

use

process.on('unhandledException', () => {})
marble juniper
#

I meant

#

erwin

river panther
#

just say this 3 times

marble juniper
#

lol

river panther
#

and he will start liking you

marble juniper
#

erwin teach me detritius I don't like discord.js anymore

#

I need something better than discord.js

#

πŸ₯Ί

opal plank
#

dont call me daddy

rocky hearth
#

how can I load a env file from terminal?

marble juniper
#

fine

#

sorry

river panther
#

@opal plank can you do custom caching in detritus.js?

marble juniper
#

erwin teach me detritius I don't like discord.js anymore

marble juniper
#

πŸ₯Ί

river panther
opal plank
marble juniper
#

help me erwin escape the hell of discord.js and allow me to enter the detritus heaven

#

ok thanks

river panther
#

inghlis

#

@opal plank can we remove errors in detritus.js using

process.on('unhandledException', () => {})
marble juniper
#

no

#

@opal plank can you use detritus with typescript

#

im too blind to see so tell me

marble juniper
#

nice

opal plank
#

i'll legit hit u if continue with ironic questions

marble juniper
#

cuz I kinda ditched js lately

#

for ts

marble juniper
#

lol

opal plank
marble juniper
#

oh sorry

#

lol

#

was too lazy to read

#

im not really fully awake tbh

earnest phoenix
#

When you enter development channel and the first thing you see is erwin talking about detritus, ecks dee

pale vessel
#

Literally me just now

#

My god

#

Seriously what the fuck

winged linden
#

MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 disconnect listeners added to [VoiceConnection]. Use emitter.setMaxListeners() to increase limit
how can i know from which command this is
From?

umbral zealot
#

Clearly one that uses VoiceConnection

winged linden
#

Well yh there is not only 1 cmnd for that lmao

earnest phoenix
#

You keep adding the exact same event listener

umbral zealot
#

well the hint is that usually this happens if oyu do a client.on("something") within another event, or on a loop

winged linden
#

Okayy thanks

onyx hare
#

bottom of my mute.js isnt working
err
UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received undefined

let jsonlogs = JSON.parse(fs.writeFileSync("./txt/mutelogs.json"));
let mentioned = message.mentions.users.first().username
 
if (!jsonlogs[message.guild.id]){
    jsonlogs[message.guild.id] = {
        mutedby: `${message.author.tag}`,
        user: `${mentioned}`,
        reason: `${reason}`
    };
}
  };
umbral zealot
#

uhhhh

#

json.parse(fs.***write***FileSync) ???

#

Also, don't use JSON as a database, that's wrong.

earnest phoenix
#

I have a little problem,

I am currently under MYSQL, for an command I retrieved information from a table (it's a channel id), it retrieves it correctly but when I want to mention the channel, it puts deleted-channel

how can i do?

#

The ID is probably incorrect or that channel doesn't exist on the guild you're mentioning it

quartz kindle
#

if youre on the phone, discord's phone apps have issues displaying mentions correctly

long crow
#

Slash command pique my interest

#

πŸ€”

river panther
#

i tried to fix the errors

#

is this correct?

umbral zealot
#

Can you stop shitposting about that

#

Like, remember there's a lot of beginners here and they might thing you're actually serious about this crap.

river panther
#

it triggers these people

#

tim and not erw

umbral zealot
#

Also the joke has definitely run its course now.

#

you can move on πŸ˜›

earnest phoenix
river panther
#

ANNOUNCEMENT
beginners please don't do that

umbral zealot
#

are you 100% certain it does, and you have access to that channel?

#

Β―_(ツ)_/Β―

sand seal
#

Pls tell me error in this command

umbral zealot
#

The words execute and run are two different words.

#

that's probably the issue.

river panther
#

yes

#

do command.run

#

in the event handler

#

or wherever

umbral zealot
#

Well considering they have like 20 commands, it's whichever they want

#

as long as it actually is the same.

long crow
#

Can a nodejsprocess_child spawn python script? Curious

earnest phoenix
#

How to limit permissions in 1 command to 1 id and 1 perm in discord.js

long crow
#

By using if else check statement

earnest phoenix
#

ah thanks

#

got iy

#

*t

quartz kindle
#

the child_process module has 4 methods

#

spawn, fork, exec and execFile

#

fork can only run node processes

#

but spawn can run anything

#

exec can run anything and wait for a response

long crow
#

execFile have async and sync process right

umbral zealot
# earnest phoenix yes im sure

maybe log that channel ID then and see manually if you have the right one, because... well... it's definitely wrong ^_^

quartz kindle
stuck pike
#

Is there any way to take Voice as input in discord.js?

#

Like taking commands from voice channel?

dire gull
#

how can I setup role on vote for my bot?

stuck pike
#

Ask there

dire gull
#

okie

#

I mean dsl did that too right @stuck pike

#

like for my server

stuck pike
#

If it's sever voting then idk

dire gull
#

bot voting

slender thistle
slender thistle
#

You'll have to utilize bot votes with webhooks

umbral zealot
#

if you're using v11, that means a big overhaul of your code

#

but if you're on v12, just update npm i discord.js@latest and you should be fine

thick field
#

+1

umbral zealot
#

oh, I say this as if your screenshot didn't actually say you're on v11

dire gull
thick field
#

help

slender wagon
#

uhmm how do i fetch all the guilds that my bot is in

umbral zealot
quartz kindle
thick field
#

Well Then V12 I Knew It Will Come A Day When It Is About Time!

umbral zealot
#

V12 has been out for an entire year

#

You had plenty of time to update. You procrastinated, now you pay the price. V11 will not be updated to fix this, it's too old. It's time to update, now.

thick field
#

😭

slender wagon
#
client.guilds.cache.forEach(guild => {
  console.log(`${guild.name} | ${guild.id}`);
})

How am i supposed to add async in this

umbral zealot
#

forEach doesn't work with async

#

but the cache should have all your guilds already

#

so what's the problem?

vivid fulcrum
#

forEach is slow anyways

slender wagon
#

i wanna add

await guild.members.fetch(guild.ownerID)
vivid fulcrum
#

idk why people prefer forEach over for, especially with the recent flexibility for got

umbral zealot
#

because for is newer and people like to read old code

quartz kindle
#

what recent flexibility?

#

async for?

umbral zealot
vivid fulcrum
thick field
vivid fulcrum
#

for await is syntax sugar we never asked for but needed

quartz kindle
#

it feels awkward to me

#

there are not much use cases for it except async iterator

slender wagon
lusty quest
vivid fulcrum
#

you'll be having a hard time regardless

quartz kindle
umbral zealot
#

Thanks Tim I was writing exactly that πŸ˜„

vivid fulcrum
#

speech recognition is extremely hard to do by yourself, you're better off using an API (google cloud etc)

quartz kindle
#

xD

slender wagon
#

yeah but i had the other problem earlier when it couldn't export the data if i used async

umbral zealot
#

"export"?

lusty quest
quartz kindle
#

if you make something async, i has to be awaited

#

everywhere you use it

slender wagon
#
function manageguild (g_id){
  let guild = bot.guilds.cache.get(g_id)
  //const owner = await outsideguild.members.fetch(guild.ownerID)
  if(guild){
    let memberCount =  guild.memberCount
     let guildname = guild.name
    let iconurl = guild.iconURL()
    let owner = guild.owner
    console.log(guild.owner)
    let id = guild.id
    console.log(memberCount, guildname, iconurl, owner, id)
    return {memberCount,guildname,iconurl,owner,id}
  }
  return "You dont share mutual guild with the bot"
}```
umbral zealot
#

yeah so make the function async

#

Β―_(ツ)_/Β―

slender wagon
#

i did

umbral zealot
#

uhhh but it's not async here

slender wagon
#

ik

#
const {userhit,manageguild,checkguild,modifyguild} = require("../bot/webapi_handler.js");

here is how i import it on the other file

#

when i add async it doesn't import it on the other file and it turns out undefined

quartz kindle
#

if you export the function then you need to call the function when you require it

slender wagon
#

oh

quartz kindle
#

a = require(...);
data = await a()

slender wagon
#

hmm

#

let me try

#
router.get('/:id',(req,res)=>{
  if (!req.session.user) return res.redirect("/authorize")
  id = req.params["id"]
  guildobj = manageguild(id)
  res.render("serverpage",{user:req.session.user,count:guildobj.memberCount, pageTitle:"Edit Guild" , name:guildobj.guildname , iconurl:guildobj.iconurl , owner:guildobj.owner, guildid:guildobj.id})
})
``` here is how i use it btw
quartz kindle
#

you cant await in the global scope tho, you have to call it inside an async function

zenith terrace
quartz kindle
#

async req res

#

await manageguild

quartz kindle
lusty quest
#

i think the way you get the Mutual guilds wont work as intented. you use the guilds the bot is in. it will be false if the Guild is not cached. if you want to get mutual guilds i guess you have to do it differently

slender wagon
#

@quartz kindle Tysm, so all i had to do is to await it from the both sides?

#

smh

quartz kindle
#

yes

#

once a single thing is async, everything before has to be async

slender wagon
#

yep it makes sense now

#

lol

#

i feel stupid

lusty quest
#

its the joy of learning stuff, you feel stupid 50% of the time

slender wagon
#

lmao ikr

lusty quest
#

also did you get what ive wrote earlyer?

slender wagon
#

i think that part is fine

#

but i still have to work on the way i fetch it

#

i think i gotta await that too

#

cuz it doesn't seem to log all the guilds

lusty quest
#

bcs it looks like you get all Guilds the bot is in and just send it to the frontend.

#

if it works then its fine, but then again i feel stupid that i did it in a way more complex way then

slender wagon
#

lol

sacred juniper
#

If i upgrade my pc's vram what will happen

#

With bios

lusty quest
#
function getMutualGuilds(userGuilds, BotGuilds) {
    const validGuilds = userGuilds.filter(
        (guild) => (guild.permissions & 0x20) === 0x20
    );
    const included = [];
    const excluded = validGuilds.filter((guild) => {
        const findGuild = BotGuilds.find((g) => g.id === guild.id);
        if (!findGuild) return guild;
        included.push(findGuild);
    });
    return { excluded, included };
}
``` i just get the Bot guilds from the Discord API and the User guilds from oAuth
slender wagon
#
function checkguild(member_id, guilds) {
  owner_guilds = [];
  bot_guilds = [];
  invitebot_guilds = [];
  guilds.forEach((item, i) => {
    if (item.owner == true) {
      owner_guilds.push({ name: item.name, id: item.id });
      if (bot.guilds.cache.get(item.id)) {
        bot_guilds.push({ name: item.name, id: item.id });
      }
      if (!bot.guilds.cache.get(item.id)) {
        invitebot_guilds.push({ name: item.name, id: item.id });
      }
    }
  });
  return { bot_guilds, invitebot_guilds };
}
lusty quest
quartz kindle
#

virtual ram or video ram

slender wagon
#

virtual ram is basically the gpu init?

sacred juniper
#

I heard , if your pc is support to upgrade vram you can do that from bios

quartz kindle
#

video ram is gpu

sacred juniper
#

For example

slender wagon
lusty quest
#

if you have an CPU with integrated GPU you can do it

sacred juniper
#

GT525M have totally 4GB
But it has 1gb vram

lusty quest
#

since it uses the RAM aviable to your CPU

#

but on a dedicated GPU not really

umbral zealot
#

Ugh I gotta figure out how to re-do my entire database right now so I can "match" existing songs for karaoke and then bundle them up together in results. I don't wanna do it. I hate database queries ir_cry_sob

rocky hearth
#

in firebase if I try to get a doc, which doesn't exist, will it be count a read??

sacred juniper
#

Ok thx guys

lusty quest
umbral zealot
#

I'm not using mysql

#

mysql fucking sucks

#

nobody should use mysql

lusty quest
#

mysql is quite decent in some stuff tbh

umbral zealot
#

stuff that doesn't matter

quartz kindle
lusty quest
#

linking Tables matters

umbral zealot
#

anyways I'm using sqlite right now

rose warren
#

Anyone know what this issue could be? Suddenly started appearing overnight causing my shards to restart.

umbral zealot
#

Either way I probably need to do some relational stuff, my problem is just as much the DB as it is "figuring out if a thing is already in there and similar"

umbral zealot
#

discord API broke something with their new channel type

rose warren
#

Ok thanks

#

Just saw that announcement now

outer perch
#

I'm kinda confused, how do I compare a string variable value with a string in batch?
something like
if variable=='string'

#

I did something like this but ain't working
if "%variable%"=="string"

sacred juniper
#

How can i go bios

solemn quartz
#

Guys how can i make a spam automod?

#

(in a private bot)

opal plank
#

those 3 checks should make a decent base for you

dry cosmos
#

hey

#

can anyone help

#

i have a bot

#

i want to set his custom status as auto changing custom status

#

pls give me code

vivid fulcrum
#

pay me

solemn quartz
#

we cannot just give you code

#

it doesnt work like that

opal plank
dry cosmos
#

why

opal plank
#

cuz rules

#

if you dont like it, go somewhere else

solemn quartz
#

I mean, do some google searches, try doing it, try to understand it, and if you can't then come here @dry cosmos

opal plank
#

if you want HELP, we can help you

#

we wont spoonfeed you code though

solemn quartz
#

if you dont know how to start ask help for the idea like i just did with erwin

#

i didn't directly ask the code

opal plank
#

i could give more info, but you didnt provide a library or language

spiral crag
#

guys when someone sends a gif, i want my bot to get the link of the gif, but the link is like this h ttps://tenor.com/view/hello-there-private-from-penguins-of-madagascar-hi-wave-hey-there-gif-16043627, how do i get the .gif link of the gif

vivid fulcrum
#

use tenors API / scrape the image url from the website with something like puppeteer

earnest phoenix
#

@opal plank do i have t change my whole code if i use detritus?

opal plank
#

its adjustments that are required

solemn quartz
opal plank
#

what exactly you struggling with?

opal plank
earnest phoenix
#

else i will i bc have to change 250 functions

opal plank
#

what EXATCLY do you need to change tho?

earnest phoenix
solemn quartz
opal plank
#

yes

earnest phoenix
#

Do you know my Custom Command bot.And there i have functions like $giveroles, $createchannel ... .In this functions are based on discord.js

opal plank
#

like i said, legit almost everything has the same function with a different name in detritus

#

for example

#

giveroles

earnest phoenix
opal plank
#

for the channel

#

thats why im confused why you struggling, since its literally the same

earnest phoenix
#

does a array of role works like on djs

opal plank
#

should yeah, let me check

earnest phoenix
#

struggling,
bc i have to change 250 functions,which is much work

opal plank
#

nah, you have to loop requests

#

if you got an array, just put them and loop

outer perch
#

@opal plank or @lament rock do you know batch?

earnest phoenix
brave tendon
#

What do I have to use to check that my bot has permission to send messages? I tried with client.guild.me.hasPermission() and with client.user.hasPermission() is there anything that works for the client itself?

opal plank
#

use this

#

internally they do multiple requests too

outer perch
# opal plank a bit

I get The syntax of the command is incorrect when executing the batch, but it still does everything as expected.
It's not a problem if it does what I want, but how do I make it say where is the problem instead of throwing that message alone?

lament rock
opal plank
#

from what im seeing in the docs you can only update one role at a time

earnest phoenix
opal plank
#

u sure?

earnest phoenix
#

D.js does a single request by editing the member object

opal plank
#

thats an option too then

earnest phoenix
opal plank
#

its what voltex said

#

use edit() instead

lament rock
#

desktop client receiving multi role add when

opal plank
#

gonna spoonfeed you a bit

earnest phoenix
vivid fulcrum
#

the fact that discord allows multiple attachments per message but only android utilizes this feature

lament rock
#

iOS does as well

vivid fulcrum
#

oh? that must be recent then

earnest phoenix
#

Wait what, discord desktop/web can't send multiple attachments?

vivid fulcrum
#

every attachment is its own message

earnest phoenix
#

yeah it upload per one msg

lament rock
#

It's been a thing for a while for iOS. Practically a thing since it came out. Unless it's a TestFlight exclusive (iOS beta software)

earnest phoenix
#

Well not surprised, discord backend is really a clusterfuck

#

All different than each other

opal plank
#

@earnest phoenix this should do the trick

lament rock
#

they delayed enforce v8 because official clients couldn't update in time

#

Of course Discord is a cluster fuck

earnest phoenix
opal plank
#

yeah, its in the commandClient options

earnest phoenix
#

I literally added JS syntax highlighting for discord mobile and it was an absolute pain, man

#

Imagine fixing all that mess

lament rock
#

isn't the android client react native as well

opal plank
#

@earnest phoenix

earnest phoenix
#

lol i need every without presences

lament rock
#

Gross

opal plank
#

do you tho?

#

emojis caches

#

messages cached

#

presences cached

#

cached is not the same as intents btw

#

it just means they wont be saved

#

but you still recieve them

earnest phoenix
#

yes there is a function $isemoji[] or $findemoji ...

opal plank
#

fair enough

lament rock
#

You don't need cache to determine if something is an emoji

earnest phoenix
#

that is for custom command

dapper rover
#

Sa

lament rock
#

The only thing you stand to gain from caching emojis is getting what guild it's from and who created it

earnest phoenix
#

I need everything,Else i would spam the discord api

#

You also need the manage emojis permission to know who created it

marble juniper
#

yeah

lament rock
#

petition: replace all nullable instances of User with data of System

earnest phoenix
#

seems to work

#

KEKW What is that, a parser?

earnest phoenix
#

Seems like bdfd style parser

#

Called it

#

You're using BDFD or DBD? Or you made that parser yourself?

#

KEKW Don't tell me you're using those bot makers

earnest phoenix
#

based on dbd.js

#

put hardcore edited functions are selfmade to bc of cooldowns

#

So you took the parser from dbd.js and edited it?

earnest phoenix
marble juniper
#

bruh

earnest phoenix
#

Stinky

earnest phoenix
#

and my parser is quite broken :C

lament rock
#

hot take: coding is just chaining conditionals

earnest phoenix
#

@earnest phoenix since you are the expert here. Would a normal parser work. That executes from top to bottom?

#

That's what most parsers do

#

Most of them start from the first character to last and create tokens for each char, well

#

Lexer -> tokens -> parser -> evaluate -> output

marble juniper
earnest phoenix
#

Well depends on what programming language you want to use really, well you can look at the engine I sometimes contribute to, which is the v8 engine @earnest phoenix

lament rock
#

Maybe there is a tutorial to create a simple parser, but that's mostly up to your own logical thinking. interpreting can be done many ways with micro optimizations that can be made along the way such as JS' JIT compiler

earnest phoenix
#

Just like a normal message

marble juniper
#

in js you would use
"```text```"
or
\\\\\\text\\\\\

#

kekw

earnest phoenix
#
.send('\`\`\`js\ntext\n\`\`\`')
``` for example
fair axle
#

Thanks

lament rock
#

True emoji

marble juniper
#

lol

marble juniper
#

big oof ik

#

whatever

earnest phoenix
marble juniper
#

check if it includes while lol

#

oh yeah forgot about the tons of edge cases

earnest phoenix
#

You can even use regex to detect those but I wouldn't recommend that

lament rock
#

That's where tokenization comes into play. You can build a tree of recognized key words and construct a string to evaluate later

marble juniper
#

regex is pain

#

I saw a regex in an emoji parser package

#

the regex was longer than 10 lines

earnest phoenix
lament rock
#

twemoji is a long regex

earnest phoenix
#

The best thing to do in this case to build a simple abstract tree by lexers and tokens in your parser and then evaluate

marble juniper
#

you could just make a timeout and check if the code runs too long

lament rock
#

gross

#

async operations might make that problematic

earnest phoenix
#

can i make sat without js functions

marble juniper
earnest phoenix
#

Lemme build an instruction tree for you

Input -> lexer -> tokens -> parser -> AST -> detect for/while loops -> check the iteration count -> stop

lament rock
#

That's for sandboxed arbitrary code execution. Not parsed input

earnest phoenix
#

You can even use LLVM for this

earnest phoenix
#

This would not be user-friendly since only a dev knows what async is :C,since most of Discord request with returned valuse is async or with promise

lament rock
#

Node's flavor of JS doesn't support import. At least, not unless you have es6 mode turned on

earnest phoenix
#

Import and export are only supported in .mjs files

lament rock
#

Is arbitrary code supposed to be user friendly? Once you understand the concept of logic, you're pretty much a developer

earnest phoenix
lament rock
#

I'm aware. However, you are essentially creating your own interpreted language which just happens to be high level

#

not unlike JS

frigid mountain
#

How do I make a code that checks how many times a command has been used to a user?

earnest phoenix
#

Save them in a database and increment it upon usage

marble juniper
earnest phoenix
marble juniper
#

or jayson dbs

frigid mountain
lament rock
#

file based data storage Blehh

marble juniper
#

since you have at least 1 file to keep it all

lament rock
#

No. There are in memory relational databases, databases like Redis, etc

marble juniper
#

redis reminds me of reddit for some reason

lament rock
#

MySQL also holds a lot of data in memory before writing to chunked files

marble juniper
#

imagine if reddit used redis

#

lol

earnest phoenix
#

Databases which are rewritten in buffer forms like files are dangerous, they could easily be corrupted unless they're using atomic operations

earnest phoenix
lament rock
#

solutions like those aren't easily scalable

earnest phoenix
#

Actual databases that store the documents in a cloud based storage are always recommend

frigid mountain
earnest phoenix
#

Such as mongodb mmLol

lament rock
#

Voltrex no

earnest phoenix
#

Or postgres

lament rock
#

pls

#

time to write mangoDB

#

πŸ₯­

earnest phoenix
#

πŸ₯­ DB

earnest phoenix
lament rock
#

I wanted to write my own in memory K, V db similar to redis, but also supporting native filtering, but quickly gave up on it

earnest phoenix
#

Creating a good database is a pain in the ass

#

true

lament rock
#

I still have to logically understand btrees

earnest phoenix
#

Oh my god, not those

#

:notlikethis:

lament rock
marble juniper
#

lol

marble juniper
#

lol

lament rock
#

What if they plan to expand beyond "just a few hundred"

marble juniper
#

What if they

#

don't

earnest phoenix
#

ik somebody who stores 70000 in mdb for his bot

lament rock
#

You can't assume that. You should just give them an objectively better solution to their alternatives

earnest phoenix
#

I just store about 2k documents

lament rock
#

besides, knowing SQL is essential in professional environments

earnest phoenix
lament rock
#

For filtering operations, yes. Relational databases have their own uses, though and are generally more powerful with SQL statements as it's essentially arbitrary code execution

marble juniper
#

lol

earnest phoenix
#

lol

woeful pike
lament rock
#

Also keep in mind that databases can buffer inserts because I/O ops suck. Some DBs also shard stored data into chunks

woeful pike
#

insert speed is also not an end all performance metric

earnest phoenix
lament rock
#

What point are you trying to make

marble juniper
#

what if they are just regular people who are not trying to make a business out of thier bot

lament rock
#

If it's not for their bot, then it's for their future

marble juniper
#

do they really need something like a dedicated server and then maria db and docker

#

lol

lament rock
#

I never suggested docker

marble juniper
#

just as an example

#

lol

earnest phoenix
#

Just use postgres

#

4head

vivid fulcrum
#

this

lament rock
#

That would have been my go to suggestion anyways

marble juniper
#

Lol ditch ur json db and go to enterprise level databases for your 100 server bot lol

lament rock
sudden geyser
#

just use whatever

lament rock
#

The difference is that I actually listened to my senior dev and having a database remote to the clusters has paid off so that I didn't have to migrate the data