#development

1 messages · Page 179 of 1

sharp geyser
#

man idk what to do with the database stuff

#

looking at my old code I was doing it entirely wrong to begin with

#

Then again I also can't tell what I should return in my connect function as it can be a number of things

#

I mean .connect returns a Pool<Postgres> but when using that with the app_date that actix_web has I think it will cause some funky stuff again and I will have to use Arcs

#

Honestly if possible i'd love to avoid Arcs until I fully understand them Sadge

radiant kraken
#

though i dont think you can avoid Arcs imo

sharp geyser
#

I know but one can hope

#

😭

sharp geyser
#
use sqlx::{ConnectOptions, Pool, Postgres};
use sqlx::postgres::{PgPoolOptions};

async fn init_db_connection() -> Pool<Postgres> {
    PgPoolOptions::new()
        .connect("postgres://no:andno@localhost")
        .await
        .unwrap()
}
``` returns a ``Pool<Postgres>`` right
#
#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(async || {
        App::new()
            .service(index)
            .app_data(Data::<Pool<Postgres>>::new(init_db_connection().await))
    })
        .bind("localhost:2053")?
        .run()
        .await
}

Then I use it here

#

but as in my old code I have to do

async fn handler(pool: &mut Data<Pool<Postgres>>) {}

and use arcs to even make use of the pool

#

All this is very confusing to me as I still don't even know what &mut Data<Pool<Postgres>> is

#

I always thought it was mut pool: Data<Pool<Postgres>>

#

didn't know you could make a type mutable

radiant kraken
# sharp geyser didn't know you could make a type mutable
fn thing(mut value: Type) {}
// value is mutable ONLY in this function
// value.thing = 2;
// value = 2;
fn thing(value: &mut Type) {}
// value is immutable, but it's a reference to a mutable value
// value.thing = 2;
// *value = 2;
#

yup

wheat mesa
#

@lyric mountain any resources you recommend for learning flutter? Gonna try to get back to working on that app

lyric mountain
#

didn't follow a tutorial at all, and besides, it looks very similar to react (before it became FP)

wheat mesa
#

I struggle a lot with aligning things and what containers to use etc

#

I also need to just learn dart bc my knowledge of it is very limited

#

Even though it’s similar to Java, I should probably still learn it outside of flutter

lyric mountain
#

dart is more akin to c# tbh

#

while inheriting the async/await thing from js

#

but u can learn it along with flutter, since it literally has no use outside of it

#

as for the containers, they're quite literal, columns for vertical lists, rows for horizontal lists

#

container for...containing (like a div)

#

sizedbox for making a sized box

#

singlechildscrollview for making a single element scrollable (usually used with columns/rows since they dont have scrolling by default)

frosty gale
#

i never liked languages designed to solve a specific problem

#

certain languages*

lyric mountain
#

all languages are designed to solve a specific problem, they just happen to be turing-complete

#

dart could likely fit as a drop-in replacement for a ts project if u wanted

#

it's just that dart was made for flutter and flutter made for dart

frosty gale
chilly plaza
#

site always down Cry

green kestrel
silk jacinth
#

Do you can recommend me a bot hosting platform which host bot 24/7 ?

deft wolf
#

Yes, any VPS that has at least 1GB of RAM

#

Such a VPS probably costs a few dollars per month

#

I pay 5 euros for 12gb of ram, so you probably won't have any difficulty finding cheap hosting

lyric mountain
#

tho I never see offers lower than 8gb tbh, unless it's some rando host

feral aspen
#

It's been a while since I've last hello here. 👋

#

@lyric mountain What are your thoughts on APCSA?

lyric mountain
#

never hear of 'er

lyric mountain
#

looks like our first semester in my former university

feral aspen
#

Yeah, it actually is a course offered in universities.

lyric mountain
#

it's a good roadmap I think, start from the base and build up

#

I see java mentioned there, personally I'd start with C for the fundamentals

#

then move up to java for learning oop

feral aspen
#

I mean, CollegeBoard only offers, in terms of Computer Science, Principles & A (as in Java).

feral aspen
lyric mountain
#

c then java

feral aspen
#

I've, personally, always suggested individuals to start with a dynamic language, not immediately static.

lyric mountain
#

which is the order I did

feral aspen
#

Aha, I actually did JS, TS, then Java.

lyric mountain
#

by starting with dyn langs you get unhealthy habits

feral aspen
#

Honestly, I started with JS and get interested in static more 😂

lyric mountain
#

learn through suffering lmao

radiant kraken
#

@feral aspen very very cool website

#

just a bit sad that there is only one blog post

feral aspen
radiant kraken
#

why is that? it looks perfectly fine to me

#

the only thing odd is that the blog section is empty, while there is one featured blog post

feral aspen
#

Exactly. ^

feral aspen
lyric mountain
feral aspen
#

Looks like Java

lyric mountain
#

well, it is java

radiant kraken
feral aspen
#

What is it, the TS of JS sort of?

radiant kraken
#

but it's easier to run into errors

lyric mountain
#

the opposite kinda

#

ts makes js more strict

#

groovy makes java more lenient

radiant kraken
#

by errors i mean runtime errors

feral aspen
#

Isn't Java already getting more lenient somehow?

#

I haven't been into programming for a while actually.

lyric mountain
#

kinda, but it's still very strict

feral aspen
#

Isn't the class x, public static... going away?

lyric mountain
#

I'd say it's getting more qol

lyric mountain
feral aspen
lyric mountain
#
public class Main {
  public static void main(String[] args) {
    ...
  }
}

becomes

...
#

for the rest it stays the same

radiant kraken
feral aspen
lyric mountain
#

given I always have other shit in the main class, doesn't make much diff to me

lyric mountain
#

but can be useful for testing or very simple inits

feral aspen
radiant kraken
#

what makes groovy differ from things like kotlin

feral aspen
#

Since I've never really made huge projects using Java, pretty much

lyric mountain
radiant kraken
#

same goes for kotlin, no?

lyric mountain
#

nope, the structure is different

radiant kraken
#

oh wait kotlin has a different syntax

#

but i like its simplicity

feral aspen
#

I have been learning Swift the past couple of months...

lyric mountain
#

groovy was intended as a webserver and scripting language for java

#

and as such, it has a helluva of syntactic sugar

lyric mountain
#

but when it compiles, it becomes java, so u lose nothing to it aside from a bit longer compilation time

radiant kraken
#

i wish could learn swift but i dont have any apple device

feral aspen
#

In a nutshell, in Dubai, Apple hosted this one competition that had almost 4,000 students, across many schools, create prototypes for an app that promotes resilience, tolerance, and what not.

radiant kraken
#

very nice

feral aspen
#

Out of the 4,000 students who participated, and 2,000 who sent their prototypes, only 200 were eligible to win a MacBook and one of them was me and my team. :)

radiant kraken
#

i wish i had any of that in my country

#

my school doesn't even have a computer science subject

feral aspen
#

Neither does my school, I'm having to continiously suggest them AP courses to offer us.

#

I'm like the only individual in my entire school who takes APCSP as a course, no one else.

still parcel
#

How to say hello in different language

#

😅

radiant kraken
#

100% of all of the things i've learned are from the internet lol

feral aspen
#

Yup, & to be fair, school is limited in what they teach you when it comes to computers.

#

I mean, I know for a fact they're just giving us opportunities to test out fields that interest us.

radiant kraken
#

yup

#

maybe all of that is for college

feral aspen
#

Yeah, but you're still self-studying most of the time

lyric mountain
#

even at unis

#

they teach you how to learn

#

not how to program

radiant kraken
#

wha

feral aspen
#

I'm not a uni student, yet, but that's what I was told, too.

lyric mountain
#

which is why most people come out of CS colleges clueless and mad that they haven't become steve jobs

feral aspen
#

What are your thoughts on students entering CS major with no clue how computers work in the first place?

lyric mountain
radiant kraken
lyric mountain
#

they can't realistically teach you how to code because they'd need to refactor all their material every few months

radiant kraken
feral aspen
radiant kraken
#

or just use things that dont change

#

like C/C++

#

or outdated shit like Pascal

long whale
#

is it just me thats having problems voting? it keeps on saying "attention required", its been around 2 days

feral aspen
#

I was told a pretty good point, despite the fact you know how to code and such, universities won't remove certain courses from you, regardless?

long whale
#

what do i have to do

tulip ledge
#

Didn't touch any of my code, but all of a sudden my message collector stopped working? I checked an even hardcoded in the channel value and my bot doesn't read any message sent in the channel even though it's correct any clue why?

feral aspen
#

Send code.

tulip ledge
#
    let collector = channel.createMessageCollector({
      filter: (msg) => {
        console.log(msg)
        return msg.author.id === userId
      },
      idle: 30*1000
    });
#

expire works

#

but it doesn't collect a single message

lyric mountain
radiant kraken
lyric mountain
#

no really, you'd be grateful about using java "My name is " + name + ", and age " + age + ", escaped quote \""; after having to use ```pascal
'My name is ' + name + ', and age ' + IntToStr(age) ', escaped quote ''';

#

admittedly, this aint the biggest issue, which is the fact that the only IDE u can use constantly freezes or decides not to allow ctrl + space at random

feral aspen
#

Thank youuu. poggythumbsup

radiant kraken
earnest phoenix
#

do bots losing votes has anything to do with these late ddos attacks

#

?

fast jungle
earnest phoenix
#

sad though

#

i thought i had a chance this month to get 101 votes xd

bitter granite
earnest phoenix
#

ty for clearing this out

tough seal
#

hey how to report im unable to access top.gg with message "Sorry, you have been blocked"

earnest phoenix
#

and any other channel

#

this issue is known

fast jungle
earnest phoenix
#

and it is explained on all

#

:D

tough seal
#

so i just have to wait?

bitter granite
#

yes

tough seal
#

oh ok thanks

steep jay
#

"The site will automatically unblock when the attacks stop"
When will the attacks stop?

deft wolf
#

Ask ddosers

#

Do you think top.gg ddosses itself?

steep jay
earnest phoenix
lyric mountain
#

I mean, medal is topgg too

pale vessel
#

why isn't this channel locked too at this point

deft wolf
#

Because most people probably don't even know it exists

earnest phoenix
#

fr

deft wolf
#

We can simply ignore them because none of this news will change the fact that things are the way they are

earnest phoenix
#

💀

bitter granite
#

It is being normal atm

earnest phoenix
#

very normal yes

solid jacinth
#

yeah i cant vote for anything

#

i wonder what's happening with top.gg this month

deft wolf
#

DDOS attacks

solid jacinth
#

what's that mean

deft wolf
#

And something with proxy

bitter granite
deft wolf
solid jacinth
#

so basically what uhh that one hacker group did a while back

bitter granite
earnest phoenix
#

nothing crazy

solid jacinth
#

oh it's cyberbunker

earnest phoenix
#

no\

solid jacinth
earnest phoenix
#

literally google 50 min of networking and youll have the knowledge

#

the issue would be getting bots

solid jacinth
#

so how does the situation get better then

#

cause top.gg usually functions right the past 4-5 years ive been voting on it

#

roughly^

earnest phoenix
#

its up now

solid jacinth
#

i see

#

thx for help

fast jungle
# deft wolf DDOS attacks

Dirtibuted Denial of Service attacks. In simple terms, It sends many tens of thousands of bot IPs to one ip address to overload the ip and cause it to crash.

polar pivot
#

Can i ask: how long will it be till the blocked be lifted?

deft wolf
#

I'll surprise you, but we don't know that either

long whale
#

ive been trying for the past 2 days

radiant kraken
#

after five hours of pain, i've successfully made my first procedural macro poggythumbsup @wheat mesa

dry comet
lyric mountain
long whale
#

none work

dry comet
#

It's work

oak cliff
#

Read the latest message in announcements.

dry comet
#

But my chrome blocked

radiant kraken
oak cliff
#

I don't want to lock this channel too as people are using it for actual development things

long whale
radiant kraken
#

thank you ❤️

#

safe haven for nerds like me

lyric mountain
radiant kraken
#

i've been planning on making a Notepad++ plugin framework in Rust

dry comet
long whale
#

vp works

long whale
warm surge
long whale
#

i mean status

warm surge
long whale
# warm surge

they probably blocked all of asia for the ddos attacks ngl im having to use vpn from a place across the world pepowot pepowot

dry comet
thorny ravine
#

Thank God, these Nonsense Access Block Message effects only some People and not all Users around the World

untold lantern
#

i have a question someone help me out

warm surge
untold lantern
warm surge
untold lantern
#

i mean standard time

oak cliff
untold lantern
#

There are several time zones

raven jackal
#

what's this blocked things catdespair

untold lantern
raven jackal
#

so just an issue? __

bitter granite
#

#make Webster support staff

warm surge
stray gyro
#

Why me cant type in general

lyric mountain
#

because people dont read announcements

deft wolf
#

In my opinion, they should be timeouted for 30 minutes for not reading the announcements poggythumbsup

civic scroll
oak cliff
#

I can't timeout that many people heh

rigid folio
#

_ _

lyric mountain
neon tusk
#

Hello

deft wolf
earnest phoenix
#

Hmm, it seems one of their rate limit rules got tripped out on Cloudflare, so its limiting everyone. AKA another DDoS attack.

#

That's specifically what that screen means.

deft wolf
#

Unlucky

earnest phoenix
#

I'm unsure why they aren't just captcha/JS challenging every non-API request, then again who knows with a site as big as Top.

daring gale
#

how to fix it?

deft wolf
#

Fix what?

steep jay
#

just fix it

warm surge
#

just fix it damn it

lament rock
#

If it isnt broke, dont fix it

daring gale
#

someone tried to break into topgg bank

#

be careful of robbery

eternal osprey
#

Hey guys

#

I am trying to create a new site, how can I make sure that it works for all devices and on all platforms?

#

I use media tags but problem is that it looks way worse on safari then google etc due to headers etc

#

I always use vw and vh, but is it better to just stick with pixels instead?

#

And then just use media queries to fix different screen sizes

#

Fuck this I am learning bootstrap

pale vessel
#

use tailwind and their screen size classes

#

it's so much better

spark flint
#

Yes

sharp geyser
#
Execution failed (exit code 101).
C:/Users/dyeaaaronjr/.cargo/bin/cargo.exe metadata --verbose --format-version 1 --all-features --filter-platform x86_64-pc-windows-msvc
stdout : error: failed to load manifest for workspace member `C:\Dev\robase-2\src/account/create_account`

Caused by:
  failed to read `C:\Dev\robase-2\src\account\create_account\Cargo.toml`

Caused by:
  The system cannot find the path specified. (os error 3)

stderr : 

bro wtf

#

what in the hell is it looking for

#

okay fixed it

#

for some reason it added a workspace thing to my cargo.toml

daring gale
#

how to escape from blocked websites

sharp geyser
#

cant

#

just wait until the attack stops

spark flint
neon tusk
surreal sage
#

how can i fix npm not saying fuck you when i want to use pnpm

#

(i have it installed as dev dependency)

#

oh great discord's down

#

"preinstall": "only-allow pnpm",

#

it doesnt do anything

vivid fulcrum
surreal sage
vivid fulcrum
#

prefix with npx then

#

should work

surreal sage
#

(ctrl c'd myself)

#

no diff

vivid fulcrum
#

why are you using npm in your terminal

#

use pnpm

#

this seems to be related

surreal sage
#

bruv

#

i want to use pnpm

#

but im still used to npm

#

so i want to use the fucking preinstall script

#

but it isn't running

#

so npm isnt aborted

#

firefox bugging..?

sage bobcat
#

One message removed from a suspended account.

surreal sage
sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

surreal sage
#

i have

#

yarn what

#

you just said yarn

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

surreal sage
#

pnpm isnt the issue

#

npm is

#

i migrated to pnpm

#

and im still typing npm

digital swan
#

i aliased pn to pnpm and it made it easier to not accidentally type npm

eternal osprey
#

idk it seems easier to learn than tailwind

#

Easier in the sense that i just don't want to take on too much as i am currently also diving into more haskell and some ML techniques.

shut zenith
sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

neon leaf
sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

neon leaf
#

that too

#

its multiple things

#

its a bundler too

#

all in one

sage bobcat
#

One message removed from a suspended account.

pale vessel
wanton spoke
#

is there a good dev that know fortnite apis acces_token and stuff

eternal osprey
#
/* 
recurrence relation:
found sequence: {2,2,4,6,10}
a_0 = 2 (month 1)
a_1 = 2 (month 2)
if n >= 2 then a_n = a_(n-1) + a_(n-2)
*/
let array = []
function fib (n)
{
if(n == 0 || n == 1) return 2;
if(array[n] != undefined) return array[n];
let result =  fib (n-1) + fib(n-2)
array[n] = result
return array[n];
}

i found this implementation of a fibonacci sequence. Does anyone else know a faster way to solve this sequence? I don't think there's any but not sure

#

i used dp together with memoization to reduce extra computational work

#

to be fair, we could actually compute it in linear time using a different equation but that's cheating pepowot

wheat mesa
#

Usually recursion is pretty bad for performance

#

I would use just a regular loop here

#

And yeah there’s an approximation that’s pretty damn accurate but if you’re looking for exact results this is probably the closest you’ll reasonably get

#

You also really don’t need an array unless you plan on using it for caching values, in which case that’s fine

daring gale
#

is work using vpn?

deft wolf
#

Huh?

crimson pike
#

hello i want to make a website but i dont like writing html is there any alternatives to html?

#

like ejs maybe

sage bobcat
#

One message removed from a suspended account.

green kestrel
#

and no there are no alternatives to html

crimson pike
#

ohh right

marble finch
crimson pike
#

what is the purpose of nextjs and react?

green kestrel
#

I forget it's name (sponsorship failed)

#

even with the amount of experience I have with web dev sometimes it's not a good use of time to spend ages making site design by hand, the reward is purely academic

#

"I made my bots site by hand only took me 4 weeks"
vs
"I got my bots site up in a day to go alongside my bots release date"

#

end user does not care what tech you used and how neat the html is

crimson pike
#

the site i'm planning on making is like truth or dare but anonymous will wordpress work for something like that?

spark pebble
#

Anybody know a better way to handle "rotating prescenes" - This works fine for a while but gets stuck after like 4/5 hours... Possible API limit?

            # List of presences
            presences = [
                discord.Activity(type=discord.ActivityType.watching, name=f"{num_servers} servers"),
                discord.Activity(type=discord.ActivityType.playing, name=f"with {num_cards} cards"),
                discord.Activity(type=discord.ActivityType.listening, name=f"{num_users} users")
            ]

            # Rotate through the presences
            for presence in presences:
                await self.bot.change_presence(activity=presence)
                await asyncio.sleep(30)```
copper cradle
#

I don't get why it'd get stuck only after 4/5 hours, I'd see it getting stuck after only 60 seconds

#

You're looping over the array only once

#

use a while loop or something else

#

that for loop will loop exactly 3 times and that's it

green kestrel
#

using a for loop with await seems a weird way to do this, why not a timer?

#

or why not put all that info in one presence line, and not rotate? what if you want to know how many servers and it's currently showing cards, you gonna stick around 3 mins?

lament rock
spark pebble
#
async def update_presence(self):
        while True:
            # Get the number of servers the bot is in
            num_servers = len(self.bot.guilds)

            # Get the number of cards from the 'cards_table'
            num_cards = self.cards_table.count_documents({})

            # Get the number of users from the 'users_table'
            num_users = self.users_table.count_documents({})

            # List of presences
            presences = [
                discord.Activity(type=discord.ActivityType.watching, name=f"{num_servers} servers"),
                discord.Activity(type=discord.ActivityType.playing, name=f"with {num_cards} cards"),
                discord.Activity(type=discord.ActivityType.listening, name=f"{num_users} users")
            ]

            # Rotate through the presences
            for presence in presences:
                await self.bot.change_presence(activity=presence)
                await asyncio.sleep(30)
#

entire snippet btw

#

Sorry, pasted wrong thing was having 2 conversations at once, it is a while loop

#

So yah back to question one, anybody know why is getting stuck after like 4/5 hours?

wheat mesa
#

I'm sure your CPU loves you for this function

#

while True:

green kestrel
#

it's basically queueing up a ton of awaits until the heap overflows

#

isn't it?

#

because the whole function takes 90 secs to run

#

idk, something smells fishy

#

but python isn't my jam

lament rock
#

while loops should wait until all of the code is executed to run again

#

key word should

tulip ledge
#

Hey I had a question about how I'm handling my database. My friend who back in the day (like 4 years ago) helped me set it up but now I kinda wanna redo it but want to know if it's good idea or not. So how it is right is - really inefficient. It's a mysql database using keyv where the key is the user and the data is a JSON object - but it's compressed. I don't like this approach as each user has profiles so first I have to query the user then decompress it then take the selected profile then query the database for that profile then decompress the profile. I've been using prisma a lot with another project and was wondering how hard it would be to migrate to that. I'm thinking I should probably do it now as I only have around 400 entries in the database atm. Anyone with an opinion on this? And how hard would it be?

lament rock
# tulip ledge Hey I had a question about how I'm handling my database. My friend who back in t...

It all heavily depends on your needs and what you're willing to compromise. If you need relational storage like being able to join multiple tables together and add properties from those other table queries then a relational/sql based approach would be best in which I would recommend Postgres (sql based) just for performance and query optimization opportunity. If you only need to store objects or simple K,V then something like Redis would be ideal. The thing with Redis is that it isn't made for persistence across restarts but has some form of it. There may be disk based K,V storage to look into, but Redis is a go to for ephemeral K,V storage because access times are low because of being stored in memory. Another downside with Redis is that you have to store the Objects as JSON encoded strings and decode, though this process is trivial if you have a helper function.

I have personally use both and still use Postgres since I have to have relations like being able to query multiple tables and include their data in the response

#

I should probably move back to Redis for voice states and the likes

#

Would give postgres some breathing room

tulip ledge
lament rock
#

Postgres has some different syntax like prepared statements no longer use ? but instead use $index where index is the 1 based index of the prepared statement array, though like this, you can optimize your insert statements and omit duplicate prepared statement array entries. If you wanted to keep your sql lib the same and interface with your db the same way, I'd actually recommend MariaDB over MySQL since Maria is open source and tends to perform better and it's just MySQL

spark pebble
#

With about 20 other docker containers

wheat mesa
#

quick question: where the actual fuck is the device manager tab? I remember having this problem a while ago

#

I can't find it anywhere

lament rock
#

Then you can stay there should you choose. Postgres is just an option. It can handle caching like guilds, though I'd recommend using Redis for that as that data should be ephemeral

wheat mesa
#

@lyric mountain have you ever had any problems with device manager? I'm going Tools > Android > Device Manager but when I click on it, nothing pops up and nothing happens

#

nvm ofc as I ping you I fix it by rolling back my intellij version

lyric mountain
#

had that happen a lot with printers

golden dagger
#

yo by chance does anyone know how long it takes for the site to update the name of a bot after changing it? i changed the name 2 days ago and it still displays the old one on the site. idk if there’s something i have to do or if it just takes a while..?

pale vessel
#

you have to click refresh data and edit and save your bot description

eternal osprey
#

and that array was important for memoization

#

this way i only computed each element in the sequence once than having to compute each element multiple times in the sequence

#

if i used a regular for loop here i would have to fill in tabular data and work ffrom there, but in reality that would just have more memory overhead for minimal or maybe no gain in runtime at all

lyric mountain
#

and yeah, it is a good idea to refactor the structure

#

if you're fine working with key-json structure, then perhaps mongo would be a better option

#

otherwise use columns and relationships

sharp geyser
#

@lyric mountain Ayo wassup mayne

#

Haven't seen you here in a while

lyric mountain
#

been busy with some stuff so I couldn't show up as usual

green kestrel
#

hmmm, that "other popular bot list" is down atm, but i learned something interesting

#

theyre hosted on heroku lol

spark flint
#

thats the nuxtjs error page

#

google shows others having same page

elder crane
#

Olá

#

Hello, I'm Brazilian and I'm new here!

green kestrel
#

😄

spark flint
#

It’s same / similar error message and design

warm surge
#

@real rose wanna buy some bitcorn

real rose
#

-b @slim kite btc scam

gilded plankBOT
#

upvote hamid0962#0 was successfully banned.

real rose
#

I don't but ty

#

Insane

warm surge
brave saddle
#

just ban him...

solemn latch
marble finch
#

It seems you can do more stuff with discord.js than discord.py. Is this correct? I have zero familiarity with js but it looks like it has better customization for bots.

Second question. Does it work good with postgresql?

deft wolf
#

Depends on what you mean by "you can do more". You can do anything with any language. Whether it's javascript or python or java

#

Everything is based on the Discord API which, in the case of discord.js, is so idiot-proof that you practically don't have to think because the Internet is full of guides and so on

solemn latch
#

I'm unaware of anything you cant do in discordpy that is doable in discordjs

marble finch
#

The only thing I have so far is voice activity. Discordpy doesn’t have anything native build in and looks like discord js it does. This is why I was wondering if there is more stuff.

#

To detect when user speaks I mean. Not necessarily listen to the convo but detect voice activity and discord js it does.

#

I might over look as well since was last night I was looking for it and couldn’t find anything on discord py

#

Had a long night 🤣 looking for that

lament rock
#

Voice activity is a voice ws thing unfortunately, so you'll need something for that

#

Also, unless you're server deafened, the voice data is still sent to you regardless

#

Py likely has something for that

#

With discord.js, it used to be included in the main lib, but it's now a separate package for modularity

#

voice stuff kinda fell out once Discord started cracking down on music bots anyways

marble finch
#

Ok Ty. I think I found a way. This info was helpful. It’s called voices_states.

warm surge
wicked pivot
#

Is the bot able to know how a user joined a server?
Because I saw that it exists when you activate the community tab but the bots have this information?

wicked pivot
spark flint
brave saddle
# wicked pivot How ?

not really sure. but there are bots that tell you what invite link they joined from.

spark flint
#

you have to cache invites and poll what invite changes when a user joins

#

its unreliable

#

js implementation

deft wolf
#

Maybe one day they will add, for example, in the Member object what source he joined from

golden dagger
#

how do you display how many servers your bot is in on the website?

#

some bots look like this with the server count

#

then mine's like this

spark flint
golden dagger
#

oki thanks :D

wanton spoke
#

we dont allow browser cookies to be used as authorization
what who the declined my bot limao is a skin checker bot so it need autorization 🤦‍♂️

wheat mesa
#

what

wanton spoke
#

@shell tundra

#

like bro is decling evey bots limao

shell tundra
wanton spoke
#

why u declined mine

#

a skin checker bot need authorization

spark flint
#

giving a random bot your cookie is the most dodgy and unsafe thing ever

wanton spoke
#

is like aqua bot limao

warm surge
#

lmao\

wanton spoke
#

is the same think is not cookies is epicgames auth think

wanton spoke
#

what no

warm surge
#

It does not pop up cookies bs

wanton spoke
#

look bio limao

warm surge
#

what limao

wanton spoke
#

that is epic games store

warm surge
#

thats epic games

wanton spoke
#

the bot is using a auth link not cookies

warm surge
wanton spoke
#

ye

warm surge
wanton spoke
#

wtf is wrong with u

warm surge
#

im saying bullshit

wanton spoke
#

u need to read documentation g

warm surge
wanton spoke
#

🤦‍♂️

warm surge
#

nah i aint getting my cookies grabbed

wanton spoke
warm surge
wanton spoke
#

i don't think so

warm surge
wanton spoke
#

auth code

warm surge
#

mhm

#

no

shell tundra
warm surge
#

mhm

sharp geyser
median steeple
spark flint
#

looking at how Mac does it for Pixxiebot

#

its primarily CSS stylingsmide

#

if you are good with HTML you can style it and design it with that

#

you can test with making it as a website (no js tho)

sharp geyser
#

@radiant kraken Does rust not have any equivalent to union types like ts has? for example

struct Something {
  something: "text" | "int" | "bigint"
}
#

googling leads me to enums but idk if that is the correct approach

radiant kraken
#
enum Something {
  Text,
  Int,
  BigInt,
}
sharp geyser
#

gotcha

#

I have an idea

sharp geyser
#

I have seen mixed answers on what to use

radiant kraken
sharp geyser
#

well as you know I am making a database service for roblox

radiant kraken
#

hmmmmmm

radiant kraken
sharp geyser
#

and I right now I am parsing the lua tables into json and then parsing that into sql queries

#

well on roblox the default value of a column can be anything a string, int, bool, whatever

radiant kraken
#

Rust does have an Any trait but it's barely needed

sharp geyser
#

😭

radiant kraken
#
enum Thing {
  Bool(bool),
  Int(i32),
  String(String),
  // ...
}
sharp geyser
#

I see

#

yknow what I just realized

#

Its going to be a bitch to parse this into an sql query if they supply any of the optional params

#

I will have to make multiple formats 😭

#

why am i doing this project again?

#

I am suffering so much

sharp geyser
#

Say if they want to give a default value for that column

#

I would have to then include that when formatting the column

#

but if they don't I need to leave it out

radiant kraken
#

Default value?

sharp geyser
#

let me show you how I am doing it rn

radiant kraken
sharp geyser
#

yes cause you know postgres columns can have default values

#

so when you insert something into the table that column gets defaulted to that set value

radiant kraken
#

a combination of enums and structs can do the job

sharp geyser
#

https://hatebin.com/kdgdomvqqw this is what I am doing rn (mind you I have no idea what the data.columns.iter() stuff really is doing cause I simply looked at stack overflow)

radiant kraken
#

say... ```rs
struct Element {
key: String,
value: YourValueType,
default_value: Option<YourValueType>,
}

#

or something like that

sharp geyser
#

Any opinions on what I am doing right now to parse the request body into a sql query

pliant galleon
#

hello

#

we need help

#

how to get top.gg api key i dont noy

radiant kraken
# sharp geyser What you think of this? <@661200758510977084>
#[derive(Copy, Clone, Deserialize)]
enum PostgresType {
    Text(String),
    Int(i32),
    Serial(SerialType),
    Json(serde_json::Value),
    Boolean(bool),
    Uuid(UuidType),
    Date(DateType),
}

#[derive(Deserialize)]
struct Column {
    name: String,
    column_type: PostgresType,
    default: Option<PostgresType>,
    primary: bool,
    not_null: bool
}```
#

What about this?

pliant galleon
radiant kraken
#

also, what is not_null for?

pliant galleon
#

u now

#

how to get top gg api key

sharp geyser
#

Honestly doesn't matter if I include that or not so ima probably remove it

#

primary, default, type and name are the big ones

radiant kraken
sharp geyser
#

Well, that wouldn't really work that way no?

#
CREATE TABLE table (
  something TEXT NOT NULL DEFAULT "";
)

is how a sql query using NOT NULL and DEFAULT would look

radiant kraken
#

what if it's NULL then? it holds no values, no?

sharp geyser
#

man parsing a lua table to json to an sql query is so fucking annoying

sharp geyser
radiant kraken
#

what if there is a default value?

sharp geyser
#

then it will use that default value when inserting

radiant kraken
#

ah

sharp geyser
#

technically you don't need to use NOT NULL with DEFAULT

radiant kraken
#

so if it has no default values set, it defaults to NULL

sharp geyser
#

yep

#

providing NOT NULL is not there

#

if it is and you try and not insert something for that column it will return a not null constraint error

#

because you tried inserting with a column value missing

#

oddly enough postgres doesn't actually have a NULL datatype though

radiant kraken
#

then you can just

#[derive(Deserialize)]
struct Column {
    name: String,
    value: Option<PostgresType>,
    default_value: Option<PostgresType>,
}```
sharp geyser
#

so you have no real way of representing what null is

radiant kraken
#

if value is None, then it's NULL

sharp geyser
#

you can only specify that it shouldn't be null

radiant kraken
#

(And if default_value is also None)

sharp geyser
#

Actually wait

#

I guess you can do stuff like

INSERT INTO blah (field) VALUES (NULL)
``` iirc
radiant kraken
#

what does that do

sharp geyser
#

basically just makes field null when you insert it

#

the only reason i'd see you do that is if you want to set it to null

#

inserting with null is not common, I just forgor how to alter entries

median steeple
sharp geyser
#

I guess something like

UPDATE table SET field = NULL```
#

so yea maybe postgres does have a way to reference null

#

anyway this skewed from my original question

sharp geyser
#

cause how I am doing it now is definitely not going to work

lyric mountain
#

they use \u0000 as the null character (which is also why u cant have that character in a text)

#

iirc mysql/maria also do that

sharp geyser
#

I see

#

Man I am stuck rn though

#

I think I am doing this all wrong.

sharp geyser
#

nvm

#

Surprisingly chatgpt helped

radiant kraken
#

smh

#

StackOverflow/Google >>> ChatGPT frfr

sharp geyser
#

Okay but like

#

no

#

Im sorry but ChatGPT helps me find stuff I normally can't find

sharp geyser
daring gale
#

finally can voting

abstract coyote
#

Are you still able to make a custom page for your bot? Like custom css and html etc

deft wolf
#

Yea

abstract coyote
#

Awesome ty

eternal osprey
#

i started with cs at my uni 2 years ago

#

how the fuck did it negatively impact my social life

#

i swear i got no friends left

sage bobcat
eternal osprey
#

people go out, chill together do activities while my lonely ass sits at home doing combinatorics and or machine learning

sage bobcat
#

One message removed from a suspended account.

eternal osprey
#

gett outta here leave me alone 😭

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

eternal osprey
#

damn you in the same boat as me

#

we lonely together

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

eternal osprey
#

yeah that's good to hear tho

#

definitely a positive point

#

what degree are you following?

brave saddle
#

when did they bring back the option to reply to review?? also, I notice an edit button.

brave saddle
green kestrel
#

what is it with people who add a bot then remove it literally 2 secs later

#

seems to be a recurring pattern, im not doing anything like sending a message on join that would make people instakick it

#

and a lot of the time, its the same guilds repeatedly

#
2024-01-16 23:58:14.031 [I] [th#935950] : New guild: 1196944438598041610
2024-01-16 23:58:16.090 [I] [th#935950] : Removed from guild: 1196944438598041610
2024-01-16 23:59:14.333 [I] [th#935950] : New guild: 1196944438598041610
2024-01-16 23:59:43.315 [I] [th#935950] : Removed from guild: 1196944438598041610
#

like that

#

anyone else able to shed any light on why this is the case

solemn latch
#

I assume no commands are being run, right?

#

Weird user behavior

wheat mesa
#

Maybe there’s some sort of automod behavior with another bot that just instantly kicks it?

#

Or can bots not kick other bots

pale vessel
#

pretty sure they can, as long as the other bot is higher in the permission hierarchy

spark flint
#

they might use wick

#

as wick kicks unverified bots

green kestrel
green kestrel
spark flint
#

discord verified

#

and bots it deems as "sus" aka newer bots

green kestrel
#

but it is discord verified kekeke

spark flint
#

idk what else then

green kestrel
#

and the snowflake of my bot is dated 2019

#

i have a feeling theres a wick like bot that kicks all bots not on an admin defined whitelist

#

to stop compromised mods inviting nuke bots

sharp geyser
#

@radiant kraken I am trying to santize the input from the json to make sure there are no special characters in it like semi colons and such. Yet I think I am doing something wrong, 1. PostgresType doesn't implement Display so

    let query = format!(
        "CREATE TABLE IF NOT EXISTS {} ( {} );",
        sanitize_input(data.table_name.to_owned()),
        data.columns
            .iter()
            .map(|column| {
                let data_type_str = parse_types(&column.column_type.to_uppercase()); // Ensure uppercase for consistency
                let default_clause = match &column.default {
                    Some(default) => format!("DEFAULT {}", sanitize_input(serde_json::to_string(default).unwrap())),
                    None => String::new(),
                };

                let not_null_clause = if column.not_null.unwrap_or(false) { " NOT NULL " } else { "" };

                format!("{} {} {}{}", &column.name, data_type_str, default_clause, not_null_clause)
            })
            .collect::<Vec<String>>()
            .join(", ")
    );

this is not possible. I feel I am missing a lot as well because I made a fucking enum for it but I am not even using it to parse it cause I really don't know how enums work that much. I don't understand em

#

Like what is the point of having this

#[derive(Deserialize, Debug, Serialize)]
#[serde(rename_all = "snake_case")]
enum PostgresType {
    Text(String),
    Int(i64),
    Serial(i64),
    Json(serde_json::Value),
    Boolean(bool),
    Uuid(String),
    Date(String),
    Null
}

if I dont use it

#

@wheat mesa as well since you are also a rust nerd

radiant kraken
sharp geyser
#

Okay but like that isn't the problem I am facing that is just a minor issue

sharp geyser
# radiant kraken impl Display for PostgresType then

Okay so I have a question

#[derive(Deserialize, Debug, Serialize)]
#[serde(rename_all = "snake_case")]
enum PostgresType {
    Text(String),
    Int(i64),
    Serial(i64),
    Json(serde_json::Value),
    Boolean(bool),
    Uuid(String),
    Date(String),
    Null
}

with this enum how would I parse this json

{
    "table_name": "test",
    "columns": [
        {
            "name": "test2",
            "columnType": "text"
        },
        {
            "name": "test3",
            "column_type": "int",
            "default": 0,
            "not_null": true
        }
    ]
}

so that if there is a default value it will be typed appropriately based off the column_type (as I can only assume if someone is wanting the type to be text they wont store an int)

#

I can only assume i'd use enums for this cause nothing else makes sense to use

radiant kraken
#

to serialize it you can make your own deserialize implementation or you can do it manually

sharp geyser
# radiant kraken use serde_json
fn deserialize_default<'de, D>(deserializer: D) -> Result<Option<PostgresType>, D::Error>
where
    D: serde::Deserialize<'de>
{
    let value: Value = Deserialize::deserialize(deserializer)?;

    if let Some(column_type) = value.get("column_type").and_then(Value::as_str) {
        match column_type {
            "text" => Ok(Some(PostgresType::Text(value.get("default").and_then(Value::as_str).unwrap_or("").to_string()))),
            "int" => Ok(Some(PostgresType::Int(value.get("default").and_then(Value::as_i64).unwrap_or(0)))),
            "serial" => Ok(Some(PostgresType::Serial(value.get("default").and_then(Value::as_i64).unwrap_or(0)))),
            "uuid" => Ok(Some(PostgresType::Uuid(value.get("default").and_then(Value::as_str).unwrap_or("").to_string()))),
            "date" => Ok(Some(PostgresType::Date(value.get("default").and_then(Value::as_str).unwrap_or("").to_string()))),
            "json" => Ok(Some(PostgresType::Json(value.get("default").and_then(Value::as_str).unwrap_or("").to_string()))),
            "boolean" => Ok(Some(PostgresType::Boolean(value.get("default").and_then(Value::as_bool).unwrap_or(false)))),
            _ => Ok(Some(PostgresType::Null))
        }
    } else {
        Ok(None)
    }
}
``` tried this lets see if it will work
#

I give up

#

fuck it

ivory siren
#

lmaooo

sharp geyser
#

use rust they said, it'd be fun they said

#

smh

ivory siren
#

@radiant kraken bhai help

sharp geyser
#

everything is a string now I really don't care anymore

#

roblox devs are dumb anyway

radiant kraken
#

especially for like a beginner

sharp geyser
#

I did not think it would be this hard to make something for some roblox devs

#

like wah

radiant kraken
#

i can help you

sharp geyser
#

please for the love of god

radiant kraken
#

but i dont think you would understand at this level

sharp geyser
#

Doesn't hurt to try

#

I'd rather learn it then not try

radiant kraken
#

or you can just yk have me in ur project

sharp geyser
#

I've been asking

#

but you no respond

radiant kraken
#

it's 2pm

sharp geyser
#

when you out of schoo

#

I stay up all night

radiant kraken
#

in an hour or two

sharp geyser
#

ight

#

I will make a github repo for this in the mean time

radiant kraken
sharp geyser
#

as I have yet to do any version control

radiant kraken
#

go to bed misty

sharp geyser
radiant kraken
#

isnt it like 2am or 1am for u

sharp geyser
#

11:21pm rn

radiant kraken
#

damn

#

i forgot you're in the west coast

sharp geyser
#

yea

radiant kraken
#

i quit from learning rust once for a year

sharp geyser
green kestrel
#

i decided to up the ante a bit on my new bot by offering nitro to anyone who kills the big bad. bring it. lol

#

im confident nobody can.

#

offering nitro worked for triviabot, it can work for this

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

radiant kraken
green kestrel
#

😉

#

if you cant beat it, thats a skill issue, theres no RNG in this game you cant overcome with cheesed stats

sage bobcat
solemn latch
# sage bobcat One message removed from a suspended account.

make unbeatable boss.
make the same boss but beatable just really hard

Have a really really good player beat the boss, record it and upload it to social media.
Release the unbeatable boss map and tell everyone its the same boss.
Have everyone try to beat it and lose.

#

free marketing

green kestrel
#

lmao

#

that sounds ...dishonest

quartz kindle
#

and sue you

solemn latch
#

Nooo

quartz kindle
#

all it takes is a highly motivated speed runner

sage bobcat
#

One message removed from a suspended account.

eternal osprey
#
 let buyerr = await interaction.guild.members.cache.find(
        (r) => r.user.username.toLowerCase() == string1.toLowerCase()
      );```

hey, so the member is not cached sadly
#

how can i fix this?

#

can i somehow fetch a member based on name instead of id??

#

the string1 is basically a channel that contains a name

pale vessel
#

search by name, and filter the result properly

eternal osprey
#

i think that my old bot is still running on v13 tho

pale vessel
#

should still have it

eternal osprey
#

was this introduced in 13 already

#

ahh

pale vessel
eternal osprey
#

is there an example of how searhc would be used?

#

guild.search(r => r.name === ...)?

#

i suppose it just takes a lambda function

#

0|index | TypeError: interaction.guild.search is not a function
I guess not heheh

#

huh what's the matter

sharp geyser
wheat mesa
eternal osprey
#

i want to search members in the guild based on a certain username

#

i mean i want to search that member property, i don't have that

#

the member is new in the server

#

so not all members are being cached properly

#

what should i do??

sharp geyser
lyric mountain
#

Tho if the user just joined, they should've been cached

#

As the event would trigger it

vagrant girder
#

Hello

harsh aspen
# vagrant girder What is top.gg token ?

As of my last knowledge update in January 2022, Top.gg uses an API to interact with Discord bots. To use the Top.gg API, developers typically need to obtain an API key or token. This token is used for authentication and authorization when making requests to the Top.gg API on behalf of a Discord bot.

If you're a bot developer and you want to integrate your bot with Top.gg, you would typically find the API token in your Top.gg account settings after adding your bot to their platform. The specific process might change, so it's recommended to refer to the latest Top.gg documentation or developer guidelines for the most accurate and up-to-date information.

To obtain the Top.gg API token:

Go to Top.gg: Log in to your Top.gg account.

Navigate to Bot Dashboard: Find the dashboard for the bot you want to get the token for.

API Settings: Look for an API or Developer Settings section. This is where you should find your API token or instructions on how to generate one.

Always keep your API tokens secure and do not share them publicly. If there have been changes or updates to the process since my last knowledge update, please refer to the latest documentation or contact Top.gg support for assistance.

harsh aspen
#

np

sage bobcat
sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

warm surge
sage bobcat
#

One message removed from a suspended account.

warm surge
harsh aspen
#

what is the problem

grand depot
warm surge
harsh aspen
radiant kraken
eternal osprey
#

these were normal images gathered from an attachmentoption. How come that they disappear after a few months?
Does discord automatically do it to preserve space? Any way to fix this?

harsh aspen
eternal osprey
#

nvm it was the cdn. It automatically deletes the images to preserve space

#

only way to fix this is creating my own web storing server

harsh aspen
warm surge
civic sundial
#

why my "nodemon" not working

warm surge
#

const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildMembers,
],
});

real rose
#

its bot code

#

look above at Webster's response^

grim aspen
civic sundial
civic sundial
warm surge
# civic sundial

you have defined it by putting GatewayIntentBits next to Client in discord.js line

warm surge
#

Change it to GatewayIntentBits

civic sundial
deft wolf
#

Thx for token

civic sundial
#

discord made a button called reset token

civic sundial
warm surge
warm surge
grim aspen
# civic sundial

try this instead:

const { Client, GatewayIntentBits } = require('discord.js');
the code i provided above imports 'GatewayIntentBits' instead of which you had originally 'IntentBitsField'

#

it has updated in v14 from IntentBitsField to GatewayIntentBits

civic sundial
grim aspen
civic sundial
#

token was on line 11 but now its moved to a new file idk why

#

and now its working

grim aspen
#

is that atom?

civic sundial
grim aspen
#

the program you're using to code.

civic sundial
#

what dose it mean

civic sundial
deft wolf
#

It's VSC

grim aspen
#

oh visual studio

civic sundial
grim aspen
#

i wonder what were to happen if you cut the code from the new file and paste it back into the index.js file and remove the new file?

civic sundial
#

lets try

#

then it crashes

#

lol

grim aspen
#

OH

#

i know now

#

you forgot apostraphes

#

client.login('token')

#

ah shit nope

civic sundial
grim aspen
#

you don't need to define client again

civic sundial
grim aspen
#

you don't need this

deft wolf
#

You should not use .login on Client but on client

#

Unfortunately, letter size is important

#

Also the second error tells you that you cannot declare the same thing twice

civic sundial
civic sundial
#

worked @deft wolf

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

civic sundial
#

@deft wolf@grim aspen thanks for help

grim aspen
#

There we go

cold basin
#

Trying to get the background to appear a bit better.

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

cold basin
sage bobcat
#

One message removed from a suspended account.

cold basin
sage bobcat
#

One message removed from a suspended account.

cold basin
sage bobcat
#

One message removed from a suspended account.

cold basin
sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

cold basin
sage bobcat
#

One message removed from a suspended account.

green kestrel
lyric mountain
#

happens especially if you post image -> get url -> delete image

neon leaf
#

why not download the image and host it on an s3?

lyric mountain
#

downloading user-supplied files isn't a good idea

#

at least on discord

neon leaf
#

well

#

validating them is the important part

#

like max 10mb for example

lyric mountain
#

I do that

#

file type and file size

#

however it's important to note that you can embed stuff inside an image

#

there was a name for that, dont remember now

quartz egret
#

Hiya

lament rock
#

I download the user's images, "cover" them to a lower resolution and then store them

lyric mountain
# neon leaf hm?

you can put arbitrary files inside image files, and they'll still work as usual

#

ah found the name, steganography

#

Steganography ( STEG-ə-NOG-rə-fee) is the practice of representing information within another message or physical object, in such a manner that the presence of the information is not evident to human inspection. In computing/electronic contexts, a computer file, message, image, or video is concealed within another file, message, image, or video...

neon leaf
#

but where's the issue with that

#

I mean if they want to

#

If necessary just shoot the image through something like sharp

#

And convert to webp

lyric mountain
#

that involves even more processing

eternal osprey
# lyric mountain ah found the name, steganography

i once had to create an anomaly detection algorithm for some input data regarding code behavior that also included steganography. It was really fun. If you're into this type of malware i would highly suggest doing such an algo for fun, i have some spare datasets we had to use of my teacher.

neon leaf
lyric mountain
#

my bot already handles quite a lot of images all at once, better not add a way for people to clog it

eternal osprey
#

kuu you remember the algorithm you helped me with a few weeks back

#

the box fitting shit

lyric mountain
lyric mountain
eternal osprey
#

apparently we used a greedy algorithm, but we had to use bipartite matching. Teacher was okay with our result tho

eternal osprey
proven lantern
rare trail
#

4 languages out of 8 done, gettin slowly there happi

real rose
#

nice!

#

love bots that support more than 1 language

#

massive W

proven lantern
pale vessel
#

no manglish?

#

step up your game

radiant kraken
#

malaysian english?

radiant kraken
civic sundial
#

can anyone ?

deft wolf
#

It should be process, not Progress

#

And you are missing a dot in consolelog

deft wolf
#

Well, you have to be careful with the typos because it should be applicationGuildCommands. You're missing an s at the very end

pale vessel
lament rock
#

Supporting multiple languages is pretty easy. Just gotta have translators willing to help. I have English US and GB, Russian, German, Polish, Spanish, and Dutch

#

Trying to get Korean and a few others since my bot's usage base is mostly from there, but the only person ik who speaks Korean is too busy all the time ;w;

deft wolf
radiant kraken
rare trail
#

the flag was wrong, it is american english MarchSorry_ao

rare trail
#

bot is relatively small luckily, just 13 commands, mainly focused on music, so translating in more languages doesn't take that much time

proven lantern
real rose
#

database database database

#

host the database on your vps

deft wolf
#

You can host databases like mongo and mysql on your vps

#

So it depends on you what you want to choose

#

Speed ​​and various query options

real rose
#

reliability

#

yes

deft wolf
#

With more data, definitely

real rose
#

youre relying on read/write speeds for files

deft wolf
#

Mongodb is a good start, its structure is not that different from json files and it is relatively fast and simple

#

They have very well-developed documentation and plenty of guides, so you will definitely find what you need

eternal osprey
#

i personally hate no-sql databases

#

idk i find the structure of sql databases so nice to work with

#

very concise as well

#

but ig it's also easier. One universal way of accessing data is so cool instead of learning different docs for each fucking database

civic sundial
#

@deft wolf @warm surge @grim aspen

#

sup guyzz me again 😁 panda

real rose
#

insane of you to skip out on google

spark flint
#

lol

grim aspen
#

Here’s what my structure looks like

civic sundial
grim aspen
#

Use rest.put

deft wolf
#

I have already written to you what your problem is

civic sundial
#

@deft wolf

warm surge
warm surge
deft wolf
#

Your bot is not permitted to create commands on this server

warm surge
#

Im gonna make it easier for you