#development

1 messages ยท Page 571 of 1

unique iron
#

Not custom

#

Multiple

amber fractal
#

have an array of prefixes

harsh nova
#

why would you have that

unique iron
#

Because I dont know how to set up custom :^)

harsh nova
#

gg

unique iron
#

I am not that level yet. I am level 1 crook

#

That requires level 10 boss

#

Lol

split dune
#

@unique iron set prefix in db, or json. and update table with new prefix thonkku

unique iron
#

I dont get it

granite yoke
#

hey can someone help me

#

hm my 1st bot is working but second one is not replying messages Thonk

split dune
#

@unique iron check "an idiot guide", maybe they created this

#

@granite yoke send message event

unique iron
#

Oooo sounds like just for me!

#

Thx! I will go check that out

split dune
#

np

unique iron
#

What can I do to make this work in botconfig.json

#

`{
"prefix": "<<" && "@fringe helm"

}
`

#

I get error, obviously

knotty steeple
#

learn how to json

#

you make an array

#

[]

unique iron
#

Where would I put the brackets tho

#

Wait a sec

harsh nova
#

thats not how javascript works either

#

what are you even doing lol

#

&& works like this ```js
if(true && true) {
this
}

amber fractal
#

and that wont work if the bot is nicked

#

will it?

#

idk mmLol

harsh nova
#

it will

#

since it gets the id

#

either way

knotty steeple
#

it wont

#

discord adds a ! in the mention if there is a nick

#

so @amber fractal

#

btw sorry for the ping

amber fractal
#

you're fine

lusty dew
#

Can someone please tell me why that isn't working?

dusky steeple
#

i don't use moment for date stuff. I use dateformat npm but this is the layout for that one if this helps ๐Ÿค”

dateFormat(member.user.createdAt, "dddd, mmmm dS, yyyy, h:MM TT"))```
lusty dew
#

Oh thanks

#

I will try it

knotty steeple
#

or do the formatting yourself

#

๐Ÿค”

lusty dew
#

Meh

#

I could yea

#

but I don't feel like it xd

dusky steeple
#

can someone help me make this

.addField(`Free Memory`, `${os.freemem}`, true)

look like this 23.82 MB instead of like this 259207168

quartz kindle
#

os.freemem / 1048576

raven bronze
opaque eagle
#

@raven bronze Maybe like this? js const text = "Hello my name is lizzy"; text.split(" ").join(" ๐Ÿ‘ "); // Hello ๐Ÿ‘ my ๐Ÿ‘ name ๐Ÿ‘ is ๐Ÿ‘ lizzy

raven bronze
#

The funny thing is, i've used that code many times for other things. But it never occured to me to do that. I'm stupid.

#

@opaque eagle Also thank you.

opaque eagle
#

Yw :)

earnest phoenix
#

i did something in my life and added verify

#

ay

coral trellis
earnest phoenix
#

okie

sick cloud
#

my bot makes requests to an internal api but the urls are exposed in web tools, whats the best way for me to authorize these requests?

#

since any headers etc sent will be seen, its hard to make it secure

keen drift
#

Each user should have their auth header

#

That's how I auth my users

sick cloud
#

this is the dashboard making a request to change data through an api

#

its not user based

#

and even then, the user can probably then access hidden endpoints

inner jewel
#

proxy it through your backend

keen drift
#

So you are calling a public facing api from client side and not have any auth

#

Thonk ?

sick cloud
#

idk

#

basically the api is built with the bot

#

and hosts its own /api/...

#

and then the web dashboard uses ie. /api/guilds/:id/prefix and POSTs with a new prefix

#

what i thought tho is how do i make sure it can only be used by my dashboard

inner jewel
#

you can't

keen drift
#

there's not really a good way

#

that's why you auth each user

inner jewel
#

just make a token per user and validate it on each request

sick cloud
#

even some kind of origin check maybe natan?

inner jewel
#

you can hand craft http requests

sick cloud
#

dang

inner jewel
#

checking origin/whatever is 100% useless

#

not having authorization checks is the same as opening everything on those endpoints to everyone

#

just store for each user on eg localstorage a jwt with eg userid

sick cloud
#

hm, okay

keen drift
#

You should auth each user anyway

#

To make sure they can only retrieve info about guilds they have access to

inner jewel
#

since jwts are signed you can know it's your own thing

lusty dew
#

Is there a specific way of getting args in eris?

sick cloud
#

no?

#

"args" is just the message content

#

works the same way in any lib

#

msg content, split by prefix/command, shift, join

sick cloud
#

how do i prevent a html form from being submitted

pastel tiger
#

What do you want to do with the form @sick cloud ?

#

Because if you dont want to submit it just dont make a button that submits it

harsh nova
#

You can still press the enter button and the form will submit

split dune
#

use cmd

desert hearth
#

Oh...

#

Doesn't work

modest sorrel
#

bruh you might wanna reset your token

desert hearth
#

Look

#

Token?

#

I am a little new at coding

#

Oh, bot login token

modest sorrel
#

yes

harsh nova
#

Delete your images

#

At once

desert hearth
#

?

harsh nova
#

You leaked your token

modest sorrel
#

nah it's better to troll people who want to use it

desert hearth
#

Oof

harsh nova
#

Anyone can use your bot with it

desert hearth
#

Reseted

#

But how do i fix the issue?

#

@harsh nova? Do you know?

harsh nova
#

Iโ€™ll check

#

Have you downloaded node

desert hearth
#

Idk what i need to do, i just transfered the files to other pc

harsh nova
#

Download node

desert hearth
#

Downloaded and installed it

restive bough
desert hearth
#

Still doesn't work

#

๐Ÿ˜ข

harsh nova
#

Error msg?

desert hearth
#

Node:the term node is not recognized as the name of a cmdlet, function...

harsh nova
#

And you have actually installed node

desert hearth
#

Yes

#

Is the path wrong? I can't find where the path is configures

#

D

restive bough
#

Yes

#

Prob

harsh nova
#

Itโ€™s the right folder

desert hearth
#

?huh?

harsh nova
#

From your image is saw that it is the right directory

desert hearth
#

Ok, but why does this do this?

harsh nova
#

Because node is not a function, it says that when node isnโ€™t installed

#

But you say it is

desert hearth
#

Yes, i can open node.js

#

As a cmd

harsh nova
#

The node cmd

#

Ah

desert hearth
#

But not on vsc

harsh nova
#

Maybe you need a node extension for vsc

desert hearth
#

?

restive bough
#

No.

#

You don't

desert hearth
#

I installed vsc and node, same things as i had on the other pc

restive bough
#

Where did you install node

desert hearth
restive bough
#

๐Ÿ™ƒ

desert hearth
#

In Program files

#

Huh?

#

I am so angry at this pc

#

I think i am just gonna delete the bot

#

And quit

restive bough
#

Never quit ๐Ÿ˜ข

desert hearth
#

I have to

restive bough
#

๐Ÿ˜ญ

desert hearth
#

I can't keep my main pc open 24/7

#

It is my gaming pc

#

And it is loud af

#

I need to get this to work

#

But how?

restive bough
#

Use an vps for hosting

#

Not your own pc

desert hearth
#

What is totally free? Nothing

#

Except heroku

#

But idk how to use it

bright spear
#

Glitch is free and easier than heroku

desert hearth
#

?

bright spear
ruby dust
#

would you ask your friend to host your bot 24/7 for free? no, and that's the reason why companies charge for it too

restive bough
#

Well keeping your pc open 24/7 isn't free neither

bright spear
sick cloud
#

@pastel tiger just make it unsubmit-able through enter

restive bough
#

๐Ÿค”

desert hearth
#

File upload failed

#

WHAT?

quartz kindle
#

@desert hearth did you restart your pc after installing node?

desert hearth
#

No...

restive bough
#

๐Ÿ™ƒ

#

๐Ÿ™ƒ

#

๐Ÿ™ƒ

desert hearth
restive bough
#

Are you using windows?

quartz kindle
#

sometimes you need to restart it so the environment variables are updated properly

mossy vine
#

Use glitch as last-resort hosting

#

Use anything else

#

But most importantly

restive bough
#

Cuz linux doesn't need restarting ๐Ÿ˜Ž

mossy vine
#

Do not use glitchs builtin editor

desert hearth
#

Windows

#

Ik

mossy vine
#

Its worse than notepad

desert hearth
#

But i can't upload the folder that h

#

the bot files are in

quartz kindle
#

and if you're looking for a free host, i recommend google or amazon, both are free for 12 months, more than enough time to get you started

desert hearth
#

Really annoying

#

Oof

restive bough
#

๐Ÿ–• fuck ๐Ÿ–ผ windows tbh ๐Ÿ˜ค

desert hearth
#

How do i extract the zip file in glitch?

#

What if i just use github?

#

Can i use it?

#

Idk what i should do

bright spear
#

GitHub doesn't host bots

#

Do you know like anything about computers or coding

earnest phoenix
#

๐Ÿคฆ

#

lmao

desert hearth
#

I know, but to save the bot files on github

harsh nova
#

Yeah? Thatโ€™s what github is for

desert hearth
#

I knoe

#

w

bright spear
#

But make sure you don't upload your token to GitHub

earnest phoenix
#

๐Ÿคฆ um im kinda stuck how to help if you can't use github

desert hearth
#

Yeah

#

But, i'll just quit and delete the bot

earnest phoenix
#

do you know what your toke des

restive bough
#

Yeet

desert hearth
restive bough
#

Oof

earnest phoenix
#

๐Ÿ˜ @desert hearth don't delete all you have to do is go to discord.js and other webites and lerarn how to code then you will do fine

desert hearth
#

...

#

I know how to code

bright spear
#

Really

desert hearth
#

But where can i host the bot free

knotty steeple
#

u sure about that

desert hearth
#

I know some coding

knotty steeple
#

nowhere

bright spear
#

Glitch is ridiculously easy to use

desert hearth
#

But i can't send folders in it

bright spear
#

?

desert hearth
#

Or i can't extract the zip file

#

Where my bot is in

bright spear
#

Why did you upload a zip file

knotty steeple
#

glitch is for websites

#

ok thanks

bright spear
#

Of course you can't extract a zip file in Glitch

desert hearth
#

Oh, i am a idiot

knotty steeple
#

you upload each file individually

bright spear
#

Or just import from gh

desert hearth
#

But, i could keep my pc open 24/7, but how do i minimize the ram and cpu usage of vsc?

earnest phoenix
#

XD

harsh nova
#

Itโ€™s using a node script

quartz kindle
#

you dont run bots in vsc lol

harsh nova
#

Node scripts are ram heavy

restive bough
#

Not

quartz kindle
#

you run it directly with node from cmd

desert hearth
#

Oof

quartz kindle
#

you dont need vsc open

earnest phoenix
#

You run on ethier paid vps or glitch,herouk etc

desert hearth
#

I used vsc always

earnest phoenix
#

boi

#

they go offline very 5 min

restive bough
#

Just buy an vps

#

5$

earnest phoenix
#

I use

restive bough
#

/ month

earnest phoenix
#

the whats it called lemme check

#

brb

quartz kindle
#

vsc is just an editor who happens to run things for you as an easy way to test

earnest phoenix
#

The starboard is getting flooded by a single troller

#

i use galaxycould

restive bough
#

It's not even an troller ๐Ÿ˜‚

earnest phoenix
#

an troller

#

xd

#

xd

desert hearth
#

Umm... Can i get help with the cmd? It is not working

restive bough
#

Omg

#

It's the xtremecoder ๐Ÿ˜ค ๐Ÿ˜ฒ ๐Ÿ˜ฎ

earnest phoenix
#

Congratulations, I think u just hit the world record of number of messages you sent that got starred within 10 mins?

dusky steeple
#

@quartz kindle I asked a question about ${os.freemem} last night and you gave me the answer to do this os.freemem / 1048576. Just clearifying that I put that inside the {}?

bitter sundial
#

@earnest phoenix didn't you use glitch...

desert hearth
#

yay!

#

Oof

knotty steeple
#

says they know how to code
cant even open the command line

#

windows + r

#

cmd

#

enter

desert hearth
#

I can open it

earnest phoenix
#

@bitter sundial shhhh

#

trying to look cool

desert hearth
#

I know

earnest phoenix
#

xd

bitter sundial
#

@earnest phoenix I can see because you got the name wrong too

earnest phoenix
#

crap

#

Runnnnnnnn

knotty steeple
#

crap

#

stop shitposting

earnest phoenix
#

@bitter sundial this guy is the c.i.a

knotty steeple
desert hearth
#

...

earnest phoenix
#

Boi that's like level 200 cringe

desert hearth
#

I don't need teaching

knotty steeple
#

you do

desert hearth
#

I'll just leave and never talk to you again

knotty steeple
#

you need the most amount of teaching if you cant even run a fucking node script

earnest phoenix
#

I donโ€™t need teaching

what is a command line
how do I run my script
bot connects to discord thru discordapp.com/Developers endpoint
does GitHub host bots
how do I unzip file in glitch

You need teaching.

knotty steeple
#

my point

desert hearth
#

I am new, i just needed small help on how to host the server free๐Ÿ˜ข

whole karma
#

How can I put the voter's id in .hasVoted()?

knotty steeple
#

well congrats

#

we are helping you

desert hearth
#

message.author

#

i think

whole karma
#

No.

earnest phoenix
#

ID โ€”> posts a user object

#

@whole karma dpy?

knotty steeple
#

look at the docs

quartz kindle
#

@dusky steeple yeah, you said freemem gives you the value in bytes right? divide that by 1048576 to get the value in megabytes

dusky steeple
#

ok great ty

knotty steeple
#

or 1024

#

twice

whole karma
#

I'm putting it on automatic, so when the user votes, the rewards is sent automatically.

#

No messages needed.

knotty steeple
whole karma
#

Yeah, I know that. But on the docs, it only shows one specific user id.

knotty steeple
#

change it?

desert hearth
#

YeahLUL

whole karma
#

That's what I'm asking, what should I put in that.

knotty steeple
#

the user's id?

whole karma
#

Yeah.

earnest phoenix
whole karma
#

discord.js

earnest phoenix
#

Nvm I canโ€™t help then

knotty steeple
#
dbl.hasVoted("95579865788456960").then(voted => {
    if (voted) console.log("Tonkku has voted!!!")
});
#

example

#

ur not supposed to literally use this code

#

replace the id with a user id

#

if voted then apply rewards

whole karma
#

Yeah, but it only will be only one.

#

I guess I should make a seperate command now.

dusky steeple
#

hmm lol

Free Memory
336.02734375
knotty steeple
#

what

dusky steeple
#

I need to figure out how to shorten the number a bit so it shows 336.03MB or something

late hill
#

Round it ?

dusky steeple
#

Yea i'm going to

#

just haven't got that far

#

trying to update my bot for DBL first

#

trying to figure out why it's showing it's offline when it's not

quartz kindle
#

you can use toFixed

#

it will convert the number into a string, and trim it at a specific decimal point

#

(336.02734375).toFixed(2) = "336.02"

late hill
#

Math.round(x * 100) / 100

#

Epic hack

earnest phoenix
#

Can someone help me with making it say you must have mange_messages perm to use this command? im confused

#

Looks at tim

#

@quartz kindle

late hill
#

Depends on what library you use

earnest phoenix
#

js

quartz kindle
#

whyme

earnest phoenix
#

your smart

quartz kindle
#

you're*

earnest phoenix
#

shhh

late hill
#

It's probably .hasPermission("MANAGE_MESSAGES")

#

On the guildMember object

quartz kindle
#

post code

#

also, i have to go out now

trail trout
#

@dusky steeple i use this

function formatBytes(a,b){
if(0==a) return "0 Bytes";
var c =1024, d = b || 2, e = ["B","KB","MB","GB","TB","PB","EB","ZB","YB"], f = Math.floor(Math.log(a)/Math.log(c));
return parseFloat((a/Math.pow(c,f)).toFixed(d))+" "+e[f]
}```
#
  const freeMem = formatBytes(Math.round(require('os').freemem))```
#

result = 1.64 GB

#

example

dusky steeple
#

ok I will try it in a little bit. Thank you

earnest phoenix
#

How do I make a show guilds command?

#

with embeds

dusky steeple
#

@trail trout That worked perfect thank you

trail trout
#

@dusky steeple no problem xD

#

@earnest phoenix show guilds like what

earnest phoenix
#

guild names

#

add a new field for every new guild

trail trout
#

.addField('Guild', message.guild.name)

#

right?

earnest phoenix
#

yeah

#

but what if it joins a new guild

#

i want to list ALL guilds

trail trout
#

all name of the guilds that your bot invite it?

#

and you wanna make it like a list?

earnest phoenix
#

yeah

dusky steeple
#

I look at the main list and it show's online

restive bough
#

๐Ÿ™ƒ

earnest phoenix
#

ok nvm

#

i got more important things

#

how do I use dbl events with a command handler?

dusky steeple
#

Another stupid question probably. What am I doing wrong here?

<center><p class="card-text">Owner:</i> <%= guild.owner.user.tag %></p><center>```
works fine on localhost but doesn't on vps.  Throws error saying `user` undefined
quasi forge
#

Sometimes, it's unable to access guilds owners like @fossil oxide

dusky steeple
quasi forge
#

Don't know, I never made a dashboard

#

Never got oauth2 to work

earnest phoenix
#

can someone help me out with this

#

OAY

#

-bots @earnest phoenix

gilded plankBOT
#
(Lanes) - Car#0911
Bots

@light marsh

earnest phoenix
#

...?

#

-bots @woeful falcon

gilded plankBOT
#

Bots don't have bots, silly.

earnest phoenix
#

im shook

#

-bots @earnest phoenix

gilded plankBOT
#
Overdone#2166
Bots

@woeful falcon

earnest phoenix
#

oooo

coral trellis
#

Don't use Luca here without context

dusky steeple
#

Can I ask why my bot is muted?

#

nm I see why I will fix it

trim saddle
#

@earnest phoenix pip install git+https://github.com/Rapptz/discord.py@rewrite#egg=discord.py[voice]

#

If it doesn't work

earnest phoenix
#

i need download lastest verison

#

?

#

i use 3.5.6

#

its worked

trim saddle
#

Just in case i suggest uninstalling async

opaque eagle
#

I don't understand yeoman subgenerators? Are they generators within generators, or are they used to add more stuff to already scaffolded projects?

earnest phoenix
#
  var dbl = new DBL('dbl token', { webhookPort: 5000, webhookAuth: 'dbl password' });

  dbl.webhook.on('ready', hook => {
  console.log(`Webhook running at http://${hook.hostname}:${hook.port}${hook.path}`);
  });

  dbl.webhook.on('vote', vote => {
    console.log(`User with ID ${vote.user} just voted!`);
    eco.AddToBalance(vote.user, 400)
  });
#

how do I make rewards

#

it doesnt even log

#

wait wrong channel

mossy vine
#

With code

timber cloud
#

How to add somebodys avatar to embed

#

not .setImage

light olive
#

So like, I didn't use discord for like 4 months, I came back to discord recently again and wanted to start working on my old botagain, but god damn I came across one thing that got me confused as hell

#

What is this ID: 480846229409103872

#

Because I'm pretty sure it isn't ๐ŸŽ‰

#

If anyone knows, I would appreciate to hear your thoughts

opaque eagle
#

We can't really tell what ID that is...

#

It can be the ID of any person, channel, reaction, or guild ever created (even a non-existent one).

light olive
#

fak

opaque eagle
#

Well I can tell that the reaction/channel/user/guild was created/added in August 19th, 2018

#

at 5:11 PM EST if I'm correct

#

@light olive

#

hopefully what helps somehow

light olive
#

I'm still here ^^

#

WIll try to think it out somehow ๐Ÿ˜…

opaque eagle
#

k ๐Ÿ‘Œ

light olive
#

I think I will just go yolo and see if it breaks the bot or not lol

dusky steeple
#

It looks like a server id I think

light olive
#

Oh sweet thank you!

dusky steeple
#

I don't know if it is correct or not but that is what google found

#

Okay this is really boggling me ๐Ÿค”

<p class="card-text text-center">Owner:</i> <%= guild.owner.user.tag %></p>```
gilded plankBOT
#
Vampirency78 ๐ŸŒน#4578
Bots

@maiden scroll

steep hatch
#

Sorry

marble needle
#

commands: 46 ๐Ÿ˜ฉ

topaz fjord
#

ejs

#

Big gay

dusky steeple
#

well It's the only thing I know how to use atm for dashboard and it works

clever wave
#

How to Install Module in Glitch

#

??

#

install "figlet"

amber fractal
#

Its not good to put that in every channel

earnest phoenix
#

this might sound stupid but shall i run my bot as an console app on ubuntu server?

late hill
#

@timber cloud .setThumbnail() ?

earnest phoenix
#

this might sound stupid but shall i run my bot as an console app on ubuntu server?,cause then the console gets blocked and i cant use commands

spare glen
#

how would i change the color of the name, email and message font

#

i spent so long on it, and i can not find out

unique iron
#

Im guessing an API, but i have no idea on that kind of stuff XD

marble needle
tulip ledge
#
const dbl = new DBL('Your discordbots.org token', client);

Where do I find the token?

marble needle
harsh nova
#

gg

tulip ledge
#

Oh okay thanks

#

What port do I use?

#

22?

harsh nova
#

if you are going for webhook

earnest phoenix
#

Hi

#

I have my vps open

#

how do i run my program now?

viral spade
#

install your programming languages environment and start your bot code

knotty badge
#

hello, i have a problem wiht my bot. let text = args.join(" "); i place "args" in any place and have a error for example: if(message.content.startsWith(prefix + "kick")) { let member = message.mentions.members.first(); let reason = args.slice(1).join(" "); member.kick(reason); } the console say what the error is in the "a" of a "args.join(" "); "
someone have the solution?

tulip ledge
#

Put it in a code block

#

`

spare glen
#

thank you @marble needle

tulip ledge
#
{ webhookPort: 22, webhookAuth: 'password' }

What port do I use and what password?

steel heath
#
const args = message.content.split(" ").slice(1)``` define args first
viral spade
#

@knotty badge if args gives you problems you should post the code of how args is created, before the error, not after.

knotty badge
#

ok thanks

viral spade
#

@knotty badge maybe also post full/more code and full error message. use hastebin if its too long

amber fractal
#

Or just use hastebin in general

#

Its out of format for mobile users, makes it hard to help mmLol

rocky dagger
#

Why do I get this error?```
8ball.js loaded!
addrole.js loaded!
ban.js loaded!
botinfo.js loaded!
help.js loaded!
kick.js loaded!
removerole.js loaded!
report.js loaded!
serverinfo.js loaded!
setup.js loaded!
D:\Users\my name\Desktop\MyBots\discord.js\testing\index.js:21
bot.commands.set(props.help.name, props);
^

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

marble needle
#

props.help or props itself is undefined

tulip ledge
#

Because it can't read the name of props.help

#

It litterally says in the error

rocky dagger
#

'NAME'

tulip ledge
#

??

rocky dagger
#

anyways how wold you fix it?

marble needle
#

you fix undefined errors by defining what's undefined ๐Ÿค”

rocky dagger
#

yesterday it was defined but now it's not

marble needle
#

well then check line 21 in index js and the surrounding code and figure out why it suddenly errors out. Probably has to do with what you did between yesterday and today

rocky dagger
#

haven't done a S***

marble needle
#

would you mind sending the code snippet line 21 is in

rocky dagger
#
    bot.commands.set(props.help.name, props);
marble needle
#

snippet refers to a code block

#

the code block the line that errors is in

rocky dagger
#
  jsfile.forEach((f, i) =>{
    let props = require(`./commands/${f}`);
    console.log(`${f} loaded!`);
    bot.commands.set(props.help.name, props);
  });```
marble needle
#

and now using a programmer's logical skills you could figure out that if it loaded 10 files successfully and then decided to error out your issue may be laying within a certain file it's trying to load

rocky dagger
#

that's a tempmute file

marble needle
#

check your console output for files it didn't load and look into them, probably forgot to define properties or whatnot in there causing props.help to be undefined when it tries to load said file

rocky dagger
#

that file has worked before

#

want to se the whole code?

marble needle
#

remove the file you think is causing the issue or change it's ending to something that isn't .js (so your command handler doesn't try to load it) and run your code again

#

if it doesnt error the file you removed has an error in it

#

it it still errors you either got the wrong file or you did something wrong in multiple ones

amber fractal
#

Wait, you want to search for the name or the little id thing

rocky dagger
#

you can make an array in js @uneven laurel

marble needle
#

Heโ€˜s after json objects not arrays

late hill
#

Depends on what kind of search

#

You can loop through them all if neccessary

marble needle
#

Gotta love vague development questions

opaque eagle
#

You can also make arrays in JSON, yk?

#

@rocky dagger @uneven laurel

#

Also... Atom? Really? @modern sable

modern sable
opaque eagle
#

What, did u lose a bet?

#

I mean, no one uses Atom becuz they genuinely want to

inner jewel
late hill
#

There's no need for it to be an array so why would he make it an array

modern sable
#

i like atom

late hill
#

You can loop through object keys with for (const key in object)

#

in js

opaque eagle
#

He can do Array#find() @late hill

late hill
#

idk about other languages

opaque eagle
#

Yeah, but my thinking was that I wouldn't expect a person who asked that question to know how to use a for...in loop so I played along with the array idea.

late hill
#

ok

amber fractal
#

Or you can just make a function to do this

late hill
#

sexy

#

Too bad we don't know what kind of search

inner jewel
#

if you need a bidirectional map just create two objects

#

k -> v and v -> k

#

not only faster but can also support keys with duplicate values by eg using v -> [k]

earnest phoenix
#

how do I make a command that waits for 2, 4 or 6 players, then picks a random player?

#

liek, you write -bottlespin [amount of players] [amount to bet]

#

then it waits for x more people

#

(discord.js)

empty steppe
#

Anyone here with some time to beta test a bot? I of course offer the same in return ๐Ÿ˜ƒ

unique iron
#

How does one find a botโ€™s ram?

earnest phoenix
#

Language?

unique iron
#

Discord.js

marble needle
#

for the love of god can we get a pin that notes the difference between programming language and library already

earnest phoenix
#

^

zinc pawn
#

when I use this await bot.warndb.insert({"userid": wUser.id, "serverid": message.guild.id, "warner": message.author.id, "reason": reason}, async (err, data) => { if (err) console.error(err) await bot.warndb.find({"userid": wUser.id, "serverid": message.guild.id}, async(err,data2) => { warnid = data2[0]._id let warnEmbed = new Discord.RichEmbed() .setDescription("New Warning") .setAuthor(wUser.user.username, wUser.user.displayAvatarURL) .setColor("#b2ac00") .addField("Warned User:", wUser.toString()) .addField("Warned by:", `<@${message.author.id}>`) .addField("Warned In:", message.channel) .addField("Reason:", reason) .setTimestamp() .addField("Warn ID:", warnid) modlogchannel.send(warnEmbed); message.channel.send(`Okay, I have warned ${wUser.user.username} for "${reason}".`) }) }) it gives them the same warning id each time?

mossy vine
#

^ i completely agree, we need a pin like that

#

khm

#

not with that block of code of course

marble needle
#

https://stackoverflow.com/questions/12023359/what-do-the-return-values-of-node-js-process-memoryusage-stand-for take a look at this if you want to check and understand how much memory a node process uses and what exactly the function even returns

#

(at) the one looking for their bot's ram

spring warren
#

How do you make a discord bot

zinc pawn
#

Oh my.

marble needle
#

Learn how to Programm, learn a language, pick a library for said language and use that

#

Or dismiss the library part and write your own (:

rotund creek
#

download small basic

#

get a basic device + keyboard

#

start writing a basic script

#

host on a basic vps

maiden badger
#

Which editor do you use and why?
0โƒฃ Sublime Text 3
1โƒฃ VS Code
2โƒฃ Atom
3โƒฃ Notepad++
4โƒฃ Adobe Brackets

rotund creek
#

uh no

#

I use something called new document

#

or notepad

marble needle
#

i use visual studio because why fucking bother with electron garbage

rotund creek
#

all the og's use notepad

harsh nova
#

pffttt real nibbas use nano

rotund creek
#

mmlol

bright spear
#

@marble needle visual studio is bloated and sucks

#

Good programs use electron

rotund creek
#

who needs extentions

#

honestly electron isn't half bad

maiden badger
#

@harsh nova why not vim? Thonk

marble needle
#

you can literally choose what packages you want to install

bright spear
#

I use vscode and jetbrains webstorm

rotund creek
#

vim's shit

#

pure shit

#

last time I used vim I threw up

harsh nova
#

vim bad

#

never used it so it must be bad

rotund creek
#

honestly don't even think of starting to use vim

#

has anyone tried coding on their phone

#

it's literally impossible

harsh nova
#

no

#

thats [REDACTED]

#

I mean

#

bad

bright spear
#

I've fixed bugs on my phone

#

But not actual coding

harsh nova
#

same

quartz goblet
knotty badge
#

someone knows how to delete a guild with my bot?

inner jewel
#

the bot must own the guild

quartz goblet
#

Help Me

marble needle
quartz goblet
inner jewel
#

reposting won't help you

#

i suggest you learn js

quartz goblet
#

but nobody helps

marble needle
#

i sent you what you need

quartz goblet
#

thaks

#

how do i use it

marble needle
#

if you don't know after reading an official documentation for it that provides you with explanations and example code please refer to what natan said https://i.ryeqb.me/336a441a0a.png

amber fractal
sick cloud
#

could be a role somewhere else

amber fractal
#

It has an array of roles

#

and happens after the 5 second time out

#

so I highly doubt it

#

And the catch does log the error

#

Well not the error, just what I have it set to log

#

It wouldnt confuse me as much if it actually didnt work, but it does

#
    let toadd = bot.mutes.get(user.id, "roles")
    let muted = message.guild.roles.find(r => r.name == "Muted")
    console.log(toadd)
    for(var j = 0; j < toadd.length; j++){
      user.addRole(message.guild.roles.get(toadd[j])).catch(console.log("Error"))
    }
    user.removeRole(muted.id).catch(console.log("Error"))
    bot.mutes.delete(user.id)
  }, time)```
#

Its weird because it errors for every role

#

Wait

#

I think I know the issue

#

Nope, now it didnt work at all

#

But it's erroring for every role

#

even the mute role

#

so it logs "Error" 3 times (2 roles to add and mute) before it give me the DiscordAPIError

sick cloud
#

what would be the best way to require a static json file in client side js

inner jewel
#

inject it into eg a script tag

opaque eagle
#

import statements?

inner jewel
#

or serve it over a rest endpoint

opaque eagle
#

client-side js doesn't use common.js so cant use require()

cloud peak
#

How can i add a reaction to a message in java?

inner jewel
#

library?

cloud peak
#

JDA

sick cloud
#

@inner jewel how would i inject it

inner jewel
#

depends on your code

#

could be as easy as .replace(x, y)

amber fractal
#

Holy shit I was trying to add the everyone role ;-;

inner jewel
#

beatz: Message#addReaction(...)

cloud peak
#

What is ...

#

Thats my problem

inner jewel
#

the reaction

cloud peak
#

oh, ok

hoary bramble
#

hey does anyone know how to make it so that the bot tells you the number of servers that its in?

#

in js

#

yes?

opaque eagle
#

@hoary bramble

hoary bramble
#

ty

opaque eagle
#

yw

dusky steeple
#

can someone show me what I am doing wrong here. It errors and says rows is not defined.

con.connect(function(err) {
        if (err) throw err;
        con.query(`SELECT * FROM server_settings WHERE server_id = ${guild.id}`, function (err, result, fields) {
            logger.log('Info', "Gathered information from Red Queen server settings.");
            if (err) throw err;
            let sql;
            if (rows.length < 1) {
                sql = "INSERT INTO server_settings (server_id, prefix, modlog_channel, mod_role, admin_role, welcome_channel, welcome_message, welcome_enabled, leave_channel, leave_message, leave_enabled, level_messages, invite_filter_enabled, invite_whitelist, swear_filter, swear_words, log_deletes, log_newmember, log_commanduse, donot_announce, send_help, enabled) VALUES (" + guild.id + ", '?', 'logs', 'Moderator', 'Admin', 'welcome', 'Welcome {user}!', 'false', 'leave', 'Good-bye {user}!', 'false', 'false', 'false', 'Admin,Moderator', 'false', 'fuck', 'false', 'false', 'true', 'false', 'channel', 'true')";
                logger.log('Info', `New server added to database: ${guild.id} successfully.`);
            } else {
                let update = rows[0].enabled;
                sql = `UPDATE server_settings SET enabled = 'true' WHERE server_id = ${guild.id}`;
                logger.log('Info', `Updated ${guild.id} to active server.`);
            }
        });
    });```
bright spear
#

@dusky steeple looks like you didn't define rows anywhere??

#

isnt it obvious from the error message

quartz kindle
#

you named it result or fields

empty owl
#

@hoary bramble client.guilds.size i believe

dusky steeple
#

hmm I fixed that problem but it's not inserting data into database if its a new server.

empty owl
#

||dont prob shouldnt use sql maybe settle for something like mongoose ||

serene tendon
#

I use mongoose for my bot

harsh nova
#

Mongoose is nice

serene tendon
#

Makes things very easy

harsh nova
#

Yeah

#

And mongo atlas storage

dusky steeple
#

I don't want to install mongo on my vps when I already have MySQL installed and running.

slender thistle
#

That's up to you

quartz kindle
#

@dusky steeple where's the insert function?

#

you're creating an sql command, but not executing it from what i can see

dusky steeple
#

yea I just noticed that. I am trying something now

#

I figured it out

unique iron
#

When i put this in my botconfig.json file, in an attempt to make multiple prefixes, I get an error
`{
"prefix": "<<"

}
{
"prefix2": "@fringe helm"
}`
And when i try to put in on the inside, I get an error

keen drift
#

that's not even valid json

#

what are you smoking

last lava
#

what is the best way to host a bot (methods i have heard of is glitch, aws, rasberry pi)

quartz kindle
#

best way is a vps

last lava
#

due to my cheap nature, the question is: Is it free?

#

or are there any free vps hosts?

bright spear
#

@last lava vpses arent free, if you want to host for free you'll have to use glitch/heroku or host it yourself like with a raspberry pi

last lava
#

okay

#

working on the rasberry pi rt now

quartz kindle
#

rpi is only "free" if you're not the one paying your bills

#

your parents/guardians will be paying it for you without their knowledge basically

bright spear
#

true

#

well its only internet + the small initial payment

#

and power ig

amber fractal
#

but a vps's internet is most likely better than yours

#

unless you got that good fibre

keen drift
#

i got that good fiber

#

๐Ÿ‘๐Ÿพ

#

pay me to colocate ๐Ÿ‘๐Ÿพ

bright spear
#

lol

#

google fiber?

upbeat maple
#

Is there a plan to add an Apex tag for bots?

bright spear
#

??

#

what is that

upbeat maple
#

Didn't see that mentioned here yet

#

Apex Legends

bright spear
#

dunno what that is

#

you can make an issue on the github

#

but i assume most site users wont understand/use it

upbeat maple
#

Didn't know if it was worthy of an issue. It's a new battle royale game

upbeat maple
#

It's currently the most viewed game on twitch

#

alrighty

#

Thanks! I'll push it as an issue then

bright spear
#

yw

loud salmon
#

what

#

oh games

last lava
#

thx

#

i got the bot hosted on a rasberry pi

#

or hopefully

sick cloud
#
    var allImages = document.getElementsByTagName("img");

    console.log(allImages)
    allImages.forEach(i => {
        if (!i.id) {
    var stat = i;
    stat.setAttribute("data-toggle", "tooltip");
    stat.setAttribute("data-placement", "right");
    stat.setAttribute("title", "Test");
        }
    })
> HTMLCollection { 0: img#logo.logo, 1: img, 2: img, 3: img, 4: img, 5: img, 6: img, 7: img, 8: img, 9: img
, โ€ฆ }
> TypeError: allImages.forEach is not a function[Learn More]```
anyone able to help here
upbeat maple
#

Try to convert the HTMCollection to a slice

#
var imageList = Array.prototype.slice.call(allImages);
imageList.forEach(i => {
  ...
}
sick cloud
#

alright

#

@upbeat maple that stopped the errors but the code itself didnt work :(

#

the image tags stayed like <img src="/wiki/rooms/restroom.png" alt="Restroom"> without the mew attributes added

upbeat maple
#

Ah... I see. I don't have a testbench set up but can you try using imageList as a for loop instead

#

and then index into each item of allImages

#

So, you would be doing allImages[x].setAttribute(...)

sick cloud
#

hm, okay

#

i've never used for loops much, how would i do that?

#

also, i need to make sure the images dont have an id for specific purposes

upbeat maple
#

for(x = 0 ; i < imageList.length ; x++) {

#

...

#

}

sick cloud
#

alright

upbeat maple
#

sorry, "x < imageList.length"

#
for(x = 0 ; x < imageList.length ; x++) {
  ...
}
sick cloud
#

okay, then i just use imageList[x].setAttribute("data-toggle", "tooltip"); and such inside?

#

hm, that didnt seem to work either

#

seems that setAttribute isn't working anyways, it is making it to the loop

upbeat maple
#

Use the "x" index for allImages

sick cloud
#

ah

cold niche
#

Is there any alternative for big bots instead of webhooks to check who voted yet?

bright spear
#

@cold niche you can just the check endpoint to check if a specific user has voted, or you can use the endpoint to get the last 1k votes if it works, but the webhooks are recommended

restive bough
mossy vine
#

Pin that ^

rugged terrace
#

i agree

bitter sundial
#

could pin but maybe all the hacking examples will be confusing

prime cliff
#

LiveOverflow its a very good channel ๐Ÿ‘Œ

quartz kindle
#

in the website? only tags

clever wave
#

    at Function.Module._resolveFilename (module.js:548:15)

    at Function.Module._load (module.js:475:25)

    at Module.require (module.js:597:17)

    at require (internal/module.js:11:18)

at Object.<anonymous> (/app/bot.js:11:1)```
#

What's the problem?

#

Help Pls

marble needle
#

literally tells you, can't find the module

#

wrong filepath or your file doesnt even exist

clever wave
#

hmm

#

I'il check it out.

#

Thx

#

Hey @marble needle

#

Error: Cannot find module './modules/functions.js'

#

What's the problem?

marble needle
dusky steeple
#

do ../modules/functions.js

marble needle
#

how can you be that certain if you have no idea about his folder structure

clever wave
#

I'm using glitch and now I'm going to do npm install 'module'?

dusky steeple
#

im not but what's wrong with trying it

#

I have had the same error and that was the pronlem

#

problem

marble needle
#

you use ./ to access the folder the file you're working on is located in. ../ to access the folder thats one level up from the current one

#

./modules/ implies that in your current working folder there is another folder called modules

#

if that isn't the case your filepath is wrong and it'll error because it can't find the file you specified at the location you provided

clever wave
#

I think I've figured it out , but still got a problem?

#

@marble needle Do you know how to use glitch?

marble needle
#

never used free hosting, never will

opaque eagle
spring ember
opaque eagle
#

But you don't include http(s) in go get commands tho, right?

spring ember
opaque eagle
#

I have to go to class now, ttyl

spring ember
#

did you maybe download a malformed package?

#

like not malformed but the link is wrong

dapper spoke
#

i get this problem when i use commando

#

Argument type "user" isn't registered.

serene spear
#

It's http://; that's the issue

dapper spoke
#

can someone help me with that ?

prime cliff
#

What are you trying to do and screenshot of code

trim saddle
#

@scarlet bane

index.py:30: UserWarning: Creating a client session outside of coroutine is a very dangerous idea
  session = aiohttp.ClientSession()
empty steppe
#

I am looking for someone to beta test a bot before a big update. Would offer the same for one of your bots ofc ๐Ÿ˜ƒ

modern sable
#

rule 4 tmeowsip

amber fractal
#

How do you ask for someone to test something with that rule Thonk

modern sable
#
  • friends
  • alt accounts
quartz kindle
#

your beta testers should be people who are already users of your bot, or at least that already know it and are interested in its features

#

people who know nothing about the bot or how its supposed to work wont be able to accurately test and debug it for you

empty steppe
#

fair point tim ๐Ÿ˜ƒ

#

i don't know anyone who is using it tho and messaging random people using it is a bit weird?

earnest phoenix
#

Then second choice that marco said alt accounts mmLol

empty steppe
#

can you be logged in with multiple accounts?

#

Also I am mostly looking for feedback on user experience, thats hard to generate with alts ๐Ÿ˜ƒ

earnest phoenix
#

Means you have to smh find a friend that uses it?

empty steppe
#

yeah, i though asking here is an option if maybe someone else is interested in feedback for their bot too. But i can understand if this falls under rule4

marble needle
#

huh, almost like you could finish up a build make it public and use your support server to collect feedback

amber fractal
#

Do people finish up games before a public release without testers? Usually not. He did what a dev should do and get testers. Just not the right place

marble needle
#

alpha/beta phases exist, for public testing mmLol

split hazel
#

How fast is sqlite thonk

empty steppe
#

fast ๐Ÿ˜„

split hazel
#

But how fast

#

Because I need my prefix database to be pretty quick ๐Ÿ˜‚

empty steppe
#

what for?

split hazel
#

Yeah storing custom prefixes

empty steppe
#

i use mongo for that, but its very comparable in speed to sqlite

split hazel
#

I use mongo for my prefix atm too

#

But it's sacrificing the bots speed for me

#

I tested the speed and it takes around 30ms to read/write keys

late hill
#

30ms isn't even bad what

#

If you want it to be very fast I guess you could cache them if you have enough memory for that

amber fractal
#

Mongo or sqlite tho

hushed berry
#

@split hazel most of that latency probably isnt even caused by mongo ๐Ÿค”

#

how are you even measuring the latency

split hazel
#

how long it takes to execute the thing

#

and yeah i wont cache because i'm running low on mem

scarlet bane
#

@trim saddle warnings only stop the weak

trim saddle
hushed berry
#

are you actually concerned about storing like 100 strings? @split hazel

#

the amount of space that takes up is ridiculously small

empty steppe
#

yeah if speed is the worry just use a dict and store it in the bot variable

#

read once at the start and do update functions

hushed berry
#

exactly

#

thats what i do

cloud peak
#

How can i add a reaction to a message? The reaction is uploaded on the server. Using Java and JDA

inner jewel
#

Message#addReaction

zinc pawn
cloud peak
#

ik

inner jewel
#

or MessageChannel#addReactionById

cloud peak
#

But it doesnt work with custom reactions

inner jewel
#

it does

#

you can either use an Emote object

#

or build the reaction string yourself

late hill
#

cmdFound is a boolean?

cloud peak
#

String emote = args[1]; message.addReaction(emote).queue(); This is my current code

#

What shall i change?

#

@inner jewel

inner jewel
#

custom emotes in messages are <:name:id>/<a:name:id>

#

for reactions it's name:id

cloud peak
#

how can i get the id of an emote

inner jewel
#

Emote#getId()

earnest phoenix
#

hello!

quartz kindle
#

@split hazel if you need maximum performance, go with redis

hushed berry
#

i mean

#

at his scale?

quartz kindle
#

well, at his scale mongo should not be taking 30ms for a single operation

amber fractal
#

Whats a good db tho?

quartz kindle
#

all are good, depends on your needs

#

for small applications sqlite does a great job

amber fractal
#

An actual db tho

inner jewel
#

sqlite is a db

amber fractal
#

One that I could shard with for the future

#

Ik

quartz kindle
#

for bigger applications that require a database server, there is mysql, postgre, mongo, and many others

marble needle
#

json is a db, change my mind trollface

inner jewel
#

for sql i'd use pg

hushed berry
#

rethink

quartz kindle
#

sqlite can handle sharding

amber fractal
#

Is it difficult?

hushed berry
#

sqlite is embedded ye?

quartz kindle
#

it shouldnt be difficult

#

yes its embedded

hushed berry
#

would cause issues if you ever need to split your bot across multiple processes

#

i think

#

(?)

quartz kindle
#

sqlite can handle multiple processes

amber fractal
#

Whats the best way to test before actually doing it? Making a 2nd app?

hushed berry
#

across multiple machines, even

quartz kindle
#

not for multiple machines

#

if you need multiple machines, you need a server

#

sqlite is not a server

#

mysql/mongo/postgre are servers

amber fractal
#

Atleast switching dbs isnt that hard

quartz kindle
#

its not hard if you have no data

#

if you have lots of data, it will need to be exported/imported at least

amber fractal
#

I have data, but i can loop over all of it and put it into a new db

quartz kindle
#

yeah

inner jewel
#

and that only works well for small datasets

#

when you have a lot of data it's hard to change

quartz kindle
#

a lot of data meaning tens/hundreds of gb

amber fractal
#

I think mines still small enough to transfer fine

#

Less than a gb across it I believe

quartz kindle
#

my bot's database is like 2mb in size

amber fractal
#

Yeah, I think mine is like 15mb. But I dont store data as efficiently as possible

#

A mistake I made early on

#

But Id have to remake a bunch of my code to change it.

quartz kindle
#

yeah but it should be fine

marble needle
#

if you know you made a mistake and are switching dbs anyway why not fix that then

quartz kindle
#

and you should be fine with sqlite as well

amber fractal
#

Im not switching atm

marble needle
#

ah

split hazel
#

@quartz kindle sqlite is good, i just tried it

#

1ms read and around 12ms write is good

quartz kindle
#

๐Ÿ‘

cloud peak
#

I mean that the bot waits for the next message etc

restive bough
formal agate
#

I need to confirm what this error is saying E:\<REDACTED PATH>\node_modules\integer\build\integer.vcxproj(20,3): error MSB4019: The imported project "E:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk From what I understand this has something to do with the path being broken correct?

quartz kindle
#

i assume so

#

its looking for the file in E:

young jungle
#

does anyone know how to add a delete_after argument to the default help command?

quartz kindle
#

what do you mean

empty steppe
#

what exactly do you need?

young jungle
#

I want the default help message to delete itself after 30 seconds

quartz kindle
#

which language and library?

young jungle
quartz kindle
#

not sure about python, but you can probably sleep for 30 seconds and then execute a delete command on the received message object

young jungle
#

hmm

#

there's an argument you can pass to commands called ```py
delete_after = int

earnest phoenix
#

sleeping in non async context is bad

young jungle
#

how do you put it into async?

quartz kindle
#

i found this in the rewrite docs, so you're right

#
coroutine send(content=None, *, tts=False, embed=None, file=None, files=None, delete_after=None, nonce=None)```
#

you should be able to add it as an argument in the send command

young jungle
#

there isn't a send command for it since it's built in though

quartz kindle
#

how do you send messages?

#

ie, your help command

young jungle
#

I don't send the help command, it's the default

quartz kindle
#

what do you mean?

young jungle
#

The rewrite library includes a help command by default

quartz kindle
#

hmm

#

let me look for it in the docs

young jungle
#

thanks

#

I've gotta go, but if you find anything useful, would you mind sending it to me via DM?

#

thanks for the help

empty steppe
#

You can do it with wait_for_reaction for example

#
res = await self.bot.wait_for_reaction(emoji=self.pages, message=msg, timeout=180, check=check)

# redirect on reaction
if res is None:
    await self.bot.delete_message(msg)
    return None
else:
    if str(res.reaction.message.channel.type) != 'private':
        await self.bot.remove_reaction(res.reaction.message, res.reaction.emoji, res.user)
        return res
#

the first part, if res is None triggers when the timeout expires

#

you could easily work in an X emoji to delete and then auto delete on timeout

quartz kindle
#

@young jungle i cant find anything about it in the rewrite docs. there is a bot.remove_command("help") thing, but i think its for async

#

why do libs ship with built in commands smh

young jungle
#

thanks guys

slender thistle
#

Nah Tim

#

remove_command is both async and rewrite

knotty steeple
#

you use it to remove the default help command

slender thistle
#

Not only

knotty steeple
#

mostly

#

can remove any command mmLol

slender thistle
#
for cmd in bot.commands:
    bot.remove_command(cmd)``` ftw
knotty steeple
#

oh no

quartz kindle
#

ye but he wanted to edit the built-in help command

#

i didnt find anything about that in the docs, the only thing i found was removing it so you can build your own

knotty steeple
#

you cant edit the default

#

which is

earnest phoenix
#

when does DBL weekend starts?

#

GMT-0 00:00 of Saturday?

#

(and I presume it ends on GMT-0 00:00 of Monday)

amber fractal
#

My people got the double reward on friday before, but Im GMT-5o

#

so*

earnest phoenix
#

or smth like that

amber fractal
#

What lan is that

earnest phoenix
#

Discord Search KaguOK ๐Ÿ‘Œ

#

that's Kotlin

formal agate
#

Ok so earlier i ask a question about this error E:\<REDACTED PATH>\node_modules\integer\build\integer.vcxproj(20,3): error MSB4019: The imported project "E:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. I checked path on my server, its not there so idk where is came from, and I looked up the error code. The error code is for C# or like C++ i forget, but anyway I'm coding in js so this very much confuses me.

topaz fjord
#

@earnest phoenix Friday isnt weekend

#

hecc

harsh nova
#

is it clear that he thing is a search bar

formal agate
#

yes

harsh nova
#

alright thanks

amber fractal
#

Wait what is it for?

harsh nova
#

my bot

formal agate
#

seems like an error tho

harsh nova
#

error?

formal agate
#

when no docs where found

#

due to the red text

harsh nova
#

oh

#

hmm

#

tbh I like the red text, should i change the color

#

I have no idea how to style things lol

formal agate
#

use w3 css

amber fractal
#

add a dark theme then you're good

harsh nova
#

maybe blue is better?

formal agate
#

maybe

#

idk

harsh nova
#

daRK theme yeet

formal agate
#

just not red

harsh nova
#

gotcha

topaz fjord
#

w3 css is legit gay

#

Real people use no framework

restive bough
#

wait wtf

#

is w3 css a thing

formal agate
#

yes

#

i love it

restive bough
#

ehm

#

wtf

#

it's ugly af

formal agate
#

its easy

#

so idc

#

and i can barley do normal CSS anyway

harsh nova
#

ahh

#

is it better in black?