#development
1 messages · Page 1554 of 1
must have all brackets and all colons
my point is that you dont have much, if any right, to complain about what i do when you write shit like that
plain and simple
i wrote it because i can
why would i do a file read?
plain and simple
why not
"plain and simple"
so you writing shit code on purpose to feed it to the community? specially knowing a lot of noob devs might see your repo?
good job moon
👍
noob devs
file reads are slow
you're already reading 20+ files
it isnt even displayed when its searched
some hosting doesn't give you file access too
wut
didnt know my opinion was so dire your harrasing me about it
i could do it on my localhost
you should call it quits already moon

serverless hosting
does the host support node.js?
call what quits
your in your feelings cause i joked about ts-node
if it runs node.js then it supports fs
most "serverless" hosts just run an ephemeral disk
but its still a disk
Tim.js
Lol
the next-generation framework
i dont think nextjs supports it
lol
depends on where you're using fs
wait so you're not requiring server side? you're requiring on client side?
of course you can't use fs on the frontend part, but you can at least use it on the server-side
@mellow kelp ima make a functioning league api that has max deps
using one of the prop functions
I like how there is a way faster Implemention of Array.prototype.sort() called TimSort, Tim do be sorting out things really fast doe
next time maybe you should keep your funny comments to yourself
i am running on localhost. vanilla js
I'm trying to add an image in top,gg like this server
lmao
funny comment
was i supposed to keep that to myself to

can someone help me please 
honestly some things just fix themselves just my be approaching them
happened may times before
you can use markdown images

dev sanpaio
they're intimidated
tim should have written the star wars sequels
but does it fix my financial problems?
lmao
Sad
@quartz kindle is making your own cmd handler bad
What
no, as long as you do it properly
hope said i should and i did but someone said its bad
emphasis on properly
define properly
its 5,672 lines
and stretches over 3 files
and its in ts
He meant "properly" by writing one if you know what you're doing probably
i mean
@modern sable
the code that erwin was showing around
o i do lol
no lol
yanderedev would be proud of you
i was just coding shit cuz i was bored
and that's no good thing 
lmao
@mellow kelp remember the 50 dep bot
yes
that i was coding cuz i was bored ad
At least that was better than Yandere simulator's code
well, show handler and i'll tell you if its a good handler
Wtf
thats not the command handler tho, is it?
testhandler/Utilities
nopE
Bro, they should just have a native check on the npm module
if (this.project.bot && this.turkishBottum) await this.addAllDependencies();```
you probably wanna split your bot into more files lul
kk
but i mean, my first bot was also a monolithic file
thats the end of the file
Oh my god.
and theres 3 of them
all of our first bots were gigantic one-files 
please don't make a one filer
and i would write 500 more
my first bot was a one line bottums
just to be the man who writes 1000 lines of code just to have it break
hi link
its faster and easier to use a command handler than a single file
ofc
my exec command
Don't lie, all of our first bots were one file bottums
literally
do you actually need that many functions lul
thats line 2398
overcomplicating things is my speciality
i could make a bot that just send help but itd be 200 lines
i guess that's actually acceptable
lmao
wdym?
you're the opposite of me then
i oversimplify everything
link

hmm?
https://dontasktoa- just kidding ly
//buat read json
let curxp = xp[user.id].xp;
let curlvl = xp[user.id].level;
let nxtLvlXp = curlvl * 500;
let difference = curxp/nxtLvlXp *297;
let difference2 = nxtLvlXp - curxp;
try {
async function createCanvas() {
return new Canvas(300,50)
.setColor('lightgrey')
.addRect(0,0,300,200)
.setColor('#f44262')
.addRect(0,0,difference, 200)
.setTextFont('bold 15px Courier New')
.setColor('#000000')
.addText(`${curxp} / ${nxtLvlXp}`, 120,30)
.toBufferAsync()
}
let m = await message.channel.send('*Please Wait...*');
const gumen = `
__**\`${user.username}\`'**s level information__
Current Level: **${curlvl}** - Total XP : **${curxp}**
Progress: ${getProgbar(curxp, nxtLvlXp, 10)}
Needed XP to reach level **${curlvl +1}** : **${difference2}**
`;
message.channel.send(gumen, {file: new Requis.MessageAttachment(await createCanvas(), 'xp progress till level up.png')}).then(() => {m.delete()})
``` i was testing this out
but whenever i run it
before i got an error and i fixed it
now it doesnt send the image
just the gumen part
unless i did it wrong
its 5 pm and i havent had a nap
thats not the canvas lib is it? is it canva or canvas-constructor?
whats Requis? your Discord variable?
should be files:[new Requis....]
canvas constructor
requis is my discord variable
you said files?
ill try it out
it gave a error
1715 in requis.js is the message.channel.send line above
I am still unsure what to do next. I have my code in visual studio now. I am using heroku to have it online, but I don't think localhost database is gonna work with it. Heroku does have "heroku-postgres" which I did look into, and it was 1gb storage free (I have no clue if this is enough or not) more then that I have to pay. I don't have money to spend on this, especially since I am just learning. I don't know if I should switch a vps or switch to new database, if you know something please let me know else you can ignore.
o
put the whole thing in
like
[new Requis.MessageAttachment(await createCanvas(), 'xp progress till level up.png']
Guys, I’ve tried everything nothing, shows the bots on too but dosent reply with command
yes
Huh, lol
missed a parens, but yes
before the ] obviously
@quartz kindle do you see anything wrong?
o kk
wait wut
[new Requis.MessageAttachment(await createCanvas(), 'xp progress till level up.png', ]
that
again im not slow just t i r e d
o
youre not running the command anywhere
Can you explain a bit?
what is the name of the actual function that runs the commands?
run()?
execute()?
run()
The file?
Lemme check
i dont see command.run() anywhere
looks like a font loading problem
o
uh lemme see
Tim, which line should I add command.run() @quartz kindle
where do you think?
Line 13? @quartz kindle
how did you come to that conclusion lol
No idea thought it was the top line, true?
Not really, I just need help it’s not really spoon-feeding if it’s just a line...
how would the code know which command to run at the top of the file?
the top of the file has the list of all commands, but has 0 information on the message the user sent
module.exports = {
function async name(client, message, args)
[full code thing]
o
uh
Oh uh so line 101?
any errors
there is nothing about commands there
nope
I’m confused, do you mean in index.js or in my commands? @quartz kindle
ski
in the index.js
Lol
your bald at the top right
So uh basically the last line?

look
you want to add command.run() right?
Why would I even need that?
then logically, it has to be somewhere there command exists
Well, it worked before without that..
command doesnt exist at the bottom of the file, nor at the top
Then where should it be?
bruh
it stoped working because you removed it
Oh... true
if your command has a run() function, then you need to call that function, otherwise how is the command supposed to run
I was kinda rushing while coding, ima check my old index file and see what’s there
the run() part is what actually makes the code inside the command run
otherwise that code will just sit there and do nothing
True, well thanks for making me realize that
@quartz kindle command.run(message, args, client);
Right?
if thats what the run function needs, yes
Yes, it does. Thanks fellow guy lol..
@quartz kindle tiM
well i cant help you then
im using discord.js for my bot, im trying to get my bot to read the full list of members in my server but it only works with the first two
i dont use canvas constructor
accessing the list of members has 2 rules:
- the bot does not start with the full list, you have to manually ask discord to send you the list using the fetch() method
- discord will only give you the full list if your bot has the "server members" intent enabled in your developer portal
any clue why this might be returning unknown user?
const dsc = await client.users.fetch(report.user);
````report.user` is defined, it's a discord user id string
does it need to be an int?
no it needs to be a string
console.log it to make sure its correct, if its still doesnt work, then the id is invalid or the user doesnt exist
the user isn't in cache i think
console.log was correct
is fetch fetches it from api
yes
how can I cache users? (members are all cached, they cache on startup for various reasons)
fetch already does it
there is options
can 2 different bots be hosted on one server?
yes why not
the code is not the issue, fetch is correct
if it returns unknown user then the id really is unknown
are you sure the id exists?
yeah
getting a weird issue where a command where even the prefix is different registers with both bots
show error
could be my command handler
how can I cache them?
if that's the issue
thats not the issue
the fetch() method automatically caches it
whats the id of the user in question?
http://f.perrypal.tk/SCrESakyVr.png the command I used is for a different bot but the bot with -help gets triggered
works for me
undefined variable module_name
apparently so
and with node 14 it works?
havent tried yet
give it a try
am do
kk
cb() never called
clear your npm cache
im still kinda confused on js promises, could somebody please explain them to me
if something returns a promise then what do i do to actually get the data from that promise so i can use it
do both bots have commands with the same name?
there are two ways to get data from a promise
Does anyone here play genshin impact? I'm looking for someone to give me feedback on a bot I'm making
one way is to force the code to wait for the promise, and continue once the promise has fulfiled. this is achieved using the async/await syntax
the other is to set a function to be executed once a promise fulfills, and have the rest of your code continue running while it waits. this is achieved by using the .then() method
yep I just found out that node applications share variables
oh shit
Lmao
i mean, they do if you run both bots in the same file lol
which is not what I am doing
Wait what version is node on
15
latest is 15.7.0
I would need to check mine
@quartz kindle http://f.perrypal.tk/bkD9Ij8uux.png but then this happens
the help command still has to be coded but the first bot has a clearly different prefix
which is -
show the code for your command handler
Does the v15 node do anything with d.js, cause I remember needing node updated when d.js v12 first came out
you might be processing the prefix wrongly
djs v13 will require node 14+
otherwise no
And v13 hasn't released yet?
nop
some stuff, but nothing like the cache thing lol
fetchAllMembers was removed
guild.permissionsFor was removed
other than that idk
Dont think I used them anyway
gateway and rest api versions will be updated to v8
they are started https://github.com/discordjs/discord.js-next
huh
Tim knows everything
lmao
Tim is a robot with a database filled with everything of d.js 
well i cant really be out of the loop if i am to maintain djsl

disablable
.cache.disablable
const client = new Discord.Client({
disablable:true,
partials: ['DISBABABABLABLE']
})```
just rename true and false
DISABLABABLED and ENABLABABLED
Actually technically you could do that
just define them as 1 / 0

or true and false
either or
@quartz kindle It worked! Something wrong with the command handler
const disablable = false,
enablabled = true;
now just use them in your code

lmao
if(message.bot === enababled) return disablable
LMFAO
Sounds pog
someone absolutely need to rewrite d.js with jsfuck and add retarded shit like that
lucas repo got nothing
disableable<enableable>
d.js retarted shit > luca github
absolutely
you do not even understand how long it took to make it look right
I did it manually

i should disable my linter and turn my code in ascii
First time I looked at it I was like wtf
First time I looked at it I was like "I can do something here"
luca best bot
totally worth it
42 forks as well, idk if some are legit trynna steal code or not 
judging by the masses here, probably the former
it definitely was
tempted to make an easter egg for the Luca bot page on dblstats
that posts the ascii to the users browser console
yea I added the rolling daily stats
since someone asked for it
plus added a temporary remedy for the gaps that constantly happen on the board
most of it matches my data, just more detailed
well as long as top.gg doesnt go down and you're consistantly posting enough every hour
it'll always be accurate

yea grafana is cool
grafana bae af
thats the only thing that i'd miss from dblstatisics, a way to query by time
last week
between yesterday and 4 days ago
thats one of the big upsides of grafana, being able to query within a range
Yea
its planned but tbh its a pain in the ass with the amount of data we have
Like I would say we could display all the data on the graph
but the graphs would uh
lag
lmao i feel ya
grafana has a hard time pulling all those sources too
its quite intensive on the browser
some are fetch, some are pg queries, some are prom, some are elk
and all updating every 5 seconds
its really resource hungry
yup
adapting this for overall usage is a big hassle
Hold on
lemme show you whats happened over the last 2 months
since we deprecated the old site
dblstats went brrrr
the ONLY thing i give feedback upon is the locale and browser time
hmm?
Oh right
look at my votes lmao
thats the only improvement/suggestion i'd give
smol votes
how lmao
just literally new Date(timestamp)
300k large for every bot
the browser should query it

Yea I compile the hourly data down
just send the unix timestamp and convert it on the browser
that would mess up the dates
since i use the 23rd hour of UTC to calculate the times
which would make it inaccurate
@earnest phoenix im getting more votes than you with a 1k bot? pog
its not innacurate
those gaps will be gone when I rewrite the fetcher
timestamps are timestamps

I meant I use the 23rd hour on the backend
meaning
Only 2 commands have voting requirements
so your backend is offset by 1 hour?
mine doesnt have any requirements for voting lol
Really
because rn Midnight is the biggest time when it errors
Your bot is awesome lol
until I rewrite the fetcher
yeah, it just gives a bit of currency, but you can get it with other means
well, its still the same, there's no diff
thats gonna be the reason I use the 23rd hour
its still a timestamp
me too
its not, because of how I sort the dates
its just a matter of where is the timestamp converted to readable date
currently you're converting it on server side right?
The timestamp is useless after the hourly data is compiled into daily data
how so?
since I sort them by dates on the server side
isnt there a timestamp for when the data was compiled?
Not really
Since each bot is updates at different times when the fetcher actually pulls them
meaning the timestamps are offset by a few secs
but you have the timestamp of when the data was obtained right?
Yes, but Tim
I think you're misunderstanding me
how do I explain this

Explaining shit do be hard
hold on
lmao
i mean
what im imagining is that you have a table somewhere correlating timestamps and the data
Nope
like at this time stamp this was the number of votes, and this was the number of guilds
then what do you have lol
so you dont use timestamps in the data?
Hold on
then how do you sort them in the page?
surely you have timestamps relating to where each compiled data was produced
I hate trying to explain shit
these timestamps
theres gaps in them, surely you have timestamps to know which you have and which you dont
nope
im confused now
hmmm
lets see if i understand
you get data hourly
and when the day is over, you compile that into a "day" package, and delete the hourly data
then you put the "day" package into the db
I haven't done the math to get the most recent hour because its a pain in the ass to do, so I sort through the data to get the 23rd and if its not there it doesnt get entered
something like that?
like all the other difference calculations are done on render
but the compilation of daily data is done on the backend due to the fact I handle the missing data
since I use a for loop to display 24 rows
if the date isnt there is shows a blank row
if it does is shows as shown
no
I don't store daily data in the database
then what do you store?
Its the timestamp of when it was fetched
alright so you do have timestamps
how?
iirc last time I tried it, it made the data off by X hours of the timezone
since the daily data is compiled based on the servers timezone
then thats all you need?
if a user is for example
12 hours behind UTC
the first row gets fucked
since its a day ahead
like it would just not show the date
or it would show a time that wasn't even accurate to the present
which is why I just showed UTC
I fucking hate dealing with timezones
but like
you dont need to do anything to the tables
this is strictly display
not sorting or arranging
I would have to change how the backend works
since the backend sorts the data based on the day
not the timestamp
should config.json go inside or outside of the src/ folder?
you can simply take a day, and generate a timestamp for that day
and send it together with the request
and let the browser show its local date based on the timestamp
Doesn’t really matter, although I put mine outside
ok
It would still require me to fuck around with the backend
or i use .env file
and tbh I really dont wanna deal with timezones again
fuck timezones
Theres a reason I gave up trying to fix the auctions timer
its ugly af
Timezones can suck my dick
I'll just slap a "(i) Times are displayed in UTC" notice
so people dont get confused
theres a reason the auctions timer isnt fixed
it got broke when shit got moved and now I really cant be arsed dealing with the timezone crap
I should work on my bot again
fun
well thats the whole point about doing everything with timestamps, sending then to client side, and let the browser decide the timezone
so you never have to deal with them yourself
forcing everything to utc also works
you see that'd be nice if shit didnt have set time start / ends and opening times
and yea, honestly I prefer just using UTC, it's a Coordinated Time for a reason
are these times not universal?
they are
but I have to detect last monday from current monday and all that milarkey
for example https://dblstats.com/auctions/timer is broke
View the historical performance of up to 19096 bots listed on Discord Bot List (top.gg). Updates hourly.
because the times got fucked
set open times and close times to timestamps and let the browser tell them the date
is it the same time every week?
I do pass the timestamp to the browser for that one ^^
so every week the opening time is different than the week before?
because if its the same time every week, like every money at 7am utc
you can modulus the timestamp
Its more the fact that it Starts on tuesday End on monday
n unit ago 
trying to detect when they're open and closed and all the other bullshit to made me give up with the timer
lmfao
I made it way too advanced to the point where its a mess
nah
its dead now anyway
since we cant get auctions data easily anymore
I mean we can, but the way we used to calculate the days and everything relating to auctions weeks and stuff is broke
since it got shifted by 24 hours
I'll prolly put the page under maintenance like the other lot
Tim
this is what we're doing atm https://img.pyrocdn.com/XPMAPGpr
blame marco for the ternary
Ternaries are nice
@quartz kindle its the getting the next week when its monday that breaks
if i had to do it, i would do it like this:
set base starting timestamp, ie previous monday 7am utc
set elapsed time to base - (base % 1 week)
set start time to now - elapsed
set end time to start time + duration
we're calculating 3 different times here
which is why we're having the issue
and then we're using those to detect whether or not the other should be open close / counting down etc
its a pain in the ass and convoluted as all hell
everything can be done by modding the current timestamp by predefined amounts using a base timestamp as offset
something like an epoch calculation
thats not the issue we are having
thats the easy part
its more the
its fine from Tuesday to sunday
but
the moment
literally
the second it hits monday
everything goes to shit
because it then goes "Oh we need the NEXT week"
which is why that ternary is there
thats where modding the current timestamp comes into play
even tho it broke too
it will always be the current week
wut
We need the Last week on the monday
since it needs to use the times from last week
until tuesday
like I said
convoluted as hell
just needs more modding
yea
but i mean
it's not somethign worth fixing rn anyway
its not that hard, you use the current timestamp, and you mod it to fixed times, like day start, specific hour of the day, specific week before or after
like a time cursor
Can't u just create a new date object and add days?
thats what we're doing, but
the moment
the next week starts
it shifts to the next week
Which isnt what we want
its just more effort and convoluted crap to do on top of something that would work fine if it was just using the standard week
I thought of a better solution though

lmao
Js is indeed weird
wait
nvm
shit solution
i cba to think about timestamps and crap
makes my head hurt more than maths
You could try to analyze java's time package
Like, it works really well when dealing with dates
If you're stuck with logic or maths you could peek inside it
i would just abuse modulus and be done with it
Modulus operandi
:^)
I'd like to interject for a hot second just to remind you to protest against people killing ducks to make duck tape
yes
finally, an objective to strive for
Well, harambe died for gorilla tape

People love to flex that they use flex tape
speaking of gorillas, that reminded me i need to shield my message.edit()'s to make sure dumb users dont go deleting the message before the setTimeout() runs
LMFAO
bot.setMaxListeners(0);
fs.readdir('./events/', (err, files) => {
if (err) return console.error;
files.forEach(file => {
if (!file.endsWith('.js')) return;
const evt = require(`./events/${file}`);
let evtName = file.split('.')[0];
console.log(`Loaded event: ${evtName}`);
bot.on(evtName, evt.bind(null, bot));```
So I wrote this event handler right and now it's loading events multiple times.
why are you setting the max event listeners to 0?
You're probably calling your loader recursively.
For example, if you ran the loader in your run event and somehow re-emitted the run event.
That warning is only for a lot of duplicate event listeners
You shouldn't silence it.
listeners must always at all moments be created together with the bot client
to ensure you never re-create them
you're adding too many listeners
Too many of one listener™️
humans are very inneficient
Where would that listener be?
return to monke
because we have two listeners for the same kind of event
._.
You see how it says: Loaded event: guildCreate/guildDelete. Because those events keep being added, you have 11 of the same listener (one of the two). Hence, that warning.
Anyway, you probably have some recursive loading going on, because just from that snippet of code, we can't tell much
Takeaway is:
- Remove the
bot.setMaxListeners(0)line. The warning is to help you. - Try debugging and seeing where/when the loader is being called. Using your IDE/code editor's debugging tools will help since you can jump around.
Alrighty
so, I just finished making my solo/duo-q ranked system, but...
do you guys have any idea on how I can avoid 4 for loops?
like, it must iterate over the lobby to find possible 4-player matches
like, it's not being slow nor giving me any issues, but that's just plain ugly
so you need to sample 4 distinct items from [0, size - 1] range, right?
you can try to generate 4 random numbers, check them, if they don't pass, add to cache so you don't select that pair again
also, is your tryMatching functions returns different results for tryMatching(0,1,2,3) and tryMatching(3,2,1,0) @lyric mountain
what i mean, does the order of a, b, c and d matter?
tryMatching gets the players in positions a, b, c and d in this case
all values are distinct
that random idea, I like it
so the order matters
not at all
in that case you have many duplicate cases in the loop
it also takes mmr in consideration
so low-mmr players will get partnered with higher-mmr ones
and you have to sample distinct tuples of size 4
tryMatching is the one who deals with that
I think the random idea will work
just to make sure to uniformely sample all positions
I have a getRandomN function that I made, it takes an array, an amount of values to return and how many copies of each element is allowed
so it'll always return me 4 distinct values
thx
cool
Just to note you, that you are not sampling unifromely if you just pick a random number each time
lookup reserviour sampling
i mean, what is the best server for a node.js app?
let's say it indeed became smaller
sorry for the stupid question but i can't go incognito in this server
true, I'll put a seed there
precious
but is it ten thousand?
perhaps
@brisk gate
now it'll use the original array's hashcode as seed
all calls to rng will use the same generator
so now it'll be uniform
don't ask me
yeah, I know
this is one of my codes where I'll eventually look at it and say "wtf"
although it was a prototype earlier today

great code
@lyric mountain that's not exactly what I said. Changing seed doesn't really solves the issue. You can use https://en.wikipedia.org/wiki/Fisher–Yates_shuffle to shuffle first 4 number in the range from 0 to size-1 and if that tuple doesn't work, retry to generate.
ah, that's no issue actually
the rng method is another method inside my Helper class
it already handles such stuff
actually, java has a ton of customization for vanilla Random class
not as much as c++ tho
c++ random is fckin overkill
ok, then. I'm not familiar with java libraries. I just know if you naivly sample integer and then resample it if it's duplicate that will break "uniformity"
maybe I might implement that shuffle, doesn't seem a bad thing to have just for the sake of it
if I understood right, all I need to do is shuffle each time the element surpasses maxIntances, right?
No, just need to go over first maxInstances elements shuffle them with random index
The extra space is killing me
maxInstances is an integer actually
in the code above, if the element to be added cannot be added it'll shuffle the list and retry
that's actually the right syntax lul
the full generic definition would be <T extends Object>
but it can be reduced to <T>
we can also do this
static void shuffle(int[] array, int maxInstances) {
int n = array.length;
Random random = new Random();
for (int i = 0; i < maxInstances; i++) {
int randomValue = i + random.nextInt(n - i);
int randomElement = array[randomValue];
array[randomValue] = array[i];
array[i] = randomElement;
}
}
here is a random fisher yets but capped to maxInstances
I assume maxInstances is <= array.length
Yep (well, not actually)
But that wouldn't work
Like
MaxInstances is the maximum amount of repeated values
ah, I misunderstand your function then
Like, in my previous usage I'd get one instance of each player
No more than one instance per player must exist in the matchmaking
So MaxInstances is 1
oh, in that case this function will work
you generate 4 random numbers, where first one is from 0 to N, second one is from 1 to N - 1, etc
Ig I could remove the element from the aux list to prevent further clashes
Yeah I know what generics are, but the extra space feels weird. I'm so used to functions being declared like func fun<T>(fn: (T) -> T) {...} where the generics are after the name
Oh
worrying about code style is one thing you can delegate to tools and forget about it, saves many hours in debating in PRs and arguing about spaces
Ngl, I spent about 3 hours adjusting delphi's formatting style
Vanilla formatter is plain awful
last time I heard delphi was 2005 in Russia
Wish I never had to use it
Unfortunately delphi is hugely popular here in brazil
Seriously, any lang would do better than object pascal
I spent like 2-3 hours on a giant ESLint configuration file
but now I don't bother using formatters
this is the way
they're annoying, but if I run a public project, I probably will enforce it
so you don't have people writing luca code
mine definitely was
I remember running it for the first time
600+ warnings & errors
and used one provided by WebStorm and got around 1k+ warnings & errors
also, i started using go, which has formatter built-in with super opiniated formatting which is cool
Tbh, I once fighted against my college assignment's partners
no one debates over spaces vs tabs
that often happens in start of your career
Nor spaces
how about we debate tabs and spaces 
oh dear god
You should see C/C++ developers fighting on what line to put the braces on
It's already a C#/Java fight
C# puts below, java in front
during frehsman year I saw so much awful code, there was one guy didn't know about existence of Enter and he was writing C++ in one line
reason is "eh we like it this way"
yes, that's pretty much how Golang works
"you like spaces? we don't! we use tabs over here!"
In this Christian server we don't believe in spaces
i prefer tabs since anyone can adjust them however they want
but i can see why people also use spaces
but no one really cares, you just pass through the formatter before commit and than right, anyone can adjust the spacing in their editors
i remember cloning a really big repo and accidentally ran prettier
shit took like a minute and ended up converting every space to tab
Lul
Like, tabs have at most 2 uses
Why leave it with only 1?
Space is already a popular dude
bad thing is they look really messed up on github
eslint node_modules
In github?
yea
Cool
but no one got time for that anyways
Imagine if they added a setting to in the profile to adjust that
Guess I'll open a suggestion there
probably someone made an extenssion for that
Does anyone use Discord slash commands? They have proper UI for them only in Web version.
only in web version?
On mobile, it's barely working
damn, discord
Slash commands are...how can I call it? Niche?
like in Slack
and they expect devs to fall in love with slash commands
Like, EVERYONE already have a prefix system for their bot
i just started making a bot and used slash commands exclusevily
also I hate when some bots register /help command and it becomes their
Slash commands are somewhat redundant
i have a bad feeling about this
And have that issue mike pointed out
Does discord really expect servers to have only one bot?
They see all commands, with help. They have autosuggestion
idk what they're thinking anymore
Just wait bot prompts and menus
You can send replies in the channel which they can only see
is that something they are wokring on?
Yep
do you have gh issue link?
It was announced the same time as slash commands
your point

