#development

1 messages · Page 290 of 1

frozen maple
#

@solemn latch Good evening brother, please check your private messages, it's very important.

prime cliff
#

Important says the annoying blank name HaHa

verbal basin
#

How I can setup vote log

deft wolf
#

Create a webhook, enter a link to it in the bot settings on top.gg and listen for a request from top.gg when someone votes

hot gull
#

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

unreal mist
#

Nice

hot gull
#

thanks

#

I think mods Reviewers will hate me

deft wolf
#

Bold assumption

unreal mist
#

Presuming you follow their guidelines, you should be good

hot gull
#

yes,but.

#

Have you saw my help command?

unreal mist
#

No

lyric mountain
#

lemme guess, it's a multipurpose bot and the help has over a hundred commands

#

been there, done that

queen needle
#

Lmao

hot gull
# unreal mist No

🛡️ 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

unreal mist
#

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

delicate zephyr
#

If the user requires the Administrator permission to run said commands. That is fine

dusk pebble
#

isn't the [clear] command considered api abuse?

prime cliff
#

Yea deleting all messages might be api abuse xD and also cause ratelimits

craggy pine
#

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.

quartz kindle
pearl trail
quartz kindle
#

:^)

pearl trail
#

LMAO

drifting igloo
prime cliff
pearl trail
#

yeah, but you can't use prefixed command as the reason for message content request

clever tundra
feral aspen
#

Is AI Studio down or despite token count not max I'm getting errors?

prime cliff
#

Yea usually internal error means its down

pearl trail
#

glassy lmao

hot gull
feral aspen
pearl trail
pearl trail
hot gull
#

Thanks nice derek.

#

Additionally, I suggest encrypting code, as login information may be visible unless encrypted or stored in a database.

stark kestrel
#

A password must be hashed, not encrypted

#

For the rest, unless it's sensitive, it doesn't matter

neon leaf
#

hash password on client so the raw password never even gets sent over the wire 🧠

stark kestrel
#

pointless

neon leaf
#

not really, if the browser supports it, theres no reason not to do it

stark kestrel
#

why would that even be needed

pearl trail
#

lmfao

stark kestrel
#

also that would imply you give the salt with the request in some way as well

pearl trail
#

what if user send raw password through api directly

neon leaf
#

a regular unsalted hash is fine for the browser side

stark kestrel
#

and before sending the hashed password for login, you get the salt from the backend

neon leaf
#

a 32 byte json array of numbers

pearl trail
stark kestrel
neon leaf
#

md5 isnt 32 bytes sir

#

you do know im implying another hash iteration on the backend yes?

stark kestrel
neon leaf
#

im not talking about a string

stark kestrel
#

if you don't trust sending a raw password over tls, as it's done, better not use the internet at all

neon leaf
#

its not about tls

#

its about what the server is recieving

#

they have the raw password

stark kestrel
#

it's always unencrypted

pearl trail
#

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..?

neon leaf
stark kestrel
#

you're just giving away your hashing algo in the client

#

the client and backend are made by the same dev

pearl trail
stark kestrel
#

the dev knows the algo, considering there's no salt - rainbow tables here i come

neon leaf
#

it only checks if its a 32 byte array

stark kestrel
#

also double hashing poses security risks

neon leaf
#

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

pearl trail
#

interesting, so the server just do hash the hash from client?

neon leaf
#

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)

pearl trail
#

i'd guess this is a hash too¿ (google login)

neon leaf
#

could be

#

wouldnt be the end of the world to use a hash when supported, and raw password if not

pearl trail
#

yeah right xD i still see most of websites still send raw password yeah, so i thought it's already perfectly fine

stark kestrel
pearl trail
#

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

hot gull
#

I meant if its not popular website

#

@pearl trailShould I add an appeal in my banning system?

stark kestrel
hot gull
#

yes I know.

#

But sometimes when I get bored, I make local html.

#

like not uploading it and encrypting code for fun.

stark kestrel
#

"encrypting" html is useless

hot gull
#

But that's because it's local if it's like on public, he should hash. Decoding HTML is easy.

hot gull
hot gull
#

I get it

stark kestrel
#

you mix hashing, encryption and encoding....

#

you use them in the same contexts where they cannot

pearl trail
hot gull
#

I thought its like not on public

hot gull
#

@stark kestrelI understand thanks

stark kestrel
hot gull
#

lol

stark kestrel
#

it wasn't until recently that they secured the tokens in local storage in some way

hot gull
#

yes tokens were problem.

#

even you can reset password.

#

but it was problem.

neon leaf
#

i think this can stand without any further comment

hot gull
#

wdym?

neon leaf
#

nothing

hot gull
#

ok??

hot gull
#

damn can reviewers check my bot faster??

#

I cant wait

#

😭

stark kestrel
knotty night
#

We are working on ways to speed up the progress

hot gull
#

thanks bud

hot gull
rancid citrus
deft wolf
#

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

hot gull
#

Yes.

dusk pebble
#

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?

stark kestrel
#

you can make your bot send them

dusk pebble
#

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

balmy turtle
#

Why i get Unauthorized
Even tho the token is correct?

dusk pebble
deft wolf
dusk pebble
#

I will mainly use them in embeds as thumbnails

deft wolf
#

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

dusk pebble
#

yeah, I will need to buy hosting for the images I guess

#

thanks

deft wolf
#

You can make your own "image hosting" on the same machine you are hosting your bot (assuming you are using a VPS)

dusk pebble
#

nah, I host my bot on a raspberri pi

clever tundra
#

I don't see why you can't host the images locally

dusk pebble
#

my research leads me to believe discord doesnt support local paths for images

deft wolf
#

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

dusk pebble
#

ok, I may try this approach

deft wolf
#

Example from docs

dusk pebble
#

my bot uses V2 components , which there are no Field

deft wolf
#

Then you are not using embeds

dusk pebble
#

I call embed but it is actually called container in V2

deft wolf
#

It's gonna work the same way I guess

dusk pebble
#

nice

#

thank you

balmy turtle
dusk pebble
#

how are you calling the api?

balmy turtle
# dusk pebble 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
}'
dusk pebble
dusk pebble
balmy turtle
#

i think

pearl trail
#

or maybe try cloudflare r2?

balmy turtle
#

i used this one

dusk pebble
hot gull
digital swan
pearl trail
#

yeah, iirc r2 is free for 5 or 10gb i forgot

#

im also interested, is there a hidden fee or is it totally free

neon leaf
#

10gb free

#

and like 10mil reads + 1mil writes

#

(u will never reach 10mil reads due to caching)

pearl trail
#

oh that’s a really good deal

neon leaf
#

yes, and decently priced for big storage too

#

I pay ~22€/month for 1.2tb of data

#

havent found anything truly better yet

acoustic bough
stark kestrel
#

Wasabi has a decent pricing from what I remember

#

Something like $6 or $8 per TB per month

#

(zero egress fees)

covert gale
#

wasabi is good yeah

#

you could also self host s3 with garage

pearl trail
covert gale
#

they have a base price iirc

stark kestrel
#

It's pay as you go with $7 per TB

pearl trail
#

ive seen that, i was just asking if i store like only 50gb ish, i wont pay that much right?

pearl trail
stark kestrel
#

That's what pay as you go is, yes

pearl trail
#

alright than, thank you

stark kestrel
#

Actually no

acoustic bough
#

For customers using the Wasabi Pay as You Go pricing model, Wasabi has a minimum monthly charge associated with 1 TB of active storage

stark kestrel
#

That funny * says otherwise

acoustic bough
#

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.

pearl trail
#

ah

acoustic bough
neon leaf
shy adder
#

you guys have webhook token for verification?

delicate zephyr
#

@solemn latch

pearl trail
#

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

prime cliff
#

That's what environment variables are for lmao

pearl trail
#

ikr, was rethinking my career when i read that post for the first time

sturdy shuttle
#

how to use topgg api

stark kestrel
delicate zephyr
#

welcome to any app which rewards engagement with $$$

cold thorn
#

could i get some help figuring out how to get my vote connected to a discord command?

sharp geyser
#

oh nvm

cold thorn
sharp yew
#

Okay I re-applied... Not having my bot in a Host is a living hell

lyric mountain
#

you're selfhosting it?

craggy pine
#

You maintaining a bot being self hosted will be more of a living hell once you get people using it. Get a host.

wheat mesa
#

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

pearl trail
#

and need to be in developed country to get lower latency to services mmLul

ionic iris
#

sa

hot gull
#

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.

deft wolf
#

Free host 😔

shy adder
#

free cant be really free

hot gull
#

it is

hot gull
#

you like pay by ads.

deft wolf
#

One user cannot realistically pay for the cost of such a server just by watching ads

hot gull
#

I do.

#

And, I am using rn.

#

and that website is popular.'

#

and effective.

deft wolf
#

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

strong shoal
#

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

hot gull
#

@deft wolfnot bad for free hosting.

#

also you can add anti-ddos

#

like they are there.

hot gull
#

So that's normal if you don't want to use anti-DDoS.

quartz kindle
#

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...

prime cliff
#

👀 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.

deft wolf
# strong shoal Wdym. You mean some type of ratelimit or something? Im using a free hosting and ...

"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

hot gull
#

I dont worry about that

deft wolf
#

You don't worry that your bot won't be able to use the Discord API?

pearl trail
#

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

deft wolf
#

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

hot gull
#

Its not a problem. My bot will be able to use it.

hot gull
deft wolf
#

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

pearl trail
# deft wolf XD?

lol i think bro doesn't know what you're talking about. thinking cloudflare ban can be prevented using "anti-DDOS" 😂

stark kestrel
#

🗿 🗿 🗿

stark kestrel
# deft wolf XD?

me when people don't understand what they're talking about but tell others to be more informed

shy adder
deft wolf
#

None, choose the one that suits you

shy adder
#

lol okay

pearl trail
#

for cheap ones, you can try hetzner

strong shoal
#

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

deft wolf
#

By that you mean how to make sure that the request comes from top.gg?

strong shoal
#

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

pearl trail
#

how do you do it?

strong shoal
#

Body returns undefined and that is weird

#

since query at least provides an empty obj

pearl trail
#

you use express?

shy adder
strong shoal
#

Yup

pearl trail
#

do you have app.use(express.json()); ?

strong shoal
#

i think i can add the middle ware on that specific route

#

give me a sec

#

in general, i surely don't have it

pearl trail
#

yeah then you need that to parse application/json

strong shoal
#

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...

shell echoBOT
#
Help
!sm

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)

!am

Shows the server's current automod settings

!ls

If used without arguments, it shows the current settings. Otherwise it's used to set up the actual ratelimiting part of linkspam

!invspam

Shows Invitespam settings for this server

!cnsr

Adds one or more words to be censored, use "double quotes" to block things with spaces

!deletefiles

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

hot gull
#

umm

hot gull
#

worked?

#

@strong shoalshowing cf-connection ip isnt good idea

hot gull
warped glacier
#

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

hot gull
#

so

#

I might rate 7/10

#

But, I appreciate that behavior.

#

@warped glacier@warped glacier

warped glacier
#

y 2 ping

hot gull
#

sorry

warped glacier
#

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

hot gull
#

my mouse lagged

#

I apologize

warped glacier
warped glacier
#

I do need to reorder that forum a little.

hot gull
#

maybe adding upload photos/videos

hot gull
warped glacier
#

I might. Im trying to not make a massive storage drive since im paying out of pocket for the server.

hot gull
#

dang it

#

Cloudflare offers free service.

warped glacier
#

I do have 10gb. But i run a SQL DB with a ton of data in it I could upgrade to 100gb

hot gull
#

I can get you database

warped glacier
hot gull
#

but idk if sillydev is good host

warped glacier
#

The host is technically free. Im paying bc i needed static storage

hot gull
#

If you want the database, tell me

warped glacier
#

So im really just paying for storage

hot gull
#

oh.

#

thats good.

warped glacier
#

And $7/mo for 10gb is not that bad honestly

#

And i could go up to 1000gb

hot gull
#

yes thats good point.

hot gull
warped glacier
#

They just dont have the TB under text

hot gull
#

Try hiding api

warped glacier
#

Users cant see the api. Thats for me

hot gull
#

and what is scan text for?

#

oh.

#

k

warped glacier
#

Auto scan chatlogs to see if its || pred || activities

#

This is what users see honestly

hot gull
#

wow

#

thats good

warped glacier
#

All those other tabs are really for me and my team to take and report

hot gull
#

can I join the team?

#

my sis got 21yr german predator

#

and she was 8

warped glacier
#

Dm me we will talk

hot gull
#

O K

deft wolf
strong shoal
pearl trail
#

cf connection ip is your ip

strong shoal
#

is there any problem?

pearl trail
# strong shoal 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

strong shoal
#

yeah... that's what docs said, i deleted the message as fast as possible tho just in case

pearl trail
#

xD

strong shoal
#

i mean if they talk about "IP" and "not a good idea" i turn on all the alerts 😭

#

mkay, thanks

pearl trail
#

hi, do you guys who use cloudflare R2, uses aws' s3 sdk?

#

ok seems like it

strong shoal
#

XD

stark kestrel
#

most of the providers (try to) make it compatible

pearl trail
#

ahh i see, thank you!!

acoustic bough
#

I personally use bun.s3 for r2

pearl trail
#

ah, yeah i thought r2 have their own library like minio-go

pearl trail
#

just some functionality wont work

hot gull
#

Dont worry I didnt look at the ip

pearl trail
#

well in his case, the ip is topgg’s ip

hot gull
#

yep.

delicate zephyr
#

top.gg publicly displays that IP in their docs btw

#

because its the webhook out IP address

#

for vote webhooks, it's nothing special

hot gull
#

yep. It was just a joke.

#

I discovere a new bug in my dis

quartz kindle
#

kids out there still believe you can hack someone with only their ip address :^)

hot gull
#

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.

quartz kindle
#

i was responding to people knowing topgg's ip address and CF showing your ip address and etc

hot gull
#

oh

#

my bad

acoustic bough
pearl trail
#

oke, i just copy my s3 codes for my r2 KEK

fresh marlin
#

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?

stark kestrel
#

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

deft wolf
#

Slash commands were added in what year? 2022?

stark kestrel
deft wolf
#

Yea, just checked on ddevs. It was late 2020

stark kestrel
#

March 24 2021

deft wolf
#

4 years already 😔

stark kestrel
#

and still missing a date option type

deft wolf
#

Smh, I always consider slash commands to be a relatively new thing because of how many people I see still using prefix commands

stark kestrel
#

definitely

#

the only big use i've see of them are for user installed apps to spam, advertise or scam in other servers

prime cliff
fresh marlin
stark kestrel
#

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 🤷‍♂️

prime cliff
#

We also have components embeds v2 mmLol gives more layout and component options for embedding stuff

fresh marlin
fresh marlin
prime cliff
#

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 🙂

fresh marlin
#

I see. And besides the intents, is there any other restriction or complication I should be wary of?

quartz kindle
#

in those cases, the message content is always present regardless of intent

quartz kindle
fresh marlin
fresh marlin
quartz kindle
#

so they are not likely to approve the intent for such use case

quartz kindle
fresh marlin
lyric mountain
lyric mountain
#

like, you just need a valid reason, in your case it'd be server content moderation

fresh marlin
lyric mountain
#

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

fresh marlin
#

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?

stark kestrel
#

You just won't get the intent for that

deft wolf
#

Probably because it is already implemented in the built-in automod?

fresh marlin
fresh marlin
stark kestrel
#

that definitely

#

it's just discord see it as a sort of competitor, so you'll get a no from them

fresh marlin
#

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.

neon leaf
#

well, you dont need discords permission for the intent under 100 servers

#

so most self-host users would prob be fine

fresh marlin
#

Ohh, so that's still a thing. That's marvelous then.

pearl trail
#

altho now you can request intents before reaching 75 servers

arctic kernel
#

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

deft wolf
prime cliff
#

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

frosty gale
#

client.channels.cache.cache_for_cache_1.second_cache.third_but_better_cache.the_final_cache.get

hot gull
#

So, Mr reviewers.

#

My bot is almost 2 weeks and not reviewed

#

😭

prime cliff
#

Oh bot logs is now hidden 🙃

prime cliff
zealous lodge
#

Hi

hot gull
#

<@&817055174613794826>

sharp saddle
#

navigator.connection does not exists on Typescript navigator type?

pearl trail
#

the typings?

pearl trail
#

faster 🔥

#

wow go 1.25 really brings a lot new features

shrewd pulsar
#

Is there any information on when webhooks will become available for servers?

deft wolf
#

Top.gg doesn't usually provide ETAs for bug fixes or new features, but maybe you'll learn something from this thread
#1394807083831918603

shrewd pulsar
radiant kraken
eternal osprey
#

hey everyone

#

is it my internet or is the discord api struggling?

stark kestrel
prime cliff
#

Worst branding change ever lmao they butchered the website, font, design, looks and my EYES ARE BLEEDING

stark kestrel
prime cliff
#

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

stark kestrel
#

lmao

#

honestly never used it because no use

prime cliff
#

Annoyingly blinding light blue tags

pearl trail
#

they also changed this lol, previously, my long branding works (there's no flex), now it's like this (flexed)

neon leaf
pearl trail
#

wao interesting, didn't know sentry can be self hosted

#

does sentry really take that much ram?

neon leaf
#

yes

#

16gb average

pearl trail
#

💀

neon leaf
#

storage usage is mainly because I trace 100% of transactions

#

(which is 1mil per day)

pearl trail
#

holy moly

#

i only got 6gb ram spare left 😔

neon leaf
#

I got 512gb left but on a dsl internet connection 🔥

pearl trail
#

so homelab server?

neon leaf
#

ye

pearl trail
#

i see i see

neon leaf
#

it is held together by literal tape

#

if I remove this, 64gb of ram go missing

pearl trail
#

KEK KEK KEK they're loose?

neon leaf
#

theres a motherboard standoff under there

#

and if it touches the mobo

#

it shorts out the dimm slot

pearl trail
#

💀 sounds dangerous

neon leaf
#

which causes the ram to not be detected

pearl trail
#

how much average power does it consume?

neon leaf
#

i think like 100w usually

#

entire rack is like 220W

pearl trail
#

interesting, thank you

neon leaf
#

definitely wouldnt recommend this setup for normal homelabs though

#

insanely bad idle power usage

#

my old i3 4th gen was 3w idle

pearl trail
#

probably gonna use dell pc for a server xD that surely won't consume that much

neon leaf
#

yea, just turn on energy saving or whatever in bios

pearl trail
neon leaf
#

and make sure you have dust filters if you put it near the floor 🙏

#

otherwise u get this

prime cliff
hot pond
#

Hi;D

deft wolf
#

Sus

prime cliff
hot gull
#

Can someone make for me python code which allows my brain to eat my wooden table.

#

👉 👈

prime cliff
#

For comparison

pearl trail
shy adder
unreal mist
#

I agree, it looks awesome!

quartz kindle
hot gull
#

Lol

kind hollow
#

a

open dagger
#

B

sharp geyser
#

@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

queen needle
#

Oh that's awesome

wheat mesa
#

Surely reinventing CSS isn't going to be problematic at all

sharp geyser
#

Well its not really reinventing as their needs differ than the web

wheat mesa
#

I already hate normal CSS, can't imagine touching a vendor specific version of it

queen needle
#

Why do you hate css

wheat mesa
#

there's 10 thousand ways to do something, and none of them feel "correct"

sharp geyser
#

https://rsml.style like I said its like css but not exact as their needs differ

#

syntax similar

#

functionality not exactly 1:1

wheat mesa
#

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

wheat mesa
#

just a different flavor

queen needle
#

Looks like C# and SCSS had a child

wheat mesa
#

man I'm prepping for an OA for this company and I'm nervous af, my java skills are a bit rusty

sharp geyser
#

It has macro support to

#

which is neat

wheat mesa
#

yeeeeep

#

I'd have to move for it but it wouldd be crazy to pass up on if I actually got an offer

sharp geyser
#

Hey gotta do waht you gotta do

#

Have you talked to the wife about it, thats always important

wheat mesa
#

Yeah talked to her about it, we'd be doing the long distance thing for a couple years

sharp geyser
#

If she's supportive of it, no reason not to do it

wheat mesa
#

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

sharp geyser
#

Oh yeah no that's lightwork

#

I thought you were talkin different state type of distance

wheat mesa
#

Nah

#

I mean austin is basically a state away, but yeah wouldn't be crazy

#

Drivable

sharp geyser
#

yeah

wheat mesa
#

but hopefully I get past this round

#

surprised I made it through the automated screening

sharp geyser
#

@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

solemn latch
#

ty

sharp geyser
#

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)
neon leaf
#

depends on where its located

#

run whereis npm

sharp geyser
#

im on windows

#

whereis isn't a thing

neon leaf
#

mhm

#

then skill issue

sharp geyser
#

💀

neon leaf
#

it may not be in your global system PATH

sharp geyser
#

It def is

neon leaf
#

hmm

#

try absolute path then

sharp geyser
#

Even absolute path says it cant be found

neon leaf
#

how are you running the rust app

sharp geyser
#

cargo run -- init

neon leaf
#

where is Cmd from

sharp geyser
#

std::process::Command as Cmd

#

since im using clap I had to specify an alias

neon leaf
#

what absolute path did you use

sharp geyser
#

C:\\Program Files\\nodejs\\npm.exe

neon leaf
#

hmm

sharp geyser
#

Oh wait it didn't save, but it still gives an error

sharp geyser
#

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

neon leaf
#

did u not test if the path actually exists

sharp geyser
#

Well it existed but I couldn't see the extension

neon leaf
#

who doesnt have it enabled smh

sharp geyser
#

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

neon leaf
#

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")

sharp geyser
#

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

neon leaf
#

try moving the format outside of the statement

#

and mapping it a variable

sharp geyser
#

I already did

#

same thing

neon leaf
#

show the function

sharp geyser
#

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())
}
neon leaf
#

why not just &str

#

99% of cases rust can figure it out itself

sharp geyser
#

cause it can't figure it out apparently

#

that's why I used a lifetime

neon leaf
#

show set_message

sharp geyser
neon leaf
#

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())
}
sharp geyser
#

Question at that point is not better to just use String for label?

neon leaf
#

you could, yes

sharp geyser
sharp geyser
#

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

radiant kraken
delicate zephyr
#

which also works on ubuntu

radiant kraken
#

he's on windows

delicate zephyr
#

ah oki

sharp geyser
radiant kraken
sharp geyser
#

How are you

radiant kraken
sharp geyser
#

Oh neat

radiant kraken
#

for formatting identifiers, you could just add them directly, like format!("{ERROR} {label} failed")

sharp geyser
#

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

radiant kraken
#

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

sharp geyser
#

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

sharp geyser
#

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

queen needle
sharp geyser
#

😭

#

what do you mean

sharp geyser
#

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

radiant kraken
sharp geyser
#

I am currently just cleaning the code up

#

splitting it up into modules

radiant kraken
#

nicee!!

#

you're on the right path

sharp geyser
#

Thanks!

radiant kraken
#

no worries

sharp geyser
#

Currently not sure what to do next

#

I kind of have to make a template to even test this mmLol

#

problem is the actual UI lib isn't even in a useable state aha

radiant kraken
#

😭

pearl trail
#

templating 🔥 🔥

radiant kraken
earnest phoenix
#

According to you guys, what permission should a user (not bot) have to create a giveaway?

deft wolf
#

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"

earnest phoenix
pearl trail
#

i personally use manage guild on my bot

deft wolf
#

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

earnest phoenix
stark kestrel
#

it depends what your feature does

deft wolf
#

Valid question tbh

stark kestrel
#

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

pearl trail
#

it's the user's permission that was asked, not bot

earnest phoenix
stark kestrel
#

well then the reviewer likely misread

pearl trail
#

^

stark kestrel
#

you can just DM them

covert gale
#

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

earnest phoenix
covert gale
#

that way servers who want to can have some sort of a giveaway role and such

stark kestrel
stark kestrel
charred nest
#

@earnest phoenix ^

neon leaf
#

I get free actions? I use free actions

sharp geyser
#

You've used 86$ worth

#

pay up

delicate zephyr
neon leaf
delicate zephyr
#

lol

neon leaf
#

🙏🙏

#

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

quartz kindle
#

what the feck

real rose
#

hey man

#

ill light a candle for that setup

#

bless

quartz kindle
earnest phoenix
#

Can someone help me in Python? Is it possible to post Top.gg reviews directly to any channel?

deft wolf
#

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

hot gull
#

MY BOT GOT APPROVED

strong shoal
#

congrats

hot gull
#

Thanks.

#

❤️

#

@river flicker Tysm

vivid fulcrum
sharp geyser
#

@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 from base.dark.rsml and light base.light.rsml
neon leaf
#

wtf is redis doing skul

real rose
#

redising

sharp geyser
#
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

sharp geyser
#

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

sharp geyser
#

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

stark kestrel
sharp geyser
#

Oh yeah nah I forgot about floppy

#

Clippy*

#

Might set it up as a gh action

stark kestrel
#

Also maybe you want to set the edition to 2025 as well in the cargo toml

sharp geyser
#

Gotcha

stark kestrel
sharp geyser
#

I only wish it'd make a PR for the proposed changes val_Sadge

#

dk if thats even possible

warped glacier
#

So i got bored so now a coding language called DEADBASIC exist!

#

Its got like 5 commands sofar but its decently neat

warped glacier
#

Average file in this language looks like this

sharp geyser
#

hello!

radiant kraken
#

hai aaron!

sharp geyser
#

I just pushed some new changes from clippy

radiant kraken
#

oh

#

cool :D

warped glacier
#

@sharp geyser

radiant kraken
#

that github action then could push new changes containing the formatted code

#

which is what i do for my projects

sharp geyser
#

heh...want to do that for me /j

stark kestrel
#
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

sharp geyser
#

🙏

warped glacier
#

Anyone good at making tests? Im looking to add some check functions into my code.

radiant kraken
stark kestrel
#

can be put as one but i like when i see what fails directly without having to look at the steps

stark kestrel
radiant kraken
#

saves the need of double-fetching the repo

radiant kraken
sharp geyser
warped glacier
#

@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)

radiant kraken
#

i like that you're being creative with your syntax

#

makes it stand out from the others

warped glacier
#

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

radiant kraken
#

mhm

#

for this i recommend minimizing technical terms in your syntax

#

keep it as accessible as possible

stark kestrel
warped glacier
#

Def. Most of my functions and syntax currently says what it does

radiant kraken
#

nicee

stark kestrel
#

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

warped glacier
#

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

stark kestrel
#

i.e. i wouldn't make indentations like python, it can be and effectively is confusing for newcomers

warped glacier
#

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

stark kestrel
#

the amount of people that get started and don't know when and where the indentations are needed

warped glacier
#

Cleaner and more clear. There is less stuff like the && and == and such

radiant kraken
#

i feel like having it without parantheses could get confusing quite fast

warped glacier
#

Bc i do plan to add if and such.

radiant kraken
#

@sharp geyser heya, so uhm your code is pretty simple, so my changes would be relatively minimal ia_lul_haha

stark kestrel
sharp geyser
warped glacier
#

Dont code in 2 langauages lol. You will get syntax mixed!

radiant kraken
#

@sharp geyser why this? doesn't npm automatically resolves to npm.cmd on Windows?

sharp geyser
#

Nope

#

std::process::Command does not automatically resolve the right one

#

so you need that for it to

radiant kraken
#

damn

sharp geyser
#

Yeah it stupid

warped glacier
#

C++!!! I HATE THAT SOO MUCH AND IDEK WHY

sharp geyser
#

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

radiant kraken
#

i love C++ 😍

warped glacier
warped glacier
sharp geyser
#

erm

#

you import things in every language?

#

you can't avoid it

#

💀

radiant kraken
#

what

warped glacier
#

Thats why i like java and all that. Some base systems already are there.

warped glacier
radiant kraken
#

are you referring to how you import third-party libraries in C++

sharp geyser
#

That's only cause they exist globally

warped glacier
sharp geyser
#

They are referring to how std libraries are globally imported in languages like js and java

warped glacier
#

I dident know how to say it consideing i have 3 languages in my mind rn

sharp geyser
#

Well they are

#

They are saying they dislike that C++ doesnt globally import its std library

#

instead you have to import things individually

radiant kraken
#

ohhhhh

sharp geyser
#

which makes sense because of how C++ is

warped glacier
#

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

sharp geyser
#

C++ can't really do a global std import

warped glacier
#

Why couldent it?

sharp geyser
#

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

warped glacier
#

I forgot about the exe....

radiant kraken
sharp geyser
#

I mean sure

#

but why bother

#

the compiler already has its hands busy optimizing what is included

warped glacier
#

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

radiant kraken
#

damn

warped glacier
#

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.

radiant kraken
#

@sharp geyser instead of this, why not use macros?

sharp geyser
#

cuz me no know how to use macros

#

:))

radiant kraken
#

😭

#

also it went from 2 to 4 btw

sharp geyser
#

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

radiant kraken
#

ohhhhhh

#

my bad

#

didn't see it

sharp geyser
#

so init will add those to the lib folder it creates

radiant kraken
#

i'm writing a wrapper for the step progress bar rn

sharp geyser
#

: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 add command to add components to the project into the src/client/lumina/components folder
#

I also want to eventually add theme presets

#

so part of the init process will be choosing a theme preset

radiant kraken
#

be sure to let me know if you needed help

sharp geyser
#

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

radiant kraken
sharp geyser
#

Will check it out in a sec!

stark kestrel
sharp geyser
#

@radiant kraken Merged!

#

Looks good

radiant kraken
#

now go to bed aaron

sharp geyser
#

I got off work lol

#

Bed no no

#

me work on project

#

I gots lots of stuff to do

sharp geyser
#

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

radiant kraken
sharp geyser
#

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 iara2_pain

#

and other things

#

and then embed that provider inside the cli tool so it can generate it on init

sharp geyser
#

Like it builds it for different targets and zips them and generates a release or nah

#

Oh I guess it is

#

heh

radiant kraken
sharp geyser
#

Imagine running out of memory

#

Imagine not having 64gb

radiant kraken
sharp geyser
#

👀

#

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"

radiant kraken
#

this laptop costed me $1,410

sharp geyser
#

"feat(cli): Added add command to insert components"

radiant kraken
#

yeahhh! as you should aaron

sharp geyser
#

I honestly want to be more professional in my coding

#

and I want to use standard stuff as well

#

like gh actions

radiant kraken
#

i mean tbf i'm not that professional hahahah

sharp geyser
#

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

strong shoal
deft wolf
#

Nice

sharp geyser
radiant kraken
#

sure thing

deft wolf
sharp geyser
#

should I use a toolchain file

#

to lock in the toolchain for that project

radiant kraken
#

that's all i use LOL

radiant kraken
sharp geyser
#

so nothing like this

[toolchain]
channel = "stable"
components = ["rustfmt", "clippy"]
profile = "minimal"
#

?

radiant kraken
sharp geyser
#

rust-toolchain.toml inside the cli package

radiant kraken
#

i don't write it in my libraries kittyshrug

sharp geyser
#

I see

#

I think ill keep it cause why not

#

it locks in others using that toolchain

radiant kraken
#

sure thing

sharp geyser
#

and keeps consistency

radiant kraken
sharp geyser
#

in case one person is using some broken nightly build 💀

stark kestrel