#development

1 messages ยท Page 553 of 1

lyric talon
hushed pendant
#

@lyric talon Use codepoints, not emojis

#

Also that code is ugly

#

Dicts are what you want

ruby dust
#

emojis work perfectly fine

hushed pendant
#

I always used code points

ruby dust
#

rip you

lyric talon
#

it's the samething use emojis or codepoint GWqlabsGarThink isn't it ?

#

and about dictionaries: The lists does the samething, how could i use dictionaries to do this ?
associate a key emoji to the embed ?

hushed pendant
#

probably

lyric talon
#

I don't think that would be diferent

#

My problem is that my bot (seems like) is not recognizing the reactions

inner jewel
#

add prints or something

#

or use breakpoints

silver lintel
#

what does this mean?

ruby dust
#

the site doesn't know your bot's status

silver lintel
#

ok

ruby dust
#

most of the time this is the result of your bot not being in this server

silver lintel
#

yeah i checked

#

its not in this server

ruby dust
#

fix the issue and then ask a mod to add it back

void gale
#

internal/modules/cjs/loader.js:605
throw err;
^

Error: Cannot find module 'discord.js--commando'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:603:15)
at Function.Module._load (internal/modules/cjs/loader.js:529:25)
at Module.require (internal/modules/cjs/loader.js:657:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (C:\Users\adamv\OneDrive\Documents\HelpfulBot\index.js:1:80)
at Module._compile (internal/modules/cjs/loader.js:721:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)

silver lintel
#

ok

void gale
#

Thats for a coin flip command

#

error

silver lintel
#

theres two -

#

discord.js--comnmando

#

onely -

void gale
#

hm

#

nope still error

silver lintel
#

i mean is it just discord-commando

fervent oyster
#

Has anyone messed with CORS it's been breaking my webapps for 4 hours now and I'm about to completely give up on everything

#

(Cross-Origin Resource Sharing)

languid dragon
#

@fervent oyster ive had some fucky issues with it, what's wrong?

fervent oyster
#

No matter what headers I return on the server it denies all jQuery Ajax requests

languid dragon
#

can i have more context

void gale
#

internal/modules/cjs/loader.js:605
throw err;
^

Error: Cannot find module 'discord.js-commando'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:603:15)
at Function.Module._load (internal/modules/cjs/loader.js:529:25)
at Module.require (internal/modules/cjs/loader.js:657:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (C:\Users\adamv\OneDrive\Documents\HelpfulBot\index.js:1:80)
at Module._compile (internal/modules/cjs/loader.js:721:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)

#

help

#

i changed

languid dragon
#

install the module @void gale

fervent oyster
#

I'm using jQuery Ajax requests to request server counts on a webserver on my discord bot, however even though I have the webserver return Access-Control-Allow-Origin: * it still denies the data returned from the bot

void gale
#

?

#

how

#

sry am new

languid dragon
#

@fervent oyster can i see the Ajax

fervent oyster
#
$.ajax('https://alekeagle.tk:2083/servers').done((data) => {//handle data});
west raptor
#

@void gale typescript?

languid dragon
#

@fervent oyster im assuming you use node.js as a backend?
express?

fervent oyster
#

Yes

void gale
#

The coinscript

#

?

fervent oyster
#

No custom handling with https module

languid dragon
#

Can I ask why?

void gale
#

oh that was when I converted the typescript

#

I changed back

#

to js

west raptor
#

ah

#

okay

fervent oyster
#

I already knew how to do it this method express confused me

languid dragon
#

Wdym?

void gale
#

how i use this thing minx xd

fervent oyster
#

When I tried to learn how to use express it confused me

languid dragon
#

@fervent oyster what confused you

the reason i ask is because express makes life so much easier for web development and if you're not using it you're more than likely missing out

example in express:

const express = require('express');
const app = express();

app.get("/route", (req, res) => {
    res.send("Success!");
});

app.listen(8080, () => console.log("Listening on port 8080");
earnest phoenix
#

Im not using it ๐Ÿ‘€
am I missing out, though

fervent oyster
#

When I was trying to return data other than a file nothing told me how I could do it

void gale
#

wait i can just say "npm install discord

fervent oyster
#

Can I combine it with the https module? @languid dragon

west raptor
#

@void gale no

void gale
#

what baout

#

nmp install discord -save ?

#

npm

earnest phoenix
#

Still no.

west raptor
#

discord isnt the lib u r looking for

void gale
#

npm install?

#

npm install express

west raptor
#

npm install is correct yes

languid dragon
fervent oyster
#

Thanks

west raptor
#

to shorten it you can also use npm i <lib/package>

languid dragon
#

have you tried actually googling for your problems instead of constantly asking whether what you're doing is right or not

void gale
#

hey this my first time on js so ima be a noob

languid dragon
#

It also literally tells you how here as well: https://discord.js.org/#/docs/commando/master/general/welcome

west raptor
#

literally if you read the docs and instructions you would have no issue wearies

void gale
#

okay ill ask google because even "npm install discord.js-commando" won't work

west raptor
#

what

languid dragon
#

why not? have you tried reading the error it produces and googling the error or have you tried reading the error to see why exactly it's not working?

void gale
#

yes

#

it say

#

cant fin "discord.js-commando"

#

find

languid dragon
void gale
#

Okay I triend again now it's super.

#

this

languid dragon
#

what is super?

#

???????
what's the error dude?

#

read the error

void gale
#

oh

#

its referring to the main

#

and is overwriting

#

and the error

#

SyntaxError: 'super' keyword unexpected here
at new Script (vm.js:84:7)
at createScript (vm.js:264:10)
at Object.runInThisContext (vm.js:312:10)
at Module._compile (internal/modules/cjs/loader.js:684:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Module.require (internal/modules/cjs/loader.js:657:17)
at require (internal/modules/cjs/helpers.js:22:18)

languid dragon
#

super plain english

#

read through a few of those, I think you should focus on learning how to code before you jump right into the development of a bot

#

learning to problem solve your errors and debugging your code is essential

#

Step 1: Look at the pins in this channel to find documents on learning JavaScript

Step 2: Learn how effective and fast Google can be as a debugging tool just with searching
https://support.google.com/websearch/answer/134479?hl=en

Step 3.a: Learn debugging
https://www.codementor.io/mattgoldspink/how-to-debug-code-efficiently-and-effectively-du107u9jh
Step 3.b: Learn how to effectively debug with stack traces in JavaScript
https://harrymoreno.com/2017/02/25/how-to-read-a-javascript-stack-trace.html

zinc pawn
#

would someone be able to assist me in changing this to discord.js? ```import requests
import json
botToken = ""

channelID = [] # array of channel ID's (strings)
for id in channelID:
baseURL = "https://discordapp.com/api/channels/{}".format(id)
headers = { "Authorization":"Bot {}".format(botToken),
"User-Agent":"Discord Bot",
"Content-Type":"application/json" }

POSTedJSON =  json.dumps ( {"rate_limit_per_user":2} )

r = requests.patch(baseURL, headers = headers, data = POSTedJSON)
print(r.text)```
slender coral
#

is there someone willing to answer a quick question from a coding noob tryna program a bot? :p

amber fractal
#

Dont ask to ask.

slender coral
#

okay

#

In python how would I go about getting a list of every user in that specific server?

sick cloud
slender coral
#

uhh pre-rewrite

#

the old clunky one

sick cloud
#

async?

slender coral
#

yeah

sick cloud
#

yeah ok, uhh

#

i think guilds have some kind of members property or something

#

you could try looping through it maybe?

slender coral
#

i guess the question is more like, what command is used to check if a user is in a server

#

im trying to make a leaderboard style thing

#

i got the global one no problem but i cant figure out a server-exclusive leaderboard

#

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

sick cloud
#

at least in js like terms, you'd get your users from your db or whatever, filter them by if their ID is in the server, then do whatever

slender coral
#

ooo

sick cloud
#
const users = db.all() // or something
const in_server = users.filter(user => server.members.has(user.id))

i'd do it like that probably, but i have no idea how to convert it to python

earnest phoenix
#

a

lusty dew
#

Alright so
I have a res.sendFile so it stays on the file
but instead of sending the file
it goes to
/users/login
Ill send code
https://paste.tscforum.com/fghvtredix.js
So basically
after the sign up is done
I want it to stay on index.js
index.html*
and when they login I want it to send them to main.html

restive nest
#

@zinc pawn what are you trying to obtain? The rate limit of users per guild? Because dumping is just going to produce a string or an object from that object. Just trying to gain clarification of its purpose

inner jewel
#

updating slowmode

graceful moat
#

I'm trying to change the color of the letter using CSS, but for some reason it's not changing when I go in Preview

lusty dew
#

Hm

#

What are you using to change the color of the letters? @graceful moat

#

I know CSS

#

but like

#

what part of css are you usin

graceful moat
#
        h2{
            color: blueviolet;
            font-family: fantasy;
            font-size: 50px;```
lusty dew
#

is blueviolet a color

#

in css?

#

I don't think it is

graceful moat
#

i tried in some ways, for example hexadecimal

lusty dew
#

ok it is

#

Now

#

Show me the full css thing

#

file*

#

Cause

#
        h2{
            color: blueviolet;
            font-family: fantasy;
            font-size: 50px;
}
#

It is supposed to have an } at the end of the h2 part

graceful moat
#
    <style>
        h2{
            color: blueviolet;
            font-family: fantasy;
            font-size: 50px;
        }
        h1{
            color : #5F04B4;
            font-size: 50px;
        } 
        h3{
            color: cornflowerblue;
            font-size: 28px;
            font-family: inherit;
        body{
            background-image: url(https://www.chris-salazar.com/blog/wp-content/uploads/2013/02/black_background_leather-wallpaper-2048x1152.jpg);        
            background-position: center center;
            background-repeat: repeat;
            background-attachment: fixed;
            background-color: #999;}
        }
        </style>```
lusty dew
#

Mk

#

Now

#

show me the html file you are trying to use that css file in

#

I think I know the problem now

#

you are passing the css file into the html file

#

so it can't access the css files properties

#

arent*

#

Oh wait

#

No

#

Take it style

#

if that is in a css file

graceful moat
#

i can send in private?

lusty dew
#

Sure

#

But just saying

#

if that is a css file

#

it doesn't need the

#

<style></style>

graceful moat
#

is html

scenic gull
#

I need help with a code from my Bot

quartz kindle
#

is that for the bot description?

#

@graceful moat

scenic gull
#

Someone help me?

quartz kindle
#

dont ask to ask, just ask the question

#

people will always help if they can

graceful moat
#

yes, description

quartz kindle
#

then you need to learn "css specificity"

lusty dew
#

If that is in an html file

#

Oh

#

I did not think to ask that

#

Yeet

quartz kindle
#

your problem is, that your style code is being injected into an existing page, not a new page

#

the existing page already has defined h1 h2 etc...

#

so for you to override the existing ones, your css needs to have the same specificity level, or more

lusty dew
#

Wait don;t you have to be certified to use Html, Js, Css etc in your bots description?

#

don't*

quartz kindle
#

html and css no

#

just js

lusty dew
#

OH ok

#

What would you use js in a bot description for?

quartz kindle
#

idk, interactive menus?

#

mini-games?

#

xD

lusty dew
#

Ah yea

#

True that

#

But you could also just use

#

CSS for the interactive menu thing

#

Or CSS frameworks like Bulma, uikit, bootstrap etc

quartz kindle
#

eww frameworks

#

lmao

lusty dew
#

EH

#

Framworks are ok

#

but personally

#

I try to code the CSS stuff myself

#

But my friend has been wanting me to learn CSS frameworks

#

so I been using them a lot more

quartz kindle
#

i only use normalizer

#

everything else i use either pure css or less

lusty dew
#

Don't know what that is

quartz kindle
#

normalizer is like a small css preset

lusty dew
#

Ah ok

scenic gull
#

I do not know what the code is to ban a list of uids at the same time.
I mean for example: this is the prefix of my Bot p! and this I want to do, p! banids
and when they put that command ban a list of ids of people who spam or destroy servers.
I do not know what the code is.
Can someone tell me?

quartz kindle
#

to normalize a few browser inconsistencies

#

it sets a bunch of css defaults

lusty dew
#

Cant you just use

#

Fetch

#

or whatever it is called

#

and ban the ID's you fetched?

quartz kindle
#

yeah you need to loop over the list of IDs and ban one by one

lusty dew
#

do like a forEach eh?

#

or whatever type of loop it is

#

I can't think rn too tired

#

xD

#

My problem rn is

#

I just integrated a Node background into my website

quartz kindle
#

if you want to be microseconds faster, use a countdown while loop

#

xd

scenic gull
#

I just want to ban all the ids at the same time

lusty dew
#

but my website is being a dick

#

Erm

#

It will

quartz kindle
#

just use a loop @scenic gull

lusty dew
#

just not directly at the same time

scenic gull
#

and I do not know what the command is to do it

lusty dew
#

Well

#

Make the command

#

That would be a good start

quartz kindle
#

which language/lib are you using?

lusty dew
#

Most likely js

#

or py

scenic gull
#

js.

lusty dew
#

Knew it

scenic gull
#

jajaja

#

I am spanish.

#

My bot is online spanish

#

then what do I do

lusty dew
#

Do you know JS?

quartz kindle
#

so, for example, if you type prefix ID1 ID2 ID3 ID4 , you can get them into an array by using js let array = message.content.split(" ").slice(1)

lusty dew
#

Like at all?

scenic gull
#

@lusty dew Yes javascript.

lusty dew
#

Ok good

#

At least you know the lang

#

Lol

scenic gull
#

LOL.

lusty dew
#

Anyway

#

do what tim said

#

it is helpful

#

Tim knows all

quartz kindle
#

once you have the array, just loop over it then fetch the ids and ban them

scenic gull
#

really?

lusty dew
#

When people take me seriously

scenic gull
#

Oh.

#

Thanks for your help guys

quartz kindle
#

something like js array.forEach(id => client.users.fetch(id).ban())

#

or something

#

idk exactly because i dont have ban commands

lusty dew
#

I think you said to use a while loop

#

:3

#

jkjk

quartz kindle
#

that is if you want to be faster yes

#

lmfao

lusty dew
#

I am just teasing

#

lel

quartz kindle
#

a countdown while loop is the fastest js loop

lusty dew
#

Ye

#

Now to my problem

quartz kindle
#
let size = array.length;
while(size--) {
    //code
}```
lusty dew
#

And I am bad at explaining things so

#

we aare in for aride

#

Alright so
I have a res.sendFile so it stays on the file
but instead of sending the file
it goes to
/users/login
Ill send code
https://paste.tscforum.com/fghvtredix.js
So basically
after the sign up is done
I want it to stay on index.js
index.html*
and when they login I want it to send them to main.html

#

So essentianlly

#

after they sing up instead of staying on index.html

#

it goes to /users/add

#

and when they login it goes to /users/login instead of main.html

#

and I have tried everything I know to fix it

amber fractal
#

wait

#

is that while better than a for?

#

I never knew you could do that lmao

quartz kindle
#

cant you just redirect them, instead of sending the file?

lusty dew
#

I tried redirecting

#

still does the same thing

quartz kindle
#

wait, why does it send to /login

#

you dont have any /login

#

in the code

lusty dew
#

Ill send screenshots of what I mean

#

I know

#

I was following a yt vid on making a node backend

#

and it did that

#

Not thinking hey I should probably make that but I didn't see a reason why if I am using a DB

#

Does't the post property

#

post the data inside the event to a file?

quartz kindle
#

you should probably define different endpoints for each post

lusty dew
#

Wdym?

quartz kindle
#

also Account dosn't exist

#

xd

lusty dew
#

?

quartz kindle
#

typo

lusty dew
#

OH

quartz kindle
#

i mean, you have two functions being executed on the same endpoint

bright spear
#

also Account โ€‹dosn'tโ€‹ exist

quartz kindle
#

if they are supposed to be executed together, put them both in the same endpoint, else define different enpoints

bright spear
#

magic

lusty dew
#

Also here is the index.html file

quartz kindle
#

you're sending a post to /users/add

#

but your post endpoints are ""

#

you should probably set your post accordingly

lusty dew
#

I did

#

I dont know why it took out the /users/add

#

thing

#

I added it back

#

But my problem is

#

Then it does that

#

and the background normally has color

#

it isn't just plain white

#

and the url

quartz kindle
#

because your html

#

<link rel="stylesheet" href="./orion_web.css">

#

its looking for orion_web.css

#

relative to the url

lusty dew
#

Oh?

quartz kindle
#

so you have to set an absolute path for your css file

lusty dew
#

so I have to do something like

quartz kindle
#

you have to use the full url, either localhost or domain name with http/https

lusty dew
#

Ok

#

I'd put that in the app.post right?

quartz kindle
#

in the html file

lusty dew
#

Gets confused

quartz kindle
#

html files always look for files relative to the url

#

so change your css link to <link rel="stylesheet" href="localhost:3000/orion_web.css">

lusty dew
#

Oh ok

#

Also

#

it isn't supposed to say

#

localhost:3000/users/add

#

it is supposed to say localhost:300

#

3000*

quartz kindle
#

you're sending the post to /users/add

lusty dew
#

So i should just send it to the url instead?

quartz kindle
#

so either

  1. dont send them there, send them to / and execute the function based if post data exists or not
  2. send an ajax request
  3. redirect the user back to /
lusty dew
#

Ah ok

#

I literally thought about just posting to like /index or /main*

bright spear
#

that should work too

lusty dew
#

I am just dumb

bright spear
#

if you're using a form

#

you can use a relative url

quartz kindle
#

you can send the form back to the same page, and check if post data exists on page load

#

or use ajax, its fancier

lusty dew
#

I don't like ajax though yeet

#

I may use it later on if I have too

#

or if my friend forces me too

#

xD

quartz kindle
#

i like ajax xd

lusty dew
#

Eh just seems a bit too much to take in rn

#

I have taken in too much this 2 weeks

sick cloud
#

how do you shuffle an array think

lusty dew
#

For 2 weeks I studied HTML, CSS, JS, Bulma, Uikit, Bootstrap and a few others

#

I need a break

bright spear
#

inb4 array.shuffle()

quartz kindle
#

if you're good at css and js, you dont need any framework :3

sick cloud
#

really

bright spear
#

is anyone truly good at css

lusty dew
#

yea I need to work on my js

#

I am getting better

bright spear
#

css is dum๐Ÿ…ฑ

lusty dew
#

No it isn't

bright spear
#

well

sick cloud
bright spear
#

its annoying

sick cloud
#

timpls

bright spear
#

oof

lusty dew
#

I think it is just

#

shuffle(array)

#

Not sure though

#

xD

sick cloud
#

no

#

i added my own shuffle anyways

#

array.shuffle works now mmLol

lusty dew
#

Ok

#

Hey tim

#

It is still sending me to /users/add

#

even though I have it set to /index

#

oof wait

#

I think I may be able to fix that

#

@quartz kindle Thanks so much โค

quartz kindle
#

๐Ÿ‘

lusty dew
#

Now time to figuer one other thing out

#

xD

#

I need to be able to get the username that used to sign up

#

and put it in the top right corner

#

as kinda like a profile type thing

quartz kindle
#

you're storing the auth in a cookie right?

lusty dew
#

ye

#

That way they stayed singedin

quartz kindle
#

your best option would be to change from static files to dynamic files

#

that way you can generate the html you need

#

and inject data for example

lusty dew
#

Wdym

quartz kindle
#

instead of sendFile(file)

#

use send("<html><body>blahblahblah</body>")

#

you build the entire html file as a string

lusty dew
#

uwu

#

Seems like too much work

quartz kindle
#

so you can take data from your database and concatenate it with the html

#

essentially its the same as what php does

#

and node can be a php replacement

lusty dew
#

I don't know wht pgp does

#

xD

#

php*

gilded blaze
#

Could use a template engine

lusty dew
#

Eh

#

I was going to use ejs

#

but nah

#

I like it how I have it for now

#

When it comes to it I will change it up

quartz kindle
#

the whole point of using node/php is to be able to change your html based on your needs

#

and build it the way you need

#

but you cant do that if you use static files

lusty dew
#

Ok

#

For now

#

I am keeping it how it is

#

I am too tired

#

to change it rn

quartz kindle
#

other than that

#

you can pass the data you need somewhere else

#

for example as a query parameter, or as a script file, or even in localstorage/cookies

#

and access it from client side

bright spear
#

using ejs is better than sending the string directly tbh

#

much cleaner

lusty dew
#

Reee

#

Lets just go with I like it how I have it

#

Thanks for the advice though :>

#

I will definitely change it up sooner or later I just don't have the energy to do so rn

quartz kindle
#

you can even build your own templating

#

for example

#

put some pointers in your html file

#

for example "%%USERNAME%%"

lusty dew
#

Well

quartz kindle
#

then import/require the html file as a string instead of sending it directly

#

and use string.replace

lusty dew
#

I wanted to make it so it said Username already exists

quartz kindle
#

then send

lusty dew
#

but that didn't work

lyric talon
#

Guys, i want to use the invoke coroutine but i don't know how to use it. Could you help me ?

#

I want to call a command inside itself

#

do i need to define a callback inside the command ?

scenic gull
#

@quartz kindle

#

Ejem.

#

Can you explain something to me?

#

About a code that can not do it?

#

i mean, I do not understand how to do the code

#

The command will ban all raiders ids

#

In other words, for example: I make this command. p! nids the ban of 500 malicious ids has been successfully completed.

#

@quartz kindle

#

Ignored...

#

xD.

bright spear
#

Stop spam pinging him

scenic gull
#

anyone else that attends me?

bright spear
#

Not everyone is online 24/7

scenic gull
#

ok.

#

:c

#

@bright spear ยฟYou can help me?

#

Or are busy?

bright spear
#

Pinging me now?

#

Seriously?

#

Can u just be patient and wait

scenic gull
#

Good.

bright spear
#

Also banning 500 people at once is probably API abuse

#

So discord might ban ur bot

scenic gull
#

I've seen Bots that have that command and do nothing

keen drift
#

?

scenic gull
#

?

#

xd

#

I do not know if someone knows Spanish to whom xd

graceful moat
#

How do I change the background of my description?

quartz kindle
#

i told you before unicode

#

use split to get an array of ids, then loop over them and ban one by one

#

you will need to use .fetchUser and .ban

upper tundra
#

Is there a Discord API library documentation for TypeScript?

earnest phoenix
#

Can someone help me? I made a bot, but I do not know how to get to the coding part, I know how to code, but I dont have the link or how to get there.

#

@upper tundra No..?

#

Typescript is still javascript, so you should be able to use any javascript library

#

@earnest phoenix You will need to be way more specific.

upper tundra
#

Oh Okay

earnest phoenix
#

What language? what have you looked at?

#

iTexlo

#

@bright spear only discord has the right to determine and classify "api abuse"

#

I recently made a bot with the help of someone, but then they had to go

#

I finished making the bot

#

I don't know like where to code it

night imp
#

Where are you running it?

earnest phoenix
#

My discord server

night imp
#

You code it in a file

bright spear
#

@earnest phoenix I said probably

earnest phoenix
#

what file

#

and how

bright spear
#

You need to know a programming language

earnest phoenix
#

come back after 5 years

#

then you can successfully build a fine bot

night imp
#

Amy I recommend learning a programming language. There are many examples online such as sololearn and udemy

#

@earnest phoenix pls stop k thx

earnest phoenix
#

It's advise

#

There is exaggeration for a reason

#

Just really bad advice I may add

#

You're taking it too seriously

night imp
#

Hoist this is a development channel meant to help people. You can't always assume

earnest phoenix
#

I take helping others seriously, especially people who appear to be clueless

#

the lessons cost money @night imp

night imp
#

Sololearn is free iirc

earnest phoenix
#

It was a clear exaggeration No need to get hot over a simple statement

night imp
#

Udemy is $~10/each

#

But better imo

earnest phoenix
#

there are some free courses in udemy

night imp
#

Not good ones

#

Sololearn for free

#

Udemy for payed

earnest phoenix
#

According to the reviews, yes they're pretty good

#

in udemy

#

what lessons should i take

night imp
#

I recommend JavaScript for beginners, then node if you want to code a discord bot

earnest phoenix
#

first you have to learn the principles and concepts of programming

#

then you can choose your starting language

#

such as javascript or python

#

you can make anything in any programming language (considering that they're turing-complete) however javascript and python are popular choices

#

technically, those are scripting languages

#

Never said they weren't

#

and actually

#

javascript is a high level programming language

#

Sure sounded like you called them programming languages ๐Ÿ‘€

#

same goes for python

inner jewel
#

scripting languages are also programming languages

earnest phoenix
#

^

inner jewel
#

those terms aren't mutually exclusive

earnest phoenix
#

Meh...thats a weak argument

#

Not really

#

it's well known across the development community.

#

some people may misinterpret their exact definitions

#

Scripting = Interpreted, Programming = Compiled

inner jewel
#

no

earnest phoenix
#

GG

#

I just lost 20 IQ from that statement. I'm outta here

#

See ya!
But thats how I learned it way back when, Im sure that hasn't changed

#

Yea it's a general misconception

#

here take a look at this post

inner jewel
keen drift
#

wow

inner jewel
#

ninjad

keen drift
earnest phoenix
#

"Scripting languages are programming languages that don't require an explicit compilation step."

#

Yes

#

"Scripting languages are programming languages ..."

#

It's a bit more complicated than that

#

I'd say

#

Btw Fishy I had a question

#

I know you use Go

#

Well then why even call it a scripting language, lol.
Lets just call all programming languages "programming languages"

#

why do you chose go for bot development? @keen drift

keen drift
#

uh, cause I know it

#

lol

earnest phoenix
#

I was curious about it

#

Good answer

#

I mean not saying it's not suitable

#

just wondering why

#

I personally am not experienced with Go

#

Because its fast and easy to learn

#

Concurrency is easy, scalability is great

#

Hm

#

I myself am writing my microservices in go

keen drift
#

was really looking to try out other stuff

earnest phoenix
#

how does it compare to C/C++, is to too "broad" / low -level

#

does it leave many things to the developer?

#

Go is still high level

#

or is it more abstract

#

I see

#

I mean technically C/C++ are high level

keen drift
#

it still has cgo

earnest phoenix
#

I"m jsut saying, relatively

#

cgo?

keen drift
#

You can call c code from your go app

inner jewel
#

last time i tried mixing c and go it didn't work at all

earnest phoenix
#

Ah

#

Interesting

inner jewel
#

tho it was windows so hahAA

earnest phoenix
#

I'm guessing it's built on top of LLVM

keen drift
#

yes

earnest phoenix
#

Yeah it doesn't work too well.

#

or custom implementation!?

keen drift
#

fairly easy to learn tbh, but still premature

earnest phoenix
#

No, it isn't built on top of llvm

#

Huh

#

But there are ways to use it if you want

#

I think it uses clang?

#

let me see what it is inspired from

#

clang is arguably part of the LLVM infrastructure/toolbox

#

I see

#

It's not official aparently

#

That's okay anyway

#

goroutines are great by the way: they're fast, much cheaper than system threads, and don't take much time to learn

#

Hm

#

Also no semicolons in go ohmygad

#

So its a pain when Im switching between go and rust and JS

#

Because the latter use semicolons

keen drift
#

there's still semicolon to separate statements

earnest phoenix
#

at least it has braces

#

COUGH PYTHON

#

So semicolons are optional

inner jewel
#

now just needs to get rid of the gc :^)

earnest phoenix
#

True

#

But that probably wont happen

bright spear
#

Js doesn't need semicolons tho

earnest phoenix
#

in some cases it does

#

Thats why Im using rust, because of no GC

bright spear
#

Well in most cases it doesn't

earnest phoenix
#

there are many weird cases in javascript

#

singularities

keen drift
#

rust got too much syntactic sugar

#

it's hard for me to know them

earnest phoenix
#

there was one with decimals

#

which was interestin

#

I read about it not so long ago

inner jewel
#

0.1 + 0.2 !== 0.3?

earnest phoenix
#

Rust doesn't have async in stable, ouch

#

Gotta use nightly for that

#

At least it's coming

#

which is a good sign

bright spear
#

Isn't rust by moz://a?

earnest phoenix
#

Yep I think that was it @inner jewel

keen drift
#

uh

#

i don't think so

bright spear
#

I saw in an article that yelp and cloudflare use it (discord does too)

inner jewel
earnest phoenix
#

@bright spear Yea I think they do.

inner jewel
#

rust is 1% writing code, 99% convinving the compiler my iq is higher than 5

keen drift
#

my iq is lower than 5

earnest phoenix
#

Mine is loer too

#

So it always wins

inner jewel
earnest phoenix
#

@bright spear do you know what discord uses rust for?

sick cloud
#

they use it for backend stuff

earnest phoenix
#

That's very vague..

#

and could be anything

bright spear
#

For the store

#

They said it

sick cloud
#

they use it

#

for code

earnest phoenix
#

why the name "rust" tho

#

Oh you're right

#

sounds like a 1820 language

#

xd

earnest phoenix
#

coolest programming language names are elixir, C# in my opinion

#

ruby

bright spear
#

Here's the image

#

Oh there's an official rust server

earnest phoenix
#

Yea Im on it.

bright spear
earnest phoenix
#

And thats great news to hear as well

#

lol

bright spear
#

Found it

earnest phoenix
#

spot on

dull idol
#

it's kinda, transparent border there

#

how i can remove it

sturdy delta
#
const discord = require ('discord.js');

class ServerSupportCommand extends commando.Command
{
    constructor(client)
    {
        super(client,{
            name: 'support-link',
            group: 'simple',
            memberName: 'support-link',
            description: 'Sends a link to my support server! :D <3'
        });
    }

    async run(message, args)
    {
        var SupLink = new discord.RichEmbed()
            .setTitle('My Support Server')
            .addField('Click the title to join the Support Server for my bot, but remember. Always follow the rules, and there will be punishments if you do not.')
            .setColor('00FFFF')
            .setURL('(discord url here changing this so it doesnt ``advertise my server``')
            .setFooter('Thanks for inviting me :D')
        message.channel.sendEmbed(SupLink);
    }
}

module.exports = ServerSupportCommand;```
any reason why this comes out as: ```
My Support Server
Click the title to join the Support Server for my bot, but remember. Always follow the rules, and there will be punishments if you do not.
undefined
Thanks for inviting me :D```
#

the underfined part

mossy vine
#

The fields value is undefined

sturdy delta
#

ty fixed it

sturdy delta
#
so to test if a player has any of a certain three roles, and then if they have any of those roles, the command stops```
with this command:
``` let faction1 = member.guild.roles.find('name', 'Warlocks');
    let faction2 = member.guild.roles.find('name', 'Dragons');
    let faction3 = member.guild.roles.find('name', 'Hunters');
    let chance = Math.floor(Math.random() * 3);
        if(chance == 0)
        {
            member.addRole(faction1)
            message.reply('You are now part of the Warlocks!', {files: [__dirname + "/FactionPics/warlock.jpg"]});
        }
        if(chance == 1)
        {
            member.addRole(faction2)
            message.reply('You are now part of the Dragons!', {files: [__dirname + "/FactionPics/dragon.jpg"]});
        }
        else
        {
            member.addRole(faction3)
            message.reply('You are now part of the Hunters!', {files: [__dirname + "/FactionPics/hunter.jpg"]});
        }```
river sedge
#
  "name": "WelcomerDarkLegendBot",
  "version": "0.4.0",
  "description": "Welcomer bot for Discord",
  "main": "bot.js",
  "scripts": {
    "start": "node bot.js"
  },
  "keywords": [
    "discord",
    "bot",
    "welcome"
  ],
  "author": "DarkLegend",
  "license": "MIT",
  "dependencies": {
    "discord.js": "*",
    "canvas": "*",
    "snekfetch": "*"
  }
}```
#

I am using this but it's not installing anything

#

idk why

bright spear
#

Did you run npm i

river sedge
#

ya

#

it is unable to install canvas

bright spear
#

Can u paste the error message

river sedge
#

ok

#

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! canvas@2.3.0 install: node-pre-gyp install --fallback-to-build
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the canvas@2.3.0 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\Utkarsh\AppData\Roaming\npm-cache_logs\2019-01-14T07_33_39_879Z-debug.log

steel heath
#

What's your OS? Windows?

river sedge
#

windows 7 sp1

steel heath
river sedge
#

ok

#

i have python 3.6.5

#

it is saying me to install python 2.7

neat falcon
#

lmao node-canvas is a joke

lament meteor
#

@neat falcon what do u use?

#

i use html and a website screen shooter

neat falcon
#

I use jimp or sharp

#

Sharp for basic editing and jimp for advanced

fierce thorn
#

I use canvas-constructor

#

But that's basically node-canvas

neat falcon
#

same gross installation?

languid dragon
#

still works a charm

#

once you get the initial installation figured out, its pretty straight forward

dull idol
languid dragon
#

i somehow got a system where i can just npm install and it does it all for me without trouble

#

.is-flex .btn-like img

dull idol
#

then?

#

wait...

#

@languid dragon css .is-flex .btn-like img { color: transparent !important; background-color: transparent !important; }

#

is it like this?

languid dragon
#

why dont you just do display: none ??????

dull idol
#

w o r k e d

#

thanks <3 dblWink

quartz kindle
#

people abusing !important as always xD

mossy vine
#

In javascript Map()s, can the value be an object so i can access an object with myMap.get(value)?

languid dragon
#

wot

quartz kindle
#

both objects and maps support objects as values

#

but maps support objects as keys as well, while objects do not

#

and map's .get can be used on any property

mossy vine
#

So basically, if i want to store certain data for channels in a map

let myMap = new Map()
myMap.set(message.channel.id, myObj)
myMap.get(message.channel.id) //will this return myObj?```
quartz kindle
#

yes

blazing star
#

yes it will return the object

mossy vine
#

Ah cool

#

Thx

sturdy delta
#
const discord = require ('discord.js')
class JoinFactionCommand extends commando.Command
{
    constructor(client)
    {
        super(client,{
            name: 'join_faction',
            group: 'factions',
            memberName: 'join_faction',
            description: 'Upon saying join_faction, I put you into a random faction!'
        });
    }

    async run(message, args)
    {
        let faction1 = message.member.guild.roles.find('name', 'Warlocks');
        let faction2 = message.member.guild.roles.find('name', 'Dragons');
        let faction3 = message.member.guild.roles.find('name', 'Hunters');
        let chance = Math.floor(Math.random() * 3);
        if(message.member.guild.roles.some(r => ["Warlocks", "Dragons", "Hunters"].includes(r.name))) {
            return message.channel.send("You already have a faction!!!");
        };
        if(chance == 0)
        {
            message.member.addRole(faction1)
            message.reply('You are now part of the Warlocks!', {files: [__dirname + "/FactionPics/warlock.jpg"]});
        }
        if(chance == 1)
        {
            message.member.addRole(faction2)
            message.reply('You are now part of the Dragons!', {files: [__dirname + "/FactionPics/dragon.jpg"]});
        }
        else
        {
            message.member.addRole(faction3)
            message.reply('You are now part of the Hunters!', {files: [__dirname + "/FactionPics/hunter.jpg"]});
        }
    }
}

module.exports = JoinFactionCommand;```
thats what the code is. but no matter what happens, no matter if i have the role or not, it sends "You already have a faction!!!"
#

Any help?

#

???

quartz kindle
#

you should probably change it to look for roles of the member, not roles of the guild

#

you're checking if the guild has one of the faction roles

#

if(message.member.guild.roles

sturdy delta
#

Ohh crap

#

So whT do I change it to?

quartz kindle
#

probably just member.roles

sturdy delta
#

That doesnโ€™t work

#

message.member.roles

quartz kindle
#

weird, it should work

#

member.roles returns a collection of roles

#

you should be able to use .some on them

coral trellis
#

Wouldn't it be message.guild.roles? not message.member.guild.roles?

blazing star
#

.member also contains the guild property

amber fractal
#

member has a guild aswell it wouldve worked anyways i think

coral trellis
quartz kindle
#

well, for checking if the factions exist, message.guild.roles would be better

#

for checking if a member has a role, it should be message.member.roles

late hill
#

Can I somehow add an empty line to a field value?

blazing star
#

a new line or blank?

late hill
#

The field value already has stuff I just don't like how close to eachother the fields are

#

So I would like to add some extra space between them

amber fractal
#

\n should work i think

quartz kindle
#

you should be able to add a new line at the end

late hill
#

It doesn't display the extra line if it's just \n

quartz kindle
#

try \r\n

blazing star
#

.addBlankField also works

#

except itโ€™s not ideal

late hill
#

Still doesn't

#

I don't think .addBlankField is a thing in Eris

quartz kindle
#

what if you start the next field with a new line?

amber fractal
#

Could you make a new field and have the name a zero width space?

blazing star
#

yes

late hill
#

Starting it with a new line doesn't seem to display either

blazing star
#

you canโ€™t customize embed widths

late hill
#

Not width

#

Height

blazing star
#

oh ok

late hill
#

new line with a zero width space works

#

๐Ÿ‘Œ

earnest phoenix
#

how to ignore dms?

quartz kindle
#

you can check for channel type

#

message.channel.type

#
dm - a DM channel
group - a Group DM channel
text - a guild text channel
voice - a guild voice channel
category - a guild category channel```
earnest phoenix
#

tnx

earnest phoenix
#

ok fixed xd

empty axle
#

Someone help me? GWakkoThink

violet jetty
#

Don't just ask to ask directly put your question

fringe rover
#

Iโ€™ve been Tryna Figure out How to Embed something for nearly 3hr Now And i donโ€™t get how to do it If you could help me id apprecaite it if some one would Explain @here

#

<@&264889767072628742>

mossy vine
#

smfh

loud salmon
#

๐Ÿคฆ

queen sentinel
#

this kid

mossy vine
#

tagging here and moderators at the same time

loud salmon
#

dont tag all mods @fringe rover

fringe rover
#

Wut mode shal i tag?

mossy vine
#

nothing

#

dont tag anyone

fringe rover
#

Ow sorry Bro Im new ๐Ÿ˜ช

mossy vine
#

there are like 10k people in this server just have some common sense

violet jetty
#

White names == Newbies confirmed

gleaming glen
#

Okay but please dont attack white names

loud salmon
#

@violet jetty stop, please dont attack whitenames

#

it makes the entire server look bad

violet jetty
#

Sorry sir blobcatsalute

fringe rover
#

Bro J WANT MY MESSAGE TO BE NOTICED?

#

Iโ€™ve been Tryna Figure out How to Embed something for nearly 3hr Now And i donโ€™t get how to do it If you could help me id apprecaite it if some one would Explain @here

loud salmon
#

jfc

mossy vine
#

moot

loud salmon
mossy vine
#

called it

empty axle
#

@violet jetty It is in relation to the server site

#

Here what question?

#

,_,

earnest phoenix
#

a

amber fractal
#

Does .fetchUser even if they arent in a server with your bot?

#

I could just test it

#

Lol

quartz kindle
#

it should

amber fractal
#

So thats how people get users if they arent in serevrs with it

#

Alright thanks

#

servers*

lyric talon
#

Guys, how can i get a channel that the user called a command ?

mossy vine
#

read ๐Ÿ‘ the ๐Ÿ‘ docs ๐Ÿ‘

amber fractal
#

Discord js? also ^

lyric talon
#

oh, sorry steven

#

python

amber fractal
#

O

lyric talon
#

discord py rewrite

quartz kindle
#

idk python, but i see people using ctx.channel or message.channel

#

you can probably find it in the docs

sonic robin
#

Hello, I'm trying to make my own bot using this guide https://www.digitaltrends.com/gaming/how-to-make-a-discord-bot/amp/ but I got this error and I don't know where I went wrong. can anyone please tell me how I'll be able to fix this.

earnest phoenix
#

do you know any programming languages @sonic robin

topaz fjord
#
  1. Don't use discord.io
  2. Don't use outdated tutorials
  3. Learn a programming language
sonic robin
#

I'm sorry but all I'm doing is copy, pasting what the guide said.

Thank you Turtle and r0b0t for noticing me

inner jewel
#

that tutorial is outdated and overall pretty bad

sonic robin
#

I'll learn a programming language indeed

amber fractal
#

Id suggest dont copy either. You learn more by doing it yourself. Also debugging is good for learning, atleast it helps me.

earnest phoenix
#

were you guys aware of this:

quartz kindle
#

Yes?

#

Wait, actually no i didnt

#

Not the tagged function part

lyric talon
#

Guys, is it possible to a bot play a mp3 file ?

quartz kindle
#

Yes

lyric talon
#

๐Ÿ˜ฎ

#

Ty, tim

#

Have any text in the documentation (discord rewrite) talking about it ?

quartz kindle
#

No idea, i dont work with py. But discord accepts audio streams, so you need to open the file as an audio stream, possibly convert it to something discord likes, like opus stream

#

And then send the stream to the voice channel

#

Look for voice channel documentation

earnest phoenix
#

Anyone know how to host a bot?

mossy vine
#

check pings

inner jewel
#

depends on the language

earnest phoenix
#

I use node.js

inner jewel
#

but you first need a server, so read the pins

earnest phoenix
#

Ok

mossy vine
#

pins*

sturdy delta
#

How do I make my bot list the servers itโ€™s in and say how many servers it is in?

earnest phoenix
#

what lib and lang

sturdy delta
#

Discord.js/discord.js-commando and JavaScript

severe socket
#

<client>.guilds is a Collection of all guilds your bot is in

#

so <client>.guilds.size should give you the total amount of guilds your bot is in

sturdy delta
#

how would i list how many servers my bot is in, rather than how many servers my bot has joined?

earnest phoenix
frank dust
#

Can bots set the slowmode of a channel? I'm using JDA's setSlowmode() and it's not changing it, but when using getSlowmode(), it shows the updated number until changed manually through the discord client

inner jewel
#

define not changing

fierce thorn
#

It's the same it was before he used setSlowmode()

inner jewel
#

if getSlowmode() returns the value you set

#

then it did change

#

because the values returned by the getters are only updated on events, in this case the event with the new slowmode value

pliant dragon
#

Hello, Could someone give me a hand with this? the code and error are in this: Removed

sick cloud
#

your missing a )

#

pretty obvious

pliant dragon
#

Where?

sick cloud
#

go over your code

#

and find where

pliant dragon
#

I did, several times. its in that eval

sick cloud
#

then it's probably in your custom eval function

pliant dragon
#

its not changing the arguments

#

My other eval functions work fine,

bright spear
#

why removed

#

how is anyone supposed to help you...

sick cloud
#

erm, anyone with express knowledge able to help out here?

C:\Users\ThatTonybo\Desktop\discussion\node_modules\express\lib\application.js:214
  this.lazyrouter();
       ^

TypeError: Cannot read property 'lazyrouter' of undefined
    at use (C:\Users\ThatTonybo\Desktop\discussion\node_modules\express\lib\application.js:214:8)
    at module.exports (C:\Users\ThatTonybo\Desktop\discussion\router.js:3:5)
    at Object.<anonymous> (C:\Users\ThatTonybo\Desktop\discussion\server.js:25:20)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:279:19)
#

never encountered this error and heck idk where it's coming from

inner jewel
#

how is this undefined Thonk

sick cloud
#

dunno, it seems to be an express error anyways

inner jewel
#

did you do something like function.bind(undefined)?

sick cloud
#

no?

inner jewel
#

/shrug then

sick cloud
#

i haven't touched node_modules at all think

inner jewel
#

that's the only thing i can think of that could do that

spice harbor
#

try just calling lazyrouter()

#

no this.

stark bear
#

@sick cloud send more code

#

or just

#

send code in general

sick cloud
#

i'm not modifying express's internal code

stark bear
#

oh

sick cloud
#

its leading here

stark bear
#

yeah i found that

#

send your code

sick cloud
#

what bits

stark bear
#

router.js

inner jewel
#

try deleting node_modules and reinstalling

stark bear
#

try sending router.js

sick cloud
#

okay

#

and dream that's got nothing to do with it

stark bear
#

bet

sick cloud
#
module.exports = (app) => {
    /* account handling */
    app.use(async (req, res, next) => {
        if (req.session && req.session.user)
        res.locals.u = req.session.user; else res.locals.u = null;

        next();
    });

    /* routes */
    app.use('/', require('./routes/app'));

    /* 404 */
   app. use(async (req, res, next) => {
        return res.status(404).send('404');
    });
}
stark bear
#

okay send server.js as well

sick cloud
#

reinstalling fixed it

#

@inner jewel thanks

stark bear
#

really

#

lol that's odd

vernal basin
#

is there some way to initiate a phase, let's say using !start

and it sets a variable, say counter, to 0.

every time a person types !plus, the counter goes up one.

every time a player types !end, the counter is reset and !start is needed to restart it.

lang: js

quartz kindle
#

yes you just need to save the state somewhere

#

a database is recommended

vernal basin
#

is there a way to do it without databases

#

like maybe with a while loop that waits for another command? or does that not work

quartz kindle
#

while loops will make your bot freeze

vernal basin
#

oh right, because it reads each command independently?

quartz kindle
#

while loops block everything else, new commands will never come in

vernal basin
#

ah ok

quartz kindle
#

you can do it without a database, you have one of two options:

vernal basin
#

is a text file plausible for this

quartz kindle
#

do it in memory: fastest and simplest, lose all data on restart or crash
use a json file or another flat file to save states and load them on startup

vernal basin
#

how would I do it on memory

quartz kindle
#

create a global object, and save data to it

#

for example js const database = {}

#

then when people use a command

#
database[userid] = some value```
vernal basin
#

ok

#

does a flat file include .txt

quartz kindle
#

you can use .txt, but .json is better easier to use

vernal basin
#

ok

quartz kindle
#

but if you're gonna use files, there are a few best practices you should follow

#

for example, dont read and write to it every single time a command is used

#

so it gets a bit more complex

vernal basin
#

i feel like I should know this

#

but I'm trying to clear the contents of a file so I can rewrite oit

#

rewrite it*

#

i tried using RegEx but that didn't work

#

(js again)

inner jewel
#

what

#

what does regex have to do with clearing a file?

#

just js.writeFile/fs.writeFileSync it

vernal basin
#

?

inner jewel
#

those already overwrite all contents

vernal basin
#

wait really?

#

cool

#

thanks

earnest phoenix
#

how can I give a role to all the people who react to a emote?

#

lib and lang

amber fractal
#

Discord js, btw

#

I've tried using || aswell

#

but obviously that'd be true

vernal basin
#

how does one get the ID of a role again?

#

there was some command to type, i forgot

zealous veldt
#

you should really sourround more with parens @amber fractal

amber fractal
#

Why?

#

I did that aswell

zealous veldt
#

because right now its hard to visualize how you want it, and js has very specific OOO

amber fractal
#

well ... && (args[0] != "pet!help" && args[0] != "pet!adopt") didnt work either

#

After surrounding it

earnest phoenix
#

dont you need double equals because js is autistic

amber fractal
#

No

#

not with !=

#

Thats like strict not equal or some bs

#

Ill try it tho

#

if(!test || test2 == undefined && (args[0] !== "pet!help" && args[0] !== "pet!adopt")) doesnt work either

earnest phoenix
#

hello i want to help, guys.

#

i want to create a wep contorl to my bot, xd what's a language?

vernal basin
#

^3above, != is unequal

amber fractal
#

Thats what I want

#

I set this up if(args[0] !== "pet!help") console.log("not help") if(args[0] !== "pet!adopt") console.log("not adopt") and it does work, so idk why the inital one doesnt

#

wtf is that spacing

#

so why does it work here ;-;

earnest phoenix
#

because your logic posted above is probably flawed

amber fractal
#

Its copy pasted

#

Using this I think I found the error tho

#

nvm

#

I got it, it works with if((!test) && (args[0] !== "pet!help" && args[0] !== "pet!adopt")) now

spring ember
#

@amber fractal do ||

supple citrus
#

$setrole Bot Developer