#development

1 messages · Page 1309 of 1

quartz kindle
#

@drifting wedge your image is being opened in PA mode, which is palette+alpha
but you cannot easily add layers to a palette image, thats why you convert it to rgb mode

earnest phoenix
#

have a timer (in js it's interval) run every few seconds checking if it's the time of the day that you want @earnest phoenix

#

for performance reasons you can run it every minute even

#

k thx

drifting wedge
#

alr

#

then how can i add alpha?

#

if i dont itll end up like purple and wierd

earnest phoenix
#

nvm

#

what are you doing

#

me?

#

yeah

misty sigil
#

seems very xy problem

earnest phoenix
#

yup that's why im asking

quartz kindle
#

@drifting wedge did you try converting it to rgb like i said?

#

in the line where you open it

earnest phoenix
#

nvm

#

i'm assuming you export every command, yeah?

drifting wedge
#

yes

#

lemme try rn ig

quartz kindle
#

your image is in PA mode, which is not supported

drifting wedge
#

that worked

#

but now i have another one

#
    imaggg = output.open(fp).convert("RGB")
AttributeError: 'Image' object has no attribute 'open'```
```raw_image_data = await member.avatar_url.read()
                fp = io.BytesIO(raw_image_data)
                im = Image.open(fp)
                im = im.resize((150, 150));

                bigsize = (im.size[0] * 3, im.size[1] * 3)
                mask = Image.new('L', bigsize, 0)
                draw = ImageDraw.Draw(mask)
                draw.ellipse((0, 0) + bigsize, fill=255)
                mask = mask.resize(im.size, Image.ANTIALIAS)
                im.putalpha(mask)

                output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
                output.putalpha(mask)
                imaggg = output.open(fp).convert("RGB")
                imaggg.save('output.PNG')```
tame kestrel
#

@earnest phoenix yeah try using __filename for file and __dirname for directory

#

It's apart of node's path module

proven lantern
#

has anyone here created and used a one node elasticsearch database?

quartz kindle
#

wat

#

you didnt do what i said?

drifting wedge
#

i did

#

its another one

quartz kindle
#

then do the same thing on this one

drifting wedge
#

i did tho

quartz kindle
#

from the code above you didnt?

earnest phoenix
#

yeah try using __filename for file and __dirname for directory
that will not work, it will return the data of the command handler file

a more appropriate solution is to return some sort of a result object from your run function that contains the command data (plus you can integrate if the command failed or not, error messages etc.)
this is a more classical OOP approach

drifting wedge
#

@quartz kindle

#

thabks

#

thanks*

tame kestrel
#

@earnest phoenix I'm pretty sure he just wanted the path information of whatever module he was working on

#

cron jobs can do the trick

earnest phoenix
#

they edited their question now but they were asking to get the file of a function they were calling
i just assumed they have the classical command-per-file structure

tame kestrel
#

oh my bad then I must have misunderstood.

#

Are you trying to have people get matched when they react to your bots message?

#

try looking up Discord js Collectors, you can have a function run every time someone reacts to a message if you need it in the short term

#

if you need something more long term you can try looking at the Client#messageReactAdd event

umbral creek
#

my bot didn't open on node bot.js why

sudden geyser
#

what

earnest phoenix
#

please stop asking questions like you're a caveman

tame kestrel
#

@queen crescent oh I see, you're using setInterval to update the timer every 5 seconds?

#

Okay so iirc setInterval() returns a function you can use later on to stop it

#

Do you have a setInterval for each of the users?

#

okay can you show me the code that ends the timer?

#

is that the only place stopTimer is called?

#

Are you calling using the correct queueEmbedTimer? Maybe you aren't ending the correct one or something

#

how are you storing them?

#

Okay, put js console.log(JSON.stringify(timer))

inside stopTimer

and right after the queueEmbedTimer is initialized

#

and right after var queueEmbedTimer = await setInterval();

#

oh just do console.log(timer)

#

when you log them, the part where the timer is created and the part where it's called to end, are the properties the same?

opal plank
#

actually that gave me an idea

#

ty

faint prism
#

Is this considered lazy?

public override string ToString() => JsonConvert.SerializeObject(this);
earnest phoenix
#

@faint prism work smarter not harder mmLol

misty sigil
#

not wrong

earnest phoenix
#

i have a generic get method set up to auto deserialize because im too lazy to do it myself

faint prism
#

I can't be bothered to write out a really long string interpolation like:

$"MyProp: {MyProp}; AnotherOne: {AnotherOne}... etc"
earnest phoenix
#

sec imma find the method

faint prism
#

I do have this though:

public override string ToString() =>
            $"Count: {Count}; Sum: {Sum}; Average: {Average}; Std Deviation: {StdDeviation}; Std Error: {StdError}";
prime spruce
#

what language is that even? Java?

faint prism
#

close

#

C#

earnest phoenix
prime spruce
#

ah

earnest phoenix
#

the beauty of generics

prime spruce
#

I haven't seen the $"" form before

faint prism
#

yoooo I'm actually doing stuff with StatusCodes rn lol

#

Writing a Performance Testing framework on top of a NUnit

earnest phoenix
#

i chose this approach because throwing and catching exceptions requires a bit more memory than just returning objects but i'm genuinely in love with generics in my code

faint prism
#

I don't have a good concept of generics tbh... I wanted to use it with an interface so I could pass in some generic config file, but I may have just been misusing generics

#
public interface ILogic
{
  public void Run<IConfig>(IConfig config);
}

Something like that

earnest phoenix
#

is there a way to acces the client in the ready event?

#

xyproblem, again

#

wtf are you doing

#

running erela

#

from my event handler

#

but need to pass a client through

#

would be nice

#

if you're going to listen to the ready event

#

you're going to already have the client

#

because you need to call on()

#

its in a different file.

#

pass the client through the arguments then i guess

prime spruce
#

developers are still debating that question to this day

faint prism
#
private TimeSpan DoubleToTimeSpan(double d) => TimeSpan.FromTicks((long)Math.Floor(d));

This feels wrong

#

But it's an average so 🤷‍♂️

earnest phoenix
#

make it an extension method

#

faster to type mmLol

faint prism
#

Don't think I've done that before. Although I think I've seen it used in some code I refactored

earnest phoenix
#

is python library is good for discord bots

#

python is a language

abstract coyote
faint prism
proven lantern
#

has anyone here ever spun up their own instance of elasticsearch?

faint prism
#

Alright, stats done. Time for reports

#

Gonna check out Extent Reports

faint prism
#

@earnest phoenix Do you know any Reporting tools that work off of NUnit test run output?

earnest phoenix
#

unfortunately i don't, i rarely run unit tests

faint prism
#

ah that's a shame

faint prism
#

How weird, it's in russian

#

I don't speak Russian.
But they do in #support

prime spruce
#

@proven lantern yes

snow urchin
#

Missing access error while trying to rename a channel, the bot does have the required permissions

sudden geyser
#

Missing Access would mean it doesn't have permission to access the channel, not to modify it.

prime spruce
#

fix your promise chain too

snow urchin
#

Thing is, it does.

prime spruce
#

obviously not

snow urchin
#

It is a voice channel, and it does.

#

It has full admin, so don't tell me it doesn't mate

prime spruce
#

discord disagrees

#

m8

sudden geyser
#

We don't have as much context as you do, so your best bet is to duck walk it through debugging.

prime spruce
#

I would try looking the channel up through the guild, not the bot

earnest phoenix
#

How can I make when I react to my bot message, it suppresses my reaction?

sudden geyser
#

As in it removes it?

earnest phoenix
#

yes

sudden geyser
#

What library are you using

earnest phoenix
#

js

sudden geyser
#

Discord.js or Eris?

earnest phoenix
#

discord js

sudden geyser
#

If you have an instance of MessageReaction, you can do <MessageReaction>.users.remove(...) to remove a specific user from the reaction.

earnest phoenix
#

thanks you 🙂

sudden geyser
#

No problem

proven lantern
#

@prime spruce how much do you think i'll be able to do with about 4tbs of disk space and a 4GHz processor? i'm thinking about storing the names of the matchmaking games in there for searching. Things like "Counter Strike Dust Knives Only". I've heard the index grows pretty fast.

prime spruce
#

I would worry much more about memory than disk/cpu

#

ES is a huge memory hog

proven lantern
#

16gb enough for a decent size db?

prime spruce
#

how many records

#

do you plan for

proven lantern
#

100s to start with

prime spruce
#

16GB should get you into ~10m rows probably

proven lantern
#

nice

prime spruce
#

there are a lot of articles online about ES performance optimization

proven lantern
#

one node optimization?

prime spruce
#

I would also recommend looking at hosted ES, because security is important and they come pre-configured and distributed in an actual cluster

honest perch
#

9000 lines of json used less than 1mb

solemn latch
honest perch
#

exported from bson

prime spruce
#

rm db.json

#

now it's 0

sudden geyser
#

but how long is each line 🤔

honest perch
prime spruce
#

removing whitespace really saves a lot

honest perch
proven lantern
#

thanks @prime spruce

prime spruce
#

np

honest perch
#

so 16 is quite a bit

drowsy kite
#

How do I store my commands in folders from the handler folder?

cunning stirrup
#

doing a category handler i think

sudden geyser
#

You'd need to create your own command handler.

#

It involves creating each command in a separate folder than exporting the commands to then be imported/required by the command handler.

#

How you store and require those commands vary on your environment.

drowsy kite
#

@sudden geyser Yes, but this is my command folder, and I create to try to adapt it

#
     if (message.author.bot) return;
     if (message.channel.type == 'dm') return;
     if (!message.content.toLowerCase().startsWith(config.prefix.toLowerCase())) return;
     if (message.content.startsWith(`<@!${client.user.id}>`) || message.content.startsWith(`<@${client.user.id}>`)) return;

    const args = message.content
        .trim().slice(config.prefix.length)
        .split(/ +/g);
    const command = args.shift().toLowerCase();

    try {
        const commandFile = require(`./commands/${command}.js`)
        commandFile.run(client, message, args);
    } catch (err) {
    console.error('Erro:' + err);
  }
});```
sudden geyser
#

Then what issue are you currently facing.

drowsy kite
#

@sudden geyser I wanted to try to store my commands in sub folders of commands, trying to organize the commands inside the project.

sudden geyser
#

So like ./commands/general/ping.js for commands in the ping category and ./commands/system/eval.js for the eval command?

drowsy kite
#

what do u mean

sudden geyser
#

When you say "I want to try storing my commands in sub folders of commands", I am questioning if you want your commands to be split per category.

drowsy kite
#

When you say "I want to try storing my commands in sub folders of commands", I am questioning if you want your commands to be split per category.
@sudden geyser yes

#

this is

#

for exemple, moderation, fun, info

#

etc..

drifting wedge
#

what is the append in python?

sudden geyser
#

Yeah, so you want what I said about about general/ping.js and system/eval.js

#

0Exe what are you referring to when you say append.

#

Append to a list? Append to a path? etc.

drifting wedge
#

well im not sur

#

this is my context

#

self.giveaways.append((message.channel.id, message.id))

sudden geyser
#

What is giveaways

drifting wedge
#

well im figuring that out

#

its code i found on a yt vid

#

trying to understand it

drowsy kite
#

hm

sudden geyser
#

Then consult the video. It's probably a list though.

drifting wedge
#

ok ty

drowsy kite
#

Yeah, so you want what I said about about general/ping.js and system/eval.js
@sudden geyser so i will put this in replacing with .commands/${command}.js

sand shore
#

have a question. So bot i made just says its offline and it wont respond to msgs. anyway to fix?

sudden geyser
#

@drowsy kite if you want what I was talking about with ping and eval being in separate subfolders, you'd need to do a bit more work than what you're currently doing.

require(...) works when it's just a one-level directory, but as each command would be split into sub directories (./commands/.../), that won't work. You can easily solve this by storing your commands in a collection of some sort (array, object, map, collection, etc.)

When you start the program, have your command handler read the ./commands/ directory, then read each sub-directory (./commands/.../). You'll be using the fs module provided by Node.js to accomplish it. You then require each file and store it in a collection you keep, such as attaching it to your client instance.

It's quite complicated to explain how to write it, so reading this guide may be helpful: https://discordjs.guide/command-handling/#dynamically-reading-command-files

drowsy kite
#

...

#

ok

drifting wedge
#

how can i make the bot run a function, after a certain amount of time?

#

like a command starts a timer, and after the timer, it runs a func (py_

quartz kindle
#

a timeout? pretty sure py has those

sand shore
#

anyone know how to fix bot always offline problem

quartz kindle
#

run it?

earnest phoenix
#

how do i get a user input?

blissful coral
#

Node index.js?

#

Lol

earnest phoenix
#

like lets say bot says, "what is 1+1"?

#

and i respond 2

#

how does bot get that value?

blissful coral
#

Await messages

earnest phoenix
#

how

blissful coral
#

Don’t know how py works but pretty sure it is a thing there

earnest phoenix
#

k

blissful coral
#

I am djs so

#

Await messages is what it is called for us

quartz kindle
#

i think its wait_for in py

#

yup, client.wait_for()

drifting wedge
#

can any1 with a brain and undersyands dns help me?

quartz kindle
#

dont ask to ask

drifting wedge
#

okkkkkkkk

#

I got a domain from get.tech (github student pack) and trying to connect it to my cpanel

#

currently my cpanel is using a friends subdomain

#

how can i make the domain the domain i got from get.tech?

earnest phoenix
#

Hey @quartz kindle, i want to get yes/no as an answer

#

how do i modify so it does that

quartz kindle
#

look into the check part of the example

earnest phoenix
#

k

quartz kindle
#

@drifting wedge does your cpanel have a section for "addon domains"?

drifting wedge
#

yes

misty sigil
#

i think my intents work

quartz kindle
#

add it there

drifting wedge
#

but it wont let me

#

ill take a screenshot

misty sigil
#

my bot hasn't spewed 69 thousand errors yet

blissful coral
#

yet

quartz kindle
#

why are people only turning on intents now

blissful coral
#

Just get into reaction panels and voice channel muting @misty sigil

#

Paired with databases

#

@quartz kindle because they are about to be required

quartz kindle
#

if i didnt use intents 1 years ago, i would have needed a better vps by now lmao

solemn leaf
#

what are intents

blissful coral
#

They were planned for yesterday but were pushed back for now

solemn leaf
#

soemone tell

misty sigil
#

why are people only turning on intents now
@quartz kindle great question

quartz kindle
#

they were not pushed back

misty sigil
#

if i knew how to use intents

#

and i knew how to before

blissful coral
#

We’re they not?

misty sigil
#

i would have used them

quartz kindle
#

they were made a requirment in api v8

#

but not i v6/v7

blissful coral
#

Oh

solemn leaf
#

I need help from someone smart

blissful coral
#

I am on v7

drifting wedge
quartz kindle
#

v6/v7 are deprecated anyway

misty sigil
#

how do i update to v8

quartz kindle
#

discord.js is still on v6/v7

blissful coral
#

Yeah

#

Ok

#

Ik*

#

We are using djs which is about to be required

misty sigil
#

so if my code works for v7

blissful coral
#

Because they are switching to v8 soon

misty sigil
#

it should work for v8

solemn leaf
#

Im on djs v12

#

?

blissful coral
#

We all are lol

quartz kindle
#

there are not a lot of changes in v8

blissful coral
#

v11 is in a grave now

solemn leaf
#

what you mean by v8 then

quartz kindle
#

but still, there are some changes that lib devs need to look at

blissful coral
#

API version

quartz kindle
#

djs will probably make a v13 version for v8

blissful coral
#

It’s gonna be v11

#

LMAO

quartz kindle
#

and take the chance to implement other breaking changes while they're at it

blissful coral
#

Imagine switching from v11 to v12 and v13 is gonna be v11 again

quartz kindle
#

Lol

blissful coral
#

Gonna be a lot of fun

#

Can’t wait

quartz kindle
#

why tho

blissful coral
#

It’s a joke

quartz kindle
#

a joker joke

#

anyway intents were a god send

#

i've been using them ever since they were released

#

actually even before that

#

i was already using guild_subscriptions, which was what they had before intents

blissful coral
#

Yeah

#

I know how to use them I just don’t sadly

#

Gives me a advantage on the v8 change because I can actually help out instead of scrambling to fix my bots myself

quartz kindle
#

a person who uses my lib complained that after he updated to the latest version his memory usage went from 50mb to 200mb

#

turns out they simply didnt enable intents in the latest version

misty sigil
quartz kindle
#

presence updates really are stupid

drifting wedge
#

@quartz kindle u know what can i do?

#

about the domain?

earnest phoenix
#

I cant seem to do the yes/no thing

#

can someone send me a small snippet of the code?

quartz kindle
#

@drifting wedge show your addon domains page

drifting wedge
#

thats the error

quartz kindle
#

@earnest phoenix what are you not understanding about that example? everything is there

drifting wedge
earnest phoenix
#

k

quartz kindle
#

you create a function that checks if the received message matches what you're expecting from the user

earnest phoenix
#

ok

blissful coral
#

Tim what Lib?

quartz kindle
#

discord.js-light

blissful coral
#

Oh nic

#

Nice*

quartz kindle
#

@drifting wedge what did you enter for domain, subdomain and root?

drifting wedge
#

i only entered domain, the rest autofilles

#

archbot.tech

#

which i own

solemn leaf
#

@misty sigil

#

can I so

drifting wedge
#

but i didnt do anything to the archbot.tech dns

solemn leaf
#

{ ws: { intents: Intents.ALL } }

misty sigil
#

well

#

thats a shit idea

#

but ok

solemn leaf
#

I mean

#

what does the intents even mean thou

quartz kindle
#

you can, but thats the same as not using intents

#

intents let you define what you want discord to send you

solemn leaf
#

I want discord to send me what it did before

#

😠

quartz kindle
#

for example intents: "GUILD_MESSAGES"
you will receive ONLY guild messages, and nothing else

misty sigil
#

how much bandwidth did it save for you tim

quartz kindle
#

85-90%

solemn leaf
#

Okay

#

For cache and stuff

misty sigil
#

wOAH

#

thats a lot

solemn leaf
#

I need to mark that too?

quartz kindle
#

@solemn leaf the reason for using intents is that discord sends you a LOT of shit that you dont need, which wastes cpu and bandwidth

#

especially presenceUpdates

drifting wedge
#

do i need to update my dpy?

#

or is it fine?

quartz kindle
#

@drifting wedge what does it autofill in subdomain when you input your domain?

drifting wedge
#

archbot

misty sigil
#

so my 15GB a day bandwidth will drop

drifting wedge
quartz kindle
#

just archbot? not the full domain?

drifting wedge
#

like i want the domain to be archbot.tech

solemn leaf
#

Ok

#

so

quartz kindle
#

whats the full subdomain that is autofilled

drifting wedge
#

yes, archbot for the subdomain

solemn leaf
#

like managing roles and stuff @quartz kindle

#

do I ned to mark stuff for that?

drifting wedge
quartz kindle
#

wait, i just checked the second error message you posted

#

so the previous error about a subdomain already existing is not showing anymore?

drifting wedge
#

i deleted it

quartz kindle
drifting wedge
#

from the zone editor

#

cuz it was a subdomain and didnt work

quartz kindle
#

ok

#

where did you buy/get the domain from?

#

which registrar

drifting wedge
#

get.tech

#

it came with the github student pack

#

so it should work

quartz kindle
#

do you have an account there? can you login there?

drifting wedge
#

yes

misty sigil
#

archbot.archbot.tech?

opaque eagle
#

oh yeah they give u a year of free domain

drifting wedge
#

well i want it to be archbot.tech

quartz kindle
#

so go in there and change the dns servers

drifting wedge
#

to?

quartz kindle
#

the dns that your server uses

drifting wedge
#

my friend sent me the NS for his subdomains

earnest phoenix
#

I don't know what is happening.......

I asked my friend to join the server to test this code:

@client.event
async def on_member_join(member):
  with open('users.json', 'r') as outfile:
    data = json.load(outfile)
    print(data.keys)
    if str(member.id) in data.keys():
      return
    else:
      data[str(member.id)] = 5
      with open('users.json', 'w') as json_file:
        json.dump(data, json_file)

It didn't work, so i edited the code slightly and he rejoined while this code was running:

@client.event
async def on_member_join(member):
  print('hi')
  with open('users.json', 'r') as outfile:
    data = json.load(outfile)
    print(data.keys)
    if str(member.id) in data.keys():
      return
    else:
      data[str(member.id)] = 5
      with open('users.json', 'w') as json_file:
        json.dump(data, json_file)

It didnt even print hi when my friend joined

quartz kindle
#

then put the same NS as he uses

drifting wedge
#

ok ok

solemn leaf
#
const bot = new Discord.Client({ disableMentions: "everyone", ws:config.intents});
#
    "ws": {
        "intents": [
            "GUILDS",
            "GUILD_MESSAGES"
        ]
    }
quartz kindle
#

disableMentions:"everyone",ws:config.ws

solemn leaf
#

ok

quartz kindle
#

yes

drifting wedge
#

@quartz kindle done

quartz kindle
#

now remove the ws from the config

drifting wedge
#

should take a while tho

quartz kindle
#

leave only the intents

drifting wedge
#

do i HAVE to update dpy? or is it fine as it is?

quartz kindle
#

idk, why do you have to?

solemn leaf
#

wdym

#

remove

drifting wedge
#

the new presence update and intents?

quartz kindle
#

actually no

#

dont remove

#

its fine like that

earnest phoenix
#

I don't know what is happening.......

I asked my friend to join the server to test this code:

@client.event
async def on_member_join(member):
  with open('users.json', 'r') as outfile:
    data = json.load(outfile)
    print(data.keys)
    if str(member.id) in data.keys():
      return
    else:
      data[str(member.id)] = 5
      with open('users.json', 'w') as json_file:
        json.dump(data, json_file)

It didn't work, so i edited the code slightly and he rejoined while this code was running:

@client.event
async def on_member_join(member):
  print('hi')
  with open('users.json', 'r') as outfile:
    data = json.load(outfile)
    print(data.keys)
    if str(member.id) in data.keys():
      return
    else:
      data[str(member.id)] = 5
      with open('users.json', 'w') as json_file:
        json.dump(data, json_file)

It didnt even print hi when my friend joined

quartz kindle
#

@drifting wedge im pretty sure dpy already supported those for a long time

drifting wedge
#

alr ig

earnest phoenix
#

everything else is working

quartz kindle
#

@solemn leaf no it was right before, i was thinking about something else and didnt read it right

solemn leaf
#

gr

earnest phoenix
#

help pls

solemn leaf
#

ok

#

so I need cache

#

presence

quartz kindle
#

@earnest phoenix what is that code supposed to do?

earnest phoenix
#

just add the user to a json file

#

unless they are already in

quartz kindle
#

ah i see

#

idk looks correct at first glance

#

it didnt even print the hi?

earnest phoenix
#

no

#

yea that is why i am confuzed

#

i have to go now will post this later

drifting wedge
#

how much "skill" would you guys say is required to make a dashboard?

honest perch
#

Not much

solemn sparrow
#

hi

#

how i got members on server my friend ?

honest perch
#

Aslong as you have the knowledge of a web framework, templating, databases and server side its fine

#

But depends what it is exactly

#

Never finished it but it shows how one works

obtuse wind
#

how would i make my bot reply aa message if its pinged? (node, d.js, v12)

drifting wedge
#

@honest perch u have screenshots?

honest perch
#

I mean, just view the code?

#

Doesn't matter how shit the front end is, the backend would always be the same

#

how would i make my bot reply aa message if its pinged? (node, d.js, v12)
@obtuse wind check if the message contents is <@id>?

drifting wedge
#

ik but like how does it look? or doesnt it have anything?

honest perch
#

It looks like a dashboard

obtuse wind
#

I tried that method but it is failing to return a reply

honest perch
#

Any errors?

obtuse wind
#

no errors

#

but would it be that my tolowercase is the problem

honest perch
#

ik but like how does it look? or doesnt it have anything?
@drifting wedge the front end is literally html but in ejs

obtuse wind
#

i.e.

  if(message.content.toLowerCase().includes(`<@${bot.user.id}>`)){
drifting wedge
#

@drifting wedge the front end is literally html but in ejs
@honest perch just a question

#

for the topcord website

#

is it still active

honest perch
#

Yes but that's not relevant in here

obtuse wind
#

ill try it without the tolowercase

slender thistle
#

My eyes hurt when I opened this channel and saw JSON database

solemn leaf
#
GUILDS (1 << 0)
  - GUILD_CREATE
  - GUILD_UPDATE
  - GUILD_DELETE
  - GUILD_ROLE_CREATE
  - GUILD_ROLE_UPDATE
  - GUILD_ROLE_DELETE
  - CHANNEL_CREATE
  - CHANNEL_UPDATE
  - CHANNEL_DELETE
  - CHANNEL_PINS_UPDATE

GUILD_MEMBERS (1 << 1)
  - GUILD_MEMBER_ADD
  - GUILD_MEMBER_UPDATE
  - GUILD_MEMBER_REMOVE

GUILD_BANS (1 << 2)
  - GUILD_BAN_ADD
  - GUILD_BAN_REMOVE

GUILD_EMOJIS (1 << 3)
  - GUILD_EMOJIS_UPDATE

GUILD_INTEGRATIONS (1 << 4)
  - GUILD_INTEGRATIONS_UPDATE

GUILD_WEBHOOKS (1 << 5)
  - WEBHOOKS_UPDATE

GUILD_INVITES (1 << 6)
  - INVITE_CREATE
  - INVITE_DELETE

GUILD_VOICE_STATES (1 << 7)
  - VOICE_STATE_UPDATE

GUILD_PRESENCES (1 << 8)
  - PRESENCE_UPDATE

GUILD_MESSAGES (1 << 9)
  - MESSAGE_CREATE
  - MESSAGE_UPDATE
  - MESSAGE_DELETE
  - MESSAGE_DELETE_BULK

GUILD_MESSAGE_REACTIONS (1 << 10)
  - MESSAGE_REACTION_ADD
  - MESSAGE_REACTION_REMOVE
  - MESSAGE_REACTION_REMOVE_ALL
  - MESSAGE_REACTION_REMOVE_EMOJI

GUILD_MESSAGE_TYPING (1 << 11)
  - TYPING_START

DIRECT_MESSAGES (1 << 12)
  - MESSAGE_CREATE
  - MESSAGE_UPDATE
  - MESSAGE_DELETE
  - CHANNEL_PINS_UPDATE

DIRECT_MESSAGE_REACTIONS (1 << 13)
  - MESSAGE_REACTION_ADD
  - MESSAGE_REACTION_REMOVE
  - MESSAGE_REACTION_REMOVE_ALL
  - MESSAGE_REACTION_REMOVE_EMOJI

DIRECT_MESSAGE_TYPING (1 << 14)
  - TYPING_START

Looking at this for intent would I just add it

honest perch
#

My eyes hurt when I opened this channel and saw JSON database
@slender thistle json best db

solemn leaf
#

?

slender thistle
#

Now to clarify my message

#

WHY OPEN THE FILE TWICE ON EACH EVENT EMIT

blissful coral
#

LMAO

#

My Eyes

#

Anyways

#

If I don’t update my djs do I need intents hmmm

solemn leaf
#

lmao

#

can someone help me with intents

ocean pasture
#

Can some one help me. when i want to setup a help command like for example b!help i haven't evern wrote out the code and it jsut says

solemn leaf
#

what is the intent for vc

ocean pasture
#

idk. google it

#

ig

solemn leaf
#

I need helps

slender thistle
#

Can some one help me. when i want to setup a help command like for example b!help i haven't evern wrote out the code and it jsut says
@ocean pasture That's the default help command the commands extension provides

solemn leaf
#

UnhandledPromiseRejectionWarning: Error [DISALLOWED_INTENTS]: Privileged intent provided is not enabled or whitelisted.

drifting wedge
#

from utils import lists, permissions, http, default, argparser how can i install these?

#

python*

oak cliff
#

@solemn leaf you using discord.js ?

slender thistle
#

I-

#

wha-

#

eh?

solemn leaf
#

Yeah?

slender thistle
#

What is the utils module supposed to be?

oak cliff
#

so for vc i assume you want GUILD_VOICE_STATES

faint prism
#

#development message
@earnest phoenix you can't async write to a file. You'll get access violations from the operating system. Don't use JSON to store data asynchronously

solemn leaf
#

Thanks @oak cliff

#

Will any of my commands break

#

like my avatar command

#

or anything else?

oak cliff
#

uhhhh i dont know for certain, the only intents ive ever messed with are GUILDS and GUILD_MESSAGES

dense sparrow
#

j

solemn leaf
#

I don't wanna be declined bcs of something I barely understand

oak cliff
#

i believe for stuff like avatar you can fetch from the api not from the guild itself

#

but ive never done that myself

solemn leaf
#

k

#

I know when I tried my music commands

#

it didnt work until I added the intent

#

"GUILD_VOICE_STATES"

#

I could make a guide for this

#

just the basics of what you need

#

but I think I can feel my internet speeding up who knows

fiery canyon
#

does anyone know what are the discord channel webhook ratelimits?

#

if any

drifting wedge
#

if i do round(a) = 1 + 1

#

is var a rounded for other things

solemn leaf
#

@fiery canyon

drifting wedge
#

or just for this

solemn leaf
#

I know

#

let me think

#

Im trying to remebr

#

brain workie

#

@fiery canyon I think 30Sends:1Mins

#

something close to that

quartz kindle
#

@drifting wedge round(a) takes a and returns a rounded value of it

#

it does not modify the original a in any way

solemn leaf
#

How can I make my bot deafen itself

pale vessel
solemn leaf
#

thank

#

message.guild#voice#setSelfDeaf

#

@pale vessel

#

?

drifting wedge
#

@quartz kindle the archbot.tech domain still isn’t doing anything

pale vessel
#

that's a voicestate, yes

solemn leaf
#

new Discord.VoiceState(message.guild#voice#setSelfDeaf);

pale vessel
#

not that

drifting wedge
#

I haven’t connected it to cpanel yet, how do I do that?

solemn leaf
#

not that>?

pale vessel
#

do you know your hosting nameservers?

solemn leaf
#

or dns^

pale vessel
drifting wedge
#

or dns^
@solemn leaf yes

#

T gives me an error

solemn leaf
#

@pale vessel wdym

#

new Discord.VoiceState(message.guild#voice#setSelfDeaf);

drifting wedge
pale vessel
#

what did you set it to?

#

did you set an A record?

solemn leaf
#

ah

#

ok

#

should I put in my index

pale vessel
#

message.guild.voice.setSelfDeaf(true) should work if the bot is in a vc

solemn leaf
#

or something?

pale vessel
#

what do you mean

#

what index

solemn leaf
#

message.guild.voice.setSelfDeaf(true) should work if the bot is in a vc
You don't need the true I think

#

It does say so on the docs

#

but its setting it

#

like .setTimeStamp()

#

you dont need a true

pale vessel
#

seriously, i linked it to you

#

i'm sorry if i sound toxic but it's literally there

solemn leaf
#

I dont mind if you do

#

lmao

#

would the voice

#

be the voice channel then

drifting wedge
#

Can @pale vessel go into general vc?

#

To help me? Like I can Ss?

earnest phoenix
#

im wondering how to code a mute command in discord.py

#

such that the person cant talk

#

for some time

drifting wedge
#

Temp mute?

earnest phoenix
#

temp and non temp

faint prism
#

It'd be a server mute or a role that prohibits voice chat

compact echo
#

So I'm trying to have the bot self deaf after joining the voice channel and this code worked on the old bot (without discord-akairo) and now it doesn't work :(. Code: https://srcb.in/f9fbd18cac Using discord-akairo

drifting wedge
#

did you set an A record?
@pale vessel wut?

#

in the cpanel

pale vessel
#

what's your hosting?

#

To help me? Like I can Ss?
@drifting wedge can't

drifting wedge
#

alr

#

well its a friend's vps

pale vessel
#

they have a cpanel license?

drifting wedge
#

he sent me the vps domain servers

#

and i have a cpanel

#

idk but the cpanel works lol

pale vessel
#

ic, setting an A record would be the choice then

#

what's your domain registrar?

solemn leaf
#

message.member.voice.channel.setSelfDeaf(true)

#

@pale vessel

pale vessel
#

that...would try to make the member deaf, which won't work since setSelfDeaf() is for the client the method works for the member's voicestate and it makes the client deaf

compact echo
solemn leaf
#

so

compact echo
#

Well my script doesn't work for me

solemn leaf
#

wait

#

client.guilds.voice.setSelfDeaf(true)

compact echo
#

So I'm trying to have the bot self deaf after joining the voice channel and this code worked on the old bot (without discord-akairo) and now it doesn't work :(. Code: https://srcb.in/f9fbd18cac Using discord-akairo

pale vessel
#

it should work actually @solemn leaf

solemn leaf
#

so wiat

#

@pale vessel How would I get the voice>?

pale vessel
#

you just did

#

message.member.voice is a voicestate

#

not a voice channel

compact echo
#

wait what @pale vessel , my script in discord-akairo doesn't work for some reason

#

😦

pale vessel
solemn leaf
#

client.(message.member.voice).setSelfDeaf(true)?

#

or do I make it like a var

compact echo
#

think3d
@pale vessel same cause it should work. It works in the old version of my bot :((((

blissful coral
#

v11?

obtuse wind
#

flazepe#8587 same cause it should work. It works in the old version of my bot :((((
RaymondJiang1#5270

version v12 of d.js and node is absolutely required.

pale vessel
#

they are using v12

#

@compact echo so it plays everything just fine, just not deafened?

drifting wedge
#

what's your domain registrar?
@pale vessel get.tech

compact echo
#

@pale vessel yes

pale vessel
#

the registrar. for example, namecheap

#

get.tech?

#

it's a thing

compact echo
#

ye

pale vessel
#

@drifting wedge can you go to your registrar's panel?

drifting wedge
#

yes

#

im there\

pale vessel
#

is there an option to setup dns records?

earnest phoenix
#

so for intents, bots will go offline when it becomes mandatory? do ALL bots have to specify intents including the ones not over 100 guilds?

solemn leaf
#

All of them do

#

We are in the dark I think

#

it's best to do it

blissful coral
#

All

pale vessel
#

yeah they're mandatory

blissful coral
#

Just go ahead and enable them

earnest phoenix
#

ah shit ok

solemn leaf
#

Why isnt this returning if there isnt args

#
    if (!args[0]) {
        message.channel.send("Need Args!")
        return;
    };
compact echo
#

oml

#

cause !arfs

blissful coral
#

args[0]

compact echo
#

!args

blissful coral
#

Lol

pale vessel
#

assuming args is an array, it is always truthy

blissful coral
#

^

drifting wedge
#

is there an option to setup dns records?
@pale vessel 1 sec

compact echo
#

^^^

pale vessel
#

check the first index or use !args.length

blissful coral
#

Also, anyone got a list of intents?

drifting wedge
earnest phoenix
#

there's more than 2?

blissful coral
#

Like the different ones

drifting wedge
#

the 2 current NS are the vps's host ns

pale vessel
blissful coral
#

Thx sent twice

earnest phoenix
#

oh

drifting wedge
#

off topic: flaze, great job with chip, i think you were the one who made it

pale vessel
#

haha, kyoso made it

blissful coral
#

I’ll

pale vessel
#

chip is really good though, yes

blissful coral
#

lil*

#

lul* FUCKING AUTOCORREVT

#

Dude...

drifting wedge
#

if i mention @paper bluff devs with the id, does it ping the,?

blissful coral
#

No

solemn leaf
#

@blissful coral

blissful coral
#

If you don’t have perms it won’t

pale vessel
#

i think you might need to use the vps ip for an a record

blissful coral
#

Hi Aki

drifting wedge
#

i think you might need to use the vps ip for an a record
@pale vessel well i have the servers ip

earnest phoenix
#

is there a way to use all intents bc uhh i kinda dont wanna list them all

drifting wedge
#

(gotten by doing ping domain)

blissful coral
#

Yes

drifting wedge
#

that works?

blissful coral
#

I think it is intents: all

pale vessel
#

you can try

blissful coral
#

You may not wanna use all tho @earnest phoenix

#

It’s worth listing

earnest phoenix
#

yeah ig

blissful coral
#

Removing that presence update really helps

pale vessel
#

create an a record pointing to your vps's ip and try to add the domain again in cp

drifting wedge
#

create an a record pointing to your vps's ip and try to add the domain again in cp
@pale vessel 1 sec

#

record in the registar?

pale vessel
#

yeah

drifting wedge
#

do i need to do anything with the domain secret?

pale vessel
#

i don't think so

#

what's the domain in question by the way?

drifting wedge
#

the new one?

pale vessel
#

create a new record

drifting wedge
#

or the current sub domain from my buddy?

#

archbot.tech

#

i mean its pretty slick imo

#

@pale vessel

#

is it manage dns?

pale vessel
#

can you show a screenshot?

#

should be under that

drifting wedge
#

1 sec

#

in my bot page for devs imma list eveeyone in topgg server lol

pale vessel
#

before that, is the ns ns1.eukserver.com or ns1.ukserver.com?

drifting wedge
#

1 secccc

pale vessel
drifting wedge
#

euk

#

yea

#

eukserver is my friend's rust server he lent me the vps

pale vessel
#

all right, try an a record then. select "A Records"

#

oh you did

#

oof my bad

drifting wedge
#

so what the pic is?

#

i didnt make one yet tho

#

it says subdomain?

pale vessel
#

the ip should be your vps ip

drifting wedge
#

like .archbot.tech

pale vessel
#

try leaving the hostname empty

#

if you can't, put the domain (archbot.tech)

drifting wedge
#

1 sec

#

is it instant?

#

or like dns takes time?

pale vessel
#

usually it is

#

it really depends

#

it could take up to 24 hours

blissful coral
#

Should be instant for most

drifting wedge
#

think i gotta add to cpanle

quartz kindle
#

did you add it to cpanel after you changed the dns?

drifting wedge
#

1 sec

quartz kindle
#

in addon domains

drifting wedge
#

maybe i can try zone editor

#

with archbot.tech?

quartz kindle
#

the domain has not propagated properly yet

#

there is no A record anywhere, and NS records only partially propagated

drifting wedge
#

@quartz kindle is it time related?

#

like something i did wrong?

#

or just waiting?

quartz kindle
#

can you show how the get.tech domain configuration looks like?

drifting wedge
#

the dns manager?

#

or like everything?

#

lmao, ive been on a cgpgrey marathon lol

quartz kindle
drifting wedge
#

yes

quartz kindle
#

and you went to name servers, right?

drifting wedge
#

but thats the top

#

i went on the bottom

#

where is dns

#

this is the name servers

pale vessel
#

i think you should just let the ns propagate and if it still won't let you add the domain, try other records instead

drifting wedge
#

alr

#

how long ya think

#

when i update dns it usually takes abour 4 hrs

#

or just tmr?

pale vessel
#

only one way to find out

drifting wedge
#

lol

solemn leaf
#

@pale vessel it isnt client

solemn leaf
#

Love it

pale vessel
#

yes

drifting wedge
#

looks clean and smexy

#

@heady heron

#

once it gets updated in my region

#

irll work>

heady heron
#

im making ym own streamdeck

#

hehe so igotta make a software for it

solemn leaf
#

@compact echo Don't know if you figured it out

#

message.guild.me.voice.setSelfDeaf(true)

pale vessel
#

that's exactly what they used

drifting wedge
#

do i need to wait for the tihing to update everything to update the cpanel?

#

or like some locations is good enuf?

pale vessel
#

everything just to be safe

compact echo
#

@solemn leaf i figured it out, it’s fine

pale vessel
#

what fixed the issue?

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

pale vessel
#

are you being sarcastic

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

heady heron
#

im so confused rn

sage bobcat
#

One message removed from a suspended account.

blissful coral
#
const table = require('table');
client.commands = new Discord.Collection();
fs.readdir("./configuration/", (err, files) => {
    if(err) console.error(err);
  
    let jsfiles = files.filter(f => f.split(".").pop() === "js");
    if(jsfiles.length <= 0) {
      console.log("No Commands To Load!")
      return;
    }
  
    console.log(`loading ${jsfiles.length} commands!`);

    const header = [['Command', 'Status']];
    jsfiles.forEach((f, i) => {
      let props = require(`./configuration/${f}`);
      header.push([`${+i + +1}. ${f}`, 'Loaded ✅']);
      client.commands.set(props.help.name, props);
    });
    console.log(table.table(header))
});
#

That is the way it is setup @solemn leaf

#

For me

solemn leaf
#

what a index

#

illl ahve to look at it

blissful coral
#

ol

#

lol

drifting wedge
#

It is

blissful coral
#

I have 5 of those

drifting wedge
#

Js

blissful coral
#

for each module

solemn leaf
#

wait

#

is table

#

a npm

#

npm i table

blissful coral
#

es

#

yes

#

npm i table

solemn leaf
#

mods

#

dont

#

decline my bot

blissful coral
#

LOL

solemn leaf
#

im gettign a npm

blissful coral
#

My among us bot is genius

#

rn

solemn leaf
#

LOAD FASTER

drifting wedge
#

How does it work

solemn leaf
#

okay mods

#

now you can

blissful coral
#

@drifting wedge

manic osprey
#

I know all function xD

blissful coral
#

cool

solemn leaf
#
    jsfile.forEach((f, i) => {
        let props = require(`./commands/${f}`)
header.push([`${+i + +1}. ${f}`, 'Loaded ✅']);
        bot.commands.set(props.help.name, props);
    });
console.log(table.table(header))
    const header = [['Command', 'Status']];
    jsfiles.forEach((f, i) => {
      let props = require(`./configuration/${f}`);
      header.push([`${+i + +1}. ${f}`, 'Loaded ✅']);
      client.commands.set(props.help.name, props);
   });
   console.log(table.table(header))
blissful coral
#

looks right

#

test it lol

drifting wedge
#

@blissful coral i saw a bot that like joins ur server

#

And auto muted you

blissful coral
#

yeah well

#

I had that

drifting wedge
#

Like it joines ur game

blissful coral
#

Until I got rate limited

#

Had to remove

#

API won't allow it

drifting wedge
#

AMONG US AI

#

bigbrain

manic osprey
#

@blissful coral Auto-mute is not allowed from API, thats is not good work.

blissful coral
#

GOOD NAME

#

Should I change it?

manic osprey
#

thats be removing or bad.

blissful coral
#

@manic osprey I removed it

drifting wedge
#

?

solemn leaf
#

what would header be

blissful coral
#

wdym

#

@drifting wedge is that the name?

drifting wedge
#

Like among us ai

blissful coral
#

I like that name

#

May steal it

drifting wedge
#

So Like it is like a player

blissful coral
#

read what I sent

#

lol

solemn leaf
#

lol

#

ik

#

im stupid

drifting wedge
#

Oh

blissful coral
#

discord api doesnt allow it

solemn leaf
#

thats so cool

manic osprey
#

@blissful coral send me file from mute and i go show it code

drifting wedge
#

Maybe make it a application

solemn leaf
earnest phoenix
#

how do you go about actually running your html/css files as a website? everything ive googled for the last few days has just brought up wordpress or google sites or some other nonsense i dont want

blissful coral
#

@manic osprey huh

crystal depot
#

oK

blissful coral
#

homie I removed them lol

#

let me see what I got one sec

solemn leaf
#
fs.readdir("./Commands/", async (err, files) => {
    if (err) console.log(err);

    let jsfile = files.filter(f => f.split(".").pop() === "js")
    if (jsfile.length <= 0) {
        console.log("No commands were found. . .")
        return;
    };

    const header = [['Command', 'Status']];

    jsfile.forEach((f, i) => {
        let props = require(`./commands/${f}`)
        header.push([`${+i + +1}. ${f}`, 'Loaded ✅']);
        bot.commands.set(props.help.name, props);
    });
    console.log(table.table(header))
});

this looking right then?

crystal depot
#

would it be more efficient to use python instead of d.js? (talking about efficiency, not difficulty)

#

*discord.js

blissful coral
#

djs better

crystal depot
#

oK

sonic lodge
#

just use what you prefer

crystal depot
#

kk

blissful coral
#

its a opinion

slender thistle
#

Define efficiency

solemn leaf
#

@blissful coral what if it isn't loaded MegaThonk

blissful coral
#

Then it won't lol

#

how

#

show

solemn leaf
#

Im saying

#

what if I just had a file in there

blissful coral
#

to put that?

solemn leaf
#

how would it be loaded

blissful coral
#

it would error

#

lol

solemn leaf
#

my error handler broke

#

;(((

#
process.on('uncaughtException', async (err) => {
    let me = await bot.users.fetch("485987127809671168")
    let buf = new Buffer.from(err)

    me.send({ files: [{ attachment: buf, name: 'file.txt' }] });
}).on('unhandledRejection', async (err) => {
    let me = await bot.users.fetch("485987127809671168")
    let buf = new Buffer.from(err)

    me.send({ files: [{ attachment: buf, name: 'file.txt' }] });
})
manic osprey
#

when error

#

@solemn leaf

solemn leaf
#

it doesn't dm me anymore

#

it stops the errors

#

it just doesn't dm me

manic osprey
#

please visual studio

#

code

solemn leaf
#

?

manic osprey
#

and line error

#

vsc errors line

solemn leaf
#

it doesnt error

#

what do you mean

blissful coral
#

Well what type of error is it?

manic osprey
#

I mean from line error code

#

yes

blissful coral
#

I don't remember what it throws

solemn leaf
#

wdym

blissful coral
#

Just make a file and don't have the .help

#

And see

#

Make a blank file

#

in the cmds folder

#

see what error you get

solemn leaf
#

give me a error

blissful coral
#

?

manic osprey
#

waitWhat bruh

solemn leaf
#

soemthing to error

#

nerd()

blissful coral
#

text.js

#

and put nothing in it

#

in cmds folder

blissful coral
#

send your full handler

solemn leaf
#

?

blissful coral
#

what I sent you

#

Send me your version

solemn leaf
#
fs.readdir("./Commands/", async (err, files) => {
    if (err) console.log(err);

    let jsfile = files.filter(f => f.split(".").pop() === "js")
    if (jsfile.length <= 0) {
        console.log("No commands were found. . .")
        return;
    };

    const header = [['Command', 'Status']];

    jsfile.forEach((f, i) => {
        let props = require(`./commands/${f}`)
        header.push([`${+i + +1}. ${f}`, 'Loaded ✅']);
        bot.commands.set(props.help.name, props);
    });
    console.log(table.table(header))
});
blissful coral
#

of it

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

Caps?

#

btw

solemn leaf
#

no caps

#

maybe

#

LMAO

blissful coral
solemn leaf
#
fs.readdir("./Commands/", async (err, files) => {
    if (err) console.log(err);

    let jsfile = files.filter(f => f.split(".").pop() === "js")
    if (jsfile.length <= 0) {
        console.log("No commands were found. . .")
        return;
    };

    const header = [['Command', 'Status']];

    jsfile.forEach((f, i) => {
        let props = require(`./commands/${f}`)
        header.push([`${+i + +1}. ${f}`, 'Loaded ✅']);
        bot.commands.set(props.help.name, props);
    });
    console.log(table.table(header));
});
blissful coral
#
fs.readdir("./Commands/", async (err, files) => {
    if (err) console.log(err);

    let jsfile = files.filter(f => f.split(".").pop() === "js")
    if (jsfile.length <= 0) {
        console.log("No commands were found. . .")
        return;
    };

    const header = [['Command', 'Status']];

    jsfile.forEach((f, i) => {
        let props = require(`./Commands/${f}`)
        header.push([`${+i + +1}. ${f}`, 'Loaded ✅']);
        bot.commands.set(props.help.name, props);
    });
    console.log(table.table(header));
});
zenith pecan
#

someone help me to do a cooldown in handler?

blissful coral
#

Try that

solemn leaf
#

I renamed it to commands

#

lol

blissful coral
#

then change top one

#

@zenith pecan

solemn leaf
#

you changed nothing

#

its the same peace of code

#

lamo

blissful coral
#

hm

#

lol

#

You are wrong my dear

#

Capitalization is different KEKW

solemn leaf
#

No

#

you are wrong

zenith pecan
#

@zenith pecan
@blissful coral I tried on that one but it didn't work

solemn leaf
blissful coral
#

Ur Commands is capped on the first fs readdir

#

Or did you change

solemn leaf
#

I renamed the commands to commands

#

oh

dense nest
#

I need help saving data to a db in python for per server prefixes

solemn leaf
#

now

#

I see

#

CHanged

#

still nothing

blissful coral
#

hmmmmmmmmm

#

weird

solemn leaf
#

see

#

my error handler is broken

blissful coral
#

Try removing

#

And then doing again

#

just readd it

zenith pecan
blissful coral
#

Look at this

solemn leaf
blissful coral
#

How do you setup your commands @solemn leaf

zenith pecan
#

Ok

blissful coral
#

Show me one of your commands

solemn leaf
#

the same way you do

#

lmao

#
const Discord = require("discord.js");

module.exports.run = async (bot, message, args) => {

}

module.exports.help = {
    name: ""
}
#

mna isnt that funny

blissful coral
#

do all of them have a module.exports.help

#

and a name

#

In each

solemn leaf
#

Yea

#

duh

opal plank
#

why even do that

blissful coral
#

If not it will error

opal plank
#

just export all into a single object

blissful coral
#

@opal plank Honestly I did it for fun at first

#

And it looked cool

#

So he asked

#

lol

#

Idk why it isn't working

solemn leaf
#

It was like this before the table btw

blissful coral
#

oh

#

hmmm

solemn leaf
#

so yeah

tawdry heart
#

hi

blissful coral
#

How may I help?

tawdry heart
#

h need help

blissful coral
#

With?

tawdry heart
#

h need play bot hn my siraver

solemn leaf
#

@tawdry heart

earnest phoenix
#

BRO HE JUST NEEDS HELP WITH ADDING A BOT

blissful coral
#

No perms to use presets so we use screenshots

#

?

earnest phoenix
solemn leaf
#

I dont understand

blissful coral
#

I am so confused

earnest phoenix
#

stop minimodding man

solemn leaf
#

I mean

#

its not really

blissful coral
#

Ima just... Leave..

solemn leaf
#

we just asked them to not ask to ask

earnest phoenix
#

thanks for coming, minimodding and going away

solemn leaf
#

using an image