#replaceAll
33 messages · Page 1 of 1 (latest)
Hi, you should also post what you wanna do in the description of this post so other helpers can help cuz as I stated, I am not a regex expert, just know basic regex so someone may have a better regex for you
okay
but, what you gave, worked
so, how would i make this work when sending?
Now, you jus extract the fields from the string (title, description, etc) and input it into an embed builder. Although, I would've recommended creating a modal so the user can input the fields individually and you won't have to extract from a single string. To do this tho, it looks like we're gonna have to match content between {} but that can cause errors if we use regex
Have you found a way on how you'd extract the fields from the string or do we need to do that?
no i haven't found a way, we'd have to do that
Alright well, this part is gonna be the hardest
if that's the case, then i'd have to check for a lot to just send the embed. if there's multiple fields, if there's a author name, icon, and url (same with footer), image, thumbnail, etc...
Well, you can use regex yet again but I can't think of a regex for this without mistakenly matching the wrong things
you don't think there is another way to change for this?
Yeahh, you have to match each field individually. You can try sumn like
const str = "{embed}$v{title: title here}$v{field: field title && field value}$v{field: title && value}";
const title = str.match(/\{title: .[^\}]*/);
//returns ["{title: title here"]
//and for fields
const fields = str.match(/\{field: .[^\}]*/g);
//returns ["{field: field title && field value", "{field: title && value"]
But I'm not sure if it'll cause problems, I'm writing this off the top right now
So title is supposed to match something starting with {title: and continue to match until the nearest }
Fields is the same, difference is it matches everything passing the condition
okay
and how would i do this for sending an embed?
and im pretty sure, itll be harder to get author icon & url same with footer because this is how you set an icon and url with my parser
{embed}$v{author: <text> && <icon url> && url}
When you match, run .split("&&") on the returned string
ok
The return value should be something like {title: <the content here> and since you're doing it individually, jus manually slice off {title:
confused
ok let's test something
how would we send the embed like in the channel 😭
this is confusing to me because ive never tried this
You mean .send({ embeds: [embed] })?
basically, yes
Also, I updated the message with the return values, I can't give you anymore code, I gave you that because it seemed fun to me so I wanted to try it lol but as I said, the rest doesn't really take much effort. When you get the return array for the title, if the array has an element in it, jus do array[0] to get the first element or if there's more than one then tell the user "You inputted 2 titles" or something yk, to get the title jus slice off the {title: part using .slice()
And use that logic for the rest
As for things that take two values like fields and stuff, do everything I jus said but with the return string, do .split("&&") and the first element in the array, if there is, would be the title and the second element would be the value, again, if there is
ok
As for the errors like if the user inputted a title and not a value, you should be able to do those for yourself, not rlly difficult. Try something and lemme see what you got and if you test it and you got an error, come tell me and I'll help
Ping me if you want to, I have like 3k pings so now pings dont rlly bother me but I'll see the 1 under the djs server if I'm online