#development

1 messages ยท Page 1728 of 1

opal plank
#

i could've sworn there was

#

1 sec

crimson vapor
#

a json db is a gateway drug to corruption

opal plank
#

actually, no, it doesnt

lyric mountain
#

json db is a squirrel on cocaine

opal plank
#

its not a json db guys

#

its me on too much alcohool

#

dont trust me so blindly

lyric mountain
opal plank
#

didnt spot that it was a basic command handler

twilit hemlock
#

ok

opal plank
#

jack

#

want an honest cruse truth?

#

before you go too deep into that?

#

wanna try something new and kinky?

twilit hemlock
#

yea

#

i just want multiple collections

#

idk how to do, i tried no work tho

opal plank
#

i mean something that WILL require a little bit of a curve, but will save you on code

#

the stuff you trying to do is literally 2 lines in detritus

twilit hemlock
#

k

opal plank
#

check this

#

actually

#

yeah read the whole thing, if you arent satisfied by the end of it, i'll give you a hand the way you want it rn

#

its just that this is a lot simplier

twilit hemlock
#

kk

opal plank
#

read this

#

its a bit text

#

but its worth it on the long run

twilit hemlock
#

kk

#

yea idk really understand, i am sorta noob to js

opal plank
#

thats what i mean

crimson vapor
#

oi

#

what the hell Erwin

opal plank
#

the stuff you want to do is supported by the library

#

so no need to code it yourself

#

@crimson vapor shush

crimson vapor
#

come on not again

opal plank
#

always again

#

im not letting another poor sheep going into discord.js and getting bent over cuz of their shit code

crimson vapor
#

well

#

shit code is shit code, library doesn't change that

opal plank
#

detritus has literally everything they would want in a bot

crimson vapor
#

reaction collectors

opal plank
#

i already talked to cake about that

crimson vapor
#

one sec I gotta to put my database behind a password

#

currently is open

twilit hemlock
#

ok

#

so how do i do multiple collections

earnest phoenix
#

@opal plank anyways I don't really know how bots on twitch works but isn't it kind of unfair to compare latency for two bots that run completely differently? and by that I mean for example those bots could be running on many more channels (if that's how bots work)

twilit hemlock
#

i didnt reeally understand

lyric mountain
#

you have one wheel and some metal scraps

#

you need to go uphill somehow, but you can't use your legs

#

good luck

twilit hemlock
#

ok

lyric mountain
#

that's how twitch api works

#

more like "don't" works

earnest phoenix
#

that sounds horrible

lyric mountain
#

it's worse than it sounds

earnest phoenix
#

isn't twitch supposedly the leading platform for lives

#

or something

lyric mountain
#

for lives, sure

#

for bots? not so much

twilit hemlock
#

ok so

lyric mountain
#

twitch chat isn't even that sophisticated at all

twilit hemlock
#

@opal plank

#

help

lyric mountain
#

just a text-based irc chat

#

no fancy stuff

#

hell you can't even delete or edit messages

umbral zealot
#

It's funny how in perspective of Discord, everything else seems so.... primitive.

twilit hemlock
#

ok wtahever

#

ill just use 1 folde rfor everything

#

folder

opal plank
#

at the time of testing, i was running at 97% of twitch's GLOBAL traffic, looking at around 3.4 MILLION viewrs

lyric mountain
twilit hemlock
#

i dont know how

#

to make diffrent folders

#

and use them

earnest phoenix
twilit hemlock
#

i only used 1 folder

#

i dont know how to duplicate

#

so it runs the code

lyric mountain
#

./onefolder/anotherfolder/afolder/ohafolder/file.js

twilit hemlock
#

omg

#
}
exports.help = {
name: 'recent'
}```
#

see this

#
 fs.readdir('./commands', (err, files) => {
        if(err) return console.log(err);
        let jsfile = files.filter(f => f.split(".").pop() == 'js')

        if(jsfile.length == 0) {return console.log("Could not find any commands!")}

        jsfile.forEach(f => {
            let props = require(`./commands/${f}`)
            bot.commands.set(props.help.name, props)
        })
    })  
#

see this

#

/commands is the folder name

lyric mountain
#

yes

twilit hemlock
#

which gets inside the folder any code\

#

i dont know how to do that for 2 folders

#

i dont know how to dup the code

#

i tried it doedsnt owkr

lyric mountain
#

you don't need to dup the code

twilit hemlock
#
const fs = require("fs")


bot.commands = new Discord.Collection();```
opal plank
lyric mountain
#

readdir will also return the folders inside /commands

twilit hemlock
#

then what do i do

opal plank
#

but even accounting for that mine would've still gone ontop

lyric mountain
#

all you need to do is open those too

twilit hemlock
#

hoqw

#

how

lyric mountain
#

the same way you did there

#

just add a check to see if it's a file or a folder

#

if it's a folder readdir it

twilit hemlock
#

i dont know how

opal plank
lyric mountain
#

think a bit

#

the code is literally there

twilit hemlock
#

im legit newbie

#

ok

umbral zealot
#

oh I wasn't really talking about dev-wise

lyric mountain
#

all you need to do is check if the file is a folder or an actual file

umbral zealot
#

just... y'know... feature-wise, period.

twilit hemlock
#

let props = require(./commands/$/helpcommands/{f})

#

idk

lyric mountain
#

no

#

was you who wrote that command loader?

#

or was it stolen from the web?

opal plank
#

oh i see

twilit hemlock
#

no lol

#

stolen?

opal plank
#

@twilit hemlock try the thing i told you

#

its 2 lines

twilit hemlock
#

i dont know how man

opal plank
#

i can teach you no problem

twilit hemlock
#

Ok

crimson vapor
#

good night mr. salesman

opal plank
#

good night million

opal plank
twilit hemlock
#

nothing as in what u sent me

opal plank
#

i assume an index.js and a bunch of commands in folder with module.exports

twilit hemlock
#

well

#

it would be easy to screen share but i have this

opal plank
#

i eman, sure, why not, im already buzzed

lyric mountain
#

@opal plank made just for you

opal plank
wheat mesa
#

Currently failing to find out why FindRole is undefined even when I test it with "MyTestRole" with a role named "MyTestRole" in discord... ```js
for(i = 0; i<args.length; i++) {
let FindRole = message.guild.roles.cache.find(r => r.Name === args[i])
if(typeof FindRole === undefined)
{
guild.roles.create({
data: {
name: args[i],
color: 'GREY',
mentionable: true
},
reason: 'creating roles for WaffleBot reaction roles.'
})
} else {

        }
    }
    console.log(FindRole)
#

node:1948) UnhandledPromiseRejectionWarning: ReferenceError: FindRole is not defined

#

Nvm, I didn't wrap my undefined in quotes

pale vessel
#

mmm little nightmares 2

wheat mesa
#

This just started happening whenever I open the VScode integrated terminal, not sure why. It makes me restart the pty host every time I want to use the terminal. Anyone know a solution for this?

proven lantern
#

if i use this code to shard will it auto create shards when they are needed?

const manager = new ShardingManager('./bot.js', { token: 'your-token-goes-here' });

manager.on('shardCreate', shard => console.log(`Launched shard ${shard.id}`));
manager.spawn();```
earnest phoenix
#

any help to fix this error

swift cloak
#
const guildConfig = await GuildConfig.findOne( { guildID: message.guild.id });
    const prefix = guildConfig.get('prefix');```
#

hey is this mongo spamming?

#

because ts sending a request to find one every time a message is sent. so is that spamming? or spamming doesnt exist and you can request as fast as flash?

solemn latch
earnest phoenix
#

if (message.channel.topic = welcome ) ignore;

#

Didn't work

solemn latch
#

your not comparing, your setting.

#

=== compares, = sets

earnest phoenix
#

๐Ÿคจ

steep drum
#

a=b means make a's value equal to b. a===b means is a's value and type the same as b's value and type

earnest phoenix
#

If there is no specific user in a server, then How to return;
Or channel topic

#

@steep drum @solemn latch

#

Help please

solemn latch
#

please dont ping users for help.

earnest phoenix
#

Ohk

#

Ic

solemn latch
#
if (message.channel.topic === "welcome") return;

this will return from the current function if the topic is welcome.

signal estuary
#

Is there an event, when the bot joins a server [for the first time]?
Like. if you want to send a message to the server when the bot joins the server

solemn latch
#

djs?

earnest phoenix
#

Defaultchannel

#

Or guild owner

#

?

#

I'm probably in the wrong channel, but does anyone maybe know how to send server count to top.gg like some of the other bots? i want to make my bot's server count appear on the page but i'm not really sure where i can do that and what's the process...

solemn latch
#

theres a few libraries that can make it easier.

earnest phoenix
solemn latch
earnest phoenix
#

ooh sorry i'm a bit braindead lol
i'm a bit new to bot development still, even though i've been working on bots since 2019... okay, i will try this thank you very much!

earnest phoenix
#

HI

#

I want the bot to remove the role from the person who received the role

#

how do i create an uptime command?

neat harness
signal estuary
neat harness
#

Oh then just use the guildJoin event

signal estuary
#

Someone told me, its the 'guildCreate' event

neat harness
#

If you just want it for the first time then db is a go but otherwise just use guildCreate

signal estuary
neat harness
#

No the parameter is guild

#

replace msg with guild

signal estuary
neat harness
#

It can't detect the channel I believe but I may be wrong

#

I would just get the default channel if it exists

#

Idk though I don't do that

earnest phoenix
#

when i execute c!uptime it doesnt send an uptime response

lavish bramble
#

How can I do when I reply to my bot then he send message?

tardy hornet
#

it always does these 2 errors

short zinc
#

is it possible for a bot to set themselves as a speaker in stage channel automatically on join?

earnest phoenix
#

how add back ground image in top.gg bot page

slender thistle
#

Are you familiar with HTML and CSS?

earnest phoenix
slender thistle
#

Do you know HTML and/or CSS?

earnest phoenix
#

nop

#

i learn only python and node

slender thistle
#

You'll need to get familiar with both to be able to do it without any problem

earnest phoenix
#

i need like this @slender thistle

#

thats CSS mate

earnest phoenix
#

CSS

#

also this type

earnest phoenix
earnest phoenix
earnest phoenix
earnest phoenix
#

???

earnest phoenix
#

dude just learn css

#

0k

#

theres tons of videos on youtube

slender thistle
#

P.S. the selector you will need is .entity-wrapper

earnest phoenix
#

this

tired sequoia
#

Which one is better when bot goes bigger, MongoDB or SQL?

quartz kindle
#

no difference, what matters is how you design your database structures

tired sequoia
tardy hornet
#

sometimes my bot crashes with no errors

spare badger
feral aspen
#

Hey all, so I am having this leaderboard command and in line 68, I have this code:

embed.addField(`${i + 1}. ${res[i].name}`, `$${Math.floor((res[i].money + res[i].bank)).toLocaleString()}`);

.. unfortunately, when someone is having money 0 and bank example 1000, he goes at the end of the leaderboard.

I tried playing with the sort like:

.sort([
  ['money', 'descending'],
  ['bank', 'descending']
]);

.. but got kind-of lost, any help?
https://srcb.in/9SAmgLV7If

cinder patio
#

Might be better to sort it in JS in that case

#

via the Array.sort method

feral aspen
#

money and bank are properties of an object.

#

I'm using MongoDB.

cinder patio
#

you can still sort it... res is your array right? Instead of sorting it via mongodb, use the array.sort method. res.sort((a, b) => (a.money + a.bank) - (a.money + a.bank))

pale vessel
#

b

cinder patio
#

oop

feral aspen
#

What can I do with this then?

embed.addField(`${i + 1}. ${res[i].name}`, `$${Math.floor((res[i].money + res[i].bank)).toLocaleString()}`);
cinder patio
#

keep it as it is

quartz kindle
#

you want to sort them by total from money plus bank?

quartz kindle
#

then you have to combine the values before sorting

#

check if mongo can do a combined sort

cinder patio
#

it can't

feral aspen
#

You mean something like this?

#
.sort({
    money: -1,
    bank: -1
})
cinder patio
#

That's the same thing as before

feral aspen
#

Ah..

#

I am not sure, then.

cinder patio
#

you can't...

feral aspen
#

Yeah, I don't think...

cinder patio
#

I showed how you can sort them via js though

quartz kindle
#

shouldnt it be (a.money + a.bank) - (b.money + b.bank)?

#

lmao

zenith terrace
#

lemme get my code

#

I use mongo

feral aspen
#

๐Ÿ˜ฎ

quartz kindle
#

get your cod

#

codfish

zenith terrace
cinder patio
#

yeah mb

quartz kindle
#

yeah megabits

feral aspen
#

I'm trying.. momment.

zenith terrace
#

to get the total amount in both I did do let total = amount.bank + amount.hand

feral aspen
feral aspen
quartz kindle
#

then switch a with b

feral aspen
#

Moment.

zenith terrace
#

I dont have a leaderboard command for economy but I have an XP one and it starts with this
let user2 = user.sort(function(b, a){return a.totalXP-b.totalXP})

zenith terrace
#

but you have yours as a, b

#

switch them about like tim said

feral aspen
#

๐Ÿ˜‚

#

.. and still worked.

#

It's the same, I believe so.

#

a, b.. b-a and b, a.. a-b

cinder patio
#

same thing

feral aspen
#

Yeah.

#

Thanks all.

eternal osprey
#

hey!

#

why can't it read property roles of undefined?

#
const allItems = fs
    .readFileSync("./levels.txt", "utf8")
    .split("\n")
    .map((x) => x.split(/ +/));
      let filtered = allItems.filter((x) => x[0]);
      let final = filtered.map((x) => x[1]);
      let haha = filtered.map((x) => x[0]);
      console.log(haha)
      const french = Math.max(...final)
   
      let reverse = allItems.filter((x) => x[1] === `${french}`);
   
      let finalreverse = reverse.map((x) => x[0]);
    
      let m = finalreverse.map(name => client.users.cache.find(({ username }) => username === name))
      let z = haha.map(name => client.users.cache.find(({ username }) => username === name))
      const vip = await guild.roles.create({
        data: {
          name: 'MB10',
          color: 'BLUE',
        },
        reason: 'role for the game attenders',
      })
      
      for (const names of haha) {
        let k = guild.members.cache.find(member => member.user.username === `${names}`)
        k.roles.add(vip)
        const botrole = await guild.members.fetch('555955826880413696')
        const botrole2 = await guild.members.fetch('749820490926784615')
        botrole.roles.add(vip)
        botrole2.roles.add(vip)

        

    } )```
cinder patio
#

k is undefined, member is not cached or doesn't exist

eternal osprey
#

hmm strange

cinder patio
#

jesus these variable names

eternal osprey
#

yup i know

#

is it maybe because i am checking for usernames

#

but some member also have nicknames on the server

earnest phoenix
#

wht cnt come in full

umbral zealot
#

Show your CSS code

cinder patio
#

possibly... are you sure names is valid?

eternal osprey
# earnest phoenix

I would recommend to fix some of that grammar btw. Attracts more people

eternal osprey
#

with no nicknames

earnest phoenix
cinder patio
#

then it's not cached, you can fetch it if it's not cached, and also check if the nickname matches too

eternal osprey
#

i guess that is why it was erroring

#

so i can try to fetch it?

#

wait no

earnest phoenix
#
.entity-content {
         width: 100%;
         hight: 100vh;
         overflow: scrool;
         overflow-x: hidden; 
         background: url('https://images-ext-1.discordapp.net/external/KbN4LwJVhqe7dG-Avqf-N13gNAEm_TV8T6caMgpcFlk/https/i.imgur.com/2za7yG7.jpg'); 
         background-repeat: no-repeat;
         background-size: cover;
}               
eternal osprey
#

it is not using the nicknames

#

it is just matching the usernames

#

wrong move there bud. Don't ping.

umbral zealot
umbral zealot
eternal osprey
latent heron
#

Why are you using ext?

umbral zealot
#

I'm not a high-roled user, and I'm fine with getting pinged, just like you did. To each their own.

crimson vapor
#

its fine if you ping people if you have a real reason

zenith terrace
fiery copper
#

How do I make the little fake bots like this

umbral zealot
earnest phoenix
#

this is full

#
base__Flex-sc-1f9zlm1-0 base__Column-sc-1f9zlm1-2 page__PageContent-iv577v-1 jLvxNO zUNGP llbETX
quartz kindle
#

little fake bots?

#

lmao

crimson vapor
#

webhooks?

#

hi Tim

fiery copper
#

Idk what they're called ffs

crimson vapor
#

do you mean webhooks?

quartz kindle
#

yeah they're called webhooks

fiery copper
#

Oh

zenith terrace
umbral zealot
#

though the [bot] part is actually a "pill" usually. or a label.

earnest phoenix
#

pls see my message

#

avobe

umbral zealot
#

Dude I'm not even sure I understand what your question is to be honest

crimson vapor
#

I sure as hell don't

umbral zealot
#

wht cnt come in full isn't... I don't know what this means

quartz kindle
#

sounds nasty

fiery copper
#

I think it says what can't come in full

umbral zealot
#

yeah ok but do you know what that means, then?

fiery copper
#

No

#

I just know how to decipher it

umbral zealot
#

So yeah good we're all agreeing no one knows what that means. thumbs_up

cinder patio
#

The background doesn't cover the whole page

zenith terrace
#

why does the background not fully cover the bot page ig

umbral zealot
#

y'all are making assumptions

zenith terrace
#

reason why I said ig

cinder patio
#

pretty sure that's it

quartz kindle
#

when you ASSUME you make an ASS out of U and ME

zenith terrace
fiery copper
pale vessel
#

ok?

quartz kindle
#

ok

fiery copper
#

DeadChat meant to send this

#

They're both next to each other in my favorited

umbral zealot
earnest phoenix
#

cn pls give me html code of image uplod

#

pls

latent heron
#

What

crimson vapor
tired panther
#
class guild{
  constructor(main){
    this.main = main;
    this.cache = main.cache;

  }
static fetchGuild ...
static deleteGuild....
}
module.exports = guild

When I do new Guild() with requiring the upper code, it does not have the functions like deleteGuild....

tacit sequoia
#

Bot's can still create their own guilds?

pale vessel
#

yes

crimson vapor
#

iirc they can if they are in less than like 10 guilds

crimson vapor
pale vessel
#

yeah

#

i wish i did that

#

now i can't

crimson vapor
#

wdym

pale vessel
#

create a guild using my bot

crimson vapor
#

bots can't be the owner of a guild

#

they can only create it

pale vessel
#

it would be cool to test

tired panther
# crimson vapor what are you trying to do?

I have a master file, which has understructures.
But I can paste all functions on the master file, bc it would be to much
Thats why I am doing understructures, but they should have access to the master properties...

zenith terrace
#

doesnt the bot have to be in less that 5 guilds

pale vessel
#

ten

crimson vapor
#

idk if its 10 or 5

green kestrel
#

oh ffs. im dealing with a mission critical production system atm, where if it goes wrong, someones in LEGAL trouble.

and it has TWO FIELDS in a customer table. a date of birth field, and an AGE FIELD.... that isnt even a calculated field, and get this, its a signed integer...

tired panther
green kestrel
#

there arent enough facepalm emojis on discord for this bollocks

#

just calculate the age ffs

crimson vapor
#

if thats what you mean

tired panther
crimson vapor
#

why are you using static for a declared variable?

#

your linter should be mad

#

you can't access this without using the constructor

fiery copper
#

Editing stuff in my dB so me and my friends can have unlimited money is fun

crimson vapor
#

also you should be linting

cinder patio
green kestrel
#

i cant say

#

but i can say i work in insurance

tired panther
crimson vapor
#

*nda

tired panther
crimson vapor
#

then stop using static

#

static isn't what you want if you want to be able to access this in any of the functions

#

if you make static functions you might as well just export an object

lament isle
#

anyone know how to change the color of embed.set_author

crimson vapor
#

you can do embed.set_color I think

#

is that what you mean?

lament isle
#

uhh ill try

#

i set a color in the discord.Embed parameters but pretty sure thats not the same thing

#

I'm looking at the API reference and set_color isnt a method

latent heron
#

Python or Javascript

eternal osprey
#

hey

#
channel1.send("Party leader, copy and paste this following line in this channel:")
channel1.send("`"+`${result}`+"`")
fs.writeFileSync("./levels.txt", '')
.setTimeout(() => {
  message.channel.send("Use +rep @user to commend other players!")
 }, 60000);
    client.on('messageReactionAdd', (reaction, user) => {
      if (reaction.emoji.name === "\u2620") {
        channel1.send(`${user} is ready!`)
      }
    })
    .setTimeout(() => {
      vip.delete()
      channel1.delete()
      return 0;
    }, 600000);

why can't it read property settimeout of undefined?
it's the first timeout

umbral zealot
#

uhhhhh writeFileSync doesn't return anything

#

why is there a dot there

#

you can't... setTimeout isn't a property of anything...

#

Also still fucking trying to do a txt/json database, are you

#

god you're such a stubborn idiot, I don't understand why you're still on this.

lament isle
#

Im using python

umbral zealot
latent heron
#

^

lament isle
#

oh so you're allowed to change it in other languages?

umbral zealot
#

no

latent heron
#

No

#

Where did she say that lmao

umbral zealot
#

Discord Embeds do not support changing colors of anything except the bar on the left, period, in all client languages

#

not sure where you got the idea it was possible

latent heron
#

Theyre just api wrappers

#

Different lang doesn't mean it's suddenly possible

lament isle
latent heron
#

Unless it's slah commands, all langs currently do it differently it seems

umbral zealot
#

That isn't the normal Discord client

#

someone is hacking/modifying their client which breaks the terms of service

#

unless tha'ts just... hold up isn't that just a normal link

#

that blue looked different

#

look at the URL part of set_author

lament isle
#

if you hover it it is a link

umbral zealot
#

yeah ok so it's a url, not a color.

lament isle
#

i set a URL in set_author but its just a bolded white

umbral zealot
#

then the URL is wrong

#

make sure it's a full URL including https:// blah

lament isle
#

ill try the www.

umbral zealot
#

lol so just like that blue right there in the embed? kekface

lament isle
#

yeah but it doesnt work in the title..

umbral zealot
#

show your code

lament isle
umbral zealot
#

And also are you 100% sure the screenshot you have, which you're trying to reproduce, is using the author?

#

because... it could be literally just using a field value

#

or, even, the description

#

both of which support markdown links

pale vessel
#

Could be an emoji with bold link

lament isle
#

what do you mean by the author

umbral zealot
#

I mean

pale vessel
#

The author won't be blue

umbral zealot
#

yeah I don't know these things by heart so probably not the author

#

it could be just the description or field value

lament isle
#

are you allowed to change the set_field colors?

#

basically all the titles were blue as well

umbral zealot
#

the description, yes, by adding a markdown link

#

[https://url.blah.com.whatever/](this text will be shown instead)

#

This only works in the field values (not the title) or the embed description, though

near stratus
pale vessel
#

you got it backwards

umbral zealot
near stratus
#

[this text](https://the.url)

umbral zealot
#

yes... actually that looks better, absolutely.

#

haven't finished my first coffee yet

pale vessel
#

Last time they somehow made it supported in messages on mobile

near stratus
lament isle
#

aight ill try it for the descriptions

willow mirage
#

does python has something like init a project?

#

like in node.js is npm init ?

earnest phoenix
#

pls give code

umbral zealot
#

what code

lament isle
#

oh wait you said it only works for field values

#

the blue thing is a title tho

umbral zealot
willow mirage
near stratus
#

it's useless btw

willow mirage
#

bruh

#

so there are no init command for python?

#

liek init is just a lib

#

I meant a built-in

near stratus
#

Python only needs 2 files
main.py
requirements.py

#

and sometimes you don't even need the second

earnest phoenix
#

i need top.gg background image set codes

willow mirage
#

hmmm lemme google the req.py

#

@near stratus btw how I can check does d.py is installed?

#

cuz there are no folders like libraries

#

or something like that to store the files of that lib

near stratus
earnest phoenix
#

this

near stratus
earnest phoenix
#

this image

#

codes

willow mirage
#

ig not

#

:<

near stratus
earnest phoenix
near stratus
# willow mirage so it is good or not?

Well it's not easy to say.
Like you don't have to install them at every project so it's efficient
But it's hard to set up a perfect sandbox since you need all the modules pre installed

willow mirage
#

thanks you for your help

#

cuz I was from js to py

earnest phoenix
#

see not full

willow mirage
#

so yeah a lots of diffrents

zenith terrace
#

background-repeat: no-repeat;

near stratus
#

^^^

near stratus
spare badger
earnest phoenix
sacred juniper
#

Hi

zenith terrace
sacred juniper
#

I cant see my bot s avatar on top gg what should i do

zenith terrace
earnest phoenix
earnest phoenix
#

op

spare badger
#

I'm currently doing some research on how Discord bot developers get insights on basic statistics of their bots. Do you guys use any tools for this or build custom panels / systems for this?

earnest phoenix
spare badger
#

@earnest phoenix You could try background-attachment: fixed;

eternal osprey
earnest phoenix
lyric mountain
#

sevrver
modration
fetures

eternal osprey
earnest phoenix
opal plank
#

"go to google translate"
"ok"
instantly replies with "transper"

#

did you really get what they were saying?

spare badger
#

๐Ÿ˜‚

earnest phoenix
opal plank
#

aight

earnest phoenix
spare badger
earnest phoenix
spare badger
#

Yes really hahhaa

earnest phoenix
#

he was meme king

spare badger
#

He was

quartz kindle
#

rip

tardy hornet
#

for some reason its not getting the 50

latent heron
#

I

#

This code is giving me anxiety

tardy hornet
#

lol

#

i fixed it all good

earnest phoenix
#

I wish that when a role is added it would be removed, but it would be removed for other things

const { MessageEmbed } = require('discord.js');
const message = require('./message');

module.exports = async (client, member) => {
    const low = require('lowdb')
    const FileSync = require('lowdb/adapters/FileSync')
    const adapter = new FileSync('./db.json')
    const db = low(adapter)
    const entry = await member.guild.fetchAuditLogs({type: 'guildMemberUpdate'}).then(audit => audit.entries.first())

    let guild = member.guild.id;
    if (db.get("antiroleadd").find({ guild_id: guild }).value()) {

    if (db.get("owner").find({ user_id: entry.executor.id }).value()) return;
        if (db.get("wl").find({ user_id: entry.executor.id }).value()) return;

let role = member.roles.highest
    member.roles.remove(role.id).catch(e => console.log(e.message))
    
    const embed = new MessageEmbed()
                .setDescription(`A role was added\nI removed it because the antiaddrole is activated!`)
            .setTitle(`:warning: Rรดle added`)
            .addField(`:dagger: Moderator:`,"```" + entry.executor.tag + "```")
            .addField(`:inbox_tray: Receiver:`,"```" + member.user.tag + "```")
            .addField(`:information_source: Rรดle name:`,"```" + role.name + "```")
    let wlogs = role.guild.channels.cache.find(channel => channel.name === "protect-logs")
        if(!wlogs) return
                wlogs.send(embed)
    }
}```
spare badger
#

@earnest phoenix I don't understand the explanation of what you are trying to do

earnest phoenix
spare badger
#

Okay so what is the issue with the script you just posted? Any error messages or anything?

earnest phoenix
sacred juniper
earnest phoenix
#

Hello I have a problem with ytdl when I use my play command downloader he only half a song?

async def player_loop(self):
        """Our main player loop."""
        await self.bot.wait_until_ready()

        while not self.bot.is_closed():
            self.next.clear()

            try:
                async with timeout(300):
                    source = await self.queue.get()
            except asyncio.TimeoutError:
                return self.destroy(self._guild)

            if not isinstance(source, YTDLSource):
                try:
                    source = await YTDLSource.regather_stream(source, loop=self.bot.loop)
                except Exception as e:
                    await self._channel.send(f'There was an error processing your song.\n'
                                             f'css\n[{e}]\n')
                    continue

            source.volume = self.volume
            self.current = source

            self._guild.voice_client.play(source, after=lambda _: self.bot.loop.call_soon_threadsafe(self.next.set))
            self.np = await self._channel.send(f'**Now Playing:** `{source.title}` requested by '
                                               f'`{source.requester}`')
            await self.next.wait()

            source.cleanup()
            self.current = None

            try:

                await self.np.delete()
            except discord.HTTPException:
                pass

    def destroy(self, guild):
        """Disconnect and cleanup the player."""
        return self.bot.loop.create_task(self._cog.cleanup(guild))
eternal osprey
#

hey guys: ```js
if(message.content.startsWith('+rc')){
let reputation = JSON.parse(fs.readFileSync("./reps.json", "utf8"));
let target = message.mentions.members.first() || message.guild.members.cache.get(args[0]);

if(!target){
let userInfo = reputation[message.author.id].reps;
message.channel.send(**You have: ${userInfo} reps!**)

}

if (!reputation[target.id]){
message.channel.send("This user has no reps yet!");
} else{

  let userInfo = reputation[target.id].reps;
  
    message.channel.send('**The user you pinged: **' +"<@" + target.id+ ">"+`** has: ${userInfo} reps!**`)

}
}

#

I know it is because of the startsWith, but i know no alternative.

zenith terrace
#

no response from the bot when you do @ user ?

umbral zealot
#

that should absolutely work fine though

eternal osprey
#

it does

#

but there is no response when i use +rc

#

with no user behind it

#

to check my own reps

umbral zealot
#

no I mean '+rc'.startsWith('+rc') definitely returns true though

earnest phoenix
umbral zealot
#

startsWith definitely works here

eternal osprey
#

hmm how strange

#

why isn't it working then?

zenith terrace
#

I dont see how its not responding

umbral zealot
#

so you're saying it's not running this part? ```
let userInfo = reputation[message.author.id].reps;
message.channel.send(**You have: ${userInfo} reps!**)

#

and you don't get any errors in console???

tacit sequoia
#

Do you know if it's running that code?

umbral zealot
#

impossible. Literally impossible

eternal osprey
umbral zealot
#

Like actually physically not possible for this specific code to not do something

#

So either you:

#
  • didn't save the code
#
  • didn't reboot the bot
#
  • are looking at the wrong file
#
  • are globally catching and silencing all errors
tacit sequoia
#

That doesnt make sense

earnest phoenix
#

I wish that when a role is added it would be removed, but it would be removed for other things

const { MessageEmbed } = require('discord.js');
const message = require('./message');

module.exports = async (client, member) => {
    const low = require('lowdb')
    const FileSync = require('lowdb/adapters/FileSync')
    const adapter = new FileSync('./db.json')
    const db = low(adapter)
    const entry = await member.guild.fetchAuditLogs({type: 'guildMemberUpdate'}).then(audit => audit.entries.first())

    let guild = member.guild.id;
    if (db.get("antiroleadd").find({ guild_id: guild }).value()) {

    if (db.get("owner").find({ user_id: entry.executor.id }).value()) return;
        if (db.get("wl").find({ user_id: entry.executor.id }).value()) return;

let role = member.roles.highest
    member.roles.remove(role.id).catch(e => console.log(e.message))
    
    const embed = new MessageEmbed()
                .setDescription(`A role was added\nI removed it because the antiaddrole is activated!`)
            .setTitle(`:warning: Rรดle added`)
            .addField(`:dagger: Moderator:`,"```" + entry.executor.tag + "```")
            .addField(`:inbox_tray: Receiver:`,"```" + member.user.tag + "```")
            .addField(`:information_source: Rรดle name:`,"```" + role.name + "```")
    let wlogs = role.guild.channels.cache.find(channel => channel.name === "protect-logs")
        if(!wlogs) return
                wlogs.send(embed)
    }
}```
eternal osprey
umbral zealot
#

hey nice

eternal osprey
#

eventhough i restarted it before too

umbral zealot
#

you hadn't restarted. lol

dusky sundial
#

@earnest phoenix you need to explain what your issue is too. Just posting the code won't do much

eternal osprey
#

strange, idk what happened maybe i made changes to it before that messed with it

#

anyways, thank you once again.

umbral zealot
#

@earnest phoenix guildMemberUpdate provides two members. oldMember and newMember . compare both member's roles to know if a role was added (newMember.roles.cache.size is larger than the old member's) or the contrary

tacit sequoia
#

guildMemberUpdate also includes nickname changes

umbral zealot
#

true. so if they're identical in size, roles haven't changed

umbral zealot
#

stop. please. I beg of you.

#

on my knees

tacit sequoia
#

It hurts

quartz kindle
#

nah let them do it :^)

tacit sequoia
pale vessel
worn sonnet
#

Ah! Do anyone know why it shows invalid-user?

umbral zealot
#

It hurts my soul

umbral zealot
pale vessel
#

They're already a lost cause

worn sonnet
#

I used webhook to send the message

tacit sequoia
#

Yep

pale vessel
#

Let them be

umbral zealot
#

Or, if it's not because of cache, it could be because the user isn't even in the guild

earnest phoenix
tacit sequoia
#

It will only 100% if user is in that chanbel

tacit sequoia
#

Otherwise it's hit or miss

zenith terrace
#

most times embeds on mobile dont show the actual user

umbral zealot
pale vessel
worn sonnet
#

I used webhook to send the message

tacit sequoia
#

๐Ÿฅด

umbral zealot
#

webhooks or no doesn't make any difference tbh

earnest phoenix
#

oh ok

umbral zealot
#

embed mentions in mobile have historically always crapped out

worn sonnet
#

So if it's something related to Discord cache how do I prevent it?

umbral zealot
#

you can't prevent it

#

you have to just live with it and accept your fate

worn sonnet
#

Damn! That hurts in my korokoro

umbral zealot
#

Or, don't try to mention users in embeds. Use tags, or mention them in the message content instead.

worn sonnet
#

I'll just use full name

prime glacier
#

how can we make more then 2 clients online with 1 code

worn sonnet
umbral zealot
#

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

worn sonnet
#

So I can't use get_user function

#

Like I do with bot

tacit sequoia
worn sonnet
tacit sequoia
#

<@USERID>

#

Not !

earnest phoenix
prime glacier
tacit sequoia
#

Yes?

worn sonnet
pale vessel
#

It's safer to use <@! since <@ is being deprecated

earnest phoenix
worn sonnet
#

@worn sonnet

#

Oh it works

cinder patio
#

Isn't it the other way around

tacit sequoia
#

I think so

worn sonnet
#

@worn sonnet

tacit sequoia
#

@worn sonnet

pale vessel
#

I have no clue, it's one way or another

worn sonnet
#

So two ways

pale vessel
#

discord is still inconsistent with their client

worn sonnet
#

One <@> other <@!>

cinder patio
#

I think <@! is being deprecated

worn sonnet
#

Umm... The question was..
I get the userID from Top.gg webhook
Any way to get the user without bot?

#

I use python

pale vessel
#

They use <@id> in their docs

worn sonnet
#

And lib i use to execute webhook is discord-webhooks

pale vessel
#

<@! then I guess

worn sonnet
pale vessel
#

user.tag?

worn sonnet
#

h4ck3r_x#7541

earnest phoenix
#

on_message for discord.py just stopped working, anyone else?

#

no changes or anything

worn sonnet
pale vessel
#

๐Ÿค”

worn sonnet
#

I use a webhook lib which sends it to the server

#

The only option I see RN is run the two instances of bot

pale vessel
#

you don't even need a bot running

#

you just need the bot token and fetch the user object through REST

worn sonnet
#

Yeah that's what I meant

pale vessel
#

I c

#

Then do that I guess

blissful coral
pale vessel
#

Who knows, isn't advaith the only one who updates this shit

#

it could be outdated

lost wadi
#

How do I do that if a video weighs more than 5 MB it is not sent?

earnest phoenix
#

how remove this line

pale vessel
tacit sequoia
#

When y'all think of web scraping what language do you think of?

#

Just curious

crimson vapor
#

@pale vessel

pale vessel
#

Python/Node

#

with webdrivers

crimson vapor
#

puppeteer?

pale vessel
#

Yes

pale vessel
#

and Selenium for Python iirc

opal plank
#

actually GO

pale vessel
#

GO away

opal plank
#

golang is great for microservices for scrapping

#

and pretty much shit for anything else

sudden geyser
pale vessel
#

@sudden geyser Happy birthday ๐Ÿฐ

sudden geyser
#

A bit late but ty

pale vessel
#

Was just looking at your status oof

eternal osprey
#
if(message.content.startsWith(`${config.prefix}ATC`)){
    const args = message.content.split("\n")
      .map((x) => x.split(/ +/));
    console.log(args)
    if(!args[1]){
        message.channel.send("**Please atleast input a name for your collection!**")
        return 0;  
}
if(!args[2]){
message.channel.send("**Please input one link to add to your collection!**")
return 0;  
}``` uhhm why does it keep saying please atleast input a name for your collection?
fervent goblet
eternal osprey
fervent goblet
#

y not just do if(!args[1]) return message.channel.send();

steep drum
#

You have an array of arrays

fervent goblet
#

ah

#

u split twice

umbral zealot
#

doesn't even know \n means "line return" .... MarioFP

fervent goblet
#

i know what it does

umbral zealot
#

no I mean Awsome doesn't

fervent goblet
#

oh

steep drum
#

args[0][*] is what you need to inspect

fervent goblet
#

its args[1]

eternal osprey
fervent goblet
#

wai

#

t

#

i reread

#

he is right

#

because u have 2 arrays

#

1 array inside another

#

so if you want to check for args[1] it has to be args[0][1]

eternal osprey
#

hmm alright

#

because i have an array inside of an array

#

aha i get it

steep drum
pale vessel
#

No need to replace them

wheat mesa
#

I currently have this code: ```js
FindRole = message.guild.roles.cache.find(r => r.name === args[i])

steep drum
#

If you do care to preserve information about new lines. Then you need to adjust your inspection anyways to look through the entire array, you can't just look at args[0]

pale vessel
#

You don't need to. Use r.name === foo || r.id === foo || r.toString() === foo

earnest phoenix
#

is it look good

wheat mesa
#

oh, thanks!

eternal osprey
#

use google translate

earnest phoenix
eternal osprey
earnest phoenix
eternal osprey
#

no you don't want to listen

#

use google translate

earnest phoenix
eternal osprey
#

never heard of translate.google

earnest phoenix
eternal osprey
#

what

#

what language do you speak

slender thistle
#

The text is barely visible in some places

earnest phoenix
#

hindi

slender thistle
#

I suggest adding a gray background to the description

earnest phoenix
eternal osprey
#

so you can easily choose that

earnest phoenix
#

no thx

#

why you force me

slender thistle
#

Why do you need my bot's name?

earnest phoenix
#

are you google translater owner

eternal osprey
#

then you leave your bot description full with grammatical problems

dusky sundial
#

This isn't the place to fight about language. Leave it

eternal osprey
#

idgaf. i was just giving a tip.

earnest phoenix
eternal osprey
#

read the text above

eternal osprey
#

you didn't get the message i guess

earnest phoenix
#

not say see my language mistakes

eternal osprey
#

use this please

slender thistle
earnest phoenix
#

ok

slender thistle
#

I don't even have a listed bot that would need styling

worn sonnet
#

meanwhile me waiting for approval

untold plank
#

hello guys
i want the bot give the member's role's when they authorizing the bot

near stratus
#

Or show his role ?

untold plank
#

When he authorize the bot
and added him at any server
the bot check if he do it or no
if he do it
he give him a special role

near stratus
#

And trust me That's not explainable in a chat

untold plank
#

i know

#

but how could i know who has authorized the bot ?

near stratus
#

Then find user with that

tulip ledge
#

U could add their id to a database when they authenticate and when they join your server give them the role

untold plank
#

but how could the bot now ?

#

who has authorized ?

tulip ledge
#

Know what

near stratus
untold plank
#

py

near stratus
untold plank
#

now this could help me ?

#

would*

near stratus
# untold plank now this could help me ?

Follow this

In oauth2 check the username-avatar thing.
Redirect to your domain / ip:port
When redirected
In the request
Get the token
Use the token to get name#discriminator
Give role with that
untold plank
#

okay, i'll try it

#

now should i copy all the code's and paste it into a new project ?

wheat mesa
#
            const ReactToMenu = await message.channel.send(MessageMenu)
            let ParsedReactions
            for(i = 0; i<args.length; i++) {
                ParsedReactions = message.guild.emojis.cache.find(emoji => emoji.name === Reactions[i])
                await ReactToMenu.react(ParsedReactions)
            }
``` Reactions is defined as ```js
let Reactions = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight']
``` but it keeps throwing an error `(node:15664) UnhandledPromiseRejectionWarning: TypeError [EMOJI_TYPE]: Emoji must be a string or GuildEmoji/ReactionEmoji`, anyone know why?
#

For some reason, ParsedReactions is getting logged as undefined. Are these emojis considered unusable? (1๏ธโƒฃ 2๏ธโƒฃ 3๏ธโƒฃ etc)

gritty ice
#

my bot not logging in console and discord

#

?

#

wt is the prblm

wheat mesa
#

huh

spare badger
mellow yacht
#

yall know why my bot code wont work

umbral zealot
#

What's it doing? Error?

mellow yacht
#

yeah python error crap

umbral zealot
#

well that's helpful.

#

Wanna maybe, like... be more helpful?

#

what exact error

mellow yacht
umbral zealot
#

looks like you didn't pip install discord

#

or whatever it is you do to install stuff in python

mellow yacht
#

im using visual studio tho

umbral zealot
#

ok? that's your editor, and it doesn't change the fact that to use an external module, you need to install it

mellow yacht
#

ok lemme do that r

#

rq*

#

can you show me how to lol

umbral zealot
#

I don't even know python

#

bru just read the page

mellow yacht
#

bot dev

#

you know things

umbral zealot
#

yes. I do bots. I don't do PYTHON bots.

#

and yet I still know how to read docs.

mellow yacht
#

node.js?

umbral zealot
#

it's right there on the page

mellow yacht
#

do u use node.js?

umbral zealot
#

Why does it matter right now

#

You seem to be extremely easily distracted by irrelevant things.

latent heron
#

Oh my god the ignorance

#

I'll take care of it

mellow yacht
#

i have ADHD

sage bobcat
#

One message removed from a suspended account.

latent heron
#

That's not an excuse

sage bobcat
#

One message removed from a suspended account.

latent heron
#

Don't lose your braincells over this evie

mellow yacht
#

i get distracted easily

sage bobcat
#

One message removed from a suspended account.

latent heron
#

Don't care

#

So

#

pip install discord

sage bobcat
#

One message removed from a suspended account.

latent heron
#

Run that in cmd

mellow yacht
#

ok

#

uhh confused

#

not work

latent heron
#

How

umbral zealot
latent heron
#

Okay show

mellow yacht
#

OH

#

now i get it

#

lemme do

latent heron
#

Did you?

mellow yacht
#

bruh

umbral zealot
#

how about

latent heron
#

Cmd

mellow yacht
#

i used cmd

latent heron
#

Thats powershell

mellow yacht
#

does understand it

#

oh

umbral zealot
sage bobcat
#

One message removed from a suspended account.

latent heron
#

Powershell isn't even close to cmd

mellow yacht
latent heron
#

That's like comparing a car to a bicycle because "they have wheels"

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

latent heron
#

Lol

mellow yacht
#

dude

#

doesnt work

umbral zealot
#

ok show us

sage bobcat
#

One message removed from a suspended account.

wheat mesa
#

I feel like he doesn't have python installed

mellow yacht
#

python39

umbral zealot
sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

mellow yacht
sage bobcat
#

One message removed from a suspended account.

mellow yacht
#

i use zip file

#

cuz funiness

umbral zealot
#

I'm sorry you really should start with learning the language before you attempt to write bots for the first time

sage bobcat
#

One message removed from a suspended account.

mellow yacht
umbral zealot
#

seeing as though you clearly don't know any python, you need to take the time to at least get the basics first

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

mellow yacht
#

just got the wooden spoon

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

earnest phoenix
#

"Don't bite the hand that feeds you"

mellow yacht
#

if i disrespected parents i got wooden spoon

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

umbral zealot
#

๐Ÿฅ„

mellow yacht
#

my english isnt good so sorry if bad english

umbral zealot
#

go learn python

sage bobcat
#

One message removed from a suspended account.

latent heron
#

Bruh

#

shut up
Surry English no bueno

wheat mesa
#

Anyone able to help out with this?

            const ReactToMenu = await message.channel.send(MessageMenu)
            let ParsedReactions
            for(i = 0; i<args.length; i++) {
                console.log(Reactions)
                ParsedReactions = message.guild.emojis.cache.find(emoji => emoji.name === Reactions[i])
                console.log(ParsedReactions)
            }
``` My Reactions array is defined earlier in the code as ```js
let Reactions = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight']
``` My problem is that `ParsedReactions` keeps logging as `undefined`. Am I using a deprecated method or something?
mellow yacht
latent heron
#

Stop typing

#

See how that comes off rude?

sage bobcat
#

One message removed from a suspended account.

mellow yacht
#

stop telling me what to do

wheat mesa
#

You asked for what to do?

latent heron
#

You came in here acting arrogant and told people to shut up

robust blade
#

can a discord bot be made in xcode (imac)?

sage bobcat
#

One message removed from a suspended account.

robust blade
#

oh ok. thanks faith!

sage bobcat
#

One message removed from a suspended account.

robust blade
#

ok

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.

lyric mountain
#

the only thing worse than coding on mobile is oreo with beans

earnest phoenix
#

Could anyone try making my discord bot go online so i can test whether it works or not?

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

earnest phoenix
#

dont have access to pc atm

sage bobcat
#

One message removed from a suspended account.

earnest phoenix
#

that'll be a while lmao

proven lantern
#

if i use this code to shard will it auto create shards when they are needed?

const { ShardingManager } = require('discord.js-light');
const manager = new ShardingManager('./bot.js', { token: 'your-token-goes-here' });

manager.on('shardCreate', shard => console.log(`Launched shard ${shard.id}`));
manager.spawn();```
solemn latch
#

looks like the default sharding manager code. it should make a shard for every 1000 guilds automatically yes.

wheat mesa
#

How do I find an emoji by name? ```js
message.guild.emojis.cache.find(emoji => emoji.name === 'one')

pale vessel
#

that only works for custom emojis

wheat mesa
#

oh

cinder patio
#

\1๏ธโƒฃ

lyric mountain
solemn latch
#

it might be

restive furnace
wheat mesa
cinder patio
#

Just copy paste the unicode character

#

wrong url

wheat mesa
#

alright, thanks

grave haven
#

Is there a way i can make a command that will give a random number from 1 to 100 with discord.js cus in the docs i cant find anything about making a random thing like that. Thanks

cinder patio
#

discord.js is a library for making bots - you don't need discord.js to generate a random number

cinder patio
#

Math.random() will give you a random number between 0 and 1 - multiply that by 100, round it and you have a ranom number between 1 and 100

earnest phoenix
# sage bobcat One message removed from a suspended account.

incorrect. the best way to learn a language is actually doing something productive in the said language, so he could easily take a look at the example bots and start off by playing with that and understand. i dont believe in "go to w3schools and learn what is x=y"

solemn latch
sage bobcat
earnest phoenix
#

most people start off by editing something premade

solemn latch
#

also, theres like a million things easier than a discord bot, which is also useful.

sage bobcat
#

One message removed from a suspended account.

solemn latch
#

discord bots are a great learning thing, just not one of your first like 3+ projects.

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

earnest phoenix
#

i said discord bots as example cuz at his level hes mostly doing it for fun

#

and when youre doing something actually like and want to accomplish

sage bobcat
#

One message removed from a suspended account.

earnest phoenix
#

it makes it easier to learn

sage bobcat
#

One message removed from a suspended account.

solemn latch
#

its actually harder to learn when your starting off with projects above your skill level.

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.

solemn latch
#

if you do a few projects before hand you can get a decent bot, with proper error handling and stuff in the first few hours.
not copy pasted code, or stolen code, or modifying code. but actually writing a bot.

#

there are people who did their first project as a bot here, and they have been programming bots for many months, and they still come on here and ask very basic questions sometimes because they tried to "skip" the basics.

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.

earnest phoenix
#

maybe im wrong but im speaking based off personal experience and my personal experience was with cpp

sage bobcat
#

One message removed from a suspended account.

earnest phoenix
#

its lot harder

sage bobcat
#

One message removed from a suspended account.

earnest phoenix
#

maybe ur right

#

i started python with dpy bot

#

but i knew programming in other languages before which helps a lot obv

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.

sudden geyser
#

Most people just start off with what they want to build

#

But get too tied to it and don't learn new things

solemn latch
#

speaking of learning new things. learning how to use s3 ๐Ÿ‘€

sage bobcat
#

One message removed from a suspended account.

sudden geyser
#

yeah I did too

#

for a year