#development

1 messages Β· Page 409 of 1

earnest phoenix
#

@hot sleet wat?

hot sleet
#

trying to use dblposter

earnest phoenix
#

@craggy summit ^^

craggy summit
#

Hello

#

@hot sleet I recommend updating the module and reading the readme over at the npm page

hot sleet
#

i just installed it

craggy summit
#

The readme should help you out :D

hot sleet
#

npm url ??

craggy summit
#

Let me know if you have any other issues too, I'll help you out

hot sleet
#

should i change client ??

#

i call my bot client

craggy summit
#

Them add it in the constructor

#

So new dbl("key", client)

hot sleet
#

kk

tulip steeple
#

How do I make a discord warn command with, discord.py

earnest phoenix
#

anyone know which of the common acii symbols are allowed in discord names?

#

like is there a list somewhere

mental solstice
#

Any.. i believe as long as its a legitmate character

lament meteor
#

what u mean Favna?

earnest phoenix
#

which symbols are allowed like these: !#$%^&**(
I'm generating a bitmap font for my welcome messages so I need to know which to include

#

actually apparently the most common all fit into 1 page so i think I'm good. I found a function to swap all diacritics (the characters like Γ©) with their normal counterparts so I dont need to include those which saves a lot of space.

tulip steeple
#
async def emoji_list():
    await client.say()
    client.get_all_emojis()```
#

Why wont it show the server emojis?

#

I actually updated it

#
async def emoji_list():
    await client.get_all_emojis()```
#

How Do I make It View All Server Emoiji's

solid cliff
#
for emoji in bot.emojis:
    do_stuff_with(emoji)```
tulip steeple
#

kk

#

Where do I put it? @solid cliff

solid cliff
#

what do you want to do πŸ‘€

tulip steeple
#

Make the bot get all the emoji's a server has

solid cliff
#

all emotes in the server right πŸ‘€

tulip steeple
#

yupyup

solid cliff
#

just put it in your command def and get emojis from ctx.message.server.emojis for async i assum πŸ‘€

tulip steeple
#

ok

#
async def emoji_list(for emoji in bot.emojis:
    do_stuff_with(emoji)):
    await client.get_all_emojis()```
#

Like that?

solid cliff
tulip steeple
#

:notLikeMiya:a

#

How?

solid cliff
#

do_stuff_with(emoji)): isnt a thing and why for emoji in bot.emojis: in def πŸ‘€

#

you need a pass_context=True and a ctx

tulip steeple
#

its giving an error

#
async def emoji_list(ctx, for emoji in bot.emojis:):
    await client.get_all_emojis()```
solid cliff
#

remove for emoji in bot.emojis: notLikeMiya

#

await client.get_all_emojis() is also getting every emote from the bot

#
async def emoji(ctx):
    all_emojis = [] # Make a list.
    for emoji in ctx.message.guild.emojis: # For all emojis in the server where the message was sent.
        all_emojis.append(emoji) # Add to the list you made the emoji
    send_message_thingy_here("".join(all_emojis)) # Join it all togeather /shrug ithink forgotlol``` :^)
tulip steeple
#

done

#

ty'

#

It gives me an error

#

'Message' object has no attribute 'guild'

#

@solid cliff

solid cliff
#

then change it to server AngeryBOYE

#

:^)

tulip steeple
#

Ok

#

U da best

solid cliff
#

nou

tulip steeple
#

no u

#

I have an error

#

sequence item 0: expected str instance, Emoji found

#

@solid cliff

solid cliff
tulip steeple
#

::DD How do I fix it?

#

?

solid cliff
#

turn it into a string on append /shrug

low rivet
#

if u dont know that i suggest

tulip steeple
#

I should turn append into string?

#

How should I put it? @ @solid cliff

solid cliff
#

notLikeMiya str(emoji)

tulip steeple
#

What do you mean

solid cliff
#

str(emoji) in the append

tulip steeple
#

I turn all_emojis into str(emoji)

solid cliff
#

wat

#

all_emojis.append(str(emoji))

tulip steeple
#

k

#

Ok it works but

#

@solid cliff its kinda not showing the emoji's because they is no spaces between the emoji

#

so its kinda just

#

blobping:BLOB:BLOB

solid cliff
#

then "" => " "

#

:^)

tulip steeple
#

Where to put it???

solid cliff
#

" ".join() BAKA

tulip steeple
#

WHy arent the emojis showing?? @solid cliff

#

;)))

solid cliff
tulip steeple
#

Im a bening er

#

How do I create a Make channel command in py?

lament meteor
#

how do u you center everything using css?

versed cypress
#

Ok so there is a bot called the Rosalina Bot used for sharing friend codes but when I type in the command for another person it says invalid. Even though both of our codes are sent to private

#

I mean public

#

Not private

sand roost
versed cypress
#

Oof I was just told to go here

weak parrot
#

What they where trying to tell you is if it's a bot you're developing and need help go to this channel if it's about a bot you're trying to use ask in #general or go to the support server

sand roost
#

^

lament meteor
#

thats meh message

versed cypress
#

Oh ok

hushed oyster
#

embed was never defined

lament meteor
#

.setTitle() sets to nothing

#

^

sand roost
#

we dont spoodfeed

hushed oyster
#

also i believe 0xFF0909 shouldn't be a string

lament meteor
#

^

#

how do u center everything like <center> but with cssβ„’?

sand roost
#

@earnest phoenix tou need to define the embed with Discord.Embed

hushed oyster
#

@lament meteor text-align: center works

sand roost
#

@lament meteor dm me

heady zinc
#

text-align center texts tho

lament meteor
#

@hushed oyster but it only aligns text

hushed oyster
#

no

lament meteor
#

not everything

hushed oyster
#

pretty much everything

sand roost
#

@earnest phoenix we will probably not spoonfeed

hushed oyster
#

not just text

heady zinc
#

not pretty much everything

lament meteor
#

@hushed oyster i tried didnt work

sand roost
#

telk

#

i can dm

hushed oyster
#

ok well it works for me

#

Β―_(ツ)_/Β―

lament meteor
#

ok

heady zinc
#

it works for some other things than text

#

but doesn't actually works for everything

lavish mango
#

Didn't define embed or have a closing bracket for the if statement

hushed oyster
#

We aren't going to fix it for you

heady zinc
#

because we all have better things to do

hushed oyster
#
ˈspo͞onˌfΔ“d/
verb
verb: spoonfeed

 provide (someone) with so much help or information that they do not need to think for themselves.```
sand roost
#

@earnest phoenix need to define the embed with Discord.RichEmbed

solid cliff
#

how 2 get commands from cog :^)

tulip kraken
#

euhm

#
let prem = require(`../premium/${msg.guild.id}.json`).catch(err => {
    if(err) {
   let premium = new Discord.RichEmbed()
   .setColor('#FFD700')
   .setThumbnail(client.user.avatarURL)
   .setAuthor('Premium perks',client.user.avatarURL)
   .setDescription('Mustang Premium users get these perks:\n'+
    '**Cooldowns** - Premium users wont have any cooldowns!\n'+
    '**Webpanel** - Premium users get a Webpanel(Coming soon)!\n\n'+
    'Donate on [Patreon.com](https://www.patreon.com/user?u=11124683) or on [Paypal.com](https://paypal.me/burningnexus)\n'+
    'To get premium donate atleast 10 dollars\n'+
    'Mustang premium lasts a lifetime!\n')
   .setFooter('Mustang | Premium perks!',client.user.avatarURL)
   msg.channel.send(premium)```
#

This

#

isnt preventing

#
(node:12124) UnhandledPromiseRejectionWarning: Error: Cannot find module '../premium/410347404043485184.json'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:548:15)
    at Function.Module._load (internal/modules/cjs/loader.js:475:25)
    at Module.require (internal/modules/cjs/loader.js:598:17)
    at require (internal/modules/cjs/helpers.js:11:18)
    at Object.module.exports.run (C:\Users\jeffrey\Desktop\mustang\commands\premium.js:4:16)
    at Client.client.on (C:\Users\jeffrey\Desktop\mustang\index.js:234:24)
    at Client.emit (events.js:185:15)
    at MessageCreateHandler.handle (C:\Users\jeffrey\Desktop\mustang\node_modules\discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34)
    at WebSocketPacketManager.handle (C:\Users\jeffrey\Desktop\mustang\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:103:65)
    at WebSocketConnection.onPacket (C:\Users\jeffrey\Desktop\mustang\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:333:35)```
#

How can i fix that

#

i dont want to make modules for every guild

low rivet
#

@solid cliff [i for i in bot.commands if i.cog_name == 'NSFW'] thonkku

solid cliff
#

πŸ‘€

#

wew

#

ty spoonfeed

heady zinc
#

okay so

#

.catch() can't be used on synchronous functions

#

this is exclusive to promise-returning functions

#

you have to use try catch

uncut slate
#

I would advise against using JSON files as a database in the first place

heady zinc
#

that's another issue ZoomEyes

tulip kraken
#

meh

#

json works fine for now

toxic oracle
#

You'll enjoy the corruption I assure you

earnest phoenix
#

JSON isnt bad, make sure to use something like fs-nextra that offers atomic methods for fs, as when you atomically write you're less prone to corruption

heady zinc
#

i mean

#

just don't

earnest phoenix
#

its not bad

heady zinc
#

i didn't say it's bad

#

it's just doing unneccesary more work

earnest phoenix
#

not really

toxic oracle
#

It's nowhere near the best tho

heady zinc
#

if you want to use JSON you have to make a wrapper around it

#

to handle stuff

#

while actual DBs already wraps that

earnest phoenix
#

isnt that with any db?

#

like you still have to use db modules

#

at least json is native

heady zinc
#

that's ignorable

toxic oracle
#

Meh

#

Json is nice for some things not for others

#

That's my stance

heady zinc
#

the very point of modules is that you don't have to do the work yourself

earnest phoenix
#

I know someone using json for a bot in 3K guilds and 139K users, he stores one file for each guild and user

#

so

toxic oracle
#

Who

earnest phoenix
#

Kashall was not sure if he still is

toxic oracle
#

Ah

earnest phoenix
#

2.8K guilds or smth

#

Why just not use a db. Its way easier

heady zinc
#

that's my point but kek

#

JSON does the job up to a certain point that's true

#

but it doesn't actually scale

#

whereas most DBs do

earnest phoenix
#

Use mongodb. Its basically json

toxic oracle
#

Or rethink

fresh cedar
#

or just sqlite?

earnest phoenix
#

.csv files

#

.txt files

#

pdf database

fresh cedar
#

Amazing

earnest phoenix
#

anyone know about encryption

#

I'm having trouble understanding something

elder rapids
#

It creates a random string of letters that a key can be used to unscramble it

#

πŸ‘Œ

earnest phoenix
#

I want my application's data to be encrypted once it's transferred to another client (local network) right?

#

lets say public key encryption

elder rapids
#

So GPG encryptions

earnest phoenix
#

I must provide the other client the secret

#

however

#

if I provide the secret

#

it wont be encrypted

#

so what can I do to solve that

elder rapids
#

Do you know how GPG encryption works? or the back and forth usage

low owl
#

Public and private key

elder rapids
#

If not I'd recommend looking up how that works

earnest phoenix
#

Yea but I must give my other client a private key right

vital garden
#

please add the egg bot

elder rapids
#

No

earnest phoenix
#

oh

#

I'm talking about encrypting data tho

elder rapids
#

GPG encryption works by signing a message with the "receivers" public key

earnest phoenix
#

transferred over a network

elder rapids
#

The receiver decrypts it with their secret

earnest phoenix
#

interesting

#

Imma look it up

elder rapids
#

If you want to secure the connection better I'd recommend doing a SSL/TLS style handshake system

#

But you could do other stuff

earnest phoenix
#

I'm going to have to research about that

#

yea Im going for ssl

#

ssl works client-to-client right

#

doesn't have to necesarrly be a server?

elder rapids
#

SSL/TLS is just encryption on a socket

earnest phoenix
#

i see

elder rapids
#

Doesn't really matter who's on each end (you know what I mean by this)

#

(it actually does care who's on each end)

earnest phoenix
#

ok yea that's what I need

#

will the data transferred be encrypted tho?

elder rapids
#

Do you know HTTPS

#

that's what you're doing

earnest phoenix
#

to avoid people capturing packets

#

I mean when it's transferred its encrypted?

inner jewel
#

yes

earnest phoenix
#

ok

elder rapids
#

That's kind of how it works

#

SSL/TLS performs a handshake and then traffic becomes encrypted

inner jewel
#

https = tls + http

elder rapids
#

Of course if you're encrypting traffic I'd make sure to use valid certificates

earnest phoenix
#

It's offline thjo

#

over a local network

elder rapids
#

Still needs a certificate

#

Self-signed works but they aren't secure (entirely)

earnest phoenix
#

what if the data I'm trasnferring is from my application to another instance of my application

elder rapids
#

It's recommend to use valid certificates signed by a well-known CA which you can trust and then have each client/server check and accept that

inner jewel
#

you can still encrypt

elder rapids
#

Your encryption is fundamentally non-existent if you don't check and validate certificates

earnest phoenix
#

.

#

I don't think I would be able to use that, since the certificate needs to be checked (my app is completely offline)

elder rapids
#

You still need to

#

It doesn't matter if it's online or offline

earnest phoenix
#

then how would I verify the integrity of the certificate

#

it needs to be verified by its issuing server

elder rapids
#

verification is done offline (iirc)

#

Your computer has a list of CA's it trusts and their signatures and such

#

Which you can of course make your own CA and have your computer trust that

earnest phoenix
#

I'm sending a POST request to https://discordbots.org/api/435122825632940032/stats with the proper authentication and body however I'm getting a 404

topaz fjord
#

404 means not found

floral stone
#

^

earnest phoenix
#

I know

topaz fjord
#

Also it's /API/bots

earnest phoenix
#

Might want to update your API reference then πŸ˜›

topaz fjord
#

/api/bots/id

earnest phoenix
#

oh im blind

#

nvm

#

haha

floral stone
#

Anyone got a good snippet I can use to embed my bot's website on the bot page

earnest phoenix
#

Anyone know a script of code what can be used to logout of discord oauth2?

floral stone
#

Using flasdk?

#

@earnest phoenix

#
def logout():
    del session['oauth2_token']
    return redirect(url_for('.home'))
earnest phoenix
#

I’m using php for it

#

what would be the API to check if a user is in a guild thonk

keen abyss
#

I mean self-signed certificates would work for that task if you create your own root certificate and import that or just use letsencrypt as it's free.

floral stone
#

@earnest phoenix delete the session

earnest phoenix
#

What’s the best way to do that?

floral stone
#

I'm not sure

earnest phoenix
#

session_destroy();

#

Okay πŸ‘ŒπŸ»

spring ember
#

umm anyone knows how to configure ffmpeg with c# in visual studio?

spring mesa
#
The script uses approximately 48.98 MB```
#

is this... ok?

knotty steeple
#

wat

inner jewel
#

48.98 MB of what

spring ember
#

if ram then yes if memory then it's bloated

frigid juniper
#

In discord.py how the move_member function works ? I've tryed with member object and channel object but it doesn't work

#

Without error

spring ember
#

maybe you forgot to await?

frigid juniper
#

no

#

await client.move_member(member, channel)

spring ember
#

pls send full code in hastebin or other paste service

frigid juniper
#

And member is a loop

#

Ok

spring ember
#

it's really hard to help like that

frigid juniper
#

I'm just translating wait

#

yep

spring ember
#

it's ok you don't need to translate the strings πŸ˜ƒ

frigid juniper
#

Already done πŸ˜‰

#

You want try ?

#

I've a dev server

#

And made many tries

spring ember
#

client.move_members is not a function

#

it is a permission

frigid juniper
#

Not members , member

spring ember
#

are you using rewrite?

frigid juniper
#

No i don't think so

spring ember
#

what does it output?

frigid juniper
#

Nothing

#

But don't work

spring ember
#

so there are no members

#

since it is supposed to print the members

frigid juniper
#

There is

spring ember
#

the problem is not with move_member, but with the code, try to debug where it doesn't work

#

it never reaches the move_member

frigid juniper
#

Idk

#

It prints my nickname but dont move me

#

just the line before

spring ember
#

so it does output

#

please send it

frigid juniper
#

yep

#

it prints the line but I think it keeps blocked on await move

spring ember
#

and no errors?

#

try to try & catch

#

maybe it is a sneaky one

frigid juniper
#

nope I didnt keep it running for 1 min...

#

I'll keep in mind thanks anyway

spring ember
#

ok type here if you found something maybe I can help

knotty steeple
#

for music on my discord bot, node-opus or opusscript?

trim plinth
#

@knotty steeple node-opus

topaz fjord
#

lavalink

trim plinth
#

he wasn't asking about lavaloink u weeb

topaz fjord
#

but its music u weeb

earnest phoenix
earnest phoenix
#

Jesus how'd you get it to do that?

#

It looks awesome

topaz fjord
#

depends on the lang

shy verge
#

image generation doge

tulip kraken
#

How would i make it so if for example i do !HELP itll still recognise my command even tho its capitalized

#

i tried .toLowerCase()

#

but didnt work

trim plinth
#

@tulip kraken don't do anything with it then

tulip kraken
#

wdyM?

#

Why is everybody so early on discords bday

#

discords bday is on the 13th of may

#

u guys r 5 days early

knotty steeple
#

actually i was 7 days early

tulip kraken
#

lol

earnest phoenix
#

fastest way to learn LUA?

knotty steeple
#

how do i check if my bot has a certain permission

#

discord.js

night imp
#

haspermission

#

let me get the code sniperino

#

message.guild.member(client.user).hasPermission("ADMINISTRATOR")

knotty steeple
#

ok

earnest phoenix
#

does anyone know how to get the number of users your bot has?

trim plinth
#

@earnest phoenix what lib are you using?

earnest phoenix
#

rewrite

#

@trim plinth

halcyon torrent
#

idk how it's in python, but in many languages there is a client.users array so you can get how many users your bot has from getting the length of this array, look for something like that and you should find easily

earnest phoenix
#

How do I get it so that when my bot joins a server it auto creates a role?

shy verge
#

delete system32

earnest phoenix
#

?

low wasp
#

google can help you

earnest phoenix
#

Ok

halcyon torrent
#

when you ask something, remember that we all dont use the same language, nor the same API, so if you want an accurate answer, dont forget to say which lib you're using x)

glossy mason
#

The one your bot receives, but no one else?

halcyon torrent
#

oh, if it's this role you're talking about, you just need to specify permission in the invite link

earnest phoenix
#

Where do I add this in the ur;?

#

url*

earnest phoenix
#

thx

tulip snow
marble dock
#

Could anyone link me to some good learning scources for discord.js?

night imp
#

Some good places to start are youtube videos, the docs, and the discord server

#

Also it is recommended to learn javascript before using d.js

marble dock
#

I know Javascript.

#

Thanks.

#

:D

shy verge
sweet crane
#

.help

#

.dmhelp

#

ahelp

#

bhelp

#

?help

#

,help

#

hell

#

help

#

<help

earnest phoenix
shy verge
dusty shuttle
#

is vps and vds is same?

topaz fjord
#

Vds?

dusty shuttle
#

i heard it can host bots

quasi marsh
#

VPS = Virtual Private Server

#

It's just a Linux computer that someone else has that you have access to

#

Well a virtual one at that

#

So you have a small bit of a computer that someone else has

dusty shuttle
#

ohh

quasi marsh
#

You can rent them from sites like Vultr, Digital Ocean, Scaleway, VPSDime and many more

#

Cheapest start at around 2$/month

#

They are fine for basic, non-music bots

dusty shuttle
#

okay

quasi marsh
#

But I've never heard of a VDS

dusty shuttle
#

is there anything which can host free

quasi marsh
#

Glitch for Javascript

#

Heroku for JS and more

#

But, I wouldn't recommend it

dusty shuttle
#

why?

quasi marsh
#

They are not intended for bots

#

I don't use them but you are 1. Limited in uptime and they may close your stuff if they need resources for paying customers

#

Also I think you need to do some things to keep them online

dusty shuttle
#

yeah i used heroku

#

my bot goes offline in less than 10 mins

knotty steeple
#

u need to do some self pinging

#

like on glitch

toxic oracle
#

JS and JavaScript are different yes yes

mental solstice
#

No?

fluid basin
#

Lol

#

Does vds mean virtual dedi?

#

Wait that doesn't make sense

solid cliff
#

What how notLikeMiyaButFast

#

Why

solemn obsidian
#

vds = dedicated resources

#

vps = shared resources

fluid basin
#

O

dusty shuttle
#

is glitch good for hosting bot?

night imp
#

for a beginner yeah

#

for a bigger bot no

dusty shuttle
#

ohhh

trim plinth
#

not good

#

just get a VPS

dusty shuttle
#

it cost money dude

trim plinth
#

yes

ruby dust
#

it's pretty much like hosting on heroku, which is even worse btw

dusty shuttle
#

its worst

ruby dust
#

use skysilk

trim plinth
#

or buy your own VPS

dusty shuttle
#

is it good for big bot?

trim plinth
#

yes

ruby dust
#

they are currently in beta testing with 100% discount, and will have a free plan after closing beta

trim plinth
#

VPSes are good for bigger bots

dusty shuttle
#

if someone pays for me i will buy vps

trim plinth
#

no

dusty shuttle
#

xD

trim plinth
#

I doubt anybody is going to buy you a VPS bloblul

dusty shuttle
#

trueee

#

maybe someone can share vps with me

fluid basin
#

OwO skysilk

dusty shuttle
fluid basin
#

Yeah its free beta

#

Idk when will it end lol

ruby dust
#

last time suggesting, use skysilk's free plan for now, it should be enough to host a bot for up to 1k servers unless it's a heavy bot

#

actually idk how many servers, it's 500MB something RAM iirc

fluid basin
#

Honestly I guess getting a vps is not that bad except money

trim plinth
#

getting your own VPS allows more control GWnanamiLaceShrug

fluid basin
#

definitely this

toxic oracle
#

And you'll prolly have more shit to host than just a bot anyway

#

So in long term it's worth

trim plinth
#

^

pseudo inlet
#

anyone here know python

fluid basin
#

Also, I would say that sharing a vps without giving others any benefits won't do as well

#

wuts python? Thonk

toxic oracle
#

lol?

fluid basin
#

XD

trim plinth
#

python = slow language and big meme

ruby dust
#

a lot of people know python here

fluid basin
#

@trim plinth ikr

pseudo inlet
#

i need big hlep

ruby dust
#

hlep it is then

pseudo inlet
#

not really related to discord bots tho

#

just python

fluid basin
#

...

#

Its ok

pseudo inlet
#

THE PYTHON SERVER IS DEAD NO ONE IS HELPFUL THERE

fluid basin
#

But state what you need

ruby dust
#

agree

pseudo inlet
#

i got a map generator

dusty shuttle
#

@trim plinth how much for vps?

fluid basin
#

python is ded haters no hate

pseudo inlet
#

and i want the water (~) to write in chunks

#

and thats fine i got that down

dusty shuttle
ruby dust
#

@dusty shuttle skysilk is free in beta testing, and even after it will have a free plan

#

you just need a credit card still

fluid basin
#

Yup

dusty shuttle
#

ohh

pseudo inlet
#

but after the water loop is done the rest of the function ignores it and keeps going

trim plinth
#

@dusty shuttle if you want reasonable prices, go for galaxy gate or bakery hosting, or go for skysilk

pseudo inlet
#

idk how to get it to not

trim plinth
#

DO is also nice

ruby dust
#

credit card is needed to verify your identity, but that's it

pseudo inlet
#

im πŸ…±retty beginner

fluid basin
#

I would say DO is nice

#

Not too bad for its price

solid cliff
#

Python not slow angeryBOYE

pseudo inlet
#

^^^^^^^

trim plinth
#

you can get like $50 in credits for DO from Github's Education Pack (or whatever it's called)

fluid basin
trim plinth
#

@solid cliff it compiles slowly

solid cliff
#

Wat compile notLikeMiyaButFast

trim plinth
#

needs to hurry up and not take it's sweet time :^)

fluid basin
#

Wait DO you'll still need a credit card right

trim plinth
#

yes

fluid basin
pseudo inlet
#

CAN DSOMEONE HELP ME

fluid basin
#

Lol.

#

At least give us something that we could help you with

#

Like code or smth

#

The main idea hardly helps

trim plinth
#

@fluid basin I don't think you need a credit card if you're using redeemed credits, otherwise you'll need it

fluid basin
#

Well idk

pseudo inlet
#
def newworld(xAxis, yAxis, nOutputFileName):
    # VARIABLES (dimensions, filename, basic stuff)
    outputFileName = (nOutputFileName) # Name of file

    MaxTerrainX = xAxis    # Width
    MaxTerrainY = yAxis # Height
    # VARIABLES

    # GENERATOR
    RepeatX = 0
    RepeatY = 0
    chunkCache = open(outputFileName + '.map', 'w')
    chunkCache = open(outputFileName + '.map', 'r+')
    while RepeatY != MaxTerrainY:
        while RepeatX != MaxTerrainX:
            ChunkTypeChance = randint(0,40)
            if ChunkTypeChance <= 37:
                chunkCache.write('//')
            elif ChunkTypeChance == 38:
                chunkCache.write('^^')
            elif ChunkTypeChance == 39:
                chunkCache.write("^^")
            elif ChunkTypeChance == 40:
                chunkCache.write('~~')
                YpoolLayers = randint(1, 3)
                XpoolLayers = randint(1, 3)
                repeatPoolY = 0
                repeatPoolX = 0
                
                while repeatPoolY != YpoolLayers:
                    while repeatPoolX != XpoolLayers:
                        if RepeatX + repeatPoolX <= MaxTerrainX - 1:
                            chunkCache.write('~~')
                            repeatPoolX = repeatPoolX + 1
                        else:
                            repeatPoolX = XpoolLayers
                    if RepeatY + repeatPoolY >= MaxTerrainY - 1:
                        repeatPoolY = YpoolLayers
                    else:
                        XpoolLayers = randint(1, 3)
                        repeatPoolX = 0
                        repeatPoolY = repeatPoolY + 1
                        RepeatY = RepeatY + 1
                        RepeatX = MaxTerrainX
            RepeatX = RepeatX + 1
        chunkCache.write('\n')
        RepeatX = 0
        RepeatY = RepeatY + 1
    chunkCache.close()
    # GENERATOR
trim plinth
dusty shuttle
#

should i get my bot here?

trim plinth
#

if you want

dusty shuttle
#

how?

#

gimme that link

fluid basin
#

Wait why is the code after chance==40 in there

pseudo inlet
#

random chance for hill grass or water

#

water is 1/40 chance

ruby dust
fluid basin
trim plinth
pseudo inlet
ruby dust
#

Thonk <- I have your avatar

pseudo inlet
#

so do i

#

also py > js

fluid basin
#

Honestly I would say if there is any reason you can't really get an vps you should just make your bot, run it in glitch/heroku and if it goes well and servers increase, be prepared to migrate and change to an actual vps. @dusty shuttle

ruby dust
#

or ask a friend to share a vps

fluid basin
#

Well yeah if theres anyone willing to share

trim plinth
#

also glitch will restart your bot if it's up for more than 10 hours GWqlabsFeelsLULMan

pseudo inlet
#

WELL i gotta yeet to school

solid cliff
#

Travis bot hosting :^)

fluid basin
#

Best would be if you have an irl friend who has a vps and you can share the cost by paying them directly

keen abyss
#

Could also host at home and just pay for electricity + internet.

#

And the hardware ofc.

solid cliff
#

Rpi

fluid basin
#

Also true, but when it grows it'll burden your home network

keen abyss
#

Get 1 Gbps.

fluid basin
trim plinth
#

and your electricity bill will increase a lot

keen abyss
#

I pay around 40 euro for 1 Gbps atm 🀣

#

Depends on what you buy.

fluid basin
#

owo

keen abyss
#

If you buy old enterprise hardware with non-efficient stuff yes, but if you buy new stuff it won't raise it that much.

fluid basin
#

Btw rpis aint good for music bots

keen abyss
#

Ya don't use rpi for music 🀣

#

They prob work for one server (?)

#

Never tried music bot on a raspberry

earnest phoenix
#

Anyone knows how i can print bot invite link in console when i launch node bot.js
It's using discord.js

gilded thunder
#

How can I get uptime with discord.py Async. Preferably with aiohttp or datetime.

tulip kraken
#

Should i use mongoDB or mariaDB ?

gilded thunder
#

Mongo is said to be faster.

#

But I don't use databases so I don't know firsthand.

tulip kraken
#

alrighty

#

was leaning towards mongoDB anyway

#

so thatll be my choice

lament meteor
earnest phoenix
#

hm i see, thank you!

lament meteor
#

uh...

#

change the perms at the end with the perm number

earnest phoenix
#

oh shit

#

didn't see that lol

#

there, changed it now

#

thank you

earnest phoenix
#

So, I have an API key for idoitic api

#

How can i store text channel & voice channel count in discord.js?
I'm trying with message.guild.channelCount

halcyon torrent
#

try channels.size

#

instead of channelCount

earnest phoenix
#

so like that?

halcyon torrent
#

if you have an eval command, you should try those things with it ^^

earnest phoenix
#

Aye it worked

#

hm

#

i need to make one, idk how tho

#

this is my first discord bot i'm coding from scratch

halcyon torrent
#

oh

earnest phoenix
#

it has some progress though

halcyon torrent
#

dont even know scratch x)

earnest phoenix
#

i mean from start xd

#

blank file

halcyon torrent
#

AH, lol

#

you should install the node module util for doing evals

earnest phoenix
#

done

#

now i just need to know how to make eval evaluate commands

halcyon torrent
#

util can stringify objects so you can get the result of your eval

#

eval is a thing

#

natively with js x)

earnest phoenix
#

oh so how do i implement it to the bot as a command?

#

gonna secure it first with a owner id in the config

halcyon torrent
#

yeah you should x)

earnest phoenix
#
  const args = message.content.split(" ").slice(1);

  if (message.content.startsWith(config.prefix + "eval")) {
    if(message.author.id !== config.ownerID) return;
    try {
      const code = args.join(" ");
      let evaled = eval(code);

      if (typeof evaled !== "string")
        evaled = require("util").inspect(evaled);

      message.channel.send(clean(evaled), {code:"xl"});
    } catch (err) {
      message.channel.send(`\`ERROR\` \`\`\`xl\n${clean(err)}\n\`\`\``);
    }
  }
});```
halcyon torrent
#

process.exit() blobrollingeyes

earnest phoenix
#

So like that?

halcyon torrent
#

yey

earnest phoenix
#

@halcyon torrent it's not doing anything tho

halcyon torrent
#

any message in the console?

earnest phoenix
halcyon torrent
#

so, remove clean x)

earnest phoenix
#

oh ok

halcyon torrent
#

remove clean in both cases lol

#

is it working?

earnest phoenix
#

still nope

halcyon torrent
#

what does the console say? x)

earnest phoenix
#
    const args = message.content.split(" ").slice(1);
  
    if (message.content.startsWith(config.prefix + "eval")) {
      if(message.author.id !== config.ownerID) return;
      try {
        const code = args.join(" ");
        let evaled = eval(code);
  
        if (typeof evaled !== "string")
          evaled = require("util").inspect(evaled);
  
        message.channel.send(clean(evaled), {code:"xl"});
      } catch (err) {
        message.channel.send(`ERROR`);
      }
    }
  });```
#

that's the code now

#

Console said nothing

halcyon torrent
#

add console.log(err) in the catch statement

earnest phoenix
#

now it's not showing anything in either chat or console

#

unresponsive

halcyon torrent
#

wth

earnest phoenix
#

forgot brackets

halcyon torrent
#

ah

earnest phoenix
#

uhm ok so now the console error is this

#
    at Client.client.on.message (/home/testbot/app.js:164:30)
    at Client.emit (events.js:187:15)
    at MessageCreateHandler.handle (/home/testbot/node_modules/discord.js/src/client/websocket/packets/handlers/MessageCreate.js:9:34)
    at WebSocketPacketManager.handle (/home/testbot/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:103:65)
    at WebSocketConnection.onPacket (/home/testbot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
    at WebSocketConnection.onMessage (/home/testbot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
    at WebSocket.onMessage (/home/testbot/node_modules/ws/lib/event-target.js:120:16)
    at WebSocket.emit (events.js:182:13)
    at Receiver._receiver.onmessage (/home/testbot/node_modules/ws/lib/websocket.js:137:47)
    at Receiver.dataMessage (/home/testbot/node_modules/ws/lib/receiver.js:409:14)```
#

When i evaled 3*3

halcyon torrent
#

AH you didnt removed all clean functions x)

#
message.channel.send(clean(evaled), {code:"xl"})``` there
earnest phoenix
#

Do i remove the "send" part?

halcyon torrent
#

no

#

it has to become js message.channel.send(evaled, {code:"xl"})

earnest phoenix
#

oh ok

halcyon torrent
#

why did you think clean was a function? did you use it anywhere else?

earnest phoenix
#

after changing the line it's unresponsive again

halcyon torrent
#

:d

earnest phoenix
#
    const args = message.content.split(" ").slice(1);
  
    if (message.content.startsWith(config.prefix + "eval")) {
      if(message.author.id !== config.ownerID) return;
      try {
        const code = args.join(" ");
        let evaled = eval(code);
  
        if (typeof evaled !== "string")
          evaled = require("util").inspect(evaled);
  
          message.channel.send(evaled, {code:"xl"})
      } catch (err) {
        console.log(err);
        message.channel.send(`ERROR`);
      }
    }
  });```
#

i'm pretty noob at js

#
PS C:\Users\home\Desktop\Discord bot (attempt)> npm install quick.db -s

C:\Users\home\Desktop\node_modules\integer>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
PS C:\Users\home\Desktop\Discord bot (attempt)> node discordbot.js
internal/modules/cjs/loader.js:550
    throw err;
    ^

Error: Cannot find module 'quick.db'
    at Function.Module._resolveFilenam
``` How can I get it to find the quick.db?
#

try just npm i quick.db

#

I did

#

wait

#

does i and install change anything or?

#

without the -s

#

nvm

#

i'm retarded

#

and tired

#

Ok

#

Any idea on my eval command? @halcyon torrent

halcyon torrent
#

what is {code: 'xl'} tbh?

#

I dont use discord.js so idk how it works x)

#

also nothing in the console?

earnest phoenix
#

nope

halcyon torrent
#

and regarding {code: 'xl'} ?

earnest phoenix
#

what are some good commands for bots?

elder rapids
#

Ones that probably every other bot already does

halcyon torrent
#

ping pepo

#

@earnest phoenix ```js
client.on("message", message => {
const args = message.content.split(" ").slice(1);

if (message.content.startsWith(config.prefix + "eval")) {
    if(message.author.id !== config.ownerID) return;
      try {
        const code = args.join(" ");
        let evaled = eval(code);

        if (typeof evaled !== "string")
        evaled = require("util").inspect(evaled);

        message.reply(evaled, {code:"js"})
    } catch (err) {
        console.log(err);
        message.reply('ERROR');
    }
}

})``` run this

elder rapids
#

Did you just spoonfeed zoomeyes

halcyon torrent
#

I'm helping debugging the code

elder rapids
#

Giving code entirely like that is more of a spoonfeed but 🀷

halcyon torrent
#

read above

#

I used the code they gave

low owl
#

If you fixed anything for them or it is now working then you spoonfed πŸ‘€

earnest phoenix
#

It's ok

#

i solved it anyways

#

without that code, but thanks alot for the help @halcyon torrent !

halcyon torrent
#

^^

earnest phoenix
#
    var server = servers[message.guild.id];
    server.queue.push(args[1]);
    if (!message.guild.voiceConnection) message.member.voiceChannel.join().then(function(connection){
        play(connection, message);
    })
``` Why doesn't it join the voice channel?
halcyon torrent
#

first line

earnest phoenix
#

?

#

oh

#

its server

halcyon torrent
#

^^

earnest phoenix
#

nope

#

still nothing

halcyon torrent
#

is there an error message?

earnest phoenix
#

no

slow elk
#

Did you make a play() function? I mostly see music bots who need a play() function specified

halcyon torrent
#

what is the type of message.guild.voiceConnection ? thenk

halcyon abyss
#

VoiceConnection

halcyon torrent
#

is it null when the bot isnt in a voiceChannel?

earnest phoenix
#

ues I did

#

Ok

halcyon abyss
#

I suppose so, it can be undefined

earnest phoenix
#

How do I get my bot to pm a user?

#
message.member.send
``` right?
#

well

#

send is undifined in this case a pperently

#

apparently* undefined

fresh cedar
#

try message.author

#

.send()

earnest phoenix
#

no

#

its message.member.send

#

I wrote message.memeber.send in my code rip

fresh cedar
#

lol

earnest phoenix
#

ye

#

but it works now

#

thx

halcyon torrent
#

memeber HYPERMEGAULTRAOMEGAGODLUL

earnest phoenix
#

Ikr

#

that needs to become another meme

inland pulsar
#

What should i use as database to store messages

#

Now I'm using mysql but I have a feeling that it's slowing my bot down

solid cliff
#

JSON

inland pulsar
#

oke

solid cliff
#

Β―_(ツ)_/Β―

inner jewel
#

something that's encrypted

inland pulsar
#

yhea sure

#

base64 and be happy xd

elder rapids
#

Cassandra ;)

trim plinth
#

JSON GWfroggyKermitReee

fresh cedar
#

txt files are the way to go

earnest phoenix
#
  .then(presence => console.log(`Activity set to ${presence.game.name}`))
  .catch(console.error);```
How do i set the streaming url in this?
#

i know it's options.url

#

but idk how to implement it to it

halcyon torrent
#

it's in the object

#
client.user.setActivity('discord.js', { type: 'STREAMING', url:'your url'})```
earnest phoenix
#

so like that?

halcyon torrent
#

yey

earnest phoenix
#

so i solved it before xd

#

ok thanks

halcyon torrent
#

^^

earnest phoenix
#

i can put url to anything right?

knotty steeple
#

yes

earnest phoenix
#

Ah cool

halcyon torrent
#

idk, in Eris links that dont redirect to twitch dont appear

earnest phoenix
#

now it's not showing up as streaming

#

now it shows as game

halcyon torrent
#

are you sure type is supposed to be a string?

earnest phoenix
#

Yeah, got it from the discord.js docs

#

nvm

#

now it shows as streaming

#

so it'll only show as streaming if you use twitch link

trim plinth
#

type is usually an integer Thonk

knotty steeple
#

it is

#

not usually

earnest phoenix
#

i'm just learning to code a bot with discord.js using the docs

inner jewel
#

url for streaming can be only twitch

earnest phoenix
#

yeah i noticed

solid cliff
#

its 7am, bot is freezing and having timeout errors and just had 100 ServerDisconnectedError: None notLikeMiya

trim plinth
#

Oof

earnest phoenix
#

How do I get my bot to log how many servers its in

topaz fjord
#

lib

slow elk
#

What programming language/lib?

earnest phoenix
#

discord.js/node.js and javascript

topaz fjord
#

<Client>.guilds.size

#

is to find amount of guilds

#

you can handle how you log it

earnest phoenix
#

would it be

trim plinth
#

node.js is not a lib

earnest phoenix
#

console.log(bot.guilds.size)?

trim plinth
#

yes

topaz fjord
#

yes

earnest phoenix
#

ok

#

thx

slow elk
#

Maybe

earnest phoenix
#

no errors but no numbers

#

hm

#

maybe bot.guild.size?

slow elk
#

bot.guilds.size should work just fine though

knotty steeple
#

u forgot a s

#

in guild

earnest phoenix
#

I forgot in when I sent it

#

but its written bot.guilds.size

#
console.log("Juptian bot is in", bot.guilds.size, "servers");
#

that's the code

knotty steeple
#

no

#

use + instead

earnest phoenix
#

ok

knotty steeple
#

not ,

slow elk
#

console.log("Juptian bot is in " + bot.guilds.size + " servers");

trim plinth
#

no use template literals

knotty steeple
#

also you can do template literals

earnest phoenix
#

?

knotty steeple
#

`${stuff}`

trim plinth
#

GWfroggyAngryEyes ```js
console.log(Juptian bot is in ${bot.guilds.size} servers);

topaz fjord
#

example of template literal is ```
console.log({fyreuseyfuw})

earnest phoenix
#

Ol

trim plinth
#

es6 is hawt

topaz fjord
#

like u

knotty steeple
#

ikr

trim plinth
earnest phoenix
#

nope

#

nothing

#
    console.log(`Juptian bot is in ${bot.guilds.size} servers!`);
rdog.js loaded
Removerole is online!
removerole.js loaded
Report is online!
report.js loaded
Say is online!
say.js loaded
Serverinfo is online!
serverinfo.js loaded
Tempmute is online!
tempmute.js loaded
memes :3 is online!
tf2memes.js loaded
JuptianBot is online
``` Console
#

nvm

#

it worked

knotty steeple
#

lol

earnest phoenix
#

someone had to send a message though

knotty steeple
#

where is that piece of code

#

@earnest phoenix

earnest phoenix
#

I put it under the messages instead of the logging on part

knotty steeple
#

you have to put that in the ready event

earnest phoenix
#

I just changed it

#

How can I get the servers names?

#

server names*

knotty steeple
#

like

#

from all current servers the bot is in?

night imp
#

collections

earnest phoenix
#

from all the servers its in

knotty steeple
#

just map it

earnest phoenix
#

and just get that into the console?

#

how?

knotty steeple
#

.map()

#

on bot.guilds

earnest phoenix
#
bot.guilds.size.map()
```that?
knotty steeple
#

no

slow elk
#

Oh my god this person

knotty steeple
#

ikr

earnest phoenix
#

I am still learning ok

knotty steeple
#

remove .size

earnest phoenix
#

and no-one needs to help me

#

ok

knotty steeple
#

ok

trim plinth
solid cliff
#

bot.guilds.map() πŸ‘€

knotty steeple
#

we dont need to help you

earnest phoenix
#

so just

bot.guilds.map()
```?
knotty steeple
#

leave him alone

#

he doesnt want help

earnest phoenix
#

I never said I don't want help, I said you do not need to help me

knotty steeple
#

same thing

topaz fjord
earnest phoenix
#

no

#

its really not

trim plinth
knotty steeple
#

this dude

trim plinth
#

in d.js to get the clients guild size, you do bot.guilds.size. end of story

low wasp
#

anyone have any tutorials on webhooks?

slow elk
#

YouTube does a lot

#

Lol

knotty steeple
#

discord webhooks?

topaz fjord
#

hecc

low wasp
#

trying to get if someone voted within the last 24 hours

knotty steeple
#

dbl webhook

topaz fjord
#

you can use the endpoint

knotty steeple
#

k bye

topaz fjord
low wasp
#

ah

low wasp
#
const requestUrl = 'https://discordbots.org/bots/422088562586943489?/check';

request({
    url: requestUrl,
    data: {
         'userId': parseInt(message.author.id),
    },
    json: true,
 }, (error, response) => {
     console.log(response.voted)
 });``` i fell like im doing this all wrong
topaz fjord
#

so

#

first

#

dont use request

#

and two

#

userId is a query param

low wasp
#

so what would i use

uncut slate
#

also don't parseInt it

topaz fjord
#

snekfetch

#

yeah and dont parseInt

#

js cant handle 64bit integers

low wasp
topaz fjord
#

fuck the docs

elder rapids
#

The docs are kind of annoying with that

#

But it is true

topaz fjord
#

adding it as a string is fine

low wasp
#

okay

topaz fjord
#

just concat the string

elder rapids
#

Also query params are always strings

#

They can't really tell you the datatype in a query

inner jewel
#

remove that

quasi hearth
#

Im currently using discord.io and node.js for my bot, but I can't find a way to get user permissions

trim plinth
#

@quasi hearth just warning you, but discord.io is deprecated

quasi hearth
#

ok, but its working for me so far, so i don't want to switch over to discord.js yet

elder rapids
#

You want to switch

#

It is that outdated and deprecated it's not recommended for use anymore

topaz fjord
#

discord.js is easy

knotty steeple
#

so easy

quasi hearth
#

alright, taking a look at it. The docs are a bit confusing though

halcyon abyss
#

it's big, but it's well done tho

topaz fjord
#

but if u get rlly big you should use eris

knotty steeple
#

^

shy verge
#

djs docs are easily the best docs i've ever used

topaz fjord
#

yeah

earnest phoenix
#

how big is considered big @topaz fjord

topaz fjord
#

20000

elder rapids
#

10k tbh

topaz fjord
#

then you get dead shards, double posting, etc

#

for d.js at least

knotty steeple
#

ill switch at 10k zoomeyes

elder rapids
#

That's a bad idea

trim plinth
#

use Erisβ„’

topaz fjord
#

aeth said he didnt do it till 20k

elder rapids
#

You should always be programming for the future forward

#

Terrible to switch at a later date

#

By then it's too late

knotty steeple
#

d.js is the futureβ„’

elder rapids
#

No it's not

#

d.js is terrible for big bots Thonk

trim plinth
#

Eris is the future

knotty steeple
#

great for smol ones

#

tho

elder rapids
#

discordia > all libs

knotty steeple
#

eh ill switch at 5k

trim plinth
#

unless they fix their meme shards and cache, d.js will be fine

knotty steeple
#

discordia is lua

topaz fjord
#

internal sharding is pretty nice tho @elder rapids

knotty steeple
#

lua is roblox

elder rapids
#

No it's not

#

Lua is far from it

#

Go do more research

trim plinth
#

Roblox uses their own remixed Lua

elder rapids
#

You don't realize how often Lua is used outside Roblox

#

in a real-world better state

topaz fjord
#

Internal-Sharding puts all shards together and treats like 1 process

knotty steeple
#

kewl

elder rapids
#

First off you have Luvit

#

Many games like Tabletop Sim, Factorio, and Garrys Mod use Lua for modding

knotty steeple
#

i've used lua before

elder rapids
#

Counter-Strike will use Lua soonβ„’

knotty steeple
#

0w0

elder rapids
#

Talk to FiniteReality on that

trim plinth
#

OwO What's This?

topaz fjord
#

My dads work place is switching from .Net to React.js for its stuff

elder rapids
#

.NET to React.js

trim plinth
#

r.js zoomeyes

elder rapids
#

Vue.js please

#

thanks

#

Also .NET to React tf is this?

topaz fjord
#

blame the bank kthx

#

honestly idfk

trim plinth
elder rapids
#

What was programmed in .NET that now can be converted to React.js

#

Like what

trim plinth
#

bad business choices

quasi hearth
#

so, in d.js can I use client.on('message','function(message){}'); instead of client.on('message',message => {}) (to make it easier to read for me)

trim plinth
#

ok

elder rapids
#

client.on(string, string)

trim plinth
#

also use es6 arrow functions

elder rapids
#

ES6 Arrows | Lambda/Anonymous functions > everything else

quasi hearth
#

but can i not use arrow functions if i want to?

trim plinth
#

you could, but you'd rather stick with arrow functions

quasi hearth
#

ok

topaz fjord
#

@quasi hearth you can

elder rapids
#

lol

halcyon abyss
#

why rather stick with arrow functions ?

topaz fjord
#

but its better to adapt to the new terms

elder rapids
#

lambdas > functions

trim plinth
#

es6 functionality

halcyon abyss
#

it's basically the same, isn't it ,

elder rapids
#

It's not really

knotty steeple
#

no

topaz fjord
#

but if it makes it easier client.on('message',message => {}) can be turned into client.on('message', (message) => {}) @quasi hearth

elder rapids
#

It's a different structure

knotty steeple
#

not at all ^

halcyon abyss
#

forgot how much js is fucked up

elder rapids
#

You do realize every language has lambdas

knotty steeple
#

but u dont have to client.on('message', (message) => {})

#

just client.on('message', () => {})

elder rapids
#

C# has () => {} too

knotty steeple
#

Β―_(ツ)_/Β―

halcyon abyss
#

yeah, but it's just another way to write it

trim plinth
#

@knotty steeple no

elder rapids
#

It's actually a widely adopted thing

#

It's easier to read and write too

knotty steeple
#

wait wat

trim plinth
#

you are going to need a param for the message event

topaz fjord
#

@knotty steeple it may make it easier to read for people

halcyon abyss
#

It's a matter of point of view

knotty steeple
#

kk

elder rapids
#

mmm okay

halcyon abyss
#

But is there any functionnal difference ?

elder rapids
#

No

#

It's still a function

halcyon abyss
#

so they're the same

#

like i said

elder rapids
#

But Lambdas are easier to read/write than writing out function() and such

knotty steeple
#

client.on('message', (messagesaregreatilovethemsomuchtheymakeuscomunicatetopeopleontheinternet) => {})

trim plinth
#

writing function succs while you can shorten code with an arrow

#

@knotty steeple that works

knotty steeple
#

i know

#

lol

elder rapids
#

It makes more sense to append a function directly to a method when it asks for a callback

#

The code can be read easier

#

but who's to say you can't do function() {} inside that

#

It's just a cleaner way of writing it

inner jewel
#

on js

#

function and closure behave differently

elder rapids
inner jewel
elder rapids
#

πŸ€”

#

I see

knotty steeple