#development

1 messages · Page 915 of 1

rustic veldt
#

did you find the problem @quartz kindle

quartz kindle
#

as i said, literally just updated it and it works

#

dont copy and paste things in package.json, always install using the "add package" button

rustic veldt
#

thanks

neat ingot
#

omg wth

rustic veldt
#

but the boot is still not open

neat ingot
#

thats quite a difference comapred to socket.io

amber fractal
rustic veldt
#

@quartz kindle

#

but the boot is still not open

#

should have been active

neat ingot
#

yea i think for my next project ill certainly be using this uws to try it out 🙂

#

ty for the info guys

pale vessel
#

the boot lol

woeful sphinx
#

how long does bot verification usually take?

white anvil
#

like 2 weeks

woeful sphinx
#

ok thanks :)

solar quarry
#

how do i get my bot to send info to the discord bot list website for server count

gilded plankBOT
#

@solar quarry

To have your bot's server count displayed on DBL, please read the documentation on server/shard posting. Click here to see the docs.. You may also find #312614469819826177 useful; however it is strongly discouraged as most of the examples are extremely outdated.

delicate zephyr
#

@solar quarry Also what lang?

solar quarry
#

node.js

delicate zephyr
#

use that

solar quarry
#

what file do i put it in for it to run

pale vessel
#

your event file

solar quarry
#

so index.js

viral spade
#

you can try in the bots main file at first, you may want to set a cronjob that periodically sends the info

#

maybe thats included int he package

solar quarry
#

what about a function that runs every minute

neat ingot
#

dblapi updates counters periodically

#

you can use the setInterval() function to do a basic loop every x amount of time

#

(javascript)

royal portal
#

alright so I have a -cat command which generates a random cat image from an api in an embed

#

and sometimes it gives an error

#

embed.image.url: Not a well formed URL.

#

any ideas?

smoky spire
#

It's not a well formed url

neat ingot
#

do you have an example of one of these bad urls?

#

or does the api just return nothing but the error?

royal portal
#

it works but sometimes it just happens

viral spade
royal portal
#
 if (command === "cat") {
    if (message.channel.permissionsFor(message.guild.me).has(["SEND_MESSAGES"], true)) {
   
    let {body} = await superagent.get(`https://aws.random.cat/meow`)
    if (!body) return message.channel.send("Error sending cat, please try again.");
   
    let embed = new Discord.MessageEmbed()
    .setColor("RANDOM")
    .setTitle(":cat: Meow!")
    .setImage(body.file);
   
    message.channel.send(embed).catch(console.error);
  }
}
#

thats my code

#

now im getting error

smoky spire
#

I'm not familiar with the library but I doubt body.file is a url

royal portal
#

status 504

#

'Gateway Timeout'

#

what does that mean

#

I think the site is down

pale vessel
#

it is a url

#

it's the api, not the library

earnest phoenix
#

5xx status codes are server sided and you can't do anything about it

solar quarry
#

its not working

unique nimbus
#

You didn't define dbl

royal portal
#

so how do I solve the 'not well formed url'

solar quarry
#

i did

unique nimbus
#

Well it is not being seen

solar quarry
pale vessel
#

@royal portal console.log(body.file)

unique nimbus
#

dbl is not DBL

#

what

#

oh

#

nvm

#

I am blind

solar quarry
#

well thats what the npm package says to do

quartz kindle
#

are you trying to use dbl.on() outside of the ready event?

solar quarry
#

outside

quartz kindle
#

then you need to define dbl outside

solar quarry
#

ok now how do i get it to post the server count

quartz kindle
#

it will post automatically

solar quarry
#

is it meant to memory leak

quartz kindle
#

no?

solar quarry
#

well its doing that

neat ingot
#

how so?

solar quarry
quartz kindle
#

thats not a memory leak, thats a warning for adding too many event listeners

neat ingot
#

o0

quartz kindle
#

do you have multiple events of the same type?

#

like ```js
client.on("ready",() => {
// bla
})

client.on("ready",() => {
// bla
})

client.on("ready",() => {
// bla
})

solar quarry
#

nope

quartz kindle
#

put DBL outside of the ready event

solar quarry
#

ok now i am getting message is not defined

queen needle
royal portal
#

does anyone know how to fix the unknown messag

#

so if you want your bot to delete a messag

#

and another bot deletes it first

queen needle
#

@quartz kindle whats a top.gg token?

solar quarry
#

i fixed my issue

#

and a top.gg token is a token to put your server count on the website

queen needle
#

where do i get it though?

solar quarry
#

on the api section on the edit bot page

hollow prawn
#

does the first line of code outside of the if statement make the 2 other underlines of code redundant ?
as in I can access the target and timestamp thru the first one?

turbid bough
#

Yeah you could probably store alog into a variable

hollow prawn
#

aight, wasn't sure did I needed the secondary await and fetchAuditlogs

#

so that's why when I was making it I made it that way lol

turbid bough
#

Yeah await will make it so you get it in the variable

#

Without await, I I think you store the action so you can execute later

neat ingot
#

no just a promise

turbid bough
#

Idk I dont do js

neat ingot
#

like, if he calls the promise, it will store a promise, as well as sending it, if just the promise is referenced it will just be there for execution later

turbid bough
#

Without await, I I think you store the action so you can execute later

queen needle
#

so im trying to display the server count and i get this error Oops! Error: 401 Unauthorized

neat ingot
#

await isnt whats calling it, the () is. await makes no difference except if calling it with await, it will await execution, otherwise it will execute and move on immediately.

turbid bough
#

What's the code? For the 401 error

queen needle
#

nvm i got it

#

i had the wrong token

turbid bough
#

kk

keen dagger
wicked pivot
#
 const webhookMsgAtt = await Sondage.send('', {
          username: message.author.username,
          avatarURL: message.author.avatarURL,
          embeds:[EmbedAtt]})
            await webhookMsgAtt.react('1️⃣');
            await webhookMsgAtt.react('2️⃣');```
(node:19531) UnhandledPromiseRejectionWarning: TypeError: webhookMsgAtt.react is not a function
v11
sick cloud
#

@slender thistle so thing is i want it to only replace at that index

slender thistle
#

Technically you could go the hard and stupid way and convert the string into list, change the characters, and join the elements back

sick cloud
#

eh

#

it just has to be simple

keen dagger
#

Thanks

sick cloud
#

i was hoping i could do that sort of string[i] method

#

got any other ways other than converting to a list shiv

slender thistle
#

Creating a new string with iterations?

bold dock
#

I'm creating a avatar/experience/profile generator HyperS

#

It was a pain in the ass

sick cloud
#

i have no idea how you'd do that shiv

slender thistle
#
newstr = ""
for i in range(0, len(oldstr)):
    if i != someindex:
        # add old symbol
    else:
        # add new symbol

but do you really need to bother with the precise indexing

sick cloud
#

yes

#

also um

#
  File "main.py", line 64, in encrypt
    elif text[index].isupper() and text[index + 1].islower():
IndexError: string index out of range
#

@slender thistle is this something to do with doing index + 1?

#

like 64 is pretty deep in the func so why didn't it error earlier

slender thistle
#

The third argument in replace isn't the index

sick cloud
#

nope its not erroring on replace

#

it's erroring on the elif

#

read

slender thistle
#

maybe

sick cloud
#

also for index in range(0, len(text)):

slender thistle
#

len(text) - 1 blobshrug

sick cloud
#

ok

#

um

#
File "main.py", line 30, in encrypt
    for index in range(0, len(text - 1)):
TypeError: unsupported operand type(s) for -: 'str' and 'int'```
#

wha

amber fractal
#

did you mean to put the -1 outside the len

slender thistle
#

minus in the wrong place

sick cloud
#

oh duh ok

#

yep

#

well, works i guess, but it replaces nothing

#

guess that replace function i did was dumb

slender thistle
#

replace returns an edited string

sick cloud
#

i made a custom replace

#

but its dumb

#

also, can you do inline stuff

#

like if text[index] == ' ': arr.append('_')

#

on one line

slender thistle
#

Sure

sick cloud
#

cool

#

my function has no support for numbers or actual symbols lol

slender thistle
sick cloud
#

turns out this entire function sucks because i don't know what letter it is when i try to decrypt

#

Hello becomes &!!!!
(& for uppercase letter and lowercase next letter)
(! for lowercase letter and lowercase next letter)

#

so i have zero way of telling what it is lmao

amber fractal
#

Convert to binary, bit shift, convert back to text mmulu

#

Military grade encryption 👌

knotty steeple
#

use special characters for each letter

sick cloud
#

we have to make it by hand for school

#

and only use basic kbd letters/symbols

#

basically any QWERTY layout thing

knotty steeple
#

~ ; -

#

etc

sick cloud
#

!@#$%^&*()_+1`234567890-=qwertyuiop[]\QWERTYUIOP{}|asdfghjkl;'ASDFGHJKL:"zxcvbnm,./~ any of these

and yes i just ran my finger over my keyboard

sudden geyser
#

can't you just a-zA-Z

knotty steeple
#

~`!@#$%^&*()_-+=[]{}\|/.,;

#

all these

#

u can use

sick cloud
#

but there's 62 chars as a base, a-z, A-Z and 1-0

#

as well as loads of symbols

knotty steeple
#

idfk then

#

i remember making ascript which just did the letter a with some special characters

#

was a mess

sick cloud
#

this is for school lol

#

ok so i counted them

#

there's 94 chars

knotty steeple
#

gl lmao

#

look at how base64 works

magic jackal
#

Can anyone help me with a question real quick on an event that is returning 3 times

#
   console.log(path)
})```
#

this is returning 3 times, how can I check if it repeats?

earnest phoenix
#

how i do youtube bot?

sudden geyser
#

depends. what do you want it to do

delicate zephyr
#

@magic jackal are you spamming CTRL+S

earnest phoenix
#

@sudden geyser like mee6

delicate zephyr
#

like every dev does

earnest phoenix
#

when i upload a video

sudden geyser
#

auto save gang

topaz fjord
#

jetbrains ide gang

magic jackal
#

no, it just randomly returns 3 times and for some reason I cant figure out why, probably because of file changes that are still happening but i want to check against that. @delicate zephyr

#

idk how to check it efficiently

#

Here is the package

#

its weird

delicate zephyr
#

why are you watching for a file just out of curiosity

magic jackal
#

im watching my sharex folder for new file additions thats it

#

the 'add' event is just as bad

delicate zephyr
#

idk, ive never used chokidar

magic jackal
#

hmm

earnest phoenix
#

theres lots of ways

nimble hazel
#

What code can I use to make my status: >help | On (number) servers?

earnest phoenix
#

say me 1

#

lavalink

magic jackal
#

I could use the watcher.close(); after it returns but idk about that

earnest phoenix
#

@nimble hazel client.guilds.size

nimble hazel
#

thanks

earnest phoenix
#

np

knotty steeple
#

v11?

earnest phoenix
#

me?

knotty steeple
#

no

#

@nimble hazel

nimble hazel
#

yea?

earnest phoenix
#

you are 11v or 12v?

knotty steeple
#

ok nvm

earnest phoenix
#

lavalink
@earnest phoenix npm?

nimble hazel
#

Node version?

sick cloud
#

on v12 it changed to client.guilds.cache.size afaik

#

@nimble hazel discord.js version

nimble hazel
#

ahh

#

12

sick cloud
#

console.log(require('discord.js').version)

#

ye

#

use <client>.guilds.cache.size

nimble hazel
#

thx

earnest phoenix
#

yeah theres a node package for bots

#

@earnest phoenix
wait

#

but the main program is java iirc

#

u say music?

#

yes

#

i dont want that

#

i want this

#

oh you want a youtube search?

#

wait

#

like this @earnest phoenix

nimble hazel
#

@sick cloud Which number thing goes in the <client> part? is that the id or secret?

sick cloud
#

the client

#

like client or bot

#

whatever you use for your <this>.on('message') and such

#

<this> is the client

nimble hazel
#

okay

sick cloud
#

@earnest phoenix to do that, you'd need a pubsub server and knowledge of XML, websockets, subscriptions and some other bits

#

good luck

earnest phoenix
#

ty xd

#

how i can do vote event?

#

like antispam

knotty steeple
#

read up

earnest phoenix
#

ty

knotty steeple
#

go to my bots section

earnest phoenix
#

ok

#

now?

knotty steeple
#

go on ur bot

earnest phoenix
#

now?

#

view or edit?

agile latch
#

what is the deadline for the bot to be accepted or disapproved?

knotty steeple
#

jesus christ

pale vessel
#

this is sad to watch

knotty steeple
#

click on ur bot

earnest phoenix
#

oh :v

knotty steeple
#

generate token

knotty steeple
#

oh yea

#

u need to be approved

pale vessel
#

pepega

earnest phoenix
#

oh xd

knotty steeple
#

i forget lmao

#

shut @pale vessel

earnest phoenix
#

password?

pale vessel
#

any password

earnest phoenix
#

random?

#

ok

knotty steeple
#

ok im gone u deal with

#

this

pale vessel
#

no

earnest phoenix
#

no what?

pale vessel
#

nothing

earnest phoenix
#

ok

neat ingot
#

dbl api supports discord.js v11 and 12 i beleive - if thats what your asking.

queen needle
#

.setFooter("Requested by", message.displayAvatarURL)

#

it doesnt display there picture?

pale vessel
#

message what

#

message is not a user

earnest phoenix
#

@queen needle message.author.displayAvatarURL()

pale vessel
earnest phoenix
#

I think so

#

I am noob at developing

queen needle
#

i realized that after what @pale vessel said

#

i jsut forgot the ()

earnest phoenix
#

But i know how to make avatar command bloblul

#

@queen needle you forget to add author also

pale vessel
#

if they're on v11 then it's displayAvatarURL

#

on v12 it's a method

queen needle
#

after what @pale vessel said i added author but i just forgot ()

earnest phoenix
#

Ok

clear wraith
#

(node:4965) UnhandledPromiseRejectionWarning: TypeError: message.guild.channels.find is not a function

#

??

#

code:
const channel = message.guild.channels.find(channel => channel.name === "reports");

summer torrent
#

what is your djs version

clear wraith
#

v12

pale vessel
#

read docs

earnest phoenix
#

how would I change command.execute to be compatable with module.exports.run

sudden geyser
#

well exports.run is like your execute function. They do the same thing.

#

So it's a matter of how you call it in your message listener.

#

It isn't magic. It's just a set of instructions you give it.

earnest phoenix
#

so command.execute should work with module.exports.run

sudden geyser
#

I've no idea how you structured it. How did you do it before, and how are you doing it now?

earnest phoenix
#

I tried switching command.execute for module.execute.run

#

well not EXACTLY that

#

but

sudden geyser
#

Like did you do this before? js module.exports = { // ...stuff execute() { // more stuff } // or `execute: async () => {...}` };

earnest phoenix
#

yea

#

but I'm using an older piece of code, one from my scrapped bot

#

it uses module.exports.run

pale vessel
#

just change run to execute lol

sudden geyser
#

Then why not do what flaz said or properly go to where you call the function and instead do .run() instead of .execute()

earnest phoenix
#

I'll try both

#

right after im finish driving my pc up the fucking wall unknowingly

sudden geyser
#

what

earnest phoenix
#

vsc is not responding

sudden geyser
#

have you tried killing it

#

or at least the process

pale vessel
#

you're coding a nodejs bot, just use a light notepad

#

that's what I do

half bluff
#

Soooo I've got a question. I've been waiting for my bot to be reviewed and watching some of the rejections in #mod-logs. While I'm confident my bot has no issues that would cause rejection, I did see some curious rejection issues regarding privacy. So I had a question about a feature I plan to implement in the future.

I have a separate bot that functions only on one server, this bot maintains a database for verified users and their verified account (think of an account like YouTube tied to your Discord). I plan on exposing this data to my new bot and using it for ease of use (so instead of typing in account names they can mention the user).

The question is regarding privacy - would this cause issues? I see nothing in #rules-and-info regarding it but I saw rejections with bots that had a userinfo command that let people lookup userinfo on users not in the server. So I assume my planned functionality would be fine as long as it only resolves for users in the server where the query is ran?

#

If that makes sense.

pale vessel
#

if the user knows that their information will be public, it should be fine

#

and you already made it server members only

#

seems good to me

#

but let's wait for a moderator to respond

earnest phoenix
#

Cannot read property 'run' of undefined

#

i'll try flaz's thing

half bluff
#

Well, it's a bit weird. Bot A is on Server A, Bot B is on Servers B - Z. They don't share a mutual server. But Bot B uses the database from Bot A to get this data.

pale vessel
half bluff
#

hmmm maybe I'm overcomplicating it. I should probably just add the functionality to Bot B and not share databases. To let users selectively opt in again.

#

Problem is I want to put Bot B in Server A so I can take redundant commands out of Bot A. But I want to maintain feature parody, which I can't without implementing this feature I mentioned.

#

I could restrict it to feature parody only works in Server A I guess

coral trellis
#

Well it comes into question of consent as they may not want their data being exposed publicly like that

#

Ontop of the fact that they gave that specific application consent and not the new one for a specific use

half bluff
#

True. And I don't have any nomenclature in Bot A regarding this usage (public data).

#

Sounds like I should just reimplement the feature in Bot B and specify where the data will be used.

#

Means I have to maintain feature parity between Bot A and Bot B though instead of supplementing Bot A with Bot B. But that shouldn't be too much of a hassle.

queen needle
#
if(message.content.startsWith(prefix + 'yeet')){
    let fish = args.join("")
    if(!fish) return message.reply("Please say something")
    
    fs.writeFile("./idk.json", JSON.stringify(fish), err => {
        if (err) console.error(err);
      })
    await message.reply(fish + " has been saved")
  }
});```
#

everytime i do ^yeet <text>

#

it saves it but if ido it again it just replaces the already existing text

pale vessel
#

it's supposed to

queen needle
#

how?

pale vessel
#

you're writing to it

#

it'll replace existing data

#

unless you applied some flags

queen needle
#

wdym flags?

pale vessel
#

like the append flag

#

which adds the data to the file instead of overwriting it

queen needle
#

js { flag: 'a+' }

#

thank ou

#

how could i save it by id so they could do a command like ^get and it would grab the first thing that is from their id in the file

#

and sends it

pale vessel
#

might as well have a database for that

queen needle
#

would it work with quick.db?

pale vessel
#

uhhh sure

distant plank
#

Please help me, I am trying to store channel id in a mysql database, the column is of type BIGINT, when I send the id, in the table it is shown correctly, but when I get it in my code, it changes the last 3 numbers by 0

pale vessel
#

enable bigint in MySQL connection options

#

happened to me

distant plank
#

Oh

#

And where are the connection options :'c

pale vessel
#

smh

#

find it in the npm description

#

search for bigint

distant plank
#

:0

#

@pale vessel i love you :D xD

pale vessel
#

cool coincidence because i had the same problem 2 days ago

distant plank
#

xD

#

I almost restart my table xD

pale vessel
#

i actually did that

#

before finding out

#

but I didn't lose much fortunately

distant plank
#

Thanks for help me

#

:D

pale vessel
#

no problem

queen needle
#

flazepe is one of the best people to get help from

#

because they dont spoon feed you and are nice about he;ping you unless you are a idiot

robust moth
copper cradle
#

the error literally says it all

#

that database doesn't have a bot column

pale vessel
#

lmao imagine storing guild name

sudden geyser
#

I hope those variables are sanitized.

pale vessel
#

i see .get

#

never mind

#

nope

#

let me set the prefix to " // for a moment

queen needle
#
if(message.content.startsWith(prefix + 'sitem')){
    if(!args[0]) return message.reply("Please include something to store")
  db.set('stored', args[0])
  }
  if(message.content.startsWith(prefix + 'stored')){
      let f = db.get('stored') 
    message.author.send(
  f
    )
  }
})```
#

how could i make it so if they already have something stored and go to add something else it doesnt get rid of the first thing they have stored

pale vessel
#

how about the append flag

queen needle
#

Does that work for quick.db?

pale vessel
#

oh haha

#

it could

#

look around in their docs

#

i'm not sure since i don't use it

queen needle
#

okay

#

i mean i could use three commands

#

one sets it one stores it one shows it

pale vessel
#

it doesn't seem to support it

#

which is understandable since it's just a db

queen needle
#

are you sure?

#

i think i just figured out how to get it to work ijust have to test it now

#

nvm

copper cradle
#

lol

queen needle
#

Do you know if any database could do something like that

rose hornet
#

I had a problem, was there anyone to deal with it?

summer torrent
#

what is your problem

slender mountain
#

wdym

#

I don't know what you mean

#

what do you mean coming to your bot?

#

do you mean on the approval process?

#

that can take several days up to over a week

#

Okay what are you talking about then

summer torrent
#

what

earnest phoenix
#

@pale peak your bot was declined so you can’t update it on the site if that’s what you mean

#

You’ll have to resubmit it after resolving the issue

summer torrent
#

what do you mean by "update"

earnest phoenix
#

^

summer torrent
#

are you turkish

earnest phoenix
#

this hurts

#

Hey sorry, I am new to making discord bots. I was following a tutorial and they told me to type "node ." to start up the bot it came back with an error message, I don't know if this is a common problem but does anyone know another way to get the bot online?

#

How far into the tutorial are you?

#

Did you make a file called index.js?

#

If so cd into the folder and do “node index.js”

#

how would i cd into the folder?

#

Okay, one second, sorry

#

I did that and it replied with "code:'MODULE_NOT_FOUND'"

green vale
#

I'm working with modules and classes in Node (for my Discord.js bot); how would I pass an object (message) from my index file to my file where all of the classes are stored?

#

@earnest phoenix Also, you probably didn't run npm install

earnest phoenix
#

It replied with:

(alot of other stuff)

"up to date in 0.715s
found 0 vulnerabilities"

#

ima punch somebody if I needed to update the software -_-

tight plinth
#

@green vale use module.exports s m h

green vale
#

yes but apparently the people at djs think that i'm absolutely stupid dumB for using module.exports = message

#

@earnest phoenix try node . now

cinder patio
#

Pass them as parameters for the class constructor? Using module.exports = message IS pretty dumb

tight plinth
#

Well what you want to do

green vale
#

Yeah

#

That's what I did

tight plinth
#

Like a message.js file?

green vale
#

Nah, I have that for my main bot already

tight plinth
#

To store the code for the message event?

#

Oh

green vale
#

I feel like the code is cleaner if I spread it out between files

#

But yeah I did const [variable] = new exampleClass(message)

earnest phoenix
#

@green vale , it replied with "await is only valid in async function"

tight plinth
#

Make it async

green vale
#

Yes

#

Wait he's new to Discord bots, he probably doesn't know how to do that

tight plinth
#

No

green vale
#

well actually it's just async function instead of function so

tight plinth
#

If you want to program a discord bot you MUST know your programming language

green vale
#

I learned JS from DJS

tight plinth
#

bad

green vale
#

I like to learn languages in practice, and just search up or ask whenever I have a question with something

earnest phoenix
#

i guess "async === true"?

green vale
#

No

tight plinth
#

no

#

show your code

green vale
#

(Remove the token ofc)

earnest phoenix
#

const Discord = require('discord.js');
async === true
const client = new Discord.Client();

client.once('ready', () => {
console.log('Ready!');
});

client.login(' Token removed ofc ');

green vale
#

no

tight plinth
#

no

green vale
#

this

#

Wait there isn't even an await in here

earnest phoenix
#

learn the language you're working with before making a bot in it 👏

green vale
#

@earnest phoenix What's this file called?

earnest phoenix
#

index.js

tight plinth
#

first: remove async === true, this makes no sense

earnest phoenix
#

I did

#

forgot to remove it

tight plinth
#

is the index.js THIS index.js?

green vale
#

yes

#

is it

tight plinth
#

it can be one of your dependencies

#

oh

green vale
#

Try running node index.js in the dir that you have your code in

#

Is it possible to use a class before declaring it?

copper cradle
#

ok so I made a small game Console game engine in cpp

green vale
#

oh

cinder patio
#

no it's not

earnest phoenix
#

It kinda did nothing, I think I screwed up in a lot of places

green vale
#

oh

earnest phoenix
#

my coding classes taught me nothing about this

green vale
#

they probably taught another lang than JS--what language did they teach you

earnest phoenix
#

nothing

#

they taught me legit nothing

green vale
#

w o a h

earnest phoenix
#

or you werent paying attention

#

nope

tight plinth
#

they taught me legit nothing
@earnest phoenix who

earnest phoenix
#

my coding teachers

tight plinth
#

oh

green vale
#

what the hECK am i doing wrong

tight plinth
#

mines r starting a lesson about javascript LOL

earnest phoenix
#

they used the same website that 1st graders use i swear

green vale
#

what's that website

earnest phoenix
#

i dont remember

#

our cs class was just office for the first year and then second year we started doing cpp and c# lol

green vale
#

we did pretty basic things in cs

#

for the first half of the year

earnest phoenix
#

yeah same thing here

green vale
#

then, we went ahead and learned how to code in Docker Python

earnest phoenix
#

second semester was much more interesting

#

Im gonna try doing this in the morning

robust moth
#

How can I get all row data for same guild in sqlite

earnest phoenix
#

its too late for me to do anything

#

goodnight

#

ty for trying to help

green vale
#

I forgot most of the things for Python since they teach in a much more different way that I usually effectively learn, but I'm gonna relearn it soon

#

aaaaaaa wHY isn't it defining message even though i added it in constructorr

mossy vine
#

on a scale of 1-10 how normal is it for a websocket connection (discord bot) to close every few hundred events with code 1005

viral torrent
#

Why my bot, haven`t permissions to #commands ?

tight plinth
#

it has

viral torrent
#

umm

#

no

tight plinth
#

wats ur bot

viral torrent
#

@small osprey

tight plinth
viral torrent
#

But it's in other language, so it will not spam

tight plinth
#

still

viral torrent
#

The help command is .pomoc

tight plinth
#

common prefix = cant talk

woven sundial
#
if(body.populationByDistrict["Blam Canyon"]===undefined)return message.channel.send("Erreur, la ressource demandée n'est pas disponible\nCode Erreur à signaler au développeur : **"+body.error.id+"**");```
I'm trying to see if the property "Blam Canyon" exist in an online .json file
but it returns me 
```js
TypeError: Cannot read property 'Blam Canyon' of undefined```
#

thats weird bc I'm checking if its undefined and give an action to if yes

#

v info :
djs 11.5.1
nodejs 11.9.0

earnest phoenix
#

Any one can give me questions and answer json data bass please help me

fringe bane
#

A what now?

#

A JSON database?

#

What?

earnest phoenix
#

no

#

a data bass

#

a bass, with data

#

lmao

fringe bane
#

Oh yeah sorry, a data bass; either way

#

Generally not a good thing if you want to use a file database. Just try to use a real database like MySQL, PostgreSQL, MongoDB or whatever

#

Good luck with using a file database when you use something like Heroku

strange mango
mossy vine
#

yes

#

use css

earnest phoenix
#

M

true ravine
#

Anyone here use chart.js on the server side?

#

I know I've seen people's bots here use it

#

I can't seem to install it without loads of angry errors

earnest phoenix
#

how i can see channel name with channel id

#

get the channel name and channel id?

#

yes

#

no by channel id

#

with channel id to get channel name

#

ooh

#

then there is a thing to get channel by id

#

you should look in the documentation

#

wait my name is changed ?

#

YEY

cloud heart
#

A simple *get" ? For example with client.channels.get('id", "youtIDChan"); ?

earnest phoenix
#

yeah

#

except i have bot

#

instead of client

#

and then channel name ??

mint sedge
#

ppppp

cloud heart
#

That's just a variable name, there is no problem

earnest phoenix
#

ok

cloud heart
#

What

earnest phoenix
#

????

cloud heart
#

To get your channel, try bot.channels.get("id", "ChannelID"); and just see the doc

earnest phoenix
#

ok

#

nvm

nocturne grove
#

Hey, is there a difference between client.setInterval() and just setInterval()?

cinder patio
#

client.setInterval() will clear the interval when the client is destroyed

nocturne grove
#

ohh thank you. So also when the client loses connection?

cinder patio
#

I am not sure, the docs just say that

nocturne grove
#

oh sorry I thought it wasn't in the docs

#

thanks anyway

quartz kindle
#

probably when you do client.destroy()

nocturne grove
#

oh

#

but why would you even use client.destroy(), you can just restart your program or am I missing something?

quartz kindle
#

if for some reason one wants to close a bot and start another bot on the same process

#

while doing/managing other things

nocturne grove
#

ohh

#

thanks

#

will just keep my 'normal' interval then 🙂

#

oh and another thing, is a retryLimit in the Client constructor of 5 okay? I know what's doing and I hate it when I get 'User aborted a request'

cinder dove
#

Any ideas on how to promote your bot for a faster growing community? 🙃

Apparently collaborations are considered advertising by some.

grizzled raven
#

i didnt promote my bot but its kinda big i guess

#

just make a good bot

cinder dove
#

That step is almost done ^^

modest maple
#

a good bot is never finished lol

#

always somthing todo

cinder dove
#

Kind of. I was first trying to reach a point where I only need to fix things instead of adding things

#

Seems like coding 1 full week isn't enough, still having so many ideas to implement.

mossy vine
#
  1. make a good bot
  2. market it well
#

you may make the best bot ever but if noone knows about it or finds it unappealing its worhtless

cinder dove
#

Yeah, I really need to work on my bot descriptions

#

And ways to market it ><

earnest phoenix
#

hello

#

i have a problem

#

when i put this

#
            return message.channel.send(message.guild.id)
        }```
#

it return me this in the text channel

#

698550448273227856

#

but when i put hits

#
            return message.channel.send(message.guild.id)
        }```
sacred crystal
#

That if statement is useless btw

earnest phoenix
#

dont work

sacred crystal
#

Oh

#

Put the Id in speech marks

earnest phoenix
#

what?

#

oh. with ``

#

now work

#

thanks

#

I tested api with servers on site and deleted the code also uninstalled dbapi.js, but its still bugged and shows 155 but there are 300 ;d

sinful belfry
#

@earnest phoenix what is your bot id?

earnest phoenix
#

@sinful belfry 684805224573042688

sinful belfry
#

how come you unistalled dblapi.js?

earnest phoenix
#

ubuntu vds, npm remove dblapi.js

sinful belfry
#

why did you uninstall it though?

cinder patio
#

and you are expecting your bot stats to get updated or am I missing something

earnest phoenix
#

i just tested

#

i want to be removed

#

servers from my page

sinful belfry
#

hmm

earnest phoenix
#

is wrong number

sinful belfry
#

ok fair enough

#

let me look into this

earnest phoenix
#

k

twilit rapids
#

If you remove it, it will show N/A, wouldn't you prefer to update the count to the correct number?

earnest phoenix
#

no i want n/a

nocturne grove
#

oh and another thing, is a retryLimit in the Client constructor of 5 okay? I know what's doing and I hate it when I get 'User aborted a request'
does anyone know?

sullen night
#

guys, how long can it take to approve my bot?

twilit rapids
#

-faq 2 @sullen night

gilded plankBOT
twilit rapids
#

@nocturne grove d.js I assume?

earnest phoenix
nocturne grove
#

yes Timo

#

@twilit rapids

twilit rapids
#

I mean, why not leave it to infinite?

slender wagon
#
console.log("Servers:");
  bot.guilds.forEach(guild => {
    console.log(" - " + guild.name);
  }``` On discord.js 11.6.1 this worked fine.
how do i get it to work on 12.0.2
nocturne grove
#

isn't default 1?

#

lemme check

twilit rapids
#

I see

nocturne grove
#

so you mean, change it to infinite?

twilit rapids
#

Default is indeed 1 mb

slender wagon
#

is someone able to help me

twilit rapids
#

I mean, if 5 solved it sure I guess

nocturne grove
#

@slender wagon change bot.guilds to bot.guilds.cache

twilit rapids
#

@slender wagon read the changelogs, it's bot.guilds.cache rather than- ok then

slender wagon
#

thank you!

nocturne grove
#

okay so 5 isn't harmful or something?

twilit rapids
#

not really

nocturne grove
#

and infinite isn't harmful too?

twilit rapids
#

I mean if Discord has an outage then it would try forever which isn't the best I guess

nocturne grove
#

oh okay. Thank you

snow urchin
earnest phoenix
#

download?

snow urchin
#

this part all works.

earnest phoenix
#

by the way

#

you can just pass the buffer

#

saving to a local file takes time

#
const download = `https://...`
const attachment = new discord.MessageAttachment(download, 'achievement.png')```
#

Idk if it will work on not because i have never used MessageAttachment 😅

#

https://... means that link in bracket

quartz kindle
#

MessageAttachment takes a buffer or a stream

earnest phoenix
#

how i can make a timer ?

#

nvm

quartz kindle
#

you still need to do the downloading of the file yourself

earnest phoenix
#

i will google

white anvil
#

let start = Date.now()
let time = Date.now() - start

quartz kindle
#

passing just the url will not work, as MessageAttachment doesnt download it for you

earnest phoenix
#

Hm

#

Thanks

quartz kindle
#

but like cry said, you dont need to download it to disk as a file

#

you can download it and keep it in memory, as a buffer, or as a stream

hasty lotus
#

hey, i'm trying to make a log when my bot is added to a guild, and i'm trying to make an invite link, to let admins join the server if there is any problem. My code looks like this :

let channel = bot.channels.get("707638470297780254")

    let defaultChannel = "";
    
    guild.channels.forEach(channel => {
        if(channel.type == "text" && defaultChannel == "") {
            if(channel.permissionsFor(guild.me).has("SEND_MESSAGES")) {
                defaultChannel = channel;
            }
        }
    })
    let inv = defaultChannel.createInvite()

    let embed = new Discord.RichEmbed()
        .setTitle("Nouveau serveur")
        .addField("Propriétaire du serveur :", `${guild.owner} (${guild.owner.id})`)
        .addField("Nombre d'utilisateurs sur le serveur :", guild.memberCount)
        .addField("Nom du serveur :", guild.name)
        .addField("Région du serveur :", guild.region)
        .addField("Invitation vers le serveur :", inv)

    channel.send(embed)```

And the var "inv" is just [object Promise]. Does anyone know how i could crete an invite link to the guild ?
#

ps : ping me i don't read every messages 😋

quartz kindle
#

creating invites to other guilds is a privacy breach. guild owners should invite you to their server if there is any problem, not you invade their server without permission.
other than that, createInvite() returns a promise, you have to await it

tight forum
#

@earnest phoenix

#
bot.guilds.cache.reduce((a, b) => a + b.memberCount, 0).toLocaleString()
#

try it please

#

for count

earnest phoenix
#

Ok

tight forum
#

@earnest phoenix what happened?

#

did you try it?

earnest phoenix
#

Didn't work

tight forum
#

maybe its a bug

pale vessel
#

not a.memberCount?

tight forum
#

i think it didnt work for him

#

so i gave this code

white anvil
#

yeah and its meant to be a.memberCount

tight forum
#

its working btw

nocturne grove
#

you guys are smart: How can I display something like ``hi`` in this format?

white anvil
#

just do it like that in ur output

nocturne grove
#

no that sadly does not work

white anvil
#

show code

nocturne grove
#

just try it yourself here

#
\`${roleName.replace(/`/g, '\\`')}\````
this doesn't help
#

lol that `

pale vessel
#

what are you doing

white anvil
#

whats the problem

#

why are you replacing

#

if u want to use codeblock just do

#

"`ur text`"

#

and it will output as ur text

nocturne grove
#

``hi`` this should be in the code block

white anvil
#

or are u trying to escape it

nocturne grove
#

and that doesn't work

#

yes

pale vessel
#

probably because the role could have the character `

nocturne grove
#

yes that's why I'm asking

#

I look the example ``hi``

pale vessel
#

``wwq`

white anvil
#

i dont think u need to double escape

pale vessel
#

test

white anvil
#

just do '\`'

#

in the second arg of ur replace

copper cradle
#

double works too

nocturne grove
#

wwq

copper cradle
#

they're just escaping it

nocturne grove
#

a single is not right acc to eslint

white anvil
#

well eslint is bad

#

u should just use ignore-line that

#

or smth

copper cradle
#

oh wait

#

you meant outside of discord

#

yeah 1 ` is the correct way

nocturne grove
#

but try typing it yourself (and replace it), it doesn't work for me

#

no in Discord

copper cradle
#

hi` `

#

fuck

tight forum
#

crap

nocturne grove
#

it's very frustrating

#

but does anyone have any idea?

viral spade
#

Anyone has experience with hetzner vps? is it recommendable for a bot / databases ?

nocturne grove
#

``hi``

#

😱

#

that was with a space

#

``hi``

#

okay

#

but you can see the space 🤔

#

what if a add a zero width space

regal saddle
#

What are you trying to do?

nocturne grove
#

you guys are smart: How can I display something like ``hi`` in this format?
this

regal saddle
#

You mean for your bot?

nocturne grove
#

yes

copper cradle
#
``hi``
regal saddle
#

Yes

pale vessel
#

but you can see the space 🤔
@nocturne grove i can't see the space

nocturne grove
#

wait seriously? @pale vessel

#

I see difference between okay and ``okay``

pale vessel
#

"````hi````".replace(/^`/, "` ").replace(/`$/, " `")

nocturne grove
#

a bit tho

pale vessel
#

maybe this?

nocturne grove
#

@copper cradle that's not so nice in a sentence, and that's going to give the same problem if you add `

#

will try that

#

@pale vessel that gives `hi` instead of ``hi``

pale vessel
#

then double it

#

"````hi````".replace(/^`/, "` `").replace(/`$/, "` `")

#

wait

#

there

nocturne grove
#

hmm that gives hi

#

(after your edit)

pale vessel
#

````hi````

nocturne grove
#

also if you try with 2 `?

pale vessel
#

what do you mean

#

ok

#

wait

viral torrent
#
2020-05-08T12:57:19.055167+00:00 app[worker.1]: (node:4) UnhandledPromiseRejectionWarning: Error: 401 Unauthorized
2020-05-08T12:57:19.055169+00:00 app[worker.1]:     at IncomingMessage.<anonymous> (/app/node_modules/dblapi.js/src/index.js:118:25)
2020-05-08T12:57:19.055169+00:00 app[worker.1]:     at IncomingMessage.emit (events.js:322:22)
2020-05-08T12:57:19.055170+00:00 app[worker.1]:     at endReadableNT (_stream_readable.js:1187:12)
2020-05-08T12:57:19.055170+00:00 app[worker.1]:     at processTicksAndRejections (internal/process/task_queues.js:84:21)
2020-05-08T12:57:19.055286+00:00 app[worker.1]: (node:4) 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(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
2020-05-08T12:57:19.055354+00:00 app[worker.1]: (node:4) [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.
pale vessel
#

``hi``

#

fine by me

#

regex ftw

viral torrent
#

Umm

earnest phoenix
#

Thx

knotty steeple
#

huh

pale vessel
#

nani nani

nocturne grove
#

hmm will copy again then 😂

pale vessel
#

yeah i edited it like 3 times

nocturne grove
#

ohhh

pale vessel
#

maybe you copied the wrong revision

nocturne grove
#

yea xd

#

not it still doesn't work, but who says your output gets displayed the way you want in Discord?

pale vessel
#

come again

nocturne grove
#

wdym

#

oh wait you send it here in this chat

#

``hi``

grizzled raven
#

what are you trying to do?

viral torrent
#

Why my bot stats are: { shards: [] } ?

#

I wan't server count

nocturne grove
#

sending things with multiple ` in single-line code @grizzled raven

pale vessel
#

so does it work or not

nocturne grove
#

yes but it doesn't work

pale vessel
#

what

nocturne grove
#

wait maybe it's my code

pale vessel
#

yeah probably

nocturne grove
#

ohh your regex is also adding the ` before and after

#

didn't see that

pale vessel
#

oh

#

yes my code is shit

nocturne grove
#

didn't say that ;)

#

you're awesome, thank you

pale vessel
#

aww no u

nocturne grove
#

now I can replace everything where I need it 🙂

pale vessel
#

glad i could help

nocturne grove
#

I wonder if I'm the first one who wanted to solve something like this (it's saying a role name in the code block)

pale vessel
#

oh i just realized

#

since the new code replaces both beginning and ending with ` ` you can shorten the code with
"````hi````".replace(/^`|`$/g, "` `")

#

now we're talking

#

@nocturne grove

nocturne grove
#

haha thanks, that's nicer!

grizzled raven
#

i still dont understand what you mean

#

but ok

nocturne grove
#

@grizzled raven I wanted to send things like this: ```test```

#

(I can now because we figured out)

hollow prawn
#

hi, I'm using eslint with rallycoding (which I like)
but I have the one issue on my discord.js bot's "index.js" file
I'm having the issue of "Error while running ESLint: Cannot read property 'range' of null." because of that error it doesn't show any issues I have with my index.js file
I have tried to google it, but nothing comes useful or it is not related to my exact scenario
I use eslint with Atom and have latest version of eslint-config-rallycoding, eslint and all other necessary npm packages

nocturne grove
#

@pale vessel now the var will only be placed in between this when the var itself contains a `, right? (can't test it now cause db is offline). If so, can you change it?

pale vessel
#

i would suggest making a function

grizzled raven
#

\\ok`

#

ok

pale vessel
#

@nocturne grove here's my implementation:

function codeWrap(text) {
return "`" + text.replace(/^`/, " `").replace(/`$/, "` ") + "`";
}

console.log(codeWrap("hi")); // ` hi `
console.log(codeWrap("```hi```")); // ` ```hi``` `

(no codeblock for clarity, sorry)

nocturne grove
#

okay thank you! will try it when I can

pale vessel
#

looks like this method won't work on text that is wrapped with single `
both of the side needs to have at least two

nocturne grove
#

hmmm 😦

#

isn't there a fake ` that doesn't do markdown?

pale vessel
#

there's ´

#

so: replace(/`/g, "´")

#

this one doesn't need anything else

copper cradle
#

are you guys still trying to figure that out?

pale vessel
#

no we're done

nocturne grove
#

lol that's the other way around

pale vessel
#

yeah lol

#

whatever works

nocturne grove
#

´´´dd´´d´´´

#

🤔

pale vessel
#

i mean if you don't look closely

nocturne grove
#

hmm

pale vessel
#

that's all i can think of

nocturne grove
#

````\u200B${message.content}\u200B\```` doesn't this just work fine?

#

it does for me

#

no it doesn't

cloud heart
#

I'm trying to create a logs system for my bot, but I don't know what is the best way to let the user configure it (like enable/disable logs, the logs that he desire [i.e. message deletion, role update...])

copper cradle
#

database

#

and config

cinder patio
#

maybe like an enable/disable command like: -logs enable join leave message_edit role_update I think that's how I would do it

copper cradle
#

2 keywords

cloud heart
#

I think that's a good idea, thanks

mystic violet
nocturne grove
#

@pale vessel wait... I can also just prevent my bot from using that markdown. But then I need a way to disable all Discord formatting, so afaik `, *, _ and ~ (maybe I'm missing some). Is there a way to create a short regEx for that?

pale vessel
#

so no code blocks?

nocturne grove
#

yes

pale vessel
#

just escape markdown then

#

Discord.escapeMarkdown(text)

nocturne grove
#

I started to use the code blocks so * etc. are displayed as *. But now it's easier to do that in another way

cinder patio
#

If you are on discord.js, I believe there is a .cleanContent property or something similar which is just the text without markdown

nocturne grove
#

is that a function 😱

#

ow even 2 ways

#

I will try it

cinder patio
#

actually it's just for mentions

pale vessel
#

oh

#

The message contents with all mentions replaced by the equivalent text. If mentions cannot be resolved to a name, the relevant mention in the message content will not be converted.

#

yeah

cinder patio
#

However

#

there is a utility method which escapes all markdown

nocturne grove
#

message.content.cleanContent doesn't work when content = *

cinder patio
#
const {Util} = require("discord.js");

Util.escapeMarkdown(text...)
pale vessel
#

you can also use the base

nocturne grove
#

Discord.escapeMarkdown(message.content) works too

pale vessel
#

like Discord.escapeMarkdown()

cinder patio
#

yea if you already have the module imported

#

just an example

nocturne grove
#

ohh

#

well thanks for your really fast answers

cinder patio
#

(shouldn't it be Discord.Util.escapeMarkdown()?)

nocturne grove
#

what @pale vessel said worked

pale vessel
#

yes but like i said it's available on the base object too

cinder patio
#

oh didn't know that

pale vessel
#

These functions are also available on the base Discord object.

#
earnest phoenix
#

what is the event for .premiumSubscriptionCount (when new boost, the bot do action)

#

and what should I put inside this event if:

  • A new boost
    And do action if:
  • One less boost
delicate zephyr
#

i mean

#

You can check for a boost via role updates iirc

cinder patio
#

I was thinking guildUpdate?

delicate zephyr
#

Oh wait

#

no

#

its not

#

This information is available in the messageCreate event with the various types of Nitro boost. https://discord.js.org/#/docs/main/master/class/Message?scrollTo=type

cinder patio
#

Can those be disabled?

earnest phoenix
#

anyone know how i can put the amount of servers my bot is in the status?

cinder patio
#

With a POST request to https://top.gg/api/bots/stats or you can use a wrapper for the API

earnest phoenix
#

anyone know how i can put the amount of servers my bot is in the status?

#

Can anyone help?

cinder patio
#

I just answered your question

earnest phoenix
#

no

#

this doesnt have anything to do with top.gg

cinder patio
#

well make your question more clear then 🙂

earnest phoenix
#

sorry

cinder patio
#

I get what you mean maybe I misunderstood

earnest phoenix
#

maybe...

#

anyways

#

can you help?

#

ok, but in guildUpdate event, How to make the bot do an action when there is a new boost and when there is a less boost?

#

@delicate zephyr

#
 const {Util} = require("discord.js");
 
 Util.escapeMarkdown(text...)
#

um can you help? @cinder patio

pale vessel
#

@earnest phoenix ???

delicate zephyr
#

@earnest phoenix I mean, you quite literally have to use the message

#

You cant get a user from the new guild in guildUpdate

cinder patio
earnest phoenix
#

Oh

#

that would be appreciated

delicate zephyr
#

but you can check the old guild / new guild and check guildPremiumSupscriptionCount and see if its gone up

earnest phoenix
#

@cinder patio what do you use to code your bot?

delicate zephyr
#

@earnest phoenix

earnest phoenix
#

yes but how to check if gone up?

quartz kindle
#

he just told you how lol

earnest phoenix
#

oh yes

#

thx

pale vessel
#

ah yes, reading. hard to master.

earnest phoenix
#

???? @pale vessel

pale vessel
#

please ignore me

cinder patio
#

Jerry, that's node.js/javascript if that's what you're asking

earnest phoenix
#

imao

sudden geyser
#

I'm making a message collector class and I have two ways of possibly watching for new messages:

  • Use the single message event my bot always has and just listen for messages from them.
  • Create a new event listener on the client instance to watch for messages.

Is there an advantage between the two of them? I've asked this question in the past, but sadly got no response.

pale vessel
#

event listeners probably take up memory so you should stick with one event if possible

cinder patio
#

I mean... why? Does the library you are using not have a utility function like that?

pale vessel
#

nope

cinder patio
#

Then I guess the first one sounds better? Although I am not sure how you'd implement it

sudden geyser
#

I'm using Eris so no. Discord.js handles it by adding a new event listener (because that's all it can do) but I never see anyone doing it in a single message listener.

pale vessel
#

have you tried eris-additions?

sudden geyser
#

Nah I don't want to use that.

#

I've already implemented it, but was wondering which one was preferred

pale vessel
#

i've never used it too

sudden geyser
#

If I really wanted it I'd take properties from the library make my own and call it unique

pale vessel
#

you can always create a new listener and look for performance drop

white anvil
#

having more than one listener for each event is bad practice and prone to problems

#

a lot of people I know that do this tend to have memory leaks and stuff

pale vessel
#

like luca's repo lmao

cinder patio
#

I mean... not really, I don't think

#

It's just an extra function call

pale vessel
white anvil
#

it’s still bad practice

sudden geyser
#

Just depends on how you handle it KoaSmirk

white anvil
#

anything you can do with multiple listeners you can do with one

cinder patio
#

That's true, unless you don't want to mix up your logic

pale vessel
#

sometimes people just prefer to have a separate one just for aesthetics

white anvil
#

just make separate functions for each thing you’re doing

#

and call them in listener

#

saves memory

cinder patio
#

Like attaching an extra message listener for like a minute and then removing the event after the minute is up is perfectly fine imo

#

What if you want it to be in a function, like discord.js' await messages?

white anvil
#

just attach it to your listener

pale vessel
#

you can probably do that with setTimeout

white anvil
#

push listener to array and handle it in the event function or something idk

#

it’s not hard

brave blade
#

I found you can have a bot send emojis either by sending the shortcode (:grinning:) or by sending the 'raw' unicode string

#

now I wonder, is there any disadvantage to sending emojis as the unicode string?

#

I'm worried that not using shortcodes might be unsupported, or frowned upon

earnest phoenix
#

doesn't matter

#

sending raw unicode is more preferred though

cinder patio
#

shorter strings

brave blade
#

ok cool

#

yeah it allows more characters

#

which is the sole reason I want to do that

earnest phoenix
#

well uh no

cinder patio
#

I think it's the same, what I meant is that less data gets sent

brave blade
#

in most cases

copper cradle
#

if it's not as worse as this
@pale vessel that code looks like something I'd actually see in this channel

brave blade
#

when you have something like ":regional_indicator_d:" you can't fit many of those shortcodes into a 2000 char message

pale vessel
#

there actually was

brave blade
#

using the Unicode string instead, you can put more into one message

pale vessel
#

i remember that one dude

brave blade
#

Discord has a limit of 198 emojis per message I found out, whyever that specific number