#development
1 messages Β· Page 1460 of 1
yeah it throws an exception if a member turned off dm but you can just continue the loop and dm other unprotected users
k sir
not epic
not to the bot you are
sounds like TOS breaking
yeah
yeah it probably is
Unless the users consent to being mass dmed
i literally said you'll get banned and ratelimited
DMing random members is not something you can easily get away with, users can report and bot and get both the bot and the owner's account suspended
The process won't die
i mean if the guild is huge
honestly i dont think its that big of a problem anyway
You'll just easily get ratelimited
yea
AT MOST you'll be dming/attempting to dm 10,000 users (i think thats the amount of requests you can make)
function getUserFromMention(mention) {
if (!mention) {
return message.reply(lang.error.noMention).then(msg => msg.delete({ timeout: 5000 })).catch();
}
const matches = mention.match(/^<@!?(\d+)>$/);
if (!matches) return;
const id = matches[1];
return bot.users.cache.get(id);
}
so doing this in a single file, I'll need to import message for example, right?
yeah obviously its going to take some time to do that
no you won't if you set an interval for 5 minutes
oh
you'll get reported then
whichever one comes first π
Yep lol
REST:
POST Message | 5/5s | per-channel
DELETE Message | 5/1s | per-channel
PUT/DELETE Reaction | 1/0.25s | per-channel
PATCH Member | 10/10s | per-guild
PATCH Member Nick | 1/1s | per-guild
PATCH Username | 2/3600s | per-account
|All Requests| | 50/1s | per-account
WS:
Gateway Connect | 1/5s | per-account
Presence Update | 5/60s | per-session
|All Sent Messages| | 120/60s | per-session```
5 minute interval between DMs is still API abuse, you shouldn't make many amount of API calls under any circumstances
possible banned from discord for life if you continue with a different bot account
That's not updated
poggersn't
need help here
voltrex is regex god
I hate regex
a number from 0-9 repeated 18 times
its so confusing
with the enclosing stuff
discord API quota is up to 1800 request per day so what are you talking about?
regex

You gotta export the message payload to the file that involes that function, invoking that without the variable would throw a ReferenceError
wait till you see the longest email validation regex
lol i saw that when i was working on email validation
you can never truly validate emails tho
i agree
yeah, I guess in this case I should just have the function inside the command file
Best mention regex is
so its not worth it anyway
voltrex made a 3k line regex to detect if a user is on mobile on a website
/^<@!?(\d{17,19})>$/
the email thing
lmao yes
????
It's actually one line, just seperated
your one line things don't count shush
Here it is:
yes you are to much of a good coder
but are they readable tho
i used to write some really ugly one-liners
all of voltrexs one liners are readable
My one liner codes are readable enough if you understand most of JS
Why not just check the browser user agent. It has that data
well k
cant user agent have different data
also isnt that regex for checking the user agent
probably why i cant read them much
should I create a folder called functions for all the functions I have, or just leave them inside /source
up to you

@earnest phoenix what is the purpose of that regex
it'll have all data about your device. This is how i make two factor authentication
I wrote that too long ago that i forgot
lol

ah yes
@outer perch I would suggest you leave them in the functions folder for cleaner stuff
πΏ
yet another symptome of the programmer syndrome we all have
Yes
wot
Bruh, did you just actually name it source
src > source
it's the exact same thing xD
oh yeah
you sure guild is defined?
I have it like this
why not call Node.JS Node.Javascript then
That guild isn't in the cache
yes
O_O
Acronyms better
ikr, I used them a lot
cmds
imgs
langs
src
L m A o
how about moving all images and langs to assets
lol
do you read 'el em ay oh' or 'le mao'?
um
None
neither
el em ay oh
Bismillah
talkin about 'LMAO'
its README.md π
We know
ππππ
Windows doesn't show the extension
cri
cuz I didn't let it
you have to turn on the thing
i dont understand how people can live without file extensions
yeah true
imagine editing a minecraft server without extensions on
server .properties
literally everything looks the same
and im not going to be a regular user
looking at the icon
lol
how do i fix it
#development message
As i said, the guild is not in the cache
"How to put guild in cache discord.js"
fetch it
No need to fetch a guild
Every guild is cached by default
I suspect the ID is wrong
Or the bot isn't in that guild
Wouldnt that throw a different error
Nope
It returns undefined when the guild isn't in cache
Same as the other managers
Im talking about
Uhh, error for what
you may as well use fetch, it'll just grab from the cache if it's there otherwise it'll send an api request
Im saying if the bot wasnt in that guild wouldnt it throw a different error than "undefined"
Nah

I mean, he's just trying to get the guild so why would that throw a different error if the bot isn't in that guild
πΏ
πΏ Because JavaScript isn't Python
Javascript null = no exist
Literally
in javascript there's null and undefined
null == undefined
Basically it has no value
wat
The readme troll
LMAO yes
You're not funey>(
I'm still questioning
should /lang, /fonts and /img be also inside /src?
typeof(undefinded) = null
nope
(this)
assets/
aight
ight
what about /commands
If it needed for the src to run then put it in src
thats source code
nono, it's not
Both null and undefined means void, wanna know the difference between null and undefined?
undefined (Daniel) - null (Cooler Daniel)
just to organize
the man said it boys
ight, chif

But can someone explain
const avatar1 = await Canvas.loadImage(ship1.displayAvatarURL({ format:'png' }));```
how do i fix that
Why the fuck is the type of null
yes
object
I feel like there's a third one
someone help me here pls
lol
Null, undefined and something else
void
What's ship1 defined as
@outer perch basiclly
Anything that the src need to work should be in src for organizing
yea
Kinda
No
i still dont understand never tho
I didn't have /src and it was working, just OCDs comin' all over 
const [ship1, ship2] = message.mentions.users```
πΏ My guy just tried to get array of users from a collection

const [ship1, ship2] = message.mentions.users.first(2);```
ok
Hmm
Len
Yes
<Collection>.array()
thanks it works
Yes
what are they used for?
Well yea they can go in data directory
yeah i guess
like, I have itemlist.json, where everything which can be bought in shop.js is stored
seems like data to me π
well, I guess I have nothing left to organize
How do I make the servers command to show how many servers the bot is on? in discord.py
Can you give me a complete script from the bot.command please, I don't know how to use the guides
nobody will spoonfeed you
discord.py has amazing docs, use them
"amazing docs"

well
better than most 
None have worked for me so far, but I will try them
you should stop copypasting then
docs exist as a reference exactly for this reason
I agree with the XD
tfw you blame your incompetency to navigate a doc site on the actual docs
Well can't blame discord.py users, it's docs is like
...

i never used dpy or python for that matter
and i could find what i'd need for their goal
within a minute
se rΓe en espaΓ±ol
I mean, it's docs is not that bad but a little harder to navigate through rather than discord.js one
πΏ
today is my day of questions, holy shit I'm already tired of questioning, but I need to
poggers
2 questions
any guide on file organization you may know?
and
how do I know/remove unused Node modules?
ctrl+backspace until the line is gone
but, how do I know if it's not used?
do you not use an editor?
like, any command, any tip?
your editor should highlight modules that are used
I mean, remove the dependencies too
so just go through your code and uninstall modules you don't need
thought there was a lazy way π
there's maybe a vscode addon π€·ββοΈ
what about this question?
well
i like to use idk-what-this-case-was.js
unless im working with react but thats another thing
wat
oh cool
so does vsc
Idk if community edition has that tho
is that with the free intellij?
that's why i asked do you not use an editor
dang its with the paid version
I use VSCode
I said idk
but never noticed any grey
Give it a try
in the hierarchy?
i remember i saw intellij community didn't have full support for js
cuz, everything is grey
It doesn't have full support for react afaik
no
for entire node packages you should manually check
But yeah, community is mostly java
imagine I installed moment.js
you can search stuff like = require('your-package-name')
but I am not using it
I mean, if your project is open source you can just request OS dec license
and if nothing shows up uninstall it
It's free
All you need is a 3 month old open-source project
I'm not using it, but I don't know if I have it installed, or even using
I got mine 1 year ago
you can use vscode search
how do I remove only, unused node_modules
whats that for tho
run the npm prune command to remove unused or not required node packages from Node.js.
IntelliJ has JS support, but that's only for ultimate I believe (or you can use WebStorm but that still costs)
yea
If you have a student pack you can get it for free.
thats why i use vscode for non-java stuff
its intellisense is pretty good tho ngl (intellij)
OS dev too, and it lasts indefinitely
What is OS dev
Open-source dev
You need a 3 month old project which you work actively at, and have major understanding of it
One of the perks of using github ig lul
bruh what would it be of coding without github
but what is OS dev in relation to π
Or operational system depending of context
3 iirc
dang it
yes I understand that, but what does having 3 months of an old project relate to.
Trust me, I've seem people do without it and it's disgusting
Maybe to check if you're indeed committing to the project?
Idk their reasons
is this in relation to intelliJ/student pack/something else
project.rar
final-project.rar
fixed-final-project.rar
now-i-got-it-fixed-final-project.rar
final-final-final-project.rar
All-pack license
final-final-final-with-build.rar
Everything you can eat
ah
npm WARN gumball-and-penny@1.0.0 No repository field.
npm WARN gumball-and-penny@1.0.0 No license field.
what does this mean?
wat
you have no license and repo field in your package.json
Did u configure repository and license fields?
well it means that package doesn't have a license or repository linked to its package.json
no
Do it then
why would I do that btw?
Idk, it's asking for it
it's my bot's package file
it's meant for open source projects
I don't want my bot open source
copy what
The code
code from where
Remove those fields then
const brr = [null, undefinded]
if (brr.contains(null));
hey
how can i make my bot listen ONLY the response after the command
?
.awaitMessage
like .awaitMessage(message.content);
?
No
how?
Read docs lol
link
Does anyone know how I can update everything in one MongoDB column at once? Trying to change these strings to numbers but there's too many
you can just do $set with the dict of the fields and their new values
so something like this:
user = user_col.find_one({"user_id" : ctx.author.id})
reward = randint(50, 100)
user["balance"] += reward
user_col.update_one({"user_id" : ctx.author.id}, {"$set" : user})
Keep in mind this is Python syntax
@odd stratus
Mkay
https://srcb.in/JaxEtnFL5L
code and the error
can i do both
client = discord.Client()
bot = commands.Bot(command_prefix="$")
...
...
client.run(DIS_TOKEN)
bot.run(DIS_TOKEN)
``` is one better than theother? which one should i be doing
im guessing this is dpy
ye
do both on_message and on_ready work with bot
yes
from the docs:
This class is a subclass of discord.Client and as a result anything that you can do with a discord.Client you can do with this bot.
so bot is inheritated from Client
correct
so do i change all my @client.event to @bot.event?
if you name it bot, yes
Explain your issue please
I made this button something like this <a href=βmybotlinkβ class=βbuttonβ>Invite me</a>
But the text is not showing
hello
I made this button something like this <a href=βmybotlinkβ class=βbuttonβ>Invite me</a>
But the text is not showing
I want someone to help me how can i made like this one ?
Webhook
message thanks for voting only
Yes
how ?
I made this button something like this <a href=βmybotlinkβ class=βbuttonβ>Invite me</a>
But the text is not showing
@sweet matrix google "how to make webhook server"
As its hard for me and idk how t9 do it
Apso search how webhoom work too
what about my issue π
No
actually ignore that
So
I did .p { color: #00ed3f }
And it didnβt work
Anyone know why
Anyone know why
k also did ; to it and other things
But it doesnβt work :/
I did that to
Do not add a client.on() inside another command or event.
you need to use awaitReactions instead
?
It should be outside of command
no...
Its reaction role
Its reaction role
but really the important thing is to never have an event handler inside another
the rest comes later
what's your issue in the first place
so im trying to do a simple ping command with discord.py
@bot.command()
async def ping(ctx):
if ctx.author.id == ME:
await ctx.channel.send(f"pong")
when i run my command $ping
it doesnt work
but other aspects of it work
bot = commands.Bot(command_prefix='$')
``` bot declaration
yeah
@terse finch can i see the traceback?
Ah i see
Its just ctx.send
Also i hope ME is an int of your id
there is no traceback. but the issue was i had a on_message and forgot to add the bot.process_commands() there
also yeah its an int of my id its just there
as place holder
Ahhhh that would do it
nope not working lol
Traceback this time?
You spelt ping wrong
so you typed it wrong
no i didnt tho
doubt
If you run it again are you 100% sure that error is happening when it shouldn't.
also you probably don't need the bot.process_commands(...) at the bottom.
And theres no traceback you say?
so its processing the command its just not sending to the channel
Ok I use py
I know why itβs ctx.send
Not ctx.channel.send
I told him that
ctx.send() doesnt do anthing either
Fr
Whats dist?
my id
Let me see the me var
Can i see the variable?
Why are you adding that extra stuff?
Wait a minute
its just a fun bot for a private server
i got it figured out
my key file i import all the private stuff
wasnt saving on the server properly
π€
so reuploading the file to my server fixed it
which is weird
but whatever
thanks for the help everyone
Also might wanna add a few checks there
if the person isnt what you specify you can return None
Yea basically a way to organize your commands so 1 file dosent have 5k lines
have any resources i can read on that?
A Cogs Example for the rewrite version of - discord.py - bot_example.py
thanks
Like for me
Let me get something
def load_extensions(self, reraise_exceptions: bool = False) -> Tuple[Tuple[str], Tuple[str]]:
"""Loads all extensions
Parameters
----------
reraise_exceptions : bool, optional
Weather or not to silently continue on error, or raise the exception, by default False
Returns
-------
Tuple[Tuple[str], Tuple[str]]
A tuple containing a tuple of extensions that loaded successfully,
followed by a tuple of extensions that failed to load
Raises
------
commands.ExtensionFailed
There was an error during loading the extension, you can use the 'original'
atrribute of this exception ot get more details
commains.NoEntryPointError
The extension didn't have a setup function visible at the global scope level
commands.ExtensionAlreadyLoaded
The extension was already loaded
commands.ExtensionNotFound
The path provided contained no valid extensions
"""
loaded_extensions = set()
failed_extensions = set()
for file in map(lambda file_path: file_path.replace(os.path.sep, '.')[:-3], glob(f'{self.extensions_dir}/**/*.py', recursive=True)):
try:
self.load_extension(file)
loaded_extensions.add(file)
print(f'{file} loaded')
except Exception as e:
failed_extensions.add(file)
print(f"Failed to load cog {file}")
if not reraise_exceptions:
traceback.print_exception(type(e), e, e.__traceback__)
else:
raise e
result = (tuple(loaded_extensions), tuple(failed_extensions))
return result```
this is something where if there is something like -> cogs/folder/file.py it would load it
My bot is in a class but you could fix that obviously
and a quick real life example of a cog would be something like ```py
import io
import discord
from discord.ext import commands
from gtts import gTTS
class TTS(commands.Cog):
def init(self, bot):
self.bot = bot
@commands.command(aliases=["t2s", "text2"])
@commands.guild_only()
async def tts(self, ctx, *, text: str):
mp3_fp = io.BytesIO()
tts = gTTS(text, lang="en")
tts.write_to_fp(mp3_fp)
mp3_fp.seek(0)
await ctx.send(file=discord.File(mp3_fp, "text.mp3"))
def setup(bot):
bot.add_cog(TTS(bot))```
hopefully this helps
(what that does is take text and output it as tts to a file then sends it, feel free to use it) <- @terse finch
I prefer not to use cogs because you have to put a lot of unnecessary stuff
Just put it in one file
Werite the class tts(commands.cog)
Yea?
Import write __ initial and setup
What if I have a lot of commands and categories?
I don't want a 300 line bot.py file π
why
So youd rather have 1 file with 7k lines of every command
mine is already over 300
It's good practice to split up your code into multiple files.
It's a matter of organization and the structure of your code.
It breaks every time someone joins it doesnt give or remove the role any ideas?
Instead of having a giant glob you have to visit and have your IDE load.
which will be hard for other developers to read your code, but if you're the only one working on it, you probably don't care.
(sorry for interupting :( )
why are you still adding new events when a command is run
?
well this is a rr
Evie mentions this: #development message
Read the docs on how to use it
@earnest phoenix That code only runs if someone sent a message.
you cannot put an event inside an event
so what do i need to do
Move the event outside
so below const verifyNotifyRole = message.guild.roles.cache.find(role => role.name === "Members");
Why am i getting this error ? TypeError: Cannot read property 'message' of undefined
@near stratus because you don't show us your code
My code is```js
help() {
try {
ref.embedDes(this.message, "Welcome mortals", helpMessage.normal);
} catch (err) {
console.log(err);
}
}
i need time to type
its either helpMessage or this is undefined
this is undefined
Then define it
but i defined it in my class constructor```js
constructor(message, args, client) {
this.message = message;
this.args = args;
this.client = client;
}
COGS ARE GREAT FOR PROPER ORGANIZATION
Smh
... sorry but where is that again i recently started doing this so idk what that is I am really sorry if i am annoying you.
Outside the client.on(message, message =>{})
well fortunately the bot is gonna have maybe 2 super simple commands
yeah file size is probably gonna be at most 75 lines of code
I see
2-3 commands, a couple fun things for roles π€‘ and just a simple loging file
logging? 
like a log of peoples roles that are added and removed along with some other stuff
as well as a simple ban log
ahhh
well youd have to add that in yourself
Tip to ban its just member.ban()
Extra tip roles is either audit log entries or on_member_update
But id prefer on_member_update
Alright, library finished. 2 days of work and its done
any ideas?
module.exports = {
name: 'vrr',
description: "Sets up a reaction role message!",
async execute(message, args, Discord, client) {
const channel = '||';
const verifyNotifyRole = message.guild.roles.cache.find(role => role.name === "Members");
const verifyNotifyEmoji = 'β
';
let messageEmbed = await message.channel.send(embed);
messageEmbed.react(verifyNotifyEmoji);
let embed = new Discord.MessageEmbed()
.setColor('#77dd77')
.setTitle('Verify')
.setDescription('Please react to the message to gain access to the server.');
client.on('messageReactionAdd', async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;
if (reaction.message.channel.id == channel) {
if (reaction.emoji.name === verifyNotifyEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.add(verifyNotifyRole);
}
} else {
return;
}
});

it breaks everytime someone joins the server
also nice
do what?
?
i assume you know whats an event listener
no i am kinda new to this
everytime you call the command, you'll add another listener
run the command 11 times and you'll get yourself a node crash
oh
discord?
np, genshin impact
cant wait to flex on this tomorrow once the whole 9 people who are working on ourcord are online
so what do i do to fix it
remove that and add that onto your index
not literally
the entire thing or just that part
you gotta fix a lot of stuff, no
oh
from reaction you can get the message, user, and all that crap you want
also
Before you make a Discord Bot, you should have a good understanding of JavaScript. This means you should have a basic understanding of the following topics:
- proper syntax
- debuging code
- basic features (vars, arrays, objects, functions)
- read and understand docs
- nodejs module system
As much as we d like to assist everyone with making their bots, we rarely have the time and/or patience to handhold beginners through learning javascript. We highly recommend understanding the basics before trying to make bots, which use advanced programming concepts.
Here are good resources to learn both Javascript and NodeJS:
Javascriptinfo: https://javascript.info/
Codecademy: https://www.codecademy.com/learn/javascript
FreeCodeCamp: https://www.freecodecamp.org/
Udemy: https://www.udemy.com/javascript-essentials/
Eloquent JavaScript, free book: http://eloquentjavascript.net/
You-Dont-Know-JS: https://github.com/getify/You-Dont-Know-JS
NodeSchool: https://nodeschool.io/
CodeSchool: https://www.codeschool.com/courses/real-time-web-with-node-js
Evie s Accelerated JS: https://js.evie.dev/
Please take a couple of weeks/months to get acquainted with the language before trying to make bots!
take a look at that ^^
wot
Why not just link to Evie's post instead of copy & pasting that long text?
cuz i have a tag
do n.tag learn first in #commands or #265156322012561408
you dont think someone as lazy as me would actually search in chat for it right?
mmlol
@gilded olive #781701680356917308 message
thats kinda funny though, how'd you even find that out?
can anyone say what will be the first code to the bot to come online
learn js first, second
https://discordjs.guide/
then
I was implementing it into the bot im making, i found the original but heard they fucked over the actual real dev and i got a dm from him
So he lead me there instead
you do know what i did, no?
nope
check who's making this
and what it does
if you implementing genshin impact onto your bot, you welcome for making your life 10000x easier lmao
i just finished implementing a queue for ratelimiter and a constructor promise
what will be the first code to the bot to come online
ye
you're welcome
Ayo
going to be pushing an update tomorrow hopefully on the npm module
but that version already is functioning fine, just doesnt have the extra features i added
the github repo is the updated one if you wish to check the new updates and add it yourself until the main branch catches up
Hey guys
Is it typical to name everything index?
yes
Have you seen the new bot i made
ads
nobody cares
Lol that's weird but cool
I am asking
no
Of course we have
Its currently on early access
mee6 who? too small for frenzy bot
I can't wait for the release! @inner stump
@inner stump how old are you?
13 and a half
Pog
hmmm aight
mom im not a kid anymore π
but anyway, check that if you plan on implementing that API onto your bot Ghoul
Its basically like a among us bot
should make dealing with that api a lot easier
I have a testing server
Yea ill check it out
dude thats totally original
wonder why there arent too many genshin impact bots π€
here is where i test it at
oh god
Just waiting till someone makes an actual game
cuz the few people who know how to interact with genshin are busy coding stuff thats more worth
oh lol
i have one of the few genshin bots out there
WOW
and currently just finished writting one of the few wrappers for a genshin API
does gifs work
π±π±π±
none of us have worked with an embed before
look at the bot presence 
this is new ground
LMFAO
OH NO
i know
Top 10 anime plot twists
oh god
but its actually a code website
botghost of course
umm
how can that be considered coding in the slightest
botghost is telling your users you dont give 2 fucks about your bot
atleast i have a good bot
^^
No you dont
a among us bot with an empty embed command
Isnt bot ghost just clicking what command you want
I need help with this api:
https://some-random-api.ml/canvas/youtube-comment
I don't know how to set variables when I do a request does anyone know how to do that?
I use python
use aiohttp
LOL
yes
do i pass
do i pass the fake bot test
I tried that
no
yeah it uses GET
Use aiohttp.
requests and urllib are blocking. Do not use these libraries within your asynchronous code.
(http://discordpy.readthedocs.io/en/latest/faq.html#what-does-blocking-mean)
discord.py uses aiohttp, so it should already be installed. An example of code using aiohttp and discord.py:
async with aiohttp.ClientSession() as cs:
async with cs.get('https://httpbin.org/json') as r:
res = await r.json() # returns dict
await ctx.send(res['slideshow']['author'])β```
For more help, see aiohttp's documentation: http://aiohttp.readthedocs.io/en/stable/
they are using aiohttp lol
if you applied to get your bot on top.gg, chances are it wont pass. it needs at least 5 custom commands iirc to even pass
lol
Easy
ok
You need to apply the avatar, username and comment query parameters.
yea I know
i know im a bad developer. i just wanna say this, i dont ||actually|| know scripting
are you a developer?
start learning then
let me get you docs
nobody starts knowing all dude
we all start somewhere
yea
how to learn how to code as an ex google ex facebook ex netflix ex apple tech lead
- You dont
@inner stump
Before you make a Discord Bot, you should have a good understanding of JavaScript. This means you should have a basic understanding of the following topics:
- proper syntax
- debuging code
- basic features (vars, arrays, objects, functions)
- read and understand docs
- nodejs module system
As much as we d like to assist everyone with making their bots, we rarely have the time and/or patience to handhold beginners through learning javascript. We highly recommend understanding the basics before trying to make bots, which use advanced programming concepts.
Here are good resources to learn both Javascript and NodeJS:
Javascriptinfo: https://javascript.info/
Codecademy: https://www.codecademy.com/learn/javascript
FreeCodeCamp: https://www.freecodecamp.org/
Udemy: https://www.udemy.com/javascript-essentials/
Eloquent JavaScript, free book: http://eloquentjavascript.net/
You-Dont-Know-JS: https://github.com/getify/You-Dont-Know-JS
NodeSchool: https://nodeschool.io/
CodeSchool: https://www.codeschool.com/courses/real-time-web-with-node-js
Evie s Accelerated JS: https://js.evie.dev/
Please take a couple of weeks/months to get acquainted with the language before trying to make bots!
reported for spam
^
ill learn later
will you tho
yes
promise me
instead of making useless bots with discord bot makers you could start learning to code
i promise'
pinky promise
yes
Coding is fun when you know what youre doing
the basics of code is more useful than discord bot
Other than that i wanna kms
execpt when it doesn't work
fang! broken!

dani
without that frustration you cant feel as satisfied when it all begins to work
But when it does
Feel like youre on crystal meth
TRUE
bot.user.hasPermission() is wrong
π
what is correct?
has_permission

it's JS
oh
ye
I don't know jsπ
^
well you should π
I know π
I know 
its pretty useful
and that's why you can code nothing on it
What
thats not true?
ye that's not
you can make a ton of stuff with python
I mean it's not as effective as js
in fact that makes it easier
but it's fine for what I do







