#development
1 messages · Page 1054 of 1
Chat.prototype.say = function() {
// copy paste the entire original say() method here, and replace it as you wish
}
are you forking this code? is it fine if you modify the original files?
good question, without distribution it should be fine for most code, lemme check license
or you prefer adding it without modifying the originals
since im not distributing it should be fine, but lemme just double check their license
MIT, it should be fine to modify it
tbh it doesnt matter too much which method is better, as long as the final result is the same
well there are basically 3 ways
- edit the original file
- create an extended class
- modify the prototype
prob best to go with extended class im assuming to prevent future problems
anyone no y it wont show the emojis?
because that ain't how u use custom emotes with bots
you gotta use the non-parsed emote mention like <:emotename:id>
for example,
becomes 
yes
for example,
becomes

@lyric mountain ty
if you need to get the non-parsed mention, just put \ behind the emote
it'll give u the complete mention
it can also be used to reference the parent class (such as calling parent methods when overriding)
Does anybody know how to make a welcome message for a bot running discord.js?
write the desired code inside an guildMemberAdd event block
there are a lot of examples out there
which OS should I put on my VPS
ubuntu
which version
20
.04
which ever there is
and try not to lock yourself out of it by messing with ufw
i would choose debian or red hat (i have experience on linxu distros thats why)
i have used all of linux os
ubuntu is the best imo
@misty sigil if you want to know what ubuntu is best just dm me
ill expain
İ need to install phyton?
"You need to install the latest version of Python"
read the error pls
latest version
pip update python
İnstalling

pip update python would work too
but i geuss this is better
just install windows-build-tools
Arenyiu kidding me
add to path
add the pypthon execuaable t opath
How
copy the ppath of the ppython executable
npm i windows-build-tools
fs.readdir('./commands/', (err, files) => {
if(err) return console.error(err);
console.log(files.join(' '));
console.log(files)
for(const file of files){
const commandFiles = fs.readdirSync(`./commands/classic/`).filter(file => file.endsWith('.js'));
const command = require(`./commands/${file}`)
console.log(command)
}
});```
why isn't this working?
you didnt install it
me?
is there any error
İ am jnstalled pyhton
please explain
yes
İnstallee latest version
internal/modules/cjs/loader.js:960
throw err;
^
Error: Cannot find module './commands/classic'
Require stack:
- /home/runner/test-bot/index.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15)
at Function.Module._load (internal/modules/cjs/loader.js:840:27)
at Module.require (internal/modules/cjs/loader.js:1019:19)
at /home/runner/test-bot/index.js:17:21
at FSReqCallback.oncomplete (fs.js:155:23) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/home/runner/test-bot/index.js' ]
}
@earnest phoenix npm install windows-build-tools
classic is a folder in commands
@earnest phoenix
npm install windows-build-tools
@quartz kindle i cant install this too
show installation log
from windows-build-tools
Very sloww
fs.readdir('./commands/', (err, files) => { if(err) return console.error(err); console.log(files.join(' ')); console.log(files) for(const file of files){ const commandFiles = fs.readdirSync(`./commands/classic/`).filter(file => file.endsWith('.js')); const command = require(`./commands/${file}`) console.log(command) } });```
don't understand why I am getting Error: Cannot find module './commands/classic'
@earnest phoenix wait until it says "all done"
Ok
@stark abyss you're still stuck on that?
Oh this is hurt myneyes
wats the code for actual users?
yes sir
cause ${message.guild.memberCount} includes bots?
@still badge guild.memberCount is the only reliable way to get the total number of users
all other methods depend on the cache
@quartz kindle but how i get it to give only users
which is either contains only online users, and not offlines, or you need to enable the fetchAllMembers option, which uses a lot of memory
Stuck
@earnest phoenix not stuck, keep waiting
Ok
İmagine my bot gets declined for offline
Still waiting
@stark abyss so... fs.readdir gives you a list of items in a folder. these items can be either files or folders, it doesnt differentiate between them. however, it only reads one level of folders, not the contents of all folders. so you have to loop over the list of folders you get from readdir, and for each of these folders, you have to make another readdir to get the contents of each folder, and then again get all files from that folder, and only then require the command using the main folder, the subfolder and the file
setting status is buggy, randomly works or doesnt and nobody knows why
a few minutes usually
ok.
Please i need help, my bot always go offline for no reason...
@barren basin in what way
@spark wadi The bot is online for some hours and it goes offline while it is still running on VSC
do you start it on VSC or cmd
It could be an infinite loop but i don't think so | i start it with VSC
hmmm... weird. do you close the application at any point in the day?
hmm no
@earnest phoenix ?
this issue came with the last VSC update
so it doesn't even show an error message in terminal?
no
@quartz kindle now it says c++ desktop devolement
what's your startup message "node . or node [name of main file]"
i literally ran a bare minimum bot
@earnest phoenix where did you get that from?
did you cancel the windows build tools?
İ said N and it exited
oh yeah
what's your startup message "node . or node [name of main file]"
@barren basin
discordjs caches everything @valid frigate
@earnest phoenix you didnt let it finish
run it again
@valid frigate thats the gc
typically node applications would have a "sawtooth" pattern but this one just hikes up the mountain
weird
are you using intents?
which ones
discordjs-lite
Translate- it looks like you are downloading another product
;p
its not that bad of a sawtooth, only 20mb oscilation
@spark wadi "C:\Program Files\nodejs\node.exe <file path>"
@earnest phoenix where did you get that from?
Whenni start build tools installitation
npm i -g windows-build-tools opened that?
last time i checked today is monday
im just concerned that it's djs because i've used the node inspector to monitor everything
@barren basin what language are you coding it in i'll try and find a solution on stack
not monitor per se, take snapshots
@obtuse jolt then its correct
i am using javascript...
WHY
why what
why does it say if its the weekend
ok sec A.Z
@valid frigate the sawtooth pattern is normal in discord bots because of websockets
lmao
it took me 18 minutes to verify my phone number
would that be my fault or discord.js?
idk
is it unmodified discord.js?
yeah nothing is touched
then yes its discord.js's caching
anyway what can i do here
fuck
ive been really like
i moved to djs from eris because eris was giving weird errors that had no issues on the github
but i guess the tradeoff is aggressive caching
But it could be because of a loop, however i have no idea where the mistake should be @spark wadi
well, both have untoggleable caches
unfortunately
djs's is a bit worse tho
true
im not sure where to look tim lmao
djs light
if you wanna go for a different lib, check out detritus
if you wanna go for a modified lib, check out discord.js-light
i couldn't find anything on stack for js but yeah you will just have to solve the loop
there is also klasa-core but its pretty alpha last time i checked
k
Tim on patreon:
Haha Arthur Dent go brrrrr
no types :^)
All of my "while" loop are not very hazardous ... @spark wadi
and i know that sounds like pretty weird to be upset over but yeah its just a small thing
go for detritus then, its full ts
ye
btw if you feel like contributing with types feel free lol
i dont ts so i didnt do it
ya
h
Hm
... and they all end when i test them
patience
you're already waiting 3 weeks for your bot to get approved, you can handle 10-20min for this thing
Tim do have a point tho
İ am punching my laptop when it freezing 😂
But yeah, it can take some time
poor laptop
Ye ik i can see dust from there
tha fuck
rip
my dads laptop
could secretly open it up, try and clean it, put it back together and act like nothing happened (if it breaks just say a bird took it)
just blow into the fans 👀
Do this laptop under warranty :D?
Make sure you dont spit into it while blowing air
Did you look up the serial number?
Did you use the serial number to check warranty?
No
Alright im gonna have to keep this chat on topic, we're getting a bit off topic here.
Ok
u right sorry
When I lol on my laptop it usually goes to 97° or higher
xD
Oh sorry Zoro, didn't see that message at first
guys how anti raid system works?
you need to save the message timestamp in a timestam, so you can compare the time difference between now and the last sent message
@earnest phoenix and then you can specify at which difference something should happen
basically
you need to save it for each user individually
and guild-wise
if you don't want to check every message, save a counter for each user, and if a message is being sent too frequently, you increase the counter by one
if the counter reaches a certain value you can then take actions
that's how I did it
i don't think that anti raid
An anti-raid system depends on how it's implemented. Some anti-raid systems block a lot of users joining at the same time, while others may just watch for many messages being sent at the same time (from a single user or several). Some even do both, but it's like dune said: You need to record when the message was sent and keep recording. When it reaches a certain threshold passed, you can take action.
You can think of it linear line. If your unpredictable line being the messages received passes the linear line, you do something. It's kind of hard to explain as I've never attempted one myself.
eh, that's not reliable and prone to more errors
h
hey
how to fix it plz help
what version is your discord.js
v11
then remove cache
why did my bot error out, it didn't normally do that ```
TypeError: fields.flat is not a function
that means your node.js is outdated
You need Node.js v12
no?
it wasn't broken to begin with 
1 hour lol
restart your pc and try again
Lol it opened this
maybe something is stuck and restarting will unstuck it
Oh god finally
@quartz kindle thanks for helping now i need to install modules
Wtf
OMG FİNALLY QUİCK.DB
THANKS YOU SO MUCH TİM
ever heard of screenshot managers?
quick*
@turbid gust why
ever heard of print screen lmao
lightshot
chrome or discord not installed?
and the list goes on
edge?
edge cant run discord
bet
wot
why not
i personally dont use uploaders that are restricted to a single (public) cdn cause anyone can access the screenshots lol
sharex >>>>>
why wouldn't a chromium based browser run discord (or any browser)
how surprising lmfao
not like anyone would use edge, but its capable, for the sake of the argument
Omj
^
Edge = trash
@earnest phoenix the only reason i dont use sharex is that apparently it cant do what lightshot does (or at least i didnt figure out how)
which is?
edge is pretty good, the chromium version that is @pure lion
which is, print and show a small editor before copying to clipboard
Yeah ngl
exactly
there is an editor before copying
@quartz kindle
before selecting the region
yeah but how to display that automatically
i tried everything and it always makes me save the pic to disk first
and then open the editor from there
it shows that automatically?
you need to not select the region you want to screenshot
and instead edit first
then select
right click sharex, after capture tasks @quartz kindle
let me try
@quartz kindle
@opal plank oh i was looking everywhere in the main window
never bothered right clicking the icon
its in the main menu too
Hey Tim I'm gonna ask my question now as you probably have the answer
if you want a feature, its likely already there somewhere hidden in the settings
can even do some fancy stuff with ffmpeg
well, i still like lightshot better
I have 3 SQL queries. The one is ordered by agility and what I'm doing in all of them is rows[0] but the issue is that even tho I order the first by agility the second and third one aren't ordered by agility. Is there like a way to order the other tables depending on the ID from the user in the other tables ordered by agility?
Why don't people just use ffmpeg for image manipulation?
In bots
Can't you upscale or something x)
@tulip ledge need more info
So
forEach?
I have 3 querries:
client.con.query(`SELECT * FROM users WHERE id IN (${usercheck}) ORDER BY agility DESC`) // So that the people who are faster go first
client.con.query(`SELECT * FROM inventory WHERE id IN (${usercheck})`)
client.con.query(`SELECT * FROM skills WHERE id IN (${usercheck})`)
The first query orders by agility but the other 2 queries order by data created meaning if I would be slower then a user that was added to the database after me he would have my inventory and skills. Is there any way to also order them by agility?
Not sure how it works but
rows.forEach(row => rows.map(row => row.agility + row.<other stuff>))
Lol I don't know sql
nope
@tulip ledge does your inventory and skills tables not have a user id in them?
they do
just map ids to ids
Wait how tho?
sorting should be irrevelvant
hmmm does vsc have a detach window?
the first query should return an array of objects
yes
save all three queries in a variable, then loop over one of them, and build a combined object
Wow
YOu're gonna need to guide me through the proccess
I don't know how to add all 3 queries to a variable
Neither do I know how to build a combined object
Make an array and push the objects inside?
sorry I'm trying my best, I'll get it right one day
That still won't solve it
What are the names of the params in the object?
Cant you sort by alphabetical order?
users;
inventory;
skills;
combined = [];
for(let user of users) {
let inv = inventory.find(t => t.id === user.id);
let skill = skills.find(t => t.id === user.id);
c = Object.assign(user,inv,skill);
combined.push(c);
}
that will create a combined object, so it only works if there is no conflict in your column names
*sitting in intrigue*
for example if users have column a, and inventory has column b, the combined will have {a:something,b:something}
🍿
Oh ok
if you need to separate them better, for example {inventory:{a:something},skills:{b:something}}, you need to adjust it a bit
Object.assign(user,{inventory:inv},{skills:skill})
I will absorb the knowledge of tim
alternatively, you could also do a JOIN query in your database directly
which is probably more performant
it reduces 3 queries to 1
Over time I shall become Tim as he ascends to become one with stack overflow
x) jk it's not gonna be me
you overestimate me lmao
lmao
Tim quick question how long have u been doing JS?
Tim lives in develop
development
no joke he has more messages here than any other channel
Oh
idk
Tim, can you like do the JOIN query with order by?
about 3 years i think
idk
But Tim the JOIN query would also order all the other things?
Well I did take a break for a year
yes, you can JOIN and sort
obsessive is an understatement
Oh cool
all you need is mdn 
ive been coding in js for roughly 3 months and IM obsessive
Tim takes this to a whole new level
Wait so I could do like
SELECT * FROM users INNER JOIN skills, inventory users.discordid=inventory.discordid=skills.discordid SORT BY agility DESC
Like that?
sqlite or mysql?
mysql
SQL injection is real
Queries are fun
json
jsonB
not json
this hellish nightmare here
never again, -5/10, traumatized, suing for theraphy payment
should be something like SELECT * FROM users INNER JOIN skills ON skills.id = users.id INNER JOIN inventory ON inventory.id = users.id ORDER BY users.agility
suing for emotional abuse
Oh ok
indeed, while i did learn how to do it, its really complicated and doesnt have too much freedom
the one gain is that the queries are faster than running them locally on your code
though the learning curve is insane
Yeah I don't think that'll work
I tried it and it logs like 6 times the same row
Idk why
And it also will only work with 1 user and I need to do it on an array
im testing it in sqlfiddle and it seems to work
no
its like the regex
kinda
Alright
yeah it works
this is the full query i tested
SELECT * FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id INNER JOIN Table3 ON Table1.id = Table3.id WHERE Table1.id IN ("10","20") ORDER BY Table1.id DESC
😮
gives me combined rows with all columns
Ok I managed to fix it
It sais typof rows is an object
But it acts as an array
Wich is weird
But it's working
So thank you so much ❤️
Jup it's fully working!
Thank you!
typeof array is always object
because arrays are technically objects with indexes as keys
in order to differentiate arrays from objects, Array.isArray(obj) exists
can i make a load command? to load new commands without restarting the bot?
load the same way as on startup.
I pinged u
yes you can
if each command is in their own file, you need to invalidate the require cache
quick question
i hope
i've got this switch statement that does stuff, and i've also got sub commands in the switch
and i've got, in the switch statement a default sayign that the subocmmand doesn't exist when u say a tag..
so like, this is what i mean
@solemn latch Its done by removing the file from the require cache like this
delete require.cache[require.resolve(path.join(filePath, file))]
because of the bob on the end, it breaks and says the sub command doesn't exist, any ideas?
its how you're handing the args in your tag command or your message handler @digital ibex
wot
Your message handler is probably trying to run the subcommand
its because of the 'default' in the switch statement
and im trying to make it, if its 'defualt' and is a valid sub command
did you add your "break" statements?
hmm
with a switch you cant do multiple if inside of it or case if you will
thats probably the issue, the default can only check one thing
ik, im trying to make it check for default and extra
You'd need a seperate check for a subcommand
and a seperate check for the other thing
can you show code
show your code
kk
So I'm using snekfetch for some calls, It is installed but on my VPS it doesn't make the call, It physically doesn't get a response
switch (args[0]) {
case 'command':
switch (args[1]) {
case 'soup':
//code
break;
}
}
x)
switch (true) {
case args[0].toLowerCase() === 'create':
// code
case args[0].toLowerCase() === 'list':
// code
break;
case args[0].toLowerCase() === 'remove':
// code
break;
default:
message.channel.createMessage(`✘ That subcommand does not exist!`);
}
:o
@digital ibex wat is the true
wdym?
its failing because true is not valid
there is an easier way to do it
no
that's not how case works uhhhh
no its not
thats not how a switch works
yeah
switch (args[0].toLowerCase()) {
case "your case here":
}
i use this all the time, works perfectly fine for me. and i only add the true so i can add other things when comparing
no, because i need to do more stuff, hence the true
I'm telling you that true is the reason its not working
what's the error you getting?
that's just a stupid way of doing "if"
just use module exports/command handler
well, its more faster than a if statement 
and if i did use an if statement, it'll be significantly slower, right?
yes
switch needs an object key to search so it can loop through it to ask if it meets the case
if you put true on the switch its just going to switch over to the default because true is not an object
but if you use command handler/module exports it will be faster
no thats not what im saying
this is a proper switch

switch(msg.content) {
case `++debug` :
msg.channel.send(`message`)
break;
case `++invite` :
msg.reply(`message`)
break;
}```
doesn't say the "that subcommand doesn't ecist"
because of the sub command onto it
it says it
That response is not a part of your switch
ik...
you're not listening
^
read this
im asking how can i make it not listen to that
you're oficially lost lmao
how to read folder in folder with fs?
you still didnt figure it out?
1 sec
the problem is not how to use fs, the problem is simple loop logic
im gonna give you an example
yes please
a quick google https://medium.com/stackfame/get-list-of-all-files-in-a-directory-in-node-js-befd31677ec5
using readdirSync because its easier to understand
@stark abyss I got u
this is how i done it
fs.readdirSync(folder).forEach(item => {
fs.readdirSync(folder/item).forEach(file => {
require(folder/item/file)
})
})

i dont understand how thats gonna stop it erroing, im genuinely confused, i've been using switch(true) everytime i use a switch statement and all i need is just to make it not execute the default if the sub command has been provided
switch is designed to process a single value
for example switch(something) case 1, case 2, case 3, etc
all possible values of something
if you're not using switch for that, it loses its advantage
so you'd be better off using if else
yeah, but idk how to make it say something if theres a sub command
the thing is
i've got quite a lot of cases, more than that... so the code will run slower is my issue
hahaha screw you kotlin react
thats microoptimization, the performance difference is negligible
kotlin 
also, switch loses its performance advantage like that
Hey, I'm using snekfetch and await get to call an API from my vps, It works on my PC but not on my vps
i've got like 14 cases tho, surely its gonna be a lot slower?
nope
oh?
wait what
the only reason switch is faster than if-else, is that switch is able to index all of its entries
so for example if value is 10, and you switch(10)
switch will immediately find the correct case, where case is 10
yeah
without needing to go through all of them
but the moment you use switch(true), you lose that
and it takes a nanosecond?
there is no indexing
o
you're matching arbitraty conditions, which makes switch have to go through them one by one, like if-else does
how else could I do it like that?
using a regular switch, is it more than 1 nanosecond?
it doesnt matter
rule of thumb is, are your conditions arbitrary? use if-else
are your conditions always based on the same thing? use switch
oh
i've been using switch this whole time if i've got an if else 
well.. thanks for clarifying tim :)
const { prefix } = require('../config.json');
Error: Cannot find module '../config.json'
config json is in different file from the folder but shouldn't it work?
I'm having trouble uploading images to embeds. Here's what I have so far:
console.log(fs.existsSync('./Images/Thumbnails/completion.png'));
embed.attachFiles(['./Images/Thumbnails/completion.png'])
.setThumbnail('attachment://completion.png')
When I run the code, the embed shows up without a thumbnail (or attachment). The console log is outputing true, so I don't think it's a problem with my file path. I've also tried switching out .setThumbnail() for .setImage() to match with the guide, but still not dice.
where are you calling help.js from?
what
not ../config
z!command
../ would be the commands folder
each ../ means go one folder back
you're using command handling with different files for commands, right?
yes
yeah p025, thats why u add the ../ again
then you need the path from your command handler to config instead of the path from help to config
so
oh
../../config
okay
each ../ means go back one folder
you are in classic
you use ../
now you are in commands
you use ../ again
now you are in the main folder
ok i got it working
lol
i don't see what's wrong in
const { prefix } = require('../commands/classic/config.json');
yikes sorry to irritate you
you can't go back by name, gotta use ../
const { prefix } = require('../commands../classic../config.json');
now you are in /commands/commands/classic
you use config.json
now you have /commands/commands/classic/config.json
doesnt look right
the help.js file is in the classic folder
so if you use ../ from the classic folder
you are in the commands folder
if you use ../commands
you are in /commands/commands
it literally means "go back to the previous folder, then open the commands folder from there"
okay
the / is just a separator, means nothing by itself
oh
and the instructions are in order from left to right

Does certification have limited slots here? I forget
so ../commands/classic means ".." + "commands" + "classic" which means "go back to the previous folder" + "then open the commands folder from there" + "then open the classic folder from there"
@obtuse jolt its not limited slots, its just that the program is kinda abandoned rn
oh
nobody is reviewing applications for it
So there’s like a billion then
probably lmao
I did big brain thing and added voting rewards for the first time I’ve never done this before
congrats and ew
Really?
yup
Damn
what do they do?
weird stuff
Hello smarter people 🙂
How do i send a message in a specific channel in a specific guild in python using the discord.ext.commands.Bot paradigm ?
I just know how have it respond to specific prodding's like !help, but every morning I want it to post Good Morning in a channel
doesnt apply to my case
i have donation features tho
Well how I’ve done it is you can donate and get unlimited priority scans for the amount of time you are donating or you can vote every 12 hours to get 1
i could have implemented something like that but now its too late
my bot stores user-generated charts and graphics
there is one user that has like 600 charts by himself
does that not use like a lot of storage and ram
my bot is very optimized
I need to remake like 80% of my bot
It was so rushed when I first made it
And the more I put time on it the better it’s looking
75
xD
I wanna show you it
Just gotta give myself some tokens
There we go
Go into #265156322012561408
any ideas why this doesnt work? ```js
if (message.content.startsWith ${prefix}8ball){
const eb = require("./8ball.json")
message.channel.send(${eb.answers[Math.floor(Math.random() * eb.answers.length)]});
}
i think
ok
ty
Just asking, but what IDE do you use?

.help
Anyone know how to self mute the bot user this isnt working
message.guild.members.cache.get("717080513898217482").voice.setSelfMute(true)```
Why selfmute tho?
idk thats why I'm asking
Just dont send audio data
I want to to mute itself when its not playing audio
Gae
I already know that, that is not my question
Yes, I know
It's this but it always returns false
idk why it does when its in a VC
No mo
how i can do this? https://i.imgur.com/BLmGzrM.png
Do what
like a error event
Try-catch
all the code?
No, only stuff you know it's prone to error sometimes
oh
ok
thanks
or even better, instead of band aiding with try catch, fix the error 
Genius
try catch is heavy on memory compared to rest of operations
There is a way to catch ALL errors if you're using java
or even better, instead of band aiding with try catch, fix the error :BigBrain:
@earnest phoenix you can't fix all the errors tho, for example, missing permission stuff
Well, it'll still show an error to the user
this is api abuse?
channels.forEach(ch => {
try {
ch.updateOverwrite(args[0], {
SEND_MESSAGES: args[1]
});
} catch (e) {
console.log(e);
};
});
no
Really no reason for the user to see the API error though
ok, thanks
Yeah
You should account for it yourself and handle as needed
@earnest phoenix and if channels size is > 100?
Dunno
srry xd
if what you're doing has malicious intent, then yes it's api abuse, otherwise it isn't
ok
is for blockchannels command
It can be API abuse regardless
you can't circumvent updating overwrites for example, a mute role or something
so you're allowed to do that
ok, thanks
Error: ENOTDIR: not a directory, scandir './commands/classic/avatar.js'
I don't understand what I am missing
have you tried reading the error
That's not a valid directory
what would be one

not a directory
Couldn't tell you

Is your code open source?
yes
Would be nice to see your file structure
Hey, I am trying to download discord.py to my visual studio code folder.
Note:
- I have a mac computer
- My python version is 3.8
I tried running
python3 -m pip install -U discord.py
But it responded with:
ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/chardet-3.0.4.dist-info'
Consider using the `--user` option or check the permissions.
Any help would be greatly appreciated! Ping me if you have an answer 🙂
Where are you trying to access avatar.js from
@cunning gorge try with the --user flag like it says: python3 -m pip install -U discord.py --user
Idk, maybe try dowloading on another directory? Don't have any idea, that's just what the error suggests
lol didnt know try catch had memory problems, i always disliked it only because of they way it is
oh ok
Ok well it worked!
However:
WARNING: The script chardetect is installed in '/Users/
Library/Python/3.8/bin' which is not on PATH.
Gave me this warning, is this an issue for the future?
I think you'll have to reinstall Python to fix that issue, or add it manually (which I don't recommend)
ah ok
And make sure to check "Add Python to PATH" or something like that on installation
const { prefix } = require(i want to get config.json here please help me);
i am calling it in help.js
just...require it there?
i don't understand the path clearly
'./' parent dir
./classic/commands/config.json?
no

config.json isnt a folder
i only have two folder










