#development

1 messages · Page 84 of 1

boreal iron
#

In other words your commands array

idle coral
#

What should the command structure look like.

boreal iron
#

But with the proper structure

boreal iron
idle coral
boreal iron
#

And options/choices etc. if needed

idle coral
#

But I can't load slash commands into discord.

boreal iron
#

Also transforming the object to JSON via data.toJSON is useless as djs does it automatically anyways

idle coral
#

For me atleast.

#

And if it should, please tell me how.

#

I'm running on V13.

boreal iron
#

It does once you use the inbuilt methods not the rest handler

#

Even v13 should have them

#

Take a look at the example of the create() and set() methods

idle coral
#

Hm. This documentation shows this as a command.

#

It seems so weird.

#

I'm so used to module.exports = {}

#

I honestly don't fully understand.

#

Trying to grasp it.

boreal iron
#

You either register one per one command one time or update (and replace) em all using the set() method

#

You can pass your array commands to the set() method

#

Remove the JSON transformation completely

#

And you can but you don't need to remove the extra data object

#

No need to wrap the command structure into another object

#

And make sure to only add the properties which are allowed

#

For your example just name and description

idle coral
#

It still doesn't make sense to me really.

boreal iron
#

module.exports = {
name: "name",
description: "description",
cooldown: 999,
run: async(...)
}

commands.push({ name: command.name, description: command.description });

#

And so on

#

You need to differentiate between your command module and slash command command structure

#

Both are different things

#

While you use your module cooldown property internally in your command handler (somewhere) doesn't mean this can be part of your slash command structure which you sent to the api

#

To register the commands you simply create an array of objects that include only your command structure you wanna register/update

#

Nothing else

#

FakE out

#

💤

sudden geyser
#

yeah get out

boreal iron
#

Shut up lazy Klay

idle coral
#

lol

eternal osprey
#

how would i create a messagecomponentcollector that is general bound to a certain channel and not necessarily a message?

idle coral
#

I still don't fully grasp it. I really don't.

boreal iron
#

Even too lazy to explain your own point freerealestate

sudden geyser
#

don't channels have collectors in djs

#

wait

eternal osprey
#

I think that one of the mods told me that i could use a createmessagecomponent collector without specifiying an actual channel

sudden geyser
#

wdym bound to a certain channel

idle coral
#

The Slash commands don't push to discord!

#

They still don't man.

eternal osprey
#

i am using the createMessageComponentCollector but some mod here told me that i didn't have to specify a message

#

So that it would become a 'general' collector

boreal iron
#

Tf

idle coral
#

Fake.

#

I literally.

#

I'm gonna talk to you tomorrow.

boreal iron
#

A message component collector collects only components used in that message

boreal iron
idle coral
#

It won't push to discord.

#

commands.push({ name: command.name, description: command.description }); isn't being read.

boreal iron
#

Any other component used triggers your interaction event

idle coral
#

I don't think.

boreal iron
#

Which includes the properties to identify and/or filter the channel

eternal osprey
#

wait let me find the exact message back

boreal iron
#

That's literally the name KEKW

idle coral
#

Yet the command is a lockdown command.

boreal iron
#

You filter the channel for example by its id

#

Which is provided as property and part of the class

idle coral
#

Fake, we'll talk tomorrow.

craggy pine
#

@solemn latch

idle coral
#

I aswell need to go.

boreal iron
#

lol imagine pinging yourself to advertise

idle coral
#

🤦‍♂️

lament rock
#

get free wifi anywhere you go

sudden geyser
#

I've never heard someone say "flick some bucks" before

boreal iron
#

Quality ads

craggy pine
#

Get more ram by downloading it here!

idle coral
#

Fake, I friended you. I'm out.

boreal iron
#

Just ping me here

craggy pine
#

@boreal iron

#

Did I do it right?

boreal iron
#

I don't accept friend invites anyways

boreal iron
craggy pine
boreal iron
#

F - sit down

#

(or 6 when being in the EU)

craggy pine
#
let fake = client.users.cache.get("243443167704121344")
if(fake) fake.ban()
sudden geyser
#

null since fake does not exist

boreal iron
#

Ha not cached

craggy pine
idle coral
fresh stone
#

ominous ghost ping aka I've figured out what I was asking

sudden geyser
#

I was going to suggest using a transaction

mortal moth
#

Hii

sudden geyser
#

why hello there

lament rock
#

mentioning users also caches them

boreal iron
eternal osprey
#

does anyone know a good formula for the sequence:

#

5, 10, 20 , 40, 80 etc etc

#

i have a xp integer

#

and want to be notified if it's bigger in any of these sequences

rustic nova
#

xp*2

#

lol

#

if xp > (xp*2)*2
if the current xp is larger than the xp for the next level after the current one

#

actually nvm

earnest phoenix
#
start=5
new=old*2

trollStare

rustic nova
#

but what if the xp is within an already sequence (such as 45)

earnest phoenix
#

Will never get to 45

rustic nova
#

ohh yeah if they reset it on each notification

analog tinsel
#
//im trying to add this too
const secondapi = "http://apisite2/"   <-------- me trying to add this too

//working
$.get('http://apisite/' ,function(data){
$.each(data, function(i, item) {

blablabla

},'json');
#

hello im making html page with api fetching to display userinfo

#

my problem is i need to fetch one more data from another api site too. but i dont know how i can compile two

eternal osprey
#
ara[key][1].type === 'GUILD_VOICE'```I have this check in my code
#

but after running it will eventually tell me: cannot read properties type of null?

#
 let channels = await interaction.guild.channels.fetch();
        let mapped = 0;
        let ara = await [...channels]
for(const key in ara){
  
  if(ara[key][1].type === 'GUILD_VOICE' && ara[key][1].id !== vc.id && ara[key][1].members.size !== 0){
   mapped++;
   console.log(ara[key][1].type)
  
    ara[key][1].members.map((member) => {

      member.voice.setChannel(vc)
    
    })
   
  }

  
}```this is the whole code
#

i really don't know why it's fucking up

tulip ledge
#

The for in statement iterates over the enumerable string properties of an object

#

So try using for of and see if it works

#

Nvm you’re using for in correctly I’m stupid

#

So it’s saying that ara[key][1] is undefined right?

#

Or null

#

Try logging ara[0][1] before the for loop

modest gulch
rustic nova
#

bruh

modest gulch
#

topggFacepalm :topgg_ico_delete topggFlushed topggGuns topggHappy topggHurt topggJoy topggLaugh topggLikeThis topggMeh topggModerator topggNeko topggLikeThis topggParty topggNeko topggPensive topggPog topggSick topggSmile topggSmirk topggSob topggSunglasses topggStaffPick topggThink topggThumbsDown topggThumbsUp topggTranslator topggVeld topggWink topggYeehaw

rustic nova
#

@unkempt ocean hi

modest gulch
#

Fucckkkk

earnest phoenix
#

@real rose gooserunning

#

goose faster

real rose
shell echoBOT
#

Dylan#1234 muted RiskerMadhavpro|YT#0388 indefinitely Reason: Emoji spam in #development.

gilded plankBOT
#

upvote RiskerMadhavpro|YT#0388 was successfully muted

real rose
analog tinsel
#

const avatar = await client.users.cache.get(userid).avatarURL({ format: 'gif' })
hello, i have problem at this code.
if member doesnt in server and trying to catch avatarurl from
it gives "cannot read properties of undefined (reading, avatarurl)" error

#

how i can make system that if bot didnt fetched avatarurl then it replace with another image

pearl trail
#

use optional chaining (?.) and using OR (||) or use conditional operator with client.users.cache.get(userid) as the statement

analog tinsel
#

can u give me example

warm surge
#

user.tag or user. displayAvatarURL

analog tinsel
#

i know these

#

i just need help

#

if avatarurl undefined how i can change it to another image

warm surge
analog tinsel
#

my problem is different

#

i dont know code so

#

for example im saying

#

const avatar = user.avatarurl
if avatar is undefined avatar=anotherimage.png

#

i need this code

neon leaf
#

const avatar = user.avatarurl || anotherimage.png

pearl trail
#

not trying to fully spoonfeed but here's the example that you need to adjust yourself
const avatar = user?.avatarURL || 'fallback'

analog tinsel
#

these not work

tulip ledge
#

Show what u did

earnest phoenix
analog tinsel
#

its work

earnest phoenix
#

It worked?

analog tinsel
#

yes its fetching avatarurl but

#

if member not in server

#

it give error

earnest phoenix
analog tinsel
#

so im trying to make if bot cant fetch avatarurl then change image to another image

#

so error will not appear

tulip ledge
analog tinsel
#

i maked working system before but i deleted file so

earnest phoenix
analog tinsel
#

my code before like to avatar == null then avatar= anotherimage.png

#

something like that

earnest phoenix
earnest phoenix
tulip ledge
earnest phoenix
#

You can use ||

analog tinsel
#

const avatar = await client.users.cache.get(userid).avatarURL({ format: 'gif' }) || client.guilds.cache.get("1033299353445605396").iconURL({ format: 'gif' })

analog tinsel
rustic nova
#

just check if user is null

#

it fails to read avatarURL because user is null

neon leaf
pearl trail
neon leaf
#

why does this respond with { error: 'unsupported_grant_type' }? I copied from discord docs

craggy pine
#

Does anyone see anything wrong with my button pageinator? I used this exact code in v13 and it worked fine, but transitioning it to v14.5.0 I could never figure out why it would never respond.
https://hastebin.com/ijezadahik.js
The botton styles when I was originally trying to make it work were renamed appropriately to CapCase instead of all caps, this is just directly copy pasta'd from my v13 bot so changes don't reflect what I've already done.

tardy tapir
neon leaf
#

Read the docs so you can see how to make buttons, how you are making them rn is the problem

craggy pine
#

I forgot to mention

#

I did change the botton creation method to v14s aswell.

neon leaf
#

iwth ActionRowBuilder, ButtonsStyles, etc?

tardy tapir
#

Did you change action row creation methods?

craggy pine
#

Ya

neon leaf
#

well then is there an error

craggy pine
#

Let me just re-create my code again since I forgot I had changed more than just the style names. I recalled it not erroring, just not responding to button clicks.

#

One moment.

#

I must be overlooking something

deft wolf
#

What is message in your code?

#

The embed that the bot sends?

craggy pine
#

No, the embed is curpage

#

message is...

#

interaction

deft wolf
#

Ok

craggy pine
#

so just subsitute any "message.channel" as "interaction.channel" since it's the same thing in regards to how it works

deft wolf
#

Have you tried to check if the collector catches you at all?

craggy pine
#

I can log something sec

#
buttonCollector.on('collect', async (buttons) => {
  //not reaching this part of the code
}
#

nope

#

Oh I think I see it.

#

const filter = (interaction) => interaction.user.id === message.author.id

#

Interactions don't have authors

deft wolf
#

Well

craggy pine
#

Wasn't it.

#

renaming every "message" to "interaction" to not confuse myself and changed the "const filter" part to just (i => i.user.id)

#

must be related to the event portion of the code because when the timer expires the buttons do get removed as it should.

deft wolf
#

Strange because if the collector does not fire at all, then there must be some problem with it, but it doesn't look like it

craggy pine
#

I think...

#
componentType: "Button",
#

since it was "BUTTON"

#

Ok idk now wasn't it

deft wolf
#

I have no idea either

craggy pine
#

It's strange because the timer portion of the collector is working, I know this because after 30000 milis it ends the collector and removes the [row]

#

so it has to be something with buttonCollector.on

deft wolf
#

What if you just gave up on this filter and just checked in buttonCollector.on() if it works for just anyone?

craggy pine
#

I can try that ya

deft wolf
#

I just don't see the option to add a filter

#

Or nvm it its

#

XD

#

A very strange situation

craggy pine
# deft wolf XD

changing the filter to const filter = (i) => !i.user.bot just to ignore the bots, it still doesn't appear to work

craggy pine
#

grandpappy fake is typing

boreal iron
#

Or interactions at all

craggy pine
#

Fair enough.

#

But should still technically work as a filter

#

which wasn't my original filter

boreal iron
#

Yes

boreal iron
#

But isn't actually needed tho

craggy pine
#

I know I don't have too. It was for testing why my bot wont respond to button clicks at all

#

sec I'll hastebin my changes

boreal iron
#

Im driving so... might be a the wrong moment

#

But gimme a second

craggy pine
#

What, can't code and drive at the same time?

#

pathetic

#

But yeah essentially I console log within the event portion just before the switch case and it doesn't get to that point, so it's related to either the event itself or the code above it.

boreal iron
#

I would guess the filter component type is wrong

craggy pine
#

it was "BUTTON" before

boreal iron
#

Should be 2 (int) not button

craggy pine
#

oh really

boreal iron
#

Not sure if discordjs still parse this internally

craggy pine
#

ffs

#

that did get it to see the event

boreal iron
#

There we go

craggy pine
#

well fake, you once again saved the day you sexy u

boreal iron
#

1 min Support = 1 Hour = 120$

craggy pine
#

nah u get hug attacks instead im piss poor

boreal iron
#

Ok accepted

craggy pine
boreal iron
#

_next time I'll take ur soul _

craggy pine
#

deal

#

(he doesn't know I don't have one)

#

but ty again fake works well now I can get stinky emojis removed

boreal iron
#

When accessing the data property you will see the structure as the api sends it without the stupid transformation of djs changing all property names to camel case

#

aka the raw structure

craggy pine
#

which since it works fine it's like better aswell

analog tinsel
#

This request has been blocked; the content must be served over HTTPS.

#

my website cant fetch data from my express.js api site

#

anyone know solution?

viral badge
#

you just need to fix https or use http on source site depends how you got it setup

analog tinsel
#

1-2 years ago i fixed this with

#

1-2 line code add to my express.js file

#

but i forgot

#

code adds allow to http etc

viscid gale
#

found this gem on SO this morning
if u looking for some mental exercise pls enjoy

tulip ledge
#

Maybe that fixes it?

lyric mountain
#

and no, definitely don't use regex for that

#

also, attach a debugger to it and see what is being passed to the check when it reaches that point

neon leaf
#

Im losing my mind, why tf is this for loop not looping?

  const type = (url.type === 'STATIC' ? 'GET' : url.type)
  pageDisplay += `[-] [${type}] ${url.array.join('/')}\n`
}```

content of `urls`:
```[
  'GET/': {
    file: './test/static/index.html',
    array: [ '', 'index.html' ],
    type: 'STATIC'
  },
  'GET/s.png': {
    file: './test/static/s.png',
    array: [ '', 's.png' ],
    type: 'STATIC'
  },
  'GET/say/:word': {
    array: [ '', 'say', ':word' ],
    type: 'GET',
    code: [AsyncFunction: code]
  },
]```
wheat mesa
#

try in instead of of

#

I always forget which one is which

neon leaf
#

why tf did that suddenly work

#

I swear I tried it before

#

but why doesnt of work?

#

typescript doesnt say anything about of not working, full intellisense available

wheat mesa
craggy pine
#

What would be a good way to remove users from discord cache when a bot leaves the server? I’m aware of cache.delete but can you access the users of a server the bot left in the guildDelete event?

boreal cove
#

What is the code to add an image to a description on top.gg ?

craggy pine
boreal cove
#

okay thx

craggy pine
# deft wolf Probably

At work so i cant test for a few hours but having a rotating bot status it delete remove the guild count on leave but I noticed the user count didn’t change

#

So I’d likely have to get each user aslong as the bot doesn’t see it in another server and remove them from cache

craggy pine
#

Itll tell u how to use it

#

But no ur method is incorrect

boreal cove
deft wolf
deft wolf
#

There u have everything u would need

craggy pine
#

Reason why is because the guild gets uncached on leave automatically so wasn’t sure

sudden geyser
#

discord updated code block colors

#

it looks so weird

deft wolf
#

I saw that

boreal cove
sudden geyser
#

it's not even consistent across languages

craggy pine
# deft wolf

I assume this related to me on a “server leave”

deft wolf
#

No no

#

Its about code blocks colors

craggy pine
#

Ah ok

sudden geyser
#

straight up github color scheme

earnest phoenix
sudden geyser
#

too bright

#

the old one was bad but this also sucks

earnest phoenix
#

I mean the new one is kinda better, the colors look more appealing to most people I guess

wheat mesa
#

This is much better

#

Very big improvement imo

earnest phoenix
#

Yeah

tropic estuary
boreal iron
sharp geyser
#

Doesn’t that need a closing thingy

boreal iron
#

Nah browsers will parse any shit nowadays

#

It would be needed when going for html strict

#

There's another char missing

#

But in order to use the "right" syntax, yes you would also close the tag />

earnest phoenix
#

img tags don't have an enclosing tag, they don't need any

wheat mesa
#

idek what browsers want nowadays

#

they'll eat shit and still show something for it

boreal iron
#

Correct that's why you close it inline inside the opening tag aka self closing

wheat mesa
#

the problem with his thing is that he didn't do src="url"

boreal iron
#

Same goes for a few tags

#

As well as br etc

boreal iron
boreal iron
earnest phoenix
boreal iron
#

Tf are u talking

earnest phoenix
boreal iron
#

There's no enclosing tag, yes

earnest phoenix
#

Have fun

boreal iron
#

Nobody except u is speaking about an enclosing tag

wheat mesa
#

HTML spec webpage looks like dogshit

#

ironic

boreal iron
#

Or was

earnest phoenix
boreal iron
#

<img src="..." />

boreal iron
#

Yeah you misinterpreted this

#

Should have said self closing tag in the first place

earnest phoenix
#

Oh I see what you're talking about, yeah what you said is the original syntax and does work but the thing is that's what the syntax was, the / was made optional, strict modes don't even check for that

boreal iron
#

iirc strict mode creates a warning when the self closing tag is missing or not?

#

Or was it xhtml

#

Idk anymore

earnest phoenix
#

I think you're talking about something else, I've never seen it warn about that

boreal iron
#

Yeah maybe I'm thinking about something else

#

Idk

#

Doesn't really matter tho

#

If you respect the correct syntax then u gonna use the self closing tag or go to hell

#

Just states it's optional

pearl trail
#

react does need the closing tag otherwise it’ll throw an error KEKW

boreal iron
#

Probably the same sort of discussion like using semicolons in JavaScript

#

who gives a fuck

earnest phoenix
#

Python users when you use even a single semicolon

tropic estuary
#

javascript is better then python if you know what it can do

tropic estuary
#

may not have done that

earnest phoenix
#

When you make a parser that just suddenly broke and then after 6 hours you find out you missed a continue statement

tropic estuary
#

at lease i have ftp to not worry about breaking my machine

#

to be fair getting a server to put your "Development stuff" is very useful as your able to code that from anywhere if you Need

idle coral
#

Hey Fake.

#

@boreal iron I didn't understand how this would fit into the code yesterday.

commands.push({ name: command.name, description: command.description });
boreal iron
#

This will push an object incl the name and description of your slash command to your commands array

#

That array will be sent to the api to register or update (all) your commands

#

That's it already

idle coral
#

Alright. It is labelled as commands in my command handler.

boreal iron
#

This structure does only include the properties the api expects not your additional ones you need for your command handler

idle coral
#

I know that.

#

The cooldown is a separate system.

boreal iron
#

Since you removed the data object those properties name and description should be available directly after importing the module

#

If you wanna keep the command details inside the data structure then just edit the mentioned line

#

command was the imported module in that case iirc

idle coral
#

Alright.

#

I half get that.

boreal iron
#

Just as personal tip, it might make sense to use more proper var names

idle coral
#
client.commands = new Collection();
client.slashCommandFiles = walkSync(path.join(__dirname, '/SlashCommands'))
idle coral
#

It's a habit.

boreal iron
#

When importing the file I would call the var module for example,
const module = require(...);
As it is the entire module (structure) not just the command

idle coral
#

Alright.

boreal iron
#

Confusing var names are a mess once u have to edit your code somehow and dunno what was what

#

Or wrongly names vars

#

But those are personal preferences

idle coral
boreal iron
#

iirc you defined command as var of your imported command file

#

const command = require(...);

idle coral
idle coral
boreal iron
#

(and use it later on in your command handler)

#

I didn't see you doing this in the code you sent the last days

#

All I saw was you creating another array called commands to push your slash command structure to

#

It's fairly simple and i would like to give you an example how it works but sadly I'm still working unexpectedly

#

And looking on various parts of shared code on mobile is just hell

boreal iron
#

Once imported you can use em in your code

#

// module module
module.exports = {
name: "test",
description: "Voltrex weird guy",
...
}

// somewhere over the rainbow
const module = require(module module);

module.name -> "test"

idle coral
#

I just don't get why I have to go through all of this.

#

The commands automatically updated themselves.

#

And all of a sudden it didn't causing issues.

boreal iron
#

Well since you put your command in modules you have to

hoary monolith
boreal iron
#

You can also make an huge index file writing anything into it

idle coral
#

Then I got different documentation telling me two different things.

idle coral
boreal iron
#

lol

#

If you like to, why not

#

It will become a mess, trust me

idle coral
#

I've gotten this far, not going back.

#

This is what my echo command looks like.

#

Very simple you see it in every bot.

boreal iron
idle coral
#

Which is why I do everything to it.

#

That is how it is supposed to be, correct?

hoary monolith
#

I just need the default url. for the simple command

boreal iron
idle coral
#

Alright.

boreal iron
boreal iron
idle coral
hoary monolith
idle coral
idle coral
boreal iron
#

It is one once you tried to register the command

#

Which is what u wanna do, right?

idle coral
#

Yes.

boreal iron
#

It will return an error

#

*throw

idle coral
#

I know I'm finding why.

#

I think I know.

#

description technically doesn't exist.

#

Would I do module.exports.description?

wheat mesa
#

oh boy

boreal iron
#

Man i can't follow you I'm sorry

wheat mesa
#

const command = require("./path/to/command.js");

boreal iron
#

It's hard to follow random code snippets and screenshots

wheat mesa
#

then you can access the exports on it

idle coral
#

Sorry, I do that.

#
const slashCommands = client.slashCommands = new Collection();
client.slashCommandFiles = walkSync(path.join(__dirname, '/SlashCommands'))
const module = require(module);
slashCommands.push({ name: module.name, description: module.description });
#

This is what I have in index.js

wheat mesa
#

just saying that makes absolutely no sense

idle coral
wheat mesa
#

should give you everything you need to set up a command handler

idle coral
#

Alright.

#

I appreciate you putting up with me.

boreal iron
#

Sharing Links to the djs guide should be a bannable offense

idle coral
#

I don't use the SlashCommandBuilder.

#

This is like randomly learning how to use arrow keys when you've spent your life using WASD in games.

boreal iron
#

Yeah but you straight copied the rest methods to register the commands

boreal iron
#

Which is already inbuilt into djs

#

But the fuckers at djs are too lazy or stupid to make a more reasonable and understandable guide for people who don't understand the registration process

wheat mesa
boreal iron
#

Copying and pasting that trash moves a lot of people into trouble we're trying to handle over here

wheat mesa
#

at the moment it seems like he does not understand what require does, which is a whole different topic than just making a command handler

boreal iron
#

Yeah I already noticed

idle coral
#

And allows you to export them.

#

Atleast that's what I've been taught.

sudden geyser
#

it loads js files

wheat mesa
#

if you truly understood what it did, you wouldn't be writing const module = require(module) lol

boreal iron
#

I wanna use the term imports them

idle coral
#

Because I was self taught.

#

And know how to do things differently.

sudden geyser
#

reject import, return to require(...)

eternal osprey
#

hey

sudden geyser
#

hi

wheat mesa
#

That's not differently... that just doesn't make sense...

idle coral
#

So I'm being told the actual things from Fake, while looking at shitty docs.

#

I'm just confused.

wheat mesa
#

module as a keyword (in cjs projects at least) usually refers to the current file

#

module.exports can be used to specify what should be exported from the file

eternal osprey
#
 if(points1 == points2){
collector5.on("collect", async (i) => {
                                if(boolhit1 && boolhit2 || !boolhit1 && !boolhit2 || !done){
                      .... })               } ```Does anyone know why this collector is only collecting once? I know it's because it's a regular if statement, but wrapping it in a while would seem pretty bad..
boreal iron
# idle coral And know how to do things differently.

Well you said before you throw anything into your big index file and don't wanna use modules, after this you sent the screenshot of your command module (file) and said this is what u do which means you didn't really know what it means as you said he opposite before

idle coral
idle coral
wheat mesa
#

For example: ```js
// In file.js
module.exports = {
name: 'Something',
description: 'something else'
}

// In index.js
const something = require('./file.js');

console.log(something.name); // Something
console.log(something.description); // something else

boreal iron
#

So the link Waffle shared is okay

#

Regarding modules

#

Saving the slash command structure and registering it is a different story

idle coral
boreal iron
#

This is what I already wrote on mobile before

idle coral
boreal iron
#

Just well formatted tho

#

Yeah

idle coral
#

So I'm better understanding shit format.

#

Cool.

boreal iron
idle coral
#
const fs = require('fs');
const path = require('path');

var walkSync = function(dir, filelist) {
  files = fs.readdirSync(dir);
  filelist = filelist || [];
  files.forEach(function(file) {
    if (fs.statSync(path.join(dir, file)).isDirectory() && file != "subcommands") {
      filelist = walkSync(path.join(dir, file), filelist);
    }
    else {
      if(file.endsWith('.js'))
        filelist.push(path.join(dir, file));
      }
    });
    return filelist;
};

module.exports = walkSync
#

I've had that file the entire time..

#

Which to me, is what I needed.

true forge
eternal osprey
boreal iron
wheat mesa
#

that shouldn't cause an issue if it gets set up in the first place though

#

since it just binds an event listener if points1 == points2

eternal osprey
#

So it wouldn't be the issue i suppose

wheat mesa
#

yeah that's what I'm thinking

#

your if statement logic inside of the collector is probably fucked up

eternal osprey
#

i tried logging the variables, the first time it worked but after that it just stops

#

and doesn;t do shit

eternal osprey
boreal iron
#

Ah lol I looked at the wrong vars

#

Yikes

wheat mesa
#

also your logic can just be shortened to if (boolhit1 == boolhit2 || !done)

eternal osprey
#

This is really strange btw

#

because even if my if statement logic would be fucked, the console.log is right after the collector.on

#

So it should still need to log the actual interaction

#

which it does the first time but then it quits

boreal iron
#

What does he collect even collect?

eternal osprey
boreal iron
#

You're lacking to provide details

#

Ah ok

eternal osprey
#

so a button

idle coral
eternal osprey
#

Owh yeah my bad forgot to show it

boreal iron
#

any filters?

eternal osprey
wheat mesa
#

are you using this in DMs?

eternal osprey
#

                                                         const filter1 = i => i.member.id !== client.user.id
                                                        const collector5 = kdb.createMessageComponentCollector({
                                                          filter: filter1,
                                                          componentType: "BUTTON",
                                                          max: 50

                                                          
                                                        });```
wheat mesa
#

i.member won't exist in DMs

eternal osprey
wheat mesa
#

so even if you're using it in a regular channel it'll crash if you try it in DMs

eternal osprey
#

yeah

boreal iron
#

Lol another case of wrong component type value

#

Use 2 not "button"

eternal osprey
#

this is v13

boreal iron
#

As the api expects

#

I think the latest version is similar to v14

#

Or not?!

wheat mesa
#
  1. update to v14
  2. always use the number/enum unless it doesn't let you for some reason
eternal osprey
#

The collector works the first iteration why wouldn't it the second time?

boreal iron
#

Does it work once or not?

eternal osprey
#

yes

boreal iron
#

Ah nvm

eternal osprey
#

Maybe i could like share a bigger snippet on like pastebin or something

boreal iron
#

Sure

#

Guessing won't bring us much further

eternal osprey
#

Okay, right on it.

boreal iron
#

It doesn't has anything to do with (slash) commands

eternal osprey
boreal iron
#

Just a generic little helper (function) you can import and use anywhere

boreal iron
eternal osprey
#

As this is supposed to be a general collector, i have made 2 counters. 1 is the ender that checks whether 1 round has ended (modulo 2 as each user can only do an action once each round), and counter to switch through the users (mod 2 == 0 = user 2, else user 1)

boreal iron
#

And proper scaling for mobile devices

boreal iron
eternal osprey
#

whahahaha my bad sorry

#

This is not the complete complete code snippet but i guess that this is the code that is important

wheat mesa
#

oh my...

boreal iron
#

lol I had to scroll to the right for 2s to see he code

#

Was already wondering

eternal osprey
wheat mesa
#

I guess no matter how much I beg and plead you still use json for a "database"

eternal osprey
#

i never said it was good boys

eternal osprey
wheat mesa
#

this is the #1 way to lose data

#

especially with writeFileSync

eternal osprey
#

however this is a home project so i don't really care about the data.

#

It's just for me and my friends

#

Which is why i put minimal effort in the layout etc

#

However this issue is fucking everything up and idk how to fix it

boreal iron
#

Tbh it's impossible for me to see which parts belongs to which statement as the format is fucked up a lot as u said

#

Unless Waffle sees the issue I would consider to start to comment out your statements and nested code and see what makes your collector stopping

wheat mesa
#

if your code is THAT indented then you've got a major problem 😭

eternal osprey
eternal osprey
#

i will just rewrite this part from scratch again and see where it went wrong. Thanks for everything boys!

boreal iron
#

At first I would start to comment out anything expect the logging inside the collector to see if the event fires multiple times then

#

The going down to the deeper nesting

eternal osprey
boreal iron
#

Weird English I know

boreal iron
eternal osprey
#

So really strange almost like it gets stcuk somewhere? Which it can't as it's an event

eternal osprey
boreal iron
#

That shouldn't prevent the event to fire again but could make the event loop stuck ?! Idk I'm not that deep into JS

#

But try it out

idle coral
boreal iron
#

Should go damn quickly to comment the entire code out or just delete it

eternal osprey
#

yupp will try that for sure

#

thank you

boreal iron
#

Alright then tell me if the event fires multiple times

#

Which it should do

#

Also where tf is @quartz kindle

#

Are you still alive?

idle coral
#

I did it finally.

#

Slash commands are now loaded.

#

It only took a little bit of brain power to be honest. Waffle definitely helped me.

surreal sage
#

What would be the best way to resize an image (e.g 500px 1:1) to 1px 1:1 but being able to zoom in and seeing the same image as before
Or something that has the same results
Not development related but it is a techy question

wheat mesa
#

like, without losing any quality?

#

that's what SVGs are for

lyric mountain
#

Ye, it's impossible to resize raster images without loss of information

wheat mesa
#

^

#

rasters are described per pixel, whereas svgs are described by mathematical formulas, like bezier curves

#

Scalable Vector Graphics

lyric mountain
#

And no, putting a png inside an svg won't make it resizeable

#

Just in case (saw some people doing this already)

wheat mesa
#

Yeah the data itself has to be in some form of vector graphics in the first place to be scalable

#

that's why SVGs are very desirable for web dev

lyric mountain
#

Sayu loves svgs

wheat mesa
#

who doesn't

#

lossless with resizing is an amazing technology

craggy pine
#

I'm a little sad I didn't realize how useful autocomplete was. This opens up a lot of opportunity with my bot and all the manual inputting I've been making the users do. facepalm2
https://scs.twilightgamez.net/g/YJZZF.gif

boreal iron
#

Indeed

#

The issue is that you can't enforce to pick an option

craggy pine
#

Of course. If they just type whatever instead of picking then it still attempts the code as normal.

boreal iron
#

You can still type and send some weird shit that won't have an option available

#

Yes that's what I mean

craggy pine
#

The good thing about just now figuring out this what a thing is that I already had those checks in place KEKW

#

But my mind is like 🤯 since all my database related stuff can be in those and man does it make life easier

boreal iron
#

There should be the required flag to force the user to pick an available option

#

Or not and still be able to input and send even without picking a matching option

craggy pine
#

I definitely agree with you there.

#

So before I used to have people run a /playlist select to set a playlist as "Selected" in database to then make changes too or simply just play w/o the ID of it.

boreal iron
#

So ... once discord notices and agrees when might see this feature in the next 5-10y

craggy pine
#

This just like completely changes my way of thinking with my system now

boreal iron
#

Yes autocomplete is very useful

#

But choices are, too and ensure a much faster response time

#

And they are shown immediately

craggy pine
#

me realizing I have to go through 1000's lines of code to enforce auto-complete

#

probably over exaggerating the amount, but a large portion of my bot will use it now

solemn latch
#

👀 surely there's a good way to handle that.

craggy pine
#

Yeah I'm sure there is. My code isn't the prettiest and I'm sure I could do much better in regards to simplifying stuff.

daring stone
#

Pon

sharp geyser
#

In the process make it more performant or what not

viral badge
#

soo how does autocomplete work bois?

deft wolf
#

You type something and the bot "suggests" which choices to choose

#

From what I understand, these choices can be set inside the command itself instead of in the data of this command

#

This is probably more flexible because these choices can change, for example, depending on the popularity of the song

#

One month, one song will pop up as a suggested song, and the next month, another because it's more popular

viral badge
#

well yes sorry i meant how does the code side of it work? any docs?

#

well I do know how to setup command choices but yeah, I suppose just gotta use that system for the moment 🤷‍♂️

deft wolf
#

Of course they are

viral badge
#

nice

viral badge
#

danke bros i've added autocomplete now 💪 was pretty easy

deft wolf
#

That's true, it's not too complicated if you use the guides and documentation and don't mindlessly copy code from stackoverflow

viral badge
#

yuup

eternal osprey
#

hey guys in dbms, an index is just used to save the pointer and location of data tuples so that a query can run faster and more optimized.

#

However i got this question in my practice and don't really know when to use an index?

#

I mean, if an index can be used, it should be used right so that it will always return fast results?

#

Because otherwise it would first have to analyze through the whole year database etc etc and then select all data from them, but using indexes it can just retrieve all locations and filter them and return the result.

#

Actually i think it's the 2nd one

#

Because it honestly depends on the dbms you are using. Some already have good analyzing techniques, so an index would be useless if they have the same estimated costs.

quartz kindle
#

lmao

craggy pine
#

Does anyone know if a mysql (mariadb) bulk insert is faster than a single insertion multiple times. Mainly used to inserting user data into a database? I would assume so, just wanted to know if there could be any draw backs to inserting potentially 100's + of users for example on a guildJoin

quartz kindle
#

there shouldnt be any significant drawback

craggy pine
#

Okay cool. Originally I was just forEaching each member and doing single inserts, then I realised a nested array is basically a bulk insertion

#

so I could dim it down to a single database query

quartz kindle
#

yes, that is going to be much much better

craggy pine
craggy pine
earnest phoenix
#

How does the new code block format on Discord work?

craggy pine
#

should be same, just new highlighting right

earnest phoenix
#

Haven't seen any specific information from Discord themselves so far, trying to figure it out

quartz kindle
#

there is a new code block?

earnest phoenix
#

Ah so they meant new colors with "new format" then

quartz kindle
#
var test = 10;
```?
craggy pine
#
console.log("hello world")
for(i=0;i<100;1++) {
  console.log("tim smells" + i)
}
#

new color highlighting

earnest phoenix
#

I guess they were meaning to update the screenshots for the colors

craggy pine
#

facts

quartz kindle
#

:^)

quartz kindle
craggy pine
#

essentially since username or discriminator can be changed by a user.

#

realistically I don't need the discriminator

quartz kindle
#

INSERT ON DUPLICATE KEY UPDATE

craggy pine
#

oh i see

quartz kindle
#

should be VALUES, why SET?

craggy pine
#

idk it's what I've always used.

#

Ik how to use VALUES () I don't exactly recall the reasoning to why I had switched to SET in the first place

#

but it works atleast for the stuff I've been doing

quartz kindle
#
INSERT INTO table_name (col1,col2,col3) VALUES (val1,val2,val3) ON DUPLICATE KEY UPDATE col1 = 'a', col2 = 'b';
#

if you're filling up all columns, you dont need to specify them

#

just INSERT INTO table_name VALUES (val1,val2,val3)

craggy pine
#
INSERT INTO user (userid,username,discriminator) VALUES (member.id,member.username,member.user.discriminator) ON DUPLICATE KEY UPDATE username = '${member.username}', discriminator = '${member.user.discriminator}';
#

I think would be accurate to what you sent

quartz kindle
#

yup, that should work

craggy pine
#

cool

#

OH

#

I remembered now

#

So my user table does have more than just those 3 things but in the DB will have default values of 0

#

or the unique ID

#

so they wouldn't effect the query right

quartz kindle
#

yup

craggy pine
#

awesome.

#

Ty again

#

well how would a bulk insertion work in this sense?

#
await client.database(`INSERT INTO guild SET guildid = ?, guildname = ?, membercount = ?`, [//bulk goes here], false)
#

my old query

quartz kindle
#

i was also wandering, had to look it up

#

apparently its something like this ```sql
INSERT INTO table (col1, col2, col3)
VALUES ('1','2','3'), ('4','5','6'), ('7','8','9'), ('10','11','12'), ...
ON DUPLICATE KEY UPDATE
col3 = VALUES(col3)

craggy pine
#

oh okay so the VALUES is were the nested array would go

#

[[]] = (), (), () to mysql

#

cool

#
Nested arrays are turned into grouped lists (for bulk inserts), e.g. [['a', 'b'], ['c', 'd']] turns into ('a', 'b'), ('c', 'd')
#

from stack

quartz kindle
#

also,

After MySQL 8.0.19, you can use as keyword, for example:

INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6) AS new
ON DUPLICATE KEY UPDATE c = new.c; 
craggy pine
#

I technically use mariadb but they follow for the most part the same queries

#

I'll likely use your first example

quartz kindle
#

depending on which library you're using for the client interface, they could have specific methods for doing that, for example using prepared statements

craggy pine
#

yeah, I'll do some testing and well find out 😛

craggy pine
# quartz kindle depending on which library you're using for the client interface, they could hav...

after playing around with it, I finally got it to work however it doesn't seem to be checking for duplicates. I've researched and I seem to be doing it right I believe?
https://scs.twilightgamez.net/q23tw.png

await client.database(`INSERT INTO user (userid, username, discriminator) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE username = VALUES(username), discriminator = VALUES(discriminator)`, members, false, true)

I had to do it this way due to it not liking the official SQL way.

#

notes:

members = nested array
false = not to return the data (For when I store it in a variable)
true is a bulk insertion using database.batch()
quartz kindle
#

userID needs to be at least UNIQUE

craggy pine
#

I think I understand where I screwed up

#

where I do

user (userid, username, discriminator)

putting id infront of userid should do the trick

#
await client.database(`INSERT INTO user (id, userid, username, discriminator) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE username = VALUES(username), discriminator = VALUES(discriminator)`, members, false, true)
#

because id auto populates with auto-incrament

#

so if it exsists ignore and update?

quartz kindle
#

since columns are named, their order shouldnt matter

craggy pine
#

ya i got u

#

i see the mistake. Disregard

quartz kindle
#

the userid needs to be a UNIQUE index in your table

craggy pine
quartz kindle
#

or a PRIMARY KEY

craggy pine
#

ya i got u

#

ya that was it

#

ty

gleaming bolt
#

I'm using client.users.cache.get but it just returns UserManager. Does anyone know how to resolve?
I'm using discord.js

craggy pine
#

what's the full code that uses that line?

gleaming bolt
#

just the client.users.cache.get

craggy pine
#

well that alone I don't believe gets you anything.

#

for example

client.users.cache.get(//userID here)
#

if your getting a specific user

gleaming bolt
#

I thought it was the partials, but I did it all over again, and it still didn't work.

#
module.exports = {
    name: "ready",
    callback: async (otto) => {
        try {
            otto.user.setPresence({
                activities: [{
                    name: `Go to the stars`,
                    type: 3
                }]
            });
            console.log(otto.users.cache.get("1061033912786235583"))
        } catch (error) {
            otto.logger.error(error.stack);
        }
    }
}
#

that's it

#

c.c

craggy pine
#

oh

#

I see

#
module.exports = {
    name: "ready",
    callback: async (otto) => {
        try {
            otto.user.setPresence({
                activities: [{
                    name: `Go to the stars`,
                    type: 3
                }]
            });
            let user = otto.users.cache.get("1061033912786235583")
            console.log(user.<whatever>)
        } catch (error) {
            otto.logger.error(error.stack);
        }
    }
}
gleaming bolt
craggy pine
#

Must've changed something within the API or DJS itself

#

stuff changes between updates

#

Oh you said node

#

I'm on v16.14.0 mexShrug

gleaming bolt
#

I was using version 16 a while ago and everything works normally the way I told you, then I went to v18 and it changed there onionpray

craggy pine
#

I never experience 18 so I couldn't tell ya 😛

gleaming bolt
#

thanks

#

❤️

craggy pine
#

No problemo

pearl trail
#

that is likely to never happen, maybe try updating djs to the latest version if you haven’t (?)

#

im using v18 node and it’s working as intended

ancient nova
#

how do i get the name of the parent of a command again?

#

channel*

sudden geyser
#

the parent channel's name?

wheat mesa
#

bae sometimes I wonder if you even bother checking the docs

deft wolf
#

Maybe they don't know how to use them

viral badge
#

personally i am too lazy to check myself sometimes

quartz kindle
#

it literally takes 10 seconds

#

unless my internet starts shitting on me

viral badge
#

ye

wheat mesa
#

the docs are super quick especially when you know what you're looking for

deft wolf
#

Writing the error from the console in google is also 10 seconds KEKW

quartz kindle
#

copy paste instead?

wheat mesa
#

there was no error in this case

#

he just didn't know what the props were called

#

hence why we have docs

ancient nova
deft wolf
quartz kindle
#

error, file not found
"what does this mean????"

wheat mesa
quartz kindle
#

he does it as an excuse to make his project take longer to finish

#

then he can brag "oo my project took me 5 years to make"

#

4.5 of them was waiting for help here

#

:^)

ancient nova
quartz kindle
#

my project will also take 5 years to make

#

but 4.5 of them was looking at memes online

ancient nova
#

There was a problem with your request.
Cannot read properties of null (reading 'name')

#

😐

#

the docs have lied to me

deft wolf
#

They never lie

sudden geyser
ancient nova
ancient nova
sudden geyser
#

alright then suggestion

#

spend more time learning javascript and discord.js before working on your bot

ancient nova
#

i'm good

sudden geyser
#

would be a lot more productive than coming to ask a question here every 2 hours

ancient nova
#

i will remember the whole discord.js in about a week when working on the bot

viral badge
#

personally i learnt js by doing bots but do projects that you enjoy so you get things done and learn, but try to avoid asking people too often as most of your questions are on the web 👍

ancient nova
ancient nova
viral badge
#

i had my dad to help me so i can't fully relate but yeaah, i was more like "I need to make x system" and then asked my dad for advice etc

ancient nova
#

yeah that's a good way to do it

#

you'll see a person do it once and you'll remember it for life

viral badge
#

sometimes

ancient nova
#

i just need to refresh my memory with discord.js and i'll be good to go

#

either way how do i get the parent name since that didn't work

viral badge
#

my dad mostly helped me with JS by introducing functions like JSON.parse(), ajax-request package and then i learnt more and more by making bunch of bots for people in the communities i were in

deft wolf
#

Has the channel ever been created?

quartz kindle
ancient nova
viral badge
#

💀

ancient nova
quartz kindle
#

it didnt? you got the null errror

ancient nova
#

it parented it tho

viral badge
#

await would probably secure that it happens before your message.reply

quartz kindle
ancient nova
#

the null was from the .name variable which does not exist

ancient nova
quartz kindle
#

yes

#

also, why not use the parent channel options?

#

instead of making 2 requests

viral badge
#

😉

ancient nova
#

i want to expand the command later

#

add a way to create parents instead of having to do it yourself

#

also a way to setup permissions

#

and more channel types

viscid gale
ancient nova
#

anyone has a working android 9/10/11 ROM?

lyric mountain
#

just download android studio

#

it allows u to download any version of android

sudden geyser
#

you'll be dead before the program loads

wheat mesa
craggy pine
#

Looks cool tho great window name too

wheat mesa
#

alright I need someone to suggest (typescript compatible) js libs for discord bots

#

unfortunately detritus hasn't been updated in 7 months

sharp geyser
#

The only updated one rn is djs from what I've seen

#

and I already know you hate djs

wheat mesa
sharp geyser
#

Why not

wheat mesa
#

not gonna spend 3 weeks writing JUST the gateway code

sharp geyser
#

...

#

you spent longer than that writing a language out of rust which is harder than just doing a discord lib

#

Also waffle there are an enormous amount of benefits of just going libless

sharp geyser
#

if you don't really care tho just use djs its the most stable in terms of not dying anytime soon

wheat mesa
#

that's why I don't wanna write a lib

#

it's like writing an engine

sharp geyser
wheat mesa
#

give a man a game engine and he'll write a game, teach a man how to write a game engine and he'll never write anything

sharp geyser
#

You could always use my shitty lib that I made that is not complete

#

it already has gateway code written

wheat mesa
#

honestly I might be forced to go with djs

sharp geyser
#

fuck that shit

#

i'd lose interest in game dev entirely

wheat mesa
#

at least I've seen enough shitbox code in this channel to understand the ins and outs of it lmao

sharp geyser
#

I still remember your first message

wheat mesa
#

we don't talk about that

sharp geyser
#

Honestly most of my time is helping out my dad's ex with her business idea

#

I got bored and decided to help

sharp geyser
wheat mesa
#

Damn why

sharp geyser
#

Got bored of it

#

Also the college I am now looking at going to doesn't require it so

wheat mesa
#

Precal is boring but calc is fun

#

Plus you’re gonna need it in the comp sci world

#

Especially if you want to do gamedev

sharp geyser
#

I will take precal in college

#

Right now i gotta worry about passing highschool and that one class is stressing me out

#

I am failing alot of my classes cause of how hard it is to learn anything in that class and me failing it

earnest phoenix
#

Hi

feral aspen
#

This looks a bit funny, did I do something wrong? I'm doing this via tailwindcss. https://cdn.hamoodihajjiri.com/Fax7PyVx9J

<img src="https://www.hamoodihajjiri.com/assets/images/hamoodihajjiri_banner.png" className='w-full h-40 md:layout pattern'/>
Content Delivery Network
#

I'm trying to figure out if I can just crop the image, instead.

viral badge
#

that's pretty normal for img elements, you can use object-fit property

raven drift
#

Guys

viral badge
#

Trover

raven drift
#

How can me make if someone vote to my bot the bot will give him coins

viral badge
#

use the webhook feature 🤓

raven drift
#

Ok I will try

#

Thanks for your help

boreal iron
#

Either use a container with a fixed height and set the image as background or remove the fixed height entirely and live with the fact the height will change when rescaling

#

You can still define a minimum height for example to prevent to much rezizing

violet haven
#

hi there

#

do someone know stuff about github ci/ci actions?

#

i wanted to know how to make a difference between my main branch and my dev branch in my .yml

#

because when i merge dev into main, the main.yml from the dev branch overwrites the main branch one

#

do u have any ideas how to avoid this ?

elfin tulip
#

Hello, how can I delay forEach() in discord.js?

next storm
next storm
elfin tulip
#
const names = [
  "Alberta",
  "Barry",
  "Charley",
  "Christopher",
  "Dianne",
  "Ellen",
  "Ethel",
  "James",
  "Jodee",
  "Joseph",
  "Lilia",
  "Mark",
  "Mary",
  "Merri",
  "Michael",
  "Mildred",
  "Randall",
  "Roy",
  "Thomas",
  "Venus"
];

names.forEach(name => {
    console.log(name);
});
elfin tulip
solemn latch
#

I'd use an interval for that

next storm
#
const wait = require('wait');
names.forEach(async(name) => {
  await wait(1000)
  console.log(name);
})```
elfin tulip
next storm
#

nope

elfin tulip
#

I need them logged separately

radiant kraken
#

use a Promise with a setTimeout

solemn latch
#

So many good solutions other than that. Ye

#

I'd just use an interval and log the first item in the array and then remove that item.

#

And delete the interval when it's empty

radiant kraken
#

JavaScript developers love to use a third-party package for the simplest of things purr_lul_haha

viral badge
#

i'm an exception, but I agree, but that applies to any language devs that I know 💀

elfin tulip
#
const names = [
  "Alberta",
  "Barry",
  "Charley",
  "Christopher",
  "Dianne",
  "Ellen",
  "Ethel",
  "James",
  "Jodee",
  "Joseph",
  "Lilia",
  "Mark",
  "Mary",
  "Merri",
  "Michael",
  "Mildred",
  "Randall",
  "Roy",
  "Thomas",
  "Venus"
];

const awaitTimeout = delay =>
  new Promise(resolve => setTimeout(resolve, delay));

names.forEach(name => {
  awaitTimeout(3000).then(() => console.log(name));
})

you mean like this?

radiant kraken
#

though i prefer awaiting the awaitTimeout and making the forEach callback an async function

elfin tulip
deft wolf
#

U can use for loop if u want them separately

#

Instead of forEach

radiant kraken
#

this

lyric mountain
#

forEach is very rarely preferred over the normal for-each

#

plus it also adds some overhead

surreal sage
#

Unrelated,
I'm trying to extract a .tar.gz using 7zip CMD, it throws me "Cannot open the file as archive"
But when I extract the same .tar.gz using 7zip GUI, it works fine

lament rock
#

does it take relative paths

surreal sage
#

hmmm good one

#

7z.exe x VulkanInstall\x.tar.gz is what I'm using

lament rock
#

try absolute paths

spark flint
#

Does anyone here have experience with Grafana? I'm getting Data is missing a number field on a Time Series graph even though the data is there

surreal sage
#

How do I get the current file path in batch hmm

spark flint
surreal sage
#

And no I'm not doing shenanigans
I'm making a vulkan installer for star citizen

spark flint
lament rock
surreal sage
#

aw

#
SET path=%~dp0
VulkanInstall\7z.exe x "%path:~0,-1%VulkanInstall\dxvk.tar.gz" -so | VulkanInstall\7z.exe x -aoa -si -ttar -o"VulkanInstall\dxvk"```
#

h

neon leaf
#

does anyone know why this code ends up as on the screenshot? the text is supposed to be on the left

surreal sage
lament rock
#

is the download awaited

surreal sage
#

How do I

lament rock
#

idk

surreal sage
#

But how'd I use it with what I've got rn

#

one sec

#

No change @lament rock

sudden geyser