#development

1 messages · Page 944 of 1

cinder patio
#

you can make your bot send you an email when it gets errors or something

earnest phoenix
#

wut

#

no

turbid bough
#

email?? lol

#

just send a pm to the bot owner

earnest phoenix
#

pm = ?

#

yes

#

u mean dm ?

turbid bough
#

Private Message

#

Direct Message

#

same thing

earnest phoenix
#

ok

#

ok

#

or just create a logs channel and get the id and send it to the log channel

turbid bough
#

i actually do both

#

so i get personally dm'd errors, and it shows up on my dev server

#

though im not sure how it would work for multiple clusters

#

for my bot

earnest phoenix
#
try{
    //code
}catch(e){
    Client.channels.get("701387785789112331").send(e);
}

Can do this on the index file ??

tight plinth
#

try it anndsee

earnest phoenix
#

lol

#

ok

pale vessel
#

if Client is defined yes

earnest phoenix
#

oh shit

#

hi

#

bye

#

i mean

#

how to put a Vote key

#

?

#

wut

#

what is your "Vote key"

#

you mean the dblapi.js token ?

#

no

#

Vote Button?

#

once your bot is submitted, that vote button will appear

#

submitted and approved that is

#

U

#

ok

#

Thc

#

thx

#

until then, you wont be able to interact with dbls api

#

can someone help me i have a problem with this error :

node:27059) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
limit: Value "NaN" is not int.
    at RequestHandler.execute (/rbd/pnpm-volume/dd9236b0-4429-4b50-9eea-eaeca220241e/node_modules/discord.js/src/rest/RequestHandler.js:170:25)
    at processTicksAndRejections (internal/process/task_queues.js:88:5)
(node:27059) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:27059) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
#

show me ur code

#

pls

#

const { Client, Collection } = require("discord.js");
const { token } = require("./botconfig.json");
const bot = new Client();
const color = require("./color.json");

try {
    ["aliases", "commands"].forEach(x => bot[x] = new Collection());
    ["console", "command", "event"].forEach(x => require(`./handlers/${x}`)(bot));
} catch (e) {
    let embed = new RichEmbed()
        .setColor(color.red_dark)
        .setTitle(":x: Error!")
        .setDescription(e)
        .setFooter(bot.user.username, bot.user.displayAvatarURL);
    bot.channels.get("701387785789112331").send(embed);
}


bot.login(token);
#
 if (msg.content.startsWith("rn! purge")) {
    try {
      var limit = Number((msg.content + " ").slice(6, -1));
      if (limit > 99) {
        msg.channel.send("Limit must be less than or equal to 99")
      } else if (limit <= 0) {
        msg.channel.send("Limit must be greater than zero")
      } else {
        msg.channel.messages.fetch({ limit: limit + 1}).then(messages => { 
            msg.channel.bulkDelete(messages 
          )});
      }
    } catch (e) {
      msg.channel.send(e.toString())
    }
  };
#

here

#

ahm why it not sending the err

#

Glitch?

#

yes

#

Project Name

#

Test bot

#

😄

#

?

#

Bruh

#

i still need help ;-;

#

@earnest phoenix richembed was removed

#

lol

#

discord.js( <-- gay) removed it ;-;

#

bot how can i keep it open 7/24

#

?

#

buy glitch premium

#

limit: Value "NaN" is not int.

#

where did u hosted ur bot

#

yes

#

@earnest phoenix get a vps

#

im hosting on glitch

#

use UptimeBot

#

doing

#

then ?

#

how?

#

somehow this is not a number var limit = Number((msg.content + " ").slice(6, -1));

#

@earnest phoenix how?

#

@earnest phoenix google for vps providers

turbid bough
#

GET A VPS

earnest phoenix
#

cuz it is a array

#

somehow this is not a number var limit = Number((msg.content + " ").slice(6, -1));
@earnest phoenix Cuz it is a ARRAY

#

i still have this error and idk how to fix

node:27059) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
limit: Value "NaN" is not int.
    at RequestHandler.execute (/rbd/pnpm-volume/dd9236b0-4429-4b50-9eea-eaeca220241e/node_modules/discord.js/src/rest/RequestHandler.js:170:25)
    at processTicksAndRejections (internal/process/task_queues.js:88:5)
(node:27059) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:27059) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
#

;-;

#

maybe

#

@earnest phoenix try var newLimit = limit[0]

#

okay

#

msg.channel.messages.fetch({ limit: newLimit + 1}).then(messages => {

#

spoonfeed ngl

#

wut

#

?

#

@earnest phoenix ??

#

@earnest phoenix yall there ??

#

oof wait u python

lusty imp
#

@earnest phoenix use uptimerobot or freshping

earnest phoenix
#

@earnest phoenix use uptimerobot or freshping
@lusty imp bad idea

lusty imp
#

why

earnest phoenix
#

use vps

#
node:27540) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
limit: Value "NaN" is not int.
    at RequestHandler.execute (/rbd/pnpm-volume/dd9236b0-4429-4b50-9eea-eaeca220241e/node_modules/discord.js/src/rest/RequestHandler.js:170:25)
    at processTicksAndRejections (internal/process/task_queues.js:88:5)
(node:27540) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:27540) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code
#

;-;

#

. . . .

#

didnt work

lusty imp
#

i know but it's not free🙃

turbid bough
#

its NaN

#

Not A Number

earnest phoenix
#

parseInt() ??

#

xD

turbid bough
#

if you parseint, and its not a number, it returns NaN

earnest phoenix
#

i know but it's not free🙃
@lusty imp you wont anything with high quality hosting thats free

#

better to pay

#

ye i know

#

xD

pale vessel
#

it'll try to parse it so if you put "11a" it could work

earnest phoenix
#

@lusty imp Heroku ??

turbid bough
#

@earnest phoenix can you send over the code where you have the issue on?

lusty imp
#

@earnest phoenix yeah

earnest phoenix
#

it doesnt show which line

#

it says only limit : NaN

turbid bough
#

exactly there you have it

earnest phoenix
#

yes

#

he showd

#

he shoed

turbid bough
#

i dont see it

earnest phoenix
#

look

#

It tells you the variable tho

#

which is limit

turbid bough
#

var limit = Number((msg.content + " ").slice(6, -1));

earnest phoenix
#

var limit = Number((msg.content + " ").slice(6, -1));

#

yes

#

you can just... debug to find your issue

#

i said to use limit[0]

#

just inspect your variables

#

but maybe not working

turbid bough
#

why would you use limit[0]?

#

that wouldnt work

#

cause its NaN

earnest phoenix
#

ok . . .

#

cuz when u slice() it will give u array

turbid bough
#

@earnest phoenix what is the content you are trying to parse to number

earnest phoenix
#

wdym

#

just get the size of the array

#

lol

#

@

#

@earnest phoenix how u know so much about js but u py

#

wtf

#

i dont even py

#

wut

turbid bough
#

isnt .slice for arrays?

earnest phoenix
#

yes

#

it is

turbid bough
#

nvm also for strings

#

yeah its sliced wrong

earnest phoenix
#

are they trying to get the number from the rn! purge command?

#

a friend coded this code for me, its not working anymore

pale vessel
#

then ask your friend

earnest phoenix
#

u v11 or v12

#

but he's offline

turbid bough
#

that does not matter lol

earnest phoenix
#

v12 ig

#

maybe ur friend code is outdated

turbid bough
#

nono

earnest phoenix
#

but it worked before

#

or he is v11

turbid bough
#

its pure js

earnest phoenix
#

literally debug

#

and you'll find the root of your problem

#

instead of guessing

turbid bough
#

how does
(msg.content + " ").slice(6, -1)
not work = wrong discord.js version

earnest phoenix
#

yes

#

ok, im confused

#

because it worked a yesterday

#

did your friend not explain what it does?

turbid bough
#

unless msg.content is undefiend or something

earnest phoenix
#

and i didnt update

pale vessel
#

noo

turbid bough
#

👀

earnest phoenix
#

:))

turbid bough
#

trolling?

earnest phoenix
#

nah

#

lol but if i do that

#

the rest of my 1k code wont work anymore

#

xd

#

lol

#

ye me 2, if i switch to v12. I have start from nothing

#

yep

deft condor
#

How do you make the bot profile image hover like this with css?

earnest phoenix
#

i actually hate discord.js

#

-__-

#

tbh

#

wut

#

lmao

turbid bough
#

@earnest phoenix can you debug your program? add a breakpoint to that Number() and check the outputs, are you getting what you want?

earnest phoenix
#

ye

#

@deft condor with css

#

or console.log(number())

turbid bough
#

No

#

that will just return NaN

earnest phoenix
#

i mean not just number()

pale vessel
#

google css animations @deft condor

turbid bough
#

No, no number()

earnest phoenix
#

@pale vessel why u mad

#

keyframes pogey

turbid bough
#

just (msg.content + " ").slice(6, -1)

pale vessel
#

i'm not

earnest phoenix
#

ur pfp is mad

pale vessel
#

so

earnest phoenix
#

nvm

turbid bough
#

offtopic

#

cant help shit here

earnest phoenix
#

lol

#

is it not that easy to parse the arguments in js? in java i simply split the messages with the spaces and just go on like that

turbid bough
#

well, idk the whole program of his

pale vessel
#

they have this weird limit[i]

turbid bough
#

so i cant say for sure what msg.content is

#

ah nvm

#

yea he trying to do it the weird way

#

msg.content.split(" ")

earnest phoenix
#

yeah

#

then just use msg[1] msg [2] etc

#

its way easier

#

i have to admit i did that too back then with just substringing, but that was pretty much pain in the ass

turbid bough
#

const args = message.content.slice(prefix.length).split(/ +/);
is the much better one.

pale vessel
#

you mean \s+?

turbid bough
#

what does that do?

pale vessel
#

any whitespace character

turbid bough
#

wtf
?

pale vessel
#

some keyboards use some weird spaces

#

so \s is a better option to include those

earnest phoenix
#

well thats the keyboards fault then pogey

turbid bough
#

idk i just used the one in the docs

deft condor
#

bot-img img {
width: 100px;
height: 100px;
position: relative;
animation-name: example;
animation-duration: 2s;
animation-direction: reverse;
animation-iteration-count: 30;
}

@keyframes example {
60% {left:0px; top:0px;}
75% {left:0px; top:20px;}
100% {left:0px; top:0px;}
}

#

it works

#

but doesn’t work on dbl

tough dune
#

I made my bot on mobile with glitch, how can I keep my bot online 24/7?

earnest phoenix
#

uptimerobot

tough dune
#

ah ok

#

how do I set that up?

#

I think I got a account on it

earnest phoenix
#

add a new monitor

#

And put ur glitch app url

#

and set it to 5 minutes

tough dune
#

share project URL?

earnest phoenix
#

like

tough dune
#

uh

#

let me try

#

I’ll be bk

#

there’s no URL like that

#

the invite others to edit one?

earnest phoenix
#

No

tough dune
#

I press share

#

What option do I press

earnest phoenix
#

Live app url

tough dune
#

aa ty

deft condor
#

I tried to make my bot profile image hover up and down but it didn’t work
bot-img img {
width: 100px;
height: 100px;
position: relative;
animation-name: example;
animation-duration: 2s;
animation-direction: reverse;
animation-iteration-count: 30;
}

@keyframes example {
60% {left:0px; top:0px;}
75% {left:0px; top:20px;}
100% {left:0px; top:0px;}
}

tough dune
#

@earnest phoenix

#

What type of monitor do I set it as?

earnest phoenix
#

http

tough dune
#

Friendly name can be anything right

earnest phoenix
#

Yes

tough dune
#

For the url I paste the one I copied

#

?

earnest phoenix
#

paste the live app url

tough dune
#

I have no common sense and never used the site

#

okk

earnest phoenix
#

And set it to 5 minutes

tough dune
#

Every 5 mins

#

okk

#

how do I test if it worked?

earnest phoenix
#

Wait 5 min and see if the bot is online

tough dune
#

kk

#

I’ll say if it worked or not

#

Thanks for your help

mental relic
#

@errant veldt

tough dune
#

@earnest phoenix tysm it works great now

earnest phoenix
tough dune
heavy marsh
#

What can we do to make the music quality good? - discord.js v12

#

Except the internet connection

earnest phoenix
#

imma assume a bot changing the color of a role pretty often is api abuse

pale vessel
#

install some native modules that d.js recommend

earnest phoenix
#

imma assume a bot changing the color of a role pretty often is api abuse
@earnest phoenix aka rainbow roles

pale vessel
#

it's on their documentation

earnest phoenix
#

ah so yes

heavy marsh
#

Its against Discord TOS

earnest phoenix
#

good thing i looked into it first xd

heavy marsh
#

@pale vessel - I did but sometimes the music lags or its stops playing for like 2-3 s

#

Is it the internet connections
Or can something be done to overcome this issue

copper cradle
#

If you're using a google's VPS I doubt that the internet speed is the problem

#

if you're using glitch or heroku you shouldn't be asking

earnest phoenix
#

and if you're selfhosting, dont even ask

heavy marsh
#

I do not use google's vpn

pale vessel
#

vps

heavy marsh
#

if you're using glitch or heroku you shouldn't be asking
No

and if you're selfhosting, dont even ask
Nope

copper cradle
#

ah there we go

earnest phoenix
#

i have a question

heavy marsh
#

No lol - I use a vpn

pale vessel
#

bruh

copper cradle
#

??

earnest phoenix
#

i have a question
@earnest phoenix yas?

copper cradle
#

and

#

you want a VPS

#

not a VPN

earnest phoenix
#

No lol - I use a vpn
@heavy marsh he using a vpn? pogey

copper cradle
#

lmao

earnest phoenix
#

that was ad

heavy marsh
#

vps*

#

by bad

#

my*

#

So with out the internet connection there is nothing else ...
Cause I use @discordjs/opus

copper cradle
#

hmm

#

install node opus

pale vessel
#

deprecated btw

#

they'll ask you to install discordjs/opus

#

so he's right

copper cradle
#

otherwise you whuh

#

what

#

since when is it deprecated

#

it works fine tho

#

idk v12

pale vessel
#

just found out about it recently when upgrading my modules, idek

copper cradle
#

bruh

earnest phoenix
#

Hey. I have a question.
Bots can differentiate a normal message / an invitation to join a game ?
Is there a way ?

copper cradle
#

what do you mean

pale vessel
#

there could be embeds

#

maybe you can check for them

#

or basically check if there is at least content/attachment

earnest phoenix
#

k

pale vessel
#

by the way, never mind because game invites can have content too

#

discord allows you to add if you want

tough dune
#

name ideas

#

also

#

How would I make it send a image?

copper cradle
#

what lang

#

Ibut

#

don't say anything

#

I just want to know the lang

#

not the library

#

now

#

what lang

tough dune
#

idek I just done it

#

I think it’s node

#

I’m new to this lol

cunning karma
#

node is Javascript ASfacepalm

tough dune
#

ok same thing

cunning karma
#

no lol

tough dune
#

if node is JavaScript it’s the same

#

cause I just said

#

Node

#

which means java script

cunning karma
#

node is server side javascript

tough dune
#

Ohh

cunning karma
#

not JAVASCRIPT

#

yes

#

for front end we use normal js

copper cradle
#

node.js !== vanilla javascript && deno !== node.js && deno !== vanilla js

cinder oxide
deft condor
#

I tried to make my bot profile image hover up and down but it didn’t work
bot-img img {
width: 100px;
height: 100px;
position: relative;
animation-name: example;
animation-duration: 2s;
animation-direction: reverse;
animation-iteration-count: 30;
}

@keyframes example {
60% {left:0px; top:0px;}
75% {left:0px; top:20px;}
100% {left:0px; top:0px;}
}

pale vessel
#

eris is good

#

smh

cinder oxide
#

yeah eris is lit

pale vessel
#

i have no problem with it

cinder oxide
#

low memory usage

#

but it can't sync perms ;-;

pale vessel
#

well i don't need that

#

xd

cinder oxide
#

i need it for my custom bot's lockdown command

deft condor
#

I tried to make my bot profile image hover up and down but it didn’t work
bot-img img {
width: 100px;
height: 100px;
position: relative;
animation-name: example;
animation-duration: 2s;
animation-direction: reverse;
animation-iteration-count: 30;
}

@keyframes example {
60% {left:0px; top:0px;}
75% {left:0px; top:20px;}
100% {left:0px; top:0px;}
}
@deft condor help?

cinder oxide
#

channel topic

#

unity is cool

spice smelt
#

hi! is it normal if I receive a 'unhandled promise rejection' error from smth that is in a try block ? (js)

#
    try {
      msg.channel.send(permsEmbed) // it comes from here: it says that there is missing permissions (normal), but the catch block doesn't work
    }
    catch {
      msg.author.send(permsEmbed)
    }```
amber fractal
#

try/catch doesn't work on promises

#

use .catch instead

#

Promise().then(...).catch(...) the then isn't needed

spice smelt
#

thank you @amber fractal !

sacred wraith
#

Or you could just handle promise rejections because putting a .catch under every message send is pretty finicky.

tight plinth
#

normally it does that only if watch is set to true

ionic compass
#

is the everyone role's ID always going to be the same as guild ID?

tight plinth
#

does everyone role have a id

#

I guess yes

ionic compass
#

according to the bot lol

tight plinth
#

lemme see

#

id of my server: 674514067368574976
id of the everyone role in my server: 674514067368574976

#

so the answer is yes

ionic compass
#

perfect, thanks

limber flume
#

hey anyone got a github link for css and html

slim heart
#

So in express, im trying to route /GUILD_ID and /GUILD_ID.json to the same router, so this is what i've done r.get('/:guild(.json)?'
however, it seems to be like, not ending the param? is there a way to force it to end the param or a better way of doing it to get the param and allow .json at the end of the url?

limber flume
#

ok thanks

earnest phoenix
#

What's the name of that theme @tight plinth?

tight plinth
#

its not a theme, its a different ide

earnest phoenix
#

How can I get that?

#

it looks really good

tight plinth
#

its called atom

cinder patio
#

I think the One Dark Pro theme in VSC is the same

neat ingot
#

if i change my bot name in discord dev portal, how long does that change take to propogate to the guilds the bot is in? when i change the avatar image the changes appear immediately, but i changed the name last night and its still showing as the old name in all servers

#

even when i click on the bot to view profile, its acting as though its username is still the old one

amber fractal
#

ping it here

#

might be cache

topaz fjord
#

are you sure it isn't just cache fucking with you

amber fractal
#

What is its name right now?

neat ingot
#

its not in here atm, not applied yet, its my newest bot 🙂

amber fractal
#

ah

neat ingot
#

im positive, it was over 12 hours ago i made the change, and its only in 2 servers, both of them are showing the old name as the username

#

^ discord profile

#

^ dev portal

cinder patio
#

Did you restart discord?

amber fractal
#

can you send me its id real quick?

neat ingot
#

lol yea, i slept for like 10 hours in between with bot and discord completely off

#

711719298942500925

cinder patio
#

Wait, did you change the name in both the "General Information" and "Bot" sections

amber fractal
brave rover
#

Are you sure you changed your app's icon or the bot's one?

toxic jolt
brave rover
#

Because sometimes I change the app's name instead of the bot user's name

neat ingot
#

oh, no i just changed it in general info, not in bot section.

#

hmmm

amber fractal
#

Oh

quartz kindle
#

you need to change it in the bot section

neat ingot
#

why then would it be using the new name for new servers though

amber fractal
#

well that is the application name, make sure to change it in bot section

neat ingot
#

yea ill change it there and see 😄

cinder patio
#

That's the app name

#

not the bot name

neat ingot
#

fml

#

immediately changed

#

lmao

#

ty guys 😄

#

i totally blanked that it had a name input for the bot tab 😄

toxic jolt
#

help

#

ERROR: TypeError: this.inputMedia.pipe is not a function

#

thx for helping.

next remnant
#

can't say anything without looking at code

#

post code and someone might be able to help

limber flume
earnest phoenix
#

yes, you can use html in description

neat ingot
#

as long as you dont hide the ads your allowed

next remnant
#

i need some help with docker(-compose)

earnest phoenix
#

does someone know how to create a .js website

next remnant
#

to me, it seems like something is fucked with the docker network but i have no idea what it is or what to do to fix it

flat vine
#

i am making (free) bots

unique nimbus
#

no

earnest phoenix
#

@toxic jolt remove "this"

#

i can host a bot in heroku?(my bot use json)

sudden geyser
#

What do you mean by your bot uses JSON

earnest phoenix
#

.json

#

i am making (free) bots
@flat vine i'm pretty sure no one will need your "services" since you dont send anyone any code, you use your "hosting" which is definitely a security concern, so sorry but no one cares

#

heroku can support json?

#

@earnest phoenix what programming language do you use for the bot

#

python, javascript?

#

javascript

#

json is only a data type

#

js is supported by heroku afaik

#

so?, i can use json?

#

yes

#

its only a data type

#

ok thanks

#

How to define verification levels from a server ?

sacred wraith
#

The command section under db is incorrect @next remnant

cinder patio
#

I don't think it'll work if you are using it as a database though

sudden geyser
#

How to define verification levels from a server ?
do you want to set the verification level or just get it

next remnant
#

@sacred wraith but it works?

#

the database container starts

#

only the network doesn't work

#

docker network i should say

#

even with host networking, it works

neat ingot
#

you command should be somewhat like that

earnest phoenix
#

@sudden geyser just get it, i need for a serverinfo command

neat ingot
#

also, you can create a ccustom network for your applications

#

also, your applications can reference one another via thei given name

next remnant
#

docker compose does that

neat ingot
sudden geyser
#

What library are you using

sacred wraith
#

The default network should technically work.

neat ingot
#

gamebot:9999 is the internal url for that one for example

next remnant
#

the default network works fine

earnest phoenix
#

@sudden geyser discord.js

pale vessel
#

what version

earnest phoenix
#

v12

sacred wraith
#

Don't you need a hostname: db in there @next remnant

sudden geyser
earnest phoenix
#

Ok

next remnant
#

it picks it up automatically

#

at least according to docs

sacred wraith
#

Ahh, I see. I use docker swarm, so a bit rusty on docker-compose.

neat ingot
#

yea compose sets the hostname to the container name automatically

earnest phoenix
#

@sudden geyser It still says undefined

sudden geyser
#

What do you mean

#

What did you try

neat ingot
#

how are you trying to contact the other apps on the network from your web app simp>?

earnest phoenix
#
 const verlvl = {
        0: "NONE",
        1: "LOW",
        2: "MEDIUM",
        3: "HIGH",
        4: "VERY_HIGH"
    }

        .addField("Security Level", verlvl[message.guild.verificationLevel], true)

it still says undefined

next remnant
#

web server connects postgres with the jdbc driver

sudden geyser
#

verificationLevel is a string.

next remnant
#

and fails if host networking isn't used

sudden geyser
#

The key should be the string like "LOW" and the value can be the user-friendly name like "Low"

neat ingot
#

i mean url 😛

#

is how my web app connects to my bot on the same internal network

next remnant
#

jdbc:postgresql://db:5432/postgres

#

this is the jdbcUrl

neat ingot
#

👀 thats a new format to me lol

#

seems valid according to the docs. ive never used postgres 😛

lyric mountain
#

oh, java

neat ingot
#

it seems your container name however is blogify_db_1

#

not simply db

lyric mountain
#

I'd not recommend using the postgres schema directly tho

#

also, if your database is in a vps, check if the port is actually allowed through the ufw

empty owl
#

does The RichEmbed constructor has been removed and now the MessageEmbed constructor is used. It is largely the same to use, the only differences being the removal of richEmbed.attachFile (messageEmbed.attachFiles accepts a single file as a parameter as well) and richEmbed.addBlankField and the addition of messageEmbed.addFields mean i have to replace every "new Discord.RichEmbed()" to "new Discord.messageEmbed()"

lyric mountain
#

yes

next remnant
#

thats docker-compose doing its thing

#

the service name is db

empty owl
#

okay

next remnant
#

I will try manually setting hostnames

sacred wraith
#

Are you waiting for the postgres container? It's possible that it takes a bit of time to start up even with depends_on

#

Unlikely that this is the issue though, since it works with host networking.

next remnant
#

i am not but that isn't the issue

lyric mountain
#

what error are you getting?

#

is it a simple "couldn't connect to database" or something more specific?

next remnant
#

host is unreachable

lyric mountain
#

try pinging your server with command prompt

#

if the ping fails, then it might be port issues

next remnant
#

uh it isn't that

#

db starts

#

web can't see it

lyric mountain
#

I don't mean that

digital ibex
#

why r people using d.js after that wack update

lyric mountain
#

is your database in the same server as your code?

sacred wraith
#

@digital ibex What're the alternatives?

next remnant
#

im running everything on my local machine

digital ibex
#

eris

#

diatruis

#

idk how 2 spell it lol

lyric mountain
#

im running everything on my local machine
@next remnant then use localhost instead

next remnant
#

that is not how docker networks work

digital ibex
#

there r quite a few other js libs which r so much better imo

next remnant
#

localhost only works with host networking which is what eventually had to use but would prefer not to use

lyric mountain
#

why?

next remnant
#

that network isn't isolated

neat ingot
#

which whack update did d.js have?

empty owl
#

anyone have an idea why ```js
module.exports = async (message, member, prompt) => {
const filter = response => response.author.id === message.author.id;

let channel = await member.createDM();
const instance = await channel.send(prompt);

return channel
.awaitMessages(filter, { maxMatches: 1, time: 180000, errors: ["time"] })
.then(collected => {
const content = collected.first().content;

  return content;
})
.catch(_ => {
  instance.delete();
  return channel.send("You waited to long. (3m)");
});

};

tight plinth
#

Error?

empty owl
#

no error

pale vessel
#

maxMatches is called max now afaik

empty owl
#

it doesnt respond anythign now

#

oh okay

tight plinth
#

U mean max, not match @pale vessel

pale vessel
#

ye

#

excuse: it's 1:40 am

tight plinth
#

It's like 7pm

pale vessel
#

good for you

cinder patio
#

No it's 20:40

empty owl
#

whats this : TypeError: Discord.messageEmbed is not a constructor

cinder patio
#

Capital m

empty owl
#

thanks

#

hey whats good about this update

cinder patio
#

np all classes start with a capital letter 🙂

tight plinth
#

Imagine using the embed constructor

empty owl
#

i had richEmbed

#

RichEmbed

cinder patio
#

Imagine not

pale vessel
#
{
    title: "Name",
    description: "Description",
    fields: []
}``` is better ![mmLol](https://cdn.discordapp.com/emojis/356831697385422848.webp?size=128 "mmLol")
cinder patio
#

big nono for me if the embed has more than 1 field

empty owl
#

imagine using an object

lyric mountain
#

why not more than 1 field?

empty owl
#

the constructor is more clean

pale vessel
#

the object is more clean for me

#

idk why

#

preferences ig

neat ingot
#

there are valid use cases for both constructor and passing object to send imo

tight plinth
#

Object team

cinder patio
#

yeah, and cause it takes like 4 lines if I want it to be easily readable

pale vessel
#

b-but pichu uses constructors

empty owl
#

hey is this the same rodeo every update?

tight plinth
#

The constructor returns a object, right?

pale vessel
#

yes

#

ig that counts

tight plinth
#

No

#

It's not @empty owl

empty owl
#

i stuck to 11.5.1 until now lol

pale vessel
#

rodeo?

empty owl
#

like mess for me

earnest phoenix
#

what is bot.snipes.get()

#

in v11

cinder patio
#

there's no such thing if you are talking about d.js and assuming bot is your Client

earnest phoenix
#

yes

#

bot = new Discord.Client()

cinder patio
#

It's not documented so

nocturne grove
#

yeah I can't find it too (on v11)

brave rover
#

then where did you find it?

earnest phoenix
#

yes

#

there is no info in docs

cinder patio
#

well, who wrote that code? Maybe they defined it somewhere else

#

bot.snipes = new Discord.Collection() for example

earnest phoenix
#

this code is v12

#

but i want to ask for v11

cinder patio
#

The snipes property doesn't need to come from discord.js

earnest phoenix
#

oh wait

#

i forget one line

#

:))

wheat jolt
#

the heck is an embed channel

earnest phoenix
#

embed channel

#

where

wheat jolt
#

where what

#

;-;

opaque seal
#

My bot is query the database much seen that is in over 100 servers. I'm having problem with the server that it's hosting it, its CPU usage spikes over 100% many times, because of the disk usage. I would have to upgrade drom a 2.5 $ plan to a 20$ one, just to get more CPU power. Do you guys know any good VPS that could offer me a little cheaper plan and solve my problem?

earnest phoenix
#
["command", "event"].forEach(handler => {
    require(`./handlers/${handler}`)(bot);
});

Cannot read property 'forEach' of undefined

uncut river
#

my vote webhook doesn't seem to be working, i tried regenerating my api key on the api docs but it doesn't reset

#

nor does it reset on the edit page of my bot

digital ibex
#

hi

#

if i have an array

#

how can i get the one i want?

#

like

#

i have js ['1', '2', '3', '{eee:ee}' ]; i can use find but i want to get to ee specifically in the 4th value

neat ingot
#

i dont understand your issue

#

@lostguy

digital ibex
#

so uh

#

basically what i'm trying do is

neat ingot
digital ibex
#

{choose#1:2} and thats in an array

#

so its basically

#
[ 'bye', 'hi', '{choose#1:2}' ];
#

and i need to get to '1' and '2'

#

using find, but then idk the part after the #

neat ingot
#

lol, i still have no idea what your trying to achieve. let me try understand..
you have an array, and one of the elements is a string with an object containing data. your wanting to find that specific data? just find it in the array, or if its always in the same position, get the element via array[index]

dusty onyx
#

does anyone know what the cause is of this error? aiohttp.client_exceptions.ClientOSError: [Errno 22] Can not write request body for https://discordapp.com/api/v7/channels/705013428288487476/messages

digital ibex
#

uhh

#

sorta yeah

dusty onyx
#

i am very confused ive never gotten an error like that before

#

:0

neat ingot
#

yea, ive never seen that one aubee

digital ibex
#

so what it is, i think this is gonna make more sense,

#

i want to do hello, {choose#:how are you?:how is u?} i want to get to 'how are you?' and 'how is u?'

dusty onyx
#

dekita do you know whats causing it?

neat ingot
#

so your array is actually an array of the arguments from someone sending a message?

#

i have no idea im afraid 😦

dusty onyx
#

:(

digital ibex
#

no not really

#

i'm so bad at explaining this, sorry

neat ingot
#
const ary = ['hello', '{choose#:how are you?:how is u?}'];
const ele = ary.find(e => e.startsWith('{choose#'));
#

is enough to find the correct element

digital ibex
#

if this makes any mroe sense

#

oh

#

but i'm confused on how i can get to the values after the #

neat ingot
#

by either requiring a json format and then json parsing it, or by splitting the string in your desired format like umm..

digital ibex
#

i dont want to split it as there can have more than one {choose}

#

in it

sudden geyser
#

Cannot read property 'forEach' of undefined
You still having this issue?

#

It's likely due to the line above.

#

Like a missing semicolon.

#

@earnest phoenix

neat ingot
#

the amount of choices shouldnt matter

digital ibex
#

it wouldn't?

#

how

#

confuso

#

if i have hi, {choose#e:ee} and e {choose#hi:bye}

neat ingot
digital ibex
#

then it would choose the e:ee

neat ingot
#

notice, i now have an array containing each choice.

digital ibex
#

oh

neat ingot
#

its just a case of formatting the data correctly, and then splitting it apart based on how you formatted it.

#

i would say though

#

the format your using atm is not ideal.

#

not even a little!

digital ibex
#

but u also r splitting it by the ?

#

but there probably won't have a ? in it

#

oop

neat ingot
#

irrelevant. the principle remains the same. you just have to format the data in some standardized way, and then check for elements that match that format, then parse the data based on the format chosen, and handle the data accordingly.

earnest phoenix
#

someone experienced in mongoose db ?

digital ibex
#

oh

#

yes sabin

earnest phoenix
#

i got this even if my ip is whitelisted Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the database from an IP that isn't whitelisted. Make sure your current IP address is on your Atlas cluster's IP whitelist:

digital ibex
#

i'm still really confused

#

u sure its correct?

earnest phoenix
#

yes

#

i think maybe i got this because i use glitch

digital ibex
#

put the ip as 0.0.0.0 and that whitelists all ips

#

if u want to whitelist all ips then do that ^^

neat ingot
#

i've never had to specifically whitelist an ip for mongoose.

digital ibex
#

with atlas u have to

neat ingot
#

also, mongodb atlas is not mongoose.

#

thats an atlas issue, not a mongoose one.

earnest phoenix
#

oh

#

is my first stime with mangodb, i'm trying to understand how this works

neat ingot
#

idk, i've never used atlas 😦

#

i've been using mongodb and mongoose for years tho

digital ibex
#

i used it once

#

deleted that project

#

and coulsn't get back into it cuz it was being stupid

#

so

earnest phoenix
#

if i disable the whitelist everyone who has my link with password etc can acces my database, no ?

digital ibex
#

i just use localhost now

neat ingot
#

tbf no one should have your password

digital ibex
#

uhh, yeah

neat ingot
#

and yes, as that is the intended functionality.

earnest phoenix
#

no one has my password, i just want to be sure

#

and how can i turn off the whitelist ?

digital ibex
#

put the ip as 0.0.0.0

neat ingot
#

ive never had any mongodb whitelist so idk 😄

earnest phoenix
digital ibex
#

yes

#

wat

#

no

earnest phoenix
digital ibex
#

in db access

earnest phoenix
#

oh, ok

digital ibex
#

oh

#

yeah

#

thrn

#

in networmk access @earnest phoenix

#

mb

earnest phoenix
#

ok

#

if u using linux use sudo ufw allow PORT

#

but if u want to open port

digital ibex
#

yes

#

try to login now, see if u get any errors

earnest phoenix
#

i'm not getting any errors but now when i want to use my warn command i don't have any database created in app (for the warns )

digital ibex
#

u logged in tho?

earnest phoenix
#

yes

#

i think so =))

digital ibex
#

do u have a 'mongoose.connect' somewhere?

earnest phoenix
#

yes

digital ibex
#

ok, lets assume ur connected.

#

so first u have to do

#

is

earnest phoenix
#

oh nvm, i restarted the bot 2nd time and it worked

digital ibex
#

create a member model

#

make a folder called 'models'

#

and in that folder, create a file called 'member.js'

earnest phoenix
#

it worked man now

#

@digital ibexone more question, now if i want to delete an user from database i simply delete this?

digital ibex
#

yes

#

but also, when a user sends a message

#

their data will get created again btw

earnest phoenix
#

Cannot read property 'length' of null


    warns.find({ Guild: message.guild.id, User: user.id}, async (data, err) => {
      if(err) console.log(err)
      if(data.length) {
        const p = new MessageEmbed()
        .setColor("#ff9900")
        .setDescription(`:white_check_mark: **${user.user.tag} has not got any warns!**`);
        
        message.channel.send (p);
        
        return;
      }
      let f = new MessageEmbed()
      .setTitle(`${user.user.tag} has ${data.length} warns`)
      .setColor("#ff9900")
      .setDescription(data.map(d => {
        return d.Warns.map(w => `Moderator: ${message.guild.members.cache.get(w.Moderator).user.tag}, Reason: ${w.Reason}`).join("\n")
      }))
      message.channel.send(f);
turbid bough
#

where do you initialize data?

#

oh nvm

grizzled raven
#

wait you connected to mongodb from glitch?

earnest phoenix
#

@grizzled raven yes

grizzled raven
#

man what am i doing wrong

#

i wanna use mongodb on glitch so i can play around with mongodb

mossy vine
grizzled raven
#

last time i tried i was probably stupid bigbrain

#

yeah ik about atlas

#

idk just didnt know what to do i guess

earnest phoenix
#

@earnest phoenix if (!data.length) return //...

turbid bough
#

data is undefined tho

earnest phoenix
#

fu

#

ok

sudden geyser
#

In Node.js v14 you can just if (data?.length) but you'd need to check if data is valid for versions below / not supported yet.

earnest phoenix
#

@earnest phoenix the error is at embed

amber fractal
#

It's not efficient though

#

or not as efficient

rocky lintel
#

how would you check if a guild has a specific role?

turbid bough
#

?

#

specific role by name or id?

rocky lintel
#

name

#

@turbid bough

turbid bough
#

guild.roles.find(x => x.name == "nameofrole") or something like that

rocky lintel
#

but that finds it. i already tried that

turbid bough
#

so, it worked?

rocky lintel
#

nope

turbid bough
#

how so?

rocky lintel
#
    try {
    const verified = message.guild.roles.cache.has(r => r.name == `${permrole}`)
    return message.channel.send({embed: {
        color: 16733013,
        description: `Your permissions role has been saved! "${permrole}"`,
        author: {
            name: message.author.tag,
            icon_url: message.author.displayAvatarURL()
            }
        }});  
    } catch (err) {
        return message.channel.send({embed: {
            color: 16733013,
            description: `This is not a valid role in your server\n**This is case sensitive!**`,
            author: {
                name: message.author.tag,
                icon_url: message.author.displayAvatarURL()
            }
        }});  
    }```
turbid bough
#

v12?

rocky lintel
#
    let permrole = args.join(' ');```
#

mhm

turbid bough
#

why are you args.join() them?, nvm i think i know

rocky lintel
#

node 10

turbid bough
#

so, "verified" is never true?

#

you might also need to fetch() the roles

rocky lintel
#

nvm i fixed it

turbid bough
#

ok..

digital ibex
#

hi

#

does anyone know why when i add something onto the commands response, it doesn't even send the commands response?

#

i have

#
if (message.content.startsWith(`${prefix}${a.name}`)) {
/* do whatever i need to do here */
}```
amber fractal
#

did you restart your bot

digital ibex
#

yeah

#

so its like ```
;;command - i get a response
;;command h - no response

amber fractal
#

You'll need to show more code

digital ibex
#

what else would be effecting it?

amber fractal
#

code above it

#

If you're not getting a response, there's a reason

digital ibex
#

i have above it: ```js
let a = guild.commands.find((e) => args.join(' ') === e.name);
if (a !== undefined) {

}

amber fractal
#

have you checked to see if a was undefined?

digital ibex
#

i haven't

amber fractal
#

I would suggest doing that first

heavy marsh
#
 embed.attachFile({ attachment: canvas.toBuffer(), name: 'thumb.png' });

= v11

embed.setFile({ attachment: canvas.toBuffer(), name: 'thumb.png' });

= v12

amber fractal
#

just console.log(a) in between those lines

#

yes

#

are you trying to add an image?

#

attachFiles is v12

#

there is no setFile

heavy marsh
#

hmmm

digital ibex
#

a is undefined if the command doesn't exist

amber fractal
#

Yes, it may not be registering the command

#

it's step 1 to debugging

digital ibex
#

if it does its { name: 'command name', response: 'command response' }

#

it does register the command

viral mortar
#

hi

#

im trying to put my bot onto an online server

#

but im not too sure what im supposed to do

#

to server hoster is called heroku and my bot is in pyhton

#

can anybody help me

#

um

#

yeah my bot works fine

#

its just getting it to run on the server

#

:))

magic jackal
#

What is the issue? Is there somewhere you are stuck wi'th heroku?

earnest phoenix
#

(node:22760) UnhandledPromiseRejectionWarning: TypeError: guild.roles.fetch is not a function'

#

just how

quartz kindle
#

another Tim o_o

magic jackal
#

@earnest phoenix What is the code you're using?

#

also hi fren

quartz kindle
#

and what djs version

magic jackal
#

He uses v12

earnest phoenix
#

let guildRoles = await guild.roles.fetch()

#

v12

magic jackal
#

lets check testing

earnest phoenix
#

this didnt happen before

#

as soon as i added the mongodb code

#

it broke lol

magic jackal
#

message.guild.roles.fetch()

earnest phoenix
#

TJ your fault pouts

magic jackal
#

this works

#

LOL, I did nothing wrong, it must be something else

earnest phoenix
#

its in a guildCreate event

magic jackal
#

can you log the entire event and see what it returns for just guild.roles

#

if it returns the collection then it should be correct

#

Let me check my test bot

quartz kindle
#

it should return a GuildRoleManager

earnest phoenix
#

guild.roles returned GuildMemberRoleManager {

quartz kindle
#

then it should work

magic jackal
#

make sure it doesnt need cache either

earnest phoenix
#

it doesnt

quartz kindle
#

.fetch methods are always on the manager, not in the cache

magic jackal
#

there u go then

#

It works for me as well on my test bot

quartz kindle
#

you said this started after you added mongo?

earnest phoenix
#

yea....

quartz kindle
#

did you by any chance redefine some guild property?

earnest phoenix
#

nope

quartz kindle
#

or did something like guild.roles = await mongodb.get()

#

or whatever mongo does

earnest phoenix
#

i made sure not to

#

if the code helps

#
async run(client, guild) {
    const mongoURL = process.env.DBURL;
    const dbName = process.env.DBNAME;

    const dbClient = new MongoClient(mongoURL, { useUnifiedTopology: true });

    dbClient.connect(function(err) {
      assert.equal(null, err);
      console.log("Connected successfully to server");
    
      const db = dbClient.db(dbName);
    
      dbClient.close();
    });

    let guildRoles = await guild.roles.fetch(),
      mixerRole = guildRoles.cache.find(role => role.name === `🎵 Mixer 🎵`);

    if (!mixerRole) {
      guild.roles.create({
        data: {
          name: `🎵 Mixer 🎵`,
          color: '#FF0092',
        }
      });
    }
  }
quartz kindle
#

oh wait nvm

#

i see what you're doing

#

but try separating them anyway

earnest phoenix
#

alright

#

still

#

same error

quartz kindle
#

and if you remove mongo it works again?

earnest phoenix
#

nope

#

still errors

#

maybe the problem is that im using a command to emit a guildCreate event?

magic jackal
#

im testing your code now too

bitter sundial
#

do you create a fake guild object?

earnest phoenix
#

ah wha

quartz kindle
#

show the command that emits the event

earnest phoenix
#

oh wait

#

i think ik

magic jackal
#

Mine worked fine like this

client.on("guildCreate", async (guild) => {
    //console.log(await guild.roles.fetch())
    let guildRoles = await guild.roles.fetch(),
    mixerRole = guildRoles.cache.find(role => role.name === `🎵 Mixer 🎵`);
    if (!mixerRole) {
        guild.roles.create({
            data: {
            name: `🎵 Mixer 🎵`,
            color: '#FF0092',
            }
        });
    }
})```
#

This created my role

earnest phoenix
#

i figured it out

#

im so dumb lol

magic jackal
#

nice

#

was it scope?

earnest phoenix
#

client.emit("guildCreate", message.guild);

magic jackal
#

🐒

earnest phoenix
#

it had message.member instead of message.guild

quartz kindle
#

oh

magic jackal
#

ah pogey we did it reddit

quartz kindle
#

haha

earnest phoenix
#

never copy code

#

lol

quartz kindle
#

of course, thats why it returned GuildMemberRoleManager and not GuildRoleManager

#

i felt it was weird but i assumed i just didnt remember it right

earnest phoenix
#

how could Tim be wrong lol

quartz kindle
#

i can be wrong many times xD

earnest phoenix
#

i have yet to see you be wrong

quartz kindle
#

hahah

magic jackal
#

I know python, what do you need help with?

earnest phoenix
#

boolean?

magic jackal
#

What do you mean?

earnest phoenix
#

another question

#
.on(`nodeError`, table.addRow(`Music`, `❌`))
.on(`nodeConnect`, () => table.addRow(`Music`, `✔`))
#

TypeError [ERR_INVALID_ARG_TYPE]: The "listener" argument must be of type function. Received an instance of AsciiTable

#

it gave me that error

digital ibex
#

yes

#

cuz theres no function in that code

#

its meant to be

earnest phoenix
#

well ik that, but what can i do

#

cuz i still want to have it add to the table

digital ibex
#
event.on('listener', function => {
ee
}
earnest phoenix
#

im still confused....

#

wait

white anvil
#

thats not how you define an arrow function

earnest phoenix
#

i think i got it

#

i got it lol

#

thx

topaz fjord
#

oh

#

tf is that arrow function

#
event.on('listener', () => {
  ee.ee()
})
earnest phoenix
#

i accidently backspaced too far lol

magic jackal
#

Lets dev together in a screenshare @earnest phoenix

earnest phoenix
#

I write the guild.id when the bot joins a guild to a JSON file with writeFile(filePath, JSON.stringify(file)
How can I remove this file - which is the variable for guil.id - from the JSON file?

magic jackal
#

If you need to remove something you need to modify the object and rewrite it to the file

#

Read JSON from file --> modify object --> write to file

digital ibex
#

wut turtle

earnest phoenix
#

what do u mean with modify obj

digital ibex
#

i was showing example oop

quartz kindle
#

@earnest phoenix you know what an object is?

magic jackal
#

The JSON data is the object

earnest phoenix
#

yes

magic jackal
#

Java Script Object Notation

quartz kindle
#

this is an object ```js
{
key:value,
anotherkye:anothervalue
}

you have 2 copies of this object, one in the json file, another one inside the bot
#

you edit the object inside the bot, then you save it to the file

#

if you want to remove something, you remove it from the object, then write the object to the file again

earnest phoenix
#

but then it will be

{

}
``` right
magic jackal
#

you can also use delete object['key'] for this

quartz kindle
#

for example ```js
delete object.anotherkey;
fs.writeFile("file.json", JSON.stringify(object))

earnest phoenix
#

oke ill try that

#

thanks guys

magic jackal
#

Here is an example for you

#
let myjsonobj = {
  "employeeid": "160915848",
  "firstName": "tet",
  "lastName": "test",
  "email": "test@email.com",
  "country": "Brasil",
  "currentIndustry": "aaaaaaaaaaaaa",
  "otherIndustry": "aaaaaaaaaaaaa",
  "currentOrganization": "test",
  "salary": "1234567"
}
delete myjsonobj['otherIndustry'];
console.log(myjsonobj);```
#

Kinda old but you get the point

earnest phoenix
#

i guess 😄

magic jackal
#

XD

earnest phoenix
#

I did it

#

thanks guys ❤️

magic jackal
#

:)

tired nimbus
#

I noticed when I started using v12 you cant mention the user with message.author

#

Whats the correct method for this version?

acoustic depot
#

where my .NET club at

#

C# best language

tired nimbus
#

It looks like you have to use <@ >

magic jackal
#

@tired nimbus I personally use the ID to tag someone

#

Also if you need to mention the author you can do this message.reply()

tired nimbus
#

the id?

#

so I have to manually add <@ and > to the id?

magic jackal
#

like this

<@id>

tired nimbus
#

so it got removed in v12?

magic jackal
#

@magic jackal

#

this works too

#

I dont think so its probably renamed

#

are you trying to mention the author or a user?

tired nimbus
#

it used to be message.author would tag them

#

I only went to v12 for partials

magic jackal
#

try this message.author.toString()

#

If you want to reply to the author of the command sender, you can also use message.reply('wow mentioned')

tired nimbus
#

Thanks it worked!

#

Im new to v12 but im catching up

magic jackal
#

Yeah its a small learning curve

#

This is where I found it btw

#

this too

mystic violet
#

RangeError: Invalid WebSocket frame: invalid payload length 126 any idea why?

#

like

#

hm

#

Lemme show you code

cerulean hornet
#

does anyone know why my bot only shows 18k of users and the server has 103k?

earnest phoenix
#

I have one problem @quartz kindle,
when the bot joins a server it adds it to the file.
But it only removes it from the file when I reload the bot aka save the JSON file and node .

mystic violet
#

cache

earnest phoenix
#

How can I auto refresh this, or atleast be able to always remove the guild.id

mystic violet
magic jackal
#

@earnest phoenix detect it with a readfile, if it exists then delete it

quartz kindle
#

@earnest phoenix thats why you should always keep a copy of the file in memory

#

how are you reading the file? with fs.readFile?

#

@mystic violet where are you sending this to?

earnest phoenix
#

@magic jackal sorry TJ kinda got stuck with my brother lol maybe later

magic jackal
viral mortar
#

@magic jackal Thank you so much, it almost worked, i was under the impression i had to add something to my code, like web.py or something, but now when i upload it it says

magic jackal
#

ah nice, now its just a module missing

viral mortar
#

ok but in my code its there

magic jackal
#

discord is missing so you'll need to push that to the heroku server too

astral yoke
#

whats the function that lets you make a command that like lets you have the bot leaves servers