#development
1 messages · Page 290 of 1
Important says the annoying blank name 
How I can setup vote log
lol I meant it's not a sentence.
btw @unreal mist I have succesfuly got host and database
And I can earn my renewal credit less than a hour.
like I got price of database/backup and cpu
Nice
Bold assumption
Presuming you follow their guidelines, you should be good
No
lemme guess, it's a multipurpose bot and the help has over a hundred commands
been there, done that
Lmao
🛡️ Vireon Security Bot Commands
Advanced server protection and administration system
🔧 Basic Commands
!ping - Check bot latency and status
!info - Bot information and statistics
!settings - View server security settings
!set-log-channel #channel / !setlog #channel - Set logging channel
!logging-status - View logging configuration
📝 Message Logging
!set-log-channel - Set channel for all logs
!toggle-message-logs - Track edited/deleted messages
!toggle-member-logs - Track joins/leaves
!logging-status - View logging configuration
👮 Moderation Commands
!kick @user [reason] - Kick a user
!ban @user [reason] - Ban a user
!unban <user_id> [reason] - Unban a user
!mute @user [minutes] [reason] - Mute a user
!unmute @user [reason] - Unmute a user
!warn @user [reason] - Warn a user
!view-warnings [@user] - View warnings for user or server
!delete-warning <id> - Remove a warning by ID
!clear [amount] [#channel] - Delete messages (no amount = all messages)
💾 Backup System
!backup-server - Create complete server backup
!list-backups - View all available backups
!restore-backup <id> - Restore a backup by ID
✅ Verification System
!setup-verification - Setup user verification
!verify - Start verification process
!verification-stats - View verification stats
!reactivate-verification - Reactivate verification after restart
🛡️ Security & Protection
!help security - Security and lockdown commands
!help anti-spam - Anti-spam and mass join protection
All commands require admin permissions | Use !help <category> for detailed help
lol
thats why
thatll get rejected-
no commands should require admin privs, its one of the things they can/do reject, so stating they all require admin when technically none do is a big no :P. some should require manage guild perms, some should require others depending on their use but not admin
If any command requires/requests the Administrator permissions being given to the bot itself it will be declined
If the user requires the Administrator permission to run said commands. That is fine
isn't the [clear] command considered api abuse?
Yea deleting all messages might be api abuse xD and also cause ratelimits
I'm impressed prefix commands are still being made at this point. If it supports both slash and prefix great, but don't you need slash to get verified or am I miss remembering.
delete and recreate channel :^)
what if the channel have 1000000 messages and user want to delete 999999 messages only
get message #1, delete, create, repost message #1
:^)
LMAO
Hi, does any admin have the Shine Bot owner's discord? https://top.gg/bot/622556752558161932/vote
Nope but you do need specific approval for message content.
yeah, but you can't use prefixed command as the reason for message content request
The support server or the owners account
Is AI Studio down or despite token count not max I'm getting errors?
Yea usually internal error means its down
glassy lmao
edited-that
May I ask, What programming language have you used?
yep
looks sick, nicely done 👏
thank you ❤️
"html", using astro
Thanks nice derek.
Additionally, I suggest encrypting code, as login information may be visible unless encrypted or stored in a database.
A password must be hashed, not encrypted
For the rest, unless it's sensitive, it doesn't matter
hash password on client so the raw password never even gets sent over the wire 🧠
pointless
not really, if the browser supports it, theres no reason not to do it
why would that even be needed
lmfao
also that would imply you give the salt with the request in some way as well
what if user send raw password through api directly
a regular unsalted hash is fine for the browser side
and before sending the hashed password for login, you get the salt from the backend
you wouldnt send the hash as text
a 32 byte json array of numbers

and you're gonna recomend md5 i suppose
md5 isnt 32 bytes sir
you do know im implying another hash iteration on the backend yes?
produces a 32 bytes hex string, yes
im not talking about a string
yeah then that confirms my initial message: pointless
if you don't trust sending a raw password over tls, as it's done, better not use the internet at all
it's always unencrypted
i assume you hash it first on web and convert it to bytes, but then there's always a way to reverse engineer the hashing and converting to byte on web, and "someone" can just convert a string to bytes, bypassing hashing..?
that would be their problem at the end of the day
you're just giving away your hashing algo in the client
the client and backend are made by the same dev
how would the server handle that? like just accept it or check again if it's actually a hash?
the dev knows the algo, considering there's no salt - rainbow tables here i come
it doesnt have to check
it only checks if its a 32 byte array
also double hashing poses security risks
its perfectly fine if you use different algorithms
bitwarden does this btw
they encrypt and hash on the client
then send to server
for login and storing passwords
its literally just more secure for the end user, knowing that the server never knows their password
interesting, so the server just do hash the hash from client?
for example, yes
but at the end of the day the point is that the client never sends the real password
its not widely used because it requires modern browsers and many people have stopped using the same password for all sites (because of password managers like bitwarden)
i'd guess this is a hash too¿ (google login)
could be
wouldnt be the end of the world to use a hash when supported, and raw password if not
yeah right xD i still see most of websites still send raw password yeah, so i thought it's already perfectly fine
doubt
yo lmao
damn
ohh right, it's at the first
i always wanted to make my requests to server confusing like that, but i'm so dumb that i get confused too
oh yes that would also work
I meant if its not popular website
@pearl trailShould I add an appeal in my banning system?
would also work
that's how it does
yes I know.
But sometimes when I get bored, I make local html.
like not uploading it and encrypting code for fun.
"encrypting" html is useless
But that's because it's local if it's like on public, he should hash. Decoding HTML is easy.
Yes.
you don't seem to get it
I get it
you mix hashing, encryption and encoding....
you use them in the same contexts where they cannot
xD popularity can't be one of the factor, it's the devs that pick the pill. big company like discord still does raw requests, amazon too
I thought its like not on public
nope I meant public sorry
@stark kestrelI understand thanks
BRUH
discord is on $1 budget
honestly discord is the worst example
lol
it wasn't until recently that they secured the tokens in local storage in some way
i think this can stand without any further comment
wdym?
nothing
ok??
Gotta wait man unfortunately
We are working on ways to speed up the progress
thanks bud
my soul agree.
You need to listen to these messages using your bot, save the message creation timestamp + 12h in the database and send the message when the current timestamp is greater than the saved one
Yes.
is it possible to host images my bot will need on the machine the bot runs on or do I need to host the images online?
you can make your bot send them
right, my question is , can I store the images on the local machine or do they need to be hosted online somewhere?
I am making a fantasy game and there will be potentially 2000 or more images and icons
Why i get Unauthorized
Even tho the token is correct?
is this on startup?
It depends on how you plan to use them. Your bot might send them directly from your hard drive as an attachment, or it might just send a link to a photo that's available to everyone
I will mainly use them in embeds as thumbnails
In that case, it's up to you I guess (I think you can use attachments as links in thumbnail field). Sending the attachment will probably take longer than the link itself. If it's the same image over and over, sending it via URL makes sense
You can make your own "image hosting" on the same machine you are hosting your bot (assuming you are using a VPS)
nah, I host my bot on a raspberri pi
I don't see why you can't host the images locally
my research leads me to believe discord doesnt support local paths for images
You can upload a photo as an attachment and refer to it in the field where you would normally put a link
But there is also discord upload limit so it's not ideal
ok, I may try this approach
Example from docs
my bot uses V2 components , which there are no Field
Then you are not using embeds
I call embed but it is actually called container in V2
It's gonna work the same way I guess
no i am trying to use the api
how are you calling the api?
curl --request POST \
--url https://top.gg/api/bots/916775039263715349/stats \
--header 'Authorization: eyJhbGciOiJIUzI1NiIs~~~~~' \
--header 'Content-Type: application/json' \
--data '{
"server_count": 164444
}'
these diff sizes are getting out of hand https://github.com/pterodactyl-rs/panel/commit/03acb8923823a70bc9986e9858379d9f6f7f189d
is the token your top.gg token or the bot token?
just use imgur 
I use imgur but this bot I am in the process of making will have 2000 or more icons and images
bot token
i think
how to find top.gg token
oh yeah if it's that many, then ig self hosting it is
or maybe try cloudflare r2?
i used this one
might get better help in #topgg-api
💀 💀 
yeah 100%, some sort of object storage. cloudflare r2 or backblaze b2 will most likely be free assuming the pictures aren't huge
yeah, iirc r2 is free for 5 or 10gb i forgot
im also interested, is there a hidden fee or is it totally free
10gb free
and like 10mil reads + 1mil writes
(u will never reach 10mil reads due to caching)
oh that’s a really good deal
yes, and decently priced for big storage too
I pay ~22€/month for 1.2tb of data
havent found anything truly better yet
Wasabi has a decent pricing from what I remember
Something like $6 or $8 per TB per month
(zero egress fees)
but it costs lower when not storing that much yes? their calculator site have minimum 100tb to calculate 💀
?
they have a base price iirc
huh
ive seen that, i was just asking if i store like only 50gb ish, i wont pay that much right?
well i dont think ill store that much
That's what pay as you go is, yes
alright than, thank you
Actually no
For customers using the Wasabi Pay as You Go pricing model, Wasabi has a minimum monthly charge associated with 1 TB of active storage
That funny * says otherwise
If you store less than 1 TB of active storage in your account, you will still be charged for 1 TB of storage based on the pricing associated with the storage region you are using.
Predictably priced Wasabi is 80% less than the hyperscalers with no fees for egress or API requests.
This post explains our recent effort to improve JSON.stringify performance
you guys have webhook token for verification?
@solemn latch
ahhhhh yes application security engineer reveals their client’s env
man this threads is full of rage baits, engagement posts, sharing their child’s location
That's what environment variables are for lmao
ikr, was rethinking my career when i read that post for the first time
how to use topgg api
are you surprised
welcome to any app which rewards engagement with $$$
could i get some help figuring out how to get my vote connected to a discord command?
thanks!
Okay I re-applied... Not having my bot in a Host is a living hell
you're selfhosting it?
You maintaining a bot being self hosted will be more of a living hell once you get people using it. Get a host.
self hosting isn’t bad as long as you’re not doing it on your daily driver computer. Raspberry pi selfhosting is quite easy to do and works nicely for small apps like a bot
and need to be in developed country to get lower latency to services 
sa
It's been a week and 1 day.
@sharp yewI can offer host
use sillydev
they have affordable free host.
and their way of earning coins is easy.
Free host 😔
free cant be really free
it is
One user cannot realistically pay for the cost of such a server just by watching ads
Do they give you an non shared IP address?
Just checked, no they don't. You have to pay 40£ yearly to have dedicated IP which is very important for discord bot unless you want to be cloudflare banned
Wdym. You mean some type of ratelimit or something? Im using a free hosting and Cloudflare for hosting and right now there's no issues whatsoever
Yet, i kind of agree that free hosting is not one of the brightest ideas if you already have traffic. At my case i dont so i guess im fine for now
me too.
@deft wolfnot bad for free hosting.
also you can add anti-ddos
like they are there.
Also, you don't need to buy a host until your bot is famous or used alot.
So that's normal if you don't want to use anti-DDoS.
why does tailwind randomly stop working wtf
and it randomly only affects very specific classes, like what
for example, max-w-[90vw] randomly disappeared, it doesnt show up in the rendered css
but if i change it to something else like w-[90vw] or max-w-screen it works, but as soon as i change it back, it disappears again
already restarted vscode, dev server, rebuilt, etc...
👀 making a second project from (Dev Space/CloudFrost) CloudFrost Portal will be a support based service with tickets, reports, QA base, articles and Discord tickets integration.
Right image is from Halo PSA which i'm taking inspiration from.
"Cloudflare ban" is a special rate limit that Discord imposes on an entire IP address when too many "bad requests" come from it. This ban can last several hours and is applied to the entire IP address, not to a single bot. This means that if you share an IP address with dozens of other bots that regularly send bad requests, they can cause cloudflare ban to the IP address you share and you can't do anything about it
I dont worry about that
You don't worry that your bot won't be able to use the Discord API?
lmao
guess people will not care about that as long they can get it for free
don't care if at one time that happens to their bot because it is free
I would be very upset by how helpless you are in such a situation. If someone had warned me that something like this could happen, I would have thought twice but they know that many people would not have decided to choose their hosting
Since I got protection.
Its not a problem. My bot will be able to use it.
Actually maybe understand things better next time.
XD?
I know you are trolling but just keep in mind if you are gonna get banned here you wont be able to add your bot to top.gg
Friendly reminder
lol i think bro doesn't know what you're talking about. thinking cloudflare ban can be prevented using "anti-DDOS" 😂
🗿 🗿 🗿
me when people don't understand what they're talking about but tell others to be more informed
what hosting provider u reccomend?
-# asking for a friend ofcours 😄
None, choose the one that suits you
lol okay
for cheap ones, you can try hetzner
I've tried some time a free bot hosting that got ratelimited each day always, and i agree that sucks
but right now im using a free hosting who doesn't has this problem so im fine right now
also, have some of you guys experience using webhooks with node.js without the topgg official module? Is it really needed? I mean, there's no problem for using it, but if i'm gonna just use it for that...
Seems to be more hard than it seems, at the request object i can't find any data related to topgg except the pass at headers
No, i mean i can't fetch and find the data object from top.gg, i can find the pass but i cant find the req.body, doesn't resolves anything
Now that i think i didnt tried the query lol
i'll check rq
how do you do it?
Body returns undefined and that is weird
since query at least provides an empty obj
you use express?
thanks
Yup
do you have app.use(express.json()); ?
i think i can add the middle ware on that specific route
give me a sec
in general, i surely don't have it
yeah then you need that to parse application/json
alr i changed the type to application/json with express.raw, let's see
oh i didnt define express lmao (at this module)
ok it resolves
it's a buffer tho, weird
Ok perfect now it resolves tysm
now i need to fix the retry thing, res.status is not enough
-# Done...
SOME HELPFUL LINKS-
Dashboard
Invite link (recommended)
Invite link (admin)
Bot support server
Discord bot list
Trello
Commands guide
Donate
HELP COMMANDS -
Rate is the number of messages you can post in each time frame. Per is the timeframe. If you only supply one value, it sets that value as the per. (1/x)
Shows the server's current automod settings
If used without arguments, it shows the current settings. Otherwise it's used to set up the actual ratelimiting part of linkspam
Shows Invitespam settings for this server
Adds one or more words to be censored, use "double quotes" to block things with spaces
Deletes all files posted that are not one of the following formats: png, jpg, jpeg, webm, mp4, gif, bmp, pdf, txt, tif, svg, webp, mp3, flac, wav, mov, ogg
umm
so
worked?
@strong shoalshowing cf-connection ip isnt good idea
So i got pissed off with the roblox case vs shlep. So i made a tool on it. Tell me how sucky this gui is. (Some is sesored out so it stays SFW and clean) all tabs work im just sending the one tho since its all the same design
so
I might rate 7/10
But, I appreciate that behavior.
@warped glacier@warped glacier
y 2 ping
sorry
i honestly hate the design but suck at css and not good at assest making. So im debating having gpt add some designs to it
All g. I dont mindthe ping just wondered why 2
oh.
Its actually good.
I do need to reorder that forum a little.
maybe adding upload photos/videos
Yes, but not a lot.
I might. Im trying to not make a massive storage drive since im paying out of pocket for the server.
I do have 10gb. But i run a SQL DB with a ton of data in it I could upgrade to 100gb
I can get you database
As much as CF is good. its always a pain to set up
but idk if sillydev is good host
The host is technically free. Im paying bc i needed static storage
If you want the database, tell me
So im really just paying for storage
yes thats good point.
1TB!
Try hiding api
Users cant see the api. Thats for me
Auto scan chatlogs to see if its || pred || activities
This is what users see honestly
All those other tabs are really for me and my team to take and report
Dm me we will talk
O K
This is... quite an interesting arrangement of text boxes
It was on an external hosting, why is it not specifically tho?
cf connection ip is your ip
But if it was on a server
is there any problem?
not really, i didn't really see detailed values of headers you sent. but in your case, the CF-Connecting-IP must be topgg's IP, and since it's intended to be public, then it's 100% no problem
the value of CF-Connecting-IP is the requester's IP. if you send request to the endpoint through your home network, it'll be your ip
yeah... that's what docs said, i deleted the message as fast as possible tho just in case
xD
i mean if they talk about "IP" and "not a good idea" i turn on all the alerts 😭
mkay, thanks
XD
It's compatible iirc yeah
most of the providers (try to) make it compatible
ahh i see, thank you!!
the point is for R2 to be S3 compatible — I don't even know if R2 has their own libraries
I personally use bun.s3 for r2
ah, yeah i thought r2 have their own library like minio-go
so by “s3 compatible” storages, i assume theoretically we can use aws’ s3 sdk right?
just some functionality wont work
well in his case, the ip is topgg’s ip
top.gg publicly displays that IP in their docs btw
because its the webhook out IP address
for vote webhooks, it's nothing special
yep. It was just a joke.
I found that when I say top.gg
I discovere a new bug in my dis
kids out there still believe you can hack someone with only their ip address :^)
You did not ask if I know further information.
I did not mention that you can "DDoS" not hacking with IP.
You also don't know my age, and telling that I'm a kid and reading without attention, even if I am a kid, at least I can read and understand what people type.
lmao i was not even talking to you nor about you
i was responding to people knowing topgg's ip address and CF showing your ip address and etc
R2 recommends to use the S3 SDK — you only have to put in the url and use auto region
oke, i just copy my s3 codes for my r2 
Hello everyone,
I made a Discord bot (Node.js + Discord.js) that I maintained from 2017 to 2021, and then I abandoned it when I lost interest in the platform.
I'm considering resuming its development, and I would like to know, in general terms, how much the situation has changed over these years.
I've heard that Discord has implemented many restrictions on bots since then. Is it still worth developing Discord bots in 2025?
Not much restrictions, just intents if that's what you're talking about
How much the situation has changed in over these years
Not much, few new features and that's about it. The biggest is probably components v2
Discord still doesn't listen that much to the community and focus more on those SKUs and the social/app SDK
Slash commands were added in what year? 2022?
Wasn't that 2020/2021?
Yea, just checked on ddevs. It was late 2020
March 24 2021
4 years already 😔
and still missing a date option type
Smh, I always consider slash commands to be a relatively new thing because of how many people I see still using prefix commands
definitely
the only big use i've see of them are for user installed apps to spam, advertise or scam in other servers
Oh boy you're gonna have a reeeeal fun time /s
I know about slash commands, although I never implemented them on my bot since that was toward the end of its development, when I didn't have much interest anymore. I was going to ask if they are the standard these days, although from this conversation I gather that they never became too popular.
They never became popular indeed, the problem is that Discord gives the message content intent only for valid use cases, using prefix commands is not one
So you essentially can't read the content of messages unless you have it (after verification)
Their way of trying to make it more popular and used 🤷♂️
We also have components embeds v2
gives more layout and component options for embedding stuff
Hahahaha, so they essentially need to screw the alternative to leave you with no other option. Sounds like the Discord I knew.
How do prefix command bots keep working if they don't have access to the message content?
Oh, that actually sounds interesting.
How do prefix command bots keep working if they don't have access to the message content?
They dont you either get lucky with message content features or you're forced to use slash commands essentially 🙂
I see. And besides the intents, is there any other restriction or complication I should be wary of?
you can still use message-based commands in two situations: if your bot is mentioned in the message (or replied to), and in DMs with your bot
in those cases, the message content is always present regardless of intent
stay away from discord.js :^)
Hahahahaha, why?
What about automoderation bots that detect and filter messages? How is that done now?
some still exist since they were already established, but for newcomers its hard because its a feature that competes with discord's own moderation features so they dont like supporting it
so they are not likely to approve the intent for such use case
mostly joking but if you can its much preferable to work with the discord api directly
Now that's a problem, because my bot was mainly a moderation bot with a message filtering and logging system, so I guess it has been gutted.
I.cache dont know.cache what tim.cache is talking.cache about.cache
you can still attempt to get permission to use message intent
like, you just need a valid reason, in your case it'd be server content moderation
Oh, yeah, that was indeed an issue, hahahaha.
Got it.
that said, they'll be extra wary about how you handle those messages
since content moderation usually involves saving them to a database, which involves dealing with gpr regulations since they're considered sensitive
Well, my bot never saved messages into a database. It only compared messages against lists of keywords and performed actions in case of a match. The logs were output to Discord channels of the moderators' choice. I don't think I should have problems in that scenario, should I?
You just won't get the intent for that
Probably because it is already implemented in the built-in automod?
Hahahaha, yeah, I can imagine that this would be the most likely outcome.
My bot's automoderation features were far more powerful and flexible than Discord's automoderation back in the day. I would have to see how much the latter has improved, but I imagine there are still valid reasons to use a bot for that rather than the built-in feature.
that definitely
it's just discord see it as a sort of competitor, so you'll get a no from them
I do see that as a possibility, so what I gather is that I must add support for slash commands and make the features that require message content intent optional in case the permission is not granted.
I intend to open-source my bot and make it self-hostable, so even if I get the permission, other users might not.
well, you dont need discords permission for the intent under 100 servers
so most self-host users would prob be fine
Ohh, so that's still a thing. That's marvelous then.
altho now you can request intents before reaching 75 servers
I could not
a month or two ago
I think that intent would get approved. I know a lot of bots that use similar functionality already
You can verify without server limit but you still need 75 servers for intents request afaik
oh, sorry i got it mixed up
Oh hu that's interesting one of my bots has been automatically verified when i've past 75 servers it never used to do that
soon we'll have tiered caches
client.channels.cache.cache_for_cache_1.second_cache.third_but_better_cache.the_final_cache.get
Oh bot logs is now hidden 🙃
lmao
Sounds like a good name that Discord/electron would use 
webpackChunkdiscord_app.push([["wp_isdev_patch"]
Hi
<@&817055174613794826>
navigator.connection does not exists on Typescript navigator type?
the typings?
Is there any information on when webhooks will become available for servers?
Top.gg doesn't usually provide ETAs for bug fixes or new features, but maybe you'll learn something from this thread
#1394807083831918603
Thank you :) Sadly no ETA indeed but looks like it is planned at least
your internet
https://discordstatus.com/
Welcome to Discord's home for real-time and historical data on system performance.
Worst branding change ever lmao they butchered the website, font, design, looks and my EYES ARE BLEEDING
effortless container management, but now the effort is at navigating and looking at that website
Oh dont worry they are butchering the portainer manager too
They replaced all the blue buttons with white, the sidebar is now greyscaled, annoying white banner notifications, purple pixels
Annoyingly blinding light blue tags
they also changed this lol, previously, my long branding works (there's no flex), now it's like this (flexed)
🪦
wao interesting, didn't know sentry can be self hosted
does sentry really take that much ram?
💀
I got 512gb left but on a dsl internet connection 🔥
so homelab server?
ye
i see i see
they're loose?
theres a motherboard standoff under there
and if it touches the mobo
it shorts out the dimm slot
💀 sounds dangerous
which causes the ram to not be detected
how much average power does it consume?
interesting, thank you
definitely wouldnt recommend this setup for normal homelabs though
insanely bad idle power usage
my old i3 4th gen was 3w idle
probably gonna use dell pc for a server xD that surely won't consume that much
yea, just turn on energy saving or whatever in bios

and make sure you have dust filters if you put it near the floor 🙏
otherwise u get this
You can use this which is a much more ram friendly 🙂
https://glitchtip.com/
Hi;D
Sus
👀
ooohhhh thank you for the reference, might try it
looks sick
I agree, it looks awesome!
now thats a creative project idea
Lol
a
B
@queen needle @pearl trail roblox has in beta stylesheets, its like CSS but for roblox
Will make making UI so much easier
🙏
Going to utilize it for my ui library
Oh that's awesome
Surely reinventing CSS isn't going to be problematic at all
Well its not really reinventing as their needs differ than the web
I already hate normal CSS, can't imagine touching a vendor specific version of it
Why do you hate css
there's 10 thousand ways to do something, and none of them feel "correct"
https://rsml.style like I said its like css but not exact as their needs differ
a declarative styling language for the Roblox ecosystem.
syntax similar
functionality not exactly 1:1
not to mention sometimes CSS styles just... visibly don't do anything, because you've not used them in the correct context for them to do something
yeah looks pretty much like CSS
just a different flavor
Looks like C# and SCSS had a child
man I'm prepping for an OA for this company and I'm nervous af, my java skills are a bit rusty
ahaha
It has macro support to
which is neat
Gotta get practicing
yeeeeep
I'd have to move for it but it wouldd be crazy to pass up on if I actually got an offer
Hey gotta do waht you gotta do
Have you talked to the wife about it, thats always important
Yeah talked to her about it, we'd be doing the long distance thing for a couple years
If she's supportive of it, no reason not to do it
I'd be about 3.5 hours away in austin instead of dallas, so not too bad for like coming up for a weekend a few times a month
Oh yeah no that's lightwork
I thought you were talkin different state type of distance
yeah
but hopefully I get past this round
surprised I made it through the automated screening
@radiant kraken see I hate rust errors in the IDE sometimes
I thought this was talking about the return type of the match statement
but no its talking about the main function
adding -> Result<(), Box<dyn std::error::Error>> fixed it
Thankfully it had the change return type thing there
otherwise I never would of known
@solemn latch
ty
Can you not run npm with rust?
let status = Cmd::new("npm").args(["init", "roblox-ts", "game"]).status()?;
if !status.success() {
anyhow::bail!("NPM exited with status code: {}", status);
}
Error: program not found
error: process didn't exit successfully: `target\debug\lumina-cli.exe init` (exit code: 1)
💀
it may not be in your global system PATH
Even absolute path says it cant be found
how are you running the rust app
cargo run -- init
where is Cmd from
what absolute path did you use
C:\\Program Files\\nodejs\\npm.exe
hmm
Oh wait it didn't save, but it still gives an error
Using this
Error: The system cannot find the file specified. (os error 2)
Oh interesting
it needs to be .cmd and it works
but that's annoying
What if they aren't using the tool on windows or they have npm installed somewhere else
did u not test if the path actually exists
who doesnt have it enabled smh
the file icon looked like a .exe icon
Anyway I have to solve this because they could
A. not have npm installed in the default location
B. not be using windows
yea the issue is simple to solve now
the default resolver doesnt do .cmd
if you want to have fun you can write your own PATH resolver
then it works cross platform
std::env::var("PATH")
I hate lifetimes
One of the reasons I stopped using rust
I figured I could just use 'static but I guess not
53 | step_interactive(&main_pb, format!("{} {}Initializing roblox-ts...", style("[1/4]").bold().dim(), CLIP).as_str(), || init_project())?;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--------- - temporary value is freed at the end of this statement
| |
| creates a temporary value which is freed while still in use
| argument requires that borrow lasts for `'static`
it's pointing to the format!() which is the second argument of step_interactive which is a &'static str
show the function
temporary value is freed while still in use
fn step_interactive<F, T>(pb: &ProgressBar, label: &'static str, work: F) -> Result<T>
where
F: FnOnce() -> Result<T>,
{
pb.set_message(label);
pb.suspend(|| work())
}
show set_message
ahhhh
that makes more sense
fn step_interactive<F, T>(pb: &ProgressBar, label: &str, work: F) -> Result<T>
where
F: FnOnce() -> Result<T>,
{
pb.set_message(label.to_string());
pb.suspend(|| work())
}
Question at that point is not better to just use String for label?
you could, yes
https://pastes.dev/DbsB6jqSZ3ym rate my rust code for my starter cli tool
I seem to be missing some important stuff for the nightly toolchain 💀
Fairly certain there is supposed to be a lib folder there
and a lot more
where npm
he's on windows
ah oki
hello
How are you
just woke up hahahah
Oh neat
looks pretty good! great job on it aaron!

for formatting identifiers, you could just add them directly, like format!("{ERROR} {label} failed")
Oh yeah, ahaha
I am honestly not too sure what ima do with this tool, right now it's basic but I am trying to figure out what all I need and how to do it
your understanding of rust generics is commendable, so proud of you!
also you could've just return out directly here, instead of doing it manually in both match arms
I could of returned out directly?
I yeah I guess I can
since the return type of the function is Result<T> I can just return the result and increment the progress bar
Also these praises are too high
I barely understand what I wrote myself, I just know it works.
FnOnce is something new that I barely understand
My basic understanding is its a type of trait that is defined to be only called once and none thereafter, at least that's what I assume from the name
you're so real
meant this one
lmfao
Now that I think about it
this tool is useless rn
the init command is not needed with how it's currently implemented
I should just make a template on github with my ui lib implemented in it and the init function will clone it into the directory

I wasted an hour basically
don't ever hesitate to ask

Thanks!
Currently not sure what to do next
I kind of have to make a template to even test this 
problem is the actual UI lib isn't even in a useable state aha
😭
templating 🔥 🔥
you're the best, takiyo! 
According to you guys, what permission should a user (not bot) have to create a giveaway?
I think the server administration should decide this. For some it will be just the owner, for others it will be someone with admin permissions, and for others any "helper"
What about default permissions? For example, a bot like Giveaway Boat requires the user to have admin permissions or a giveaway role set in the server, while Falcon says the user needs the Manage Guild permission to create a giveaway. So isn’t Manage Guild the right permission for a user to have to create a giveaway?
i personally use manage guild on my bot
Just because one bot requires one permission doesn't mean yours has to work the same way. Of course, it can but then you wouldn't be asking this question. Just copy the other bot's permission and that's it
Same here, but the reviewer said why the user needs to have the Manage Guild permission to create a giveaway.
@deft wolf
it depends what your feature does
Valid question tbh
if it's just a giveaway feature where people react and your bot sends a message after some time with a randomly selected user amongst the reactions, your bot just needs the send message permission
it's the user's permission that was asked, not bot
Exactly
well then the reviewer likely misread
^
you can just DM them
honestly manage guild to configure, and allowing the admins to select a role that the user should have would be the ideal way of doing it
Yup, I’m waiting for the reviewer’s response; I just messaged here to confirm
that way servers who want to can have some sort of a giveaway role and such
Yeah exactly
yeah just wait, should be all good
(especially if the error message is ambiguous)
they can open a ticket through #staff-tickets 
@earnest phoenix ^
I get free actions? I use free actions
personal: https://github.com/settings/billing/usage
org: i trust u will find it
🙏🙏
if I remove the top left fan, the 10gbit main uplink dies
if I remove the middle fan, ipmi dies
If I remove the top right fan, the drives are slower than hdds
what the feck
based on the existing setup, i imagine lighting a candle would either blow a fuse or auto-install internet explorer
Can someone help me in Python? Is it possible to post Top.gg reviews directly to any channel?
No, because bot reviews are not part of the official API nor is there a webhook for that
At least for now, maybe something will change with the changes related to webhooks
MY BOT GOT APPROVED
congrats
you can do it unofficially by scraping your bot's page, however you have two potential roadblocks:
a) cloudflare, which can still be kind of circumvented
b) ethicality. you'd have to consult yourself with top.gg's terms of service to see whether they disallow scraping of such data
Oh okay thanx
@queen needle @pearl trail sorry if my pings are bothering you guys, just know previously you guys have said you wanted updates on what I do with my UI / roblox stuff.
Update to my UI library:
- I now make use of roblox's beta feature "StyleSheets", it is a way of generating styles for your UI allowing you to share those styles amongst different UI components instead of redefining them. I make use of a project called RSML that adds a css like syntax to this that then builds down into a "StyleSheet"
- My UI library is now no longer bundling components with it, instead it will adopt a shadcn approach allowing users to take what they need without any bloat from unused components.
- There will exist base.light.rsml and base.dark.rsml files that user's can edit at free will whenever they run
lumina init, as well as each component will have their rsml file copied in as well for a user to edit. - Since roblox stylesheets have you derive from other stylesheets to use their tokens, the theme sheets are derived dynamically based on the user theme, for example if they are on dark mode
button.rsml(the button component's rsml file) will derive frombase.dark.rsmland lightbase.light.rsml
wtf is redis doing 
redising
use crate::Asset;
use indicatif::MultiProgress;
use log::info;
use serde::{Deserialize, Serialize};
use thiserror::Error;
#[derive(Error, Debug)]
pub enum InitError {
#[error("Could not find Config Json file")]
ConfigJson,
#[error(transparent)]
SerdeJson(#[from] serde_json::Error),
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
struct Config {
#[serde()]
base_dir: String,
components_dir: String,
lib_dir: String,
registry: String,
templates: String,
}
pub fn init_command(mp: &MultiProgress) -> Result<(), InitError> {
let config_file = Asset::get("lumina.config.json").ok_or_else(|| InitError::ConfigJson)?;
let config = serde_json::from_slice::<Config>(config_file.data.as_ref())?;
let base_dir = config.base_dir;
let components_dir = config.components_dir.replace("{baseDir}", &base_dir);
let lib_dir = config.lib_dir.replace("{baseDir}", &base_dir);
let registry = config.registry;
let templates = config.templates;
info!("{} {}", components_dir, lib_dir);
Ok(())
}
I really do not like replacing like this, and im sure I could use PathBufs instead but they produce weird paths
I found a way that works for me
maybe @radiant kraken can make a PR later to the cli tool to make it better who knows

https://github.com/LuminaUI/lumina/tree/master/packages/cli @radiant kraken if you can check out my code :))
Any feedback is appreciated!
This is an alpha release, with only 1 command available right now
When I get off work ima work on the add command
Not sure if you did but one thing I always do is run clippy over my projects before pushing - maybe it finds improvements for you as well ^^
Also maybe you want to set the edition to 2025 as well in the cargo toml
Gotcha
Yeah worth it
Got it setup
I only wish it'd make a PR for the proposed changes 
dk if thats even possible
So i got bored so now a coding language called DEADBASIC exist!
Its got like 5 commands sofar but its decently neat

will do! thankies
hello!
hai aaron!
I just pushed some new changes from clippy
you could also add cargo fmt in the github action btw!
that github action then could push new changes containing the formatted code
which is what i do for my projects
heh...want to do that for me /j
jobs:
rustfmt:
name: rustfmt
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Run rustfmt
run: cargo fmt --all -- --check --verbose
clippy:
name: clippy
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Run Clippy
run: cargo clippy --all-targets --all-features
i do these two and tests/builds as well
🙏
Anyone good at making tests? Im looking to add some check functions into my code.
i do them both in the same job
can be put as one but i like when i see what fails directly without having to look at the steps
yeh that's fair
saves the need of double-fetching the repo
sure thing! will include it in my pr for sure 

@radiant kraken Sorry about ping. You have done alot with LIB and such. What is your take on a coding languae with the only syntax being : no parens no nothing (Well indents too but thats diff)
well i don't mind it too much honestly
i like that you're being creative with your syntax

makes it stand out from the others
See and the whole idea of this is so people can learn coding easy then work their way up. So im trying to think whats needed and what is too much
mhm
for this i recommend minimizing technical terms in your syntax
keep it as accessible as possible
just make sure it's not too low, which is contra productive as they'll learn something never used in the real world
Def. Most of my functions and syntax currently says what it does
nicee
sometimes it's needed to have that steep learning curve - can be minimized a bit with good documentation, resources, etc.
i just wouldn't make a language that is way too far from reality
Yeah thats the bal im doing. For IF statements. im doing ```BA
if this do this``` So its still simular to higher level just more clear.
The whole goal is a language thats matches python for example but the commands are in a readable format. That way its easier to figure out
i.e. i wouldn't make indentations like python, it can be and effectively is confusing for newcomers
So instead of stuff with python like ```python
if x < 2 && > sum(5*^2/3)
print("Hello")```
Its more like ```BA
if x < 2 and sum 5*^1/3
Print hello
the amount of people that get started and don't know when and where the indentations are needed
python is also and
Cleaner and more clear. There is less stuff like the && and == and such
i feel like having it without parantheses could get confusing quite fast
See im debating parens or doing smth like python 3 where they do the :
Bc i do plan to add if and such.
@sharp geyser heya, so uhm your code is pretty simple, so my changes would be relatively minimal 
that example honestly makes it a bit complex/confusing for newcomers when they switch language for example - especially that print and sum thing
Yeah no I get that, anything helps though! Especially since it's likely going to get more complex soon
Well its actually add i did double language there mb
Dont code in 2 langauages lol. You will get syntax mixed!
@sharp geyser why this? doesn't npm automatically resolves to npm.cmd on Windows?
Nope
std::process::Command does not automatically resolve the right one
so you need that for it to
damn
Yeah it stupid
C++!!! I HATE THAT SOO MUCH AND IDEK WHY
simply doing npm inside Command::new() will give you a program doesn't exist error

It's better though cause I was using a cargo crate for it originally until I saw all they were doing was basically that
so I just implemented it myself
i love C++ 😍
I mean what would you recommend then. Im thinking languages like PY and java have the & and && / = and == and i want to try and elim those
I cant stand the import std
import system
import qdata
(You get the point)
what
Thats why i like java and all that. Some base systems already are there.
Yeah . But not every single command. More dynamic stuff
are you referring to how you import third-party libraries in C++
That's only cause they exist globally
Yeah this is what i dont like about c++. No global
They are referring to how std libraries are globally imported in languages like js and java
I dident know how to say it consideing i have 3 languages in my mind rn
Well they are
They are saying they dislike that C++ doesnt globally import its std library
instead you have to import things individually
ohhhhh
which makes sense because of how C++ is
Ye. Im saying i dont like how c++ makes you import standard lib, When it could just be global for basic like java js py ect
C++ can't really do a global std import
Why couldent it?
Well because it builds an exe with everything linked in it
imagine how massive that exe would be
💀
Full of shit that isn't used
I forgot about the exe....
i'm sure that can be optimized
I mean sure
but why bother
the compiler already has its hands busy optimizing what is included
So funny story. was taking a coding class in HS. forgot that C++ makes exe. Tried to email it to myself to load it at home. Flagged, Add to google drive, Caused me to get investigated by the school.
All over a unsigned EXE
Made me and my teacher laugh tho when we found out
damn
The principle knew me decently well. So he called me down and asked me. What that is. I told him and offered to show him the code and explain it. He looked at me and said. Your good. We had a incident with malware before and for some reason your GDrive flagged that every 2 seconds. So that was funny, 2 Days later got my ipad back. Was talking to IT (Had some staff in the IT that i helped time to time) Turns out they got 35 reports in under 2 minutes for the exe and they were all dumbfounded after looking at the code why it was flagged soo much
Made for a funny moment. Only struggle i had the whole time was getting my ipad back. Thats bc the Vice Principle forgot. Lol
Anyways i got sidetracked.
@sharp geyser instead of this, why not use macros?
nah
it's nested
check_for_required_deps runs step 3
If they don't exist they install them
It's a mess ik
Could be cleaned up tbh
Im thinking I will embed most of the provider code into the cli as well
so init will add those to the lib folder it creates
i'm writing a wrapper for the step progress bar rn
:o
Okie
That sounds good
Honestly a lot of it was proof of concept that it works
I was throwing code here and there
Planning to abstract what I needed to into its own modules
Next plans of implementation
- Add in the provider code for theme switching
- Add in the style files that it will use
- Make the
addcommand to add components to the project into thesrc/client/lumina/componentsfolder
I also want to eventually add theme presets
so part of the init process will be choosing a theme preset

be sure to let me know if you needed help
Will do!
Honestly just have a sanity checker / reviewer for it would be immensely helpful
I want to learn rust again since surprisingly a lot of tools on roblox are built in rust
💀
I plan on making a good bit of stuff in rust for roblox going forward
@sharp geyser https://github.com/LuminaUI/lumina/pull/1

Will check it out in a sec!
I wouldn't eliminate them to be fair
Any idea on how to do a select interface in the terminal?
I am looking at ratatui but that seems like...i'd have to rewrite the entire app to use unless im mistaken and can just use it for one portion
i'm sure there are several third-party libraries for it
Yeah
dialoguer seems promising
ratatui looks good but its a bit much for the current plans
maybe if it grows it might be good to use it
Now I have to make a super simple basic provider 
and other things
and then embed that provider inside the cli tool so it can generate it on init
oh btw, do you know if its possible to do auto releases on github?
Like it builds it for different targets and zips them and generates a release or nah
Oh I guess it is
heh
sobbing
👀
Oh wait thats a laptop I forgor
I was gonna ask how much ram in your country costs
lols
I need to drill it in me to make useful commit messages from now on
No more "Added this"
this laptop costed me $1,410
"feat(cli): Added add command to insert components"
I honestly want to be more professional in my coding
and I want to use standard stuff as well
like gh actions
Is there anything else I should use btw?
that you know of
I already have it set to use fmt and clippy now thanks to you
Umm
Nice
Question
sure thing
i don't think so
so nothing like this
[toolchain]
channel = "stable"
components = ["rustfmt", "clippy"]
profile = "minimal"
?
where do you write this in
rust-toolchain.toml inside the cli package
i don't write it in my libraries 
sure thing
and keeps consistency

in case one person is using some broken nightly build 💀
i have in the test and build matrix nightly as well
(jk)




