#development

1 messages · Page 280 of 1

sharp geyser
#

:))

quartz kindle
#

but for js you can easily do it

sharp geyser
#

I mean C# I just have a api on my next js endpoint that validates tokens passed to C#

#

It’s a bit of a headache but I’d end up doing the same if I used an external IDP

quartz kindle
#

for a js backend, this is pretty much the best resource on auth

#

it used to be a lib, but as of v4 it became a guide instead of a lib

sharp geyser
#

Oh

#

I mean if it’s a guide I can implement it myself no problem ahaha

vivid fulcrum
#

you're using asp.net right? auth is pretty well covered in msdn docs

sharp geyser
#

Hm?

#

Oh I know

#

Ms docs just are overly complex

vivid fulcrum
#

yeah there's a lot of information

sharp geyser
#

And trying to find an answer to something takes you through 3-4 hyper links and back again

vivid fulcrum
#

but you don't have to read through all of it, it mostly falls down to what kind of auth you want to implement

#

oauth is super simple

delicate zephyr
#

i use supertokens

#

self-hosted ofc

sharp geyser
#

I’m tired of using external idps

#

None of em let me use my own database

delicate zephyr
#

Works for me Shrug

delicate zephyr
#

so you can use your own

sharp geyser
#

I can use my own tables and modify them how I like?

delicate zephyr
#

and I setup supertokens to do account linking manually so I saved money by doing that too kekW

sharp geyser
#

I need to store extra data

#

That’s why I like better-auth cause I can add onto the generated tables

delicate zephyr
#

ah fair

#

supertokens has a metadata section

#

so

#

not that I use it

sharp geyser
#

I’m not sure how well that would work for me

#

I’d need complete control of the auth flow as well

#

I’m trying to find something I can use for any project going forward

#

One of the reasons I’m tempted to just hunker down and learn it all myself

#

Cause no solution out there seems to match what I need exactly without me having to fight with it

vivid fulcrum
#

brainstorm with claude :^)

sharp geyser
#

Who’s claude

vivid fulcrum
#

hahahah, it's a language model

#

it's really good for programmers

sharp geyser
#

I see

vivid fulcrum
#

I throw all kinds of ideas into it and discuss which solution fits me the best

sharp geyser
vivid fulcrum
#

yeah

sharp geyser
#

I’ll check it out

#

I really want to learn auth myself

#

It’s just the resources on it are half baked

#

And typically from those who have just as much knowledge as me

vivid fulcrum
#

well, there are good guides and docs. you just have to search for them properly

#

😁

sharp geyser
#

Yeah I suck at using the internet to my advantage it seems aha

#

You’d think I’d be good at it after using it for so long

prime cliff
sharp geyser
pearl trail
#

wow you use js?

sharp geyser
#

Not necessarily

#

I use C# for my backends

#

and TS for my frontend obv

#

I am trying to find an auth solution that best fits what I need.

#

And it also versatile to work with any project I make going forward

feral aspen
#

I don't use edge~ any potential reason data usage is high, though?

deft wolf
#

Maybe updates?

quartz kindle
prime cliff
#

Same that is very spooky

#

Using web view shouldn't take up 4 GB of data usage though

#

This is from the last 30 days

#

Hamoods is 7 days 25 GB

quartz kindle
#

well, its data used by other apps, that goes through webview

#

so it wrongly shows up as being from edge

#

i might be wrong, but that would be one possible explanation

#

it could just be data usage being stupid. my data usage is completely wrong too

#

shows up 4gb used by brave in the last 30 days, which cannot be possible, should be more like 200gb

sharp geyser
#

Honestly at this point fuck web dev bro

#

Like bruh

#
export default function RootLayout({ children }: { children: React.ReactNode }) {
    return (
        <html suppressHydrationWarning lang="en">
            <body>
                <Providers themeProps={{ attribute: 'class', defaultTheme: 'dark' }}>
                    <div className={'w-full min-h-dvh flex flex-col relative'}>
                        <Navbar />
                        <main className={'pt-16 px-6 space-y-4'}>{children}</main>
                        <footer className={'p-4 mt-auto'}>(footer)</footer>
                    </div>
                </Providers>
            </body>
        </html>
    );
}
vernal latch
#

damn

sharp geyser
#

Decided to check out a different UI library heroui

#

And the width just refuses to work for me

#

The navbar seemingly overflows causing everything else to overflow

sharp geyser
#

For now I guess its just not responsive, until I figure out how to fix it I cba

pearl trail
sharp geyser
#

I hate it rn

#

Apparently it’s not responsive by default or some shit

quartz kindle
#

im using daisyui and its been pretty alright so far

sharp geyser
#

I’ve used so many component libraries

#

And none of them really stick with me

sharp geyser
#

I still can’t solve it

#

I am like 95% sure it’s the nav

#

Causing everything to be overflowed that is

#

It functions normally on larger screens but mobile it fucks up for whatever reason

pearl trail
sharp geyser
#

The example I just mentioned above

#

Ahaha

#

For whatever reason the nav seems to be going beyond the viewport

#

And or it’s the main content but both I’ve tried limiting the width for and neither seems to effect anything

drifting gale
#

so w-full does nothing

sharp geyser
#

Wait

#

Maybe its chrome dev tools fucking up

#

Restarting the nextjs app seems to resolve it sometimes

#

Dev tools seems to be failing to get the right width or some shit for its emulator thing

sharp geyser
#

@zinc fable new redesign of the homepage

#

Not fully finished yet but we making it out the mud soon 💪

drifting gale
#

what are you talking about

sharp geyser
drifting gale
#

never happened to me, idk

neon leaf
#

New record day 🔥

delicate zephyr
neon leaf
#

New project

#

I didn't want to lose motivation so I went all in

#

Now the hard stuff is done

#

And I'm motivated for tomorrow

prime cliff
#

That's me on my project haHAA staying up till 3am

#

Almost got a full stable release version out now just need to do some testing for docker stacks

delicate zephyr
#

finally being able to release chatbot memory too

prime cliff
#

Never really done any kind of chat stuff but might be nice to do in mine for something

#

I should probably work on shortlinks and image editing features soon, those would be the most useful and easy enough to add.

hidden gorge
#

@zinc fable

deft wolf
#

Another support scam? MegaThonk

deft wolf
#

That's crazy

quaint rampart
#

isn’t that just useless tho?

#

discord doesn’t change the ids of any commands that aren’t updated for me?

#

@lyric mountain correct me if i’m wrong 🙏

drifting gale
#
await rest.post(Routes.applicationGuildCommand(clientId, guildId), {
  body: newCommand,
});
#

you want to use post instead of put

lyric mountain
vivid fulcrum
prime cliff
#

Nah not gonna burnout on this project haha

vivid fulcrum
#

glad to hear that :)

#

I had to start spacing out how much I work on my projects

icy latch
#

Is storing user IDs considered "potentially sensitive information" during Discord's app verification process?

My bot is an open-source game bot. We store the user IDs of users who participate in the game, but only for a leaderboard. No information entered by the user as part of the game and stored in our database can be tracked back to the user who created the data, and vice versa.

We need two privileged intents for the bot to work: server members and message content. The usage of these intents is explained in details in the privacy policy of our bot. Besides, anyone can review our code easily.

We are going to apply for permission to use these two privileged intents, and we are being asked whether we store "potentially sensitive user information". Does user ID qualify as potentially sensitive information? We do not store any usernames or display names. We have already made this clear in the questionnaire wherever possible, but since verification is a one-shot thing (i.e. If denied, we cannot appeal), we want to be super careful in what we send.

Can anyone provide some advice on this?

vivid fulcrum
#

no, moreover it's encouraged to only store IDs where possible

deft wolf
#

no it doesn't

icy latch
#

That's great, thanks to both of you!

neon leaf
#

(focus on the extraction of tar archives)

sharp geyser
#

Turns out developer tools on chrome are just bugged cause it looks normal using that tool you linked

elfin helm
#

With a user id you basically have those

lament rock
#

Though you reasonably cannot get all of your users' names in one fell swoop without it taking time as there are ratelimits to consider. In which case if Discord detects you making a ton of requests to get user info then that situation falls in their hands

long marsh
#

Does anyone here use Redis/Valkey as their leaderboard?

#

Context: DynamoDB is my primary datastore. While it supports global leaderboards, it's prone to hot partition issues at scale ... particularly when hundreds of thousands of records concentrate in a single partition. To avoid this, I offloaded leaderboard handling to Redis. However, Redis HSET only supports one unique key (e.g., Discord user ID), and I also want to display usernames. It's one of my top requested features.

I see two options:

  1. Continue using Redis with user scores keyed by Discord ID. For display, fetch usernames from the DB or cache. Since the leaderboard is paginated, I can cache the top 5–10 pages where reads are most frequent.
  2. Ditch Redis for leaderboard storage and leverage my existing DynamoDB change listener to sync updates elsewhere. The question is: what would be the right backend for that?

Open to ideas 🙂

sharp geyser
#

I don’t see why you can’t just use redis. If you’re displaying data you already have access to the id. Fetch user info using that id to get the username

#

If you’re using discord.js it’s fetch methods will check cache first for the user otherwise fetch from discord then cache them

long marsh
sharp geyser
#

I see

#

well i'd still do what discord.js does

#

Check cache for user first, otherwise fetch discord and then cache

long marsh
# sharp geyser Check cache for user first, otherwise fetch discord and then cache

I assume they apply that across all users on a given bot. The challenge for me is that my system is stateless, so every transaction requires a fresh Redis fetch. That's expected ... but with a leaderboard page showing 20 users, hitting Redis 20 times per page feels excessive. It makes me think I should cache full pages instead and only revalidate if a user has fallen off the page.

long marsh
#

Is there showcase anywhere of the new components / what people have created with them? Looking for some inspiration other than what's in the discord documentation

radiant kraken
#

@wheat mesa i was thinking of replicating the Map.Value.ComparingByValue() method

#

should i return an object of a class literal(?) or something

#

im very confused

#

(context: i was forced to write my own hash table implementation)

#

asked chatgpt, now uhhh dumb

#

now i get why people hate java generics embarassedkitty

#

got it resolved

#

still a bit puzzled tho

wheat mesa
#

Yeah generics can be a little weird. I haven’t written Java in quite a while but there’s a certain intuition you gain after writing some generic stuff in Java

long marsh
#

Does anyone know of any playgrounds where I can design discord v2 components without needing to spin up a test bot?

deft wolf
long marsh
neon leaf
rustic nova
neon leaf
#

yea im currently only porting

#

porting from go to rust

#

after thats done I start rewriting

#

I need to keep compatibility

delicate zephyr
#

you can do those 10 transactions in 1 call with any redis lib basically

#

Just search up how redis pipelining works

long marsh
delicate zephyr
#

unless you already do

#

in which case it should be fine no?

#

https://www.youtube.com/watch?v=uptpnVdwFM4

this video is a good one btw

...but which one is the best?

This video was sponsored by DragonflyDB who provide their own Redis compatible datastore without the need to go through the steps I did in this video :)

Learn more about how Dragonfly can boost performance and reduce costs for the most demanding in-memory workloads: https://rebrand.ly/DragonflyDOC

Additionally, i...

▶ Play video
long marsh
#

I meant to say cluster. But pipelines can only work on one cluster / shard at a time

delicate zephyr
#

is your client in cluster mode?

#

cause it should be able to

long marsh
#

Yes

delicate zephyr
#

Oh I see what you mean now

#

Pipeline is the limitation

#

Assuming JS/TS environment?

long marsh
#

But I agree on what you’re saying - delegate to the technology to handle the async

long marsh
delicate zephyr
#

Thats fine

#

Realistically, if you want to fetch 20 users at once

#

just use a Promise.all()

long marsh
#

Yeah, that’d likely work for my scale and even into the medium term

delicate zephyr
#

It's essentially just moving the async handling to JS but you shouldnt see a massive speed hit

delicate zephyr
#

just depends on how heaily you cache responses

#

like even a 5 minute cache for any immediately subsequent requests would make it last you until 100k/s to 1m/s honestly

#

You'll run into limitations with JS before the promise.all LuL

long marsh
#

If I could get rid of my cache entirely I would - my database technology is already used as a cache sometimes haha

#

Haha I’m using a managed Redis cluster which charges per USAGE of it. That’s also why I’m trying to gauge just caching the contents of each page

#

Rather than the names individually

delicate zephyr
#

I mean caching just each page would work

#

but that would also mean fetching 20 users information from discord before sending the page itself to cache it

#

if you cache the users you end up with technically less of a bottleneck on the implementation side
that plus you can use that cached data elsewhere

long marsh
#

Nah I’d hit my own database in that case

delicate zephyr
#

ahhh fair

long marsh
#

I store the username in my database

delicate zephyr
#

What database btw?

long marsh
#

Dare I say..

delicate zephyr
#

Postgres?

#

Mongo?

long marsh
#

Haha for funsies, guess

delicate zephyr
#

MySQL?

long marsh
#

Redis!

delicate zephyr
#

Oh

#

damn

long marsh
#

Just kidding

delicate zephyr
long marsh
#

DynamoDB

delicate zephyr
#

Ah

#

assuming thats charged based on usage too

long marsh
#

For sure

#

It’s free tier is VERY generous

delicate zephyr
#

im spoilt by self-hosting everything kekW

long marsh
#

I’ll likely never have to pay for usage until I’m hitting hundreds of concurrent players … and my memory will remain free until a couple million players

delicate zephyr
#

idk if dynamo has a way

#

but is there not a way to do a for in query

long marsh
#

No

delicate zephyr
#

like in SQL

SELECT * WHERE id in ()

long marsh
#

DynamoDB is very specific / niche

long marsh
#

You can only do prefixes

delicate zephyr
#

what about this

long marsh
#

That’s a batch get item - that’s what I would likely update my cache with

delicate zephyr
#

hmmm could you not use this to also generate your leaderboard

#

and just use that

long marsh
#

Negative

delicate zephyr
#

hmmm

#

then your plan should work honestly

long marsh
# delicate zephyr and just use that

I can technically do that. DynamoDB does have support for something like that, but it places everything into one partition to do it.

pk = leaderboard
sk = 10
name = Thomas

Then you can query on the pk and sort by the sk. But you run the risk of hot partitioning because you’re updating 1 partition (leaderboard) for potentially millions of players

delicate zephyr
#

similar to SQL views then

long marsh
#

Possibly yeah

delicate zephyr
#

hmmm

#

then fetching and caching the leaderboard is a good idea

#

just set a TTL on the redis key ig

long marsh
#

What also sucks is that DynamoDB can’t give you a position. If you want to know you’re rank, it can’t provide it

#

That’s why I’m using Redis as my leaderboard

delicate zephyr
#

yea okay that makes sense

#

I'd move databases but thats me

long marsh
#

Yeah DynamoDB isn’t for the faint of heart.

delicate zephyr
#

is there a reason you went with it?

#

besides the free tier?

long marsh
# delicate zephyr besides the free tier?

I use it everyday in my day job and have built APIs that have concurrent usage of 10k+ at one time.

DynamoDB has never ONCE been a problem. No migrations, no downtime, no maintenance windows, no throttling, etc.

delicate zephyr
#

fair

long marsh
#

But I’m using the wrong tool, so I acknowledge that

#

My game would likely NEVER reach those levels lol

delicate zephyr
#

I'd have personally said go with Prisma + postgres

long marsh
#

Yeah Postgres is GOATED

delicate zephyr
#

only because topstats is completely cacheless rn

#

for now

long marsh
#

Do you use supabase?

delicate zephyr
#

it's taking it like a champ

#

nah, self-hosted and self-configured/tuned

long marsh
#

If you can avoid the the complexities of managing a cache, I’d say go for it

#

DynamoDB could technically be a cache itself … but the usage pricing would be brutal

delicate zephyr
#

I'll be caching the function responses in our internal SDK

long marsh
#

It’s a cost problem over a performance problem

#

Thanks for the chat, Luke! It’s always a pleasure 😀

delicate zephyr
long marsh
#

Side note - hope you got the job!

delicate zephyr
delicate zephyr
#

unfortunately

long marsh
#

Damn! Sorry to hear that 😔

delicate zephyr
#

Job hunting is a pain in the ass honestly

long marsh
#

Especially right now

#

In your country, is leetcode abused as well?

delicate zephyr
#

no idea

#

I dont have the time or the mentality to push myself through that crap

#

but probably

long marsh
#

Hopefully something comes up for you.

It’s insane your resume / experience

#

Especially for someone of your experience

delicate zephyr
#

Honestly

#

they don't seem to care for my experience

long marsh
#

Makes sense

#

They don’t recognize the value without a name attached

#

Name = company

delicate zephyr
#

Yup

long marsh
#

Some juniors that were hired at my job can’t even spin up an HTTP server.

delicate zephyr
#

Luckily topstats is founding into one

#

:^)

long marsh
#

And they’re paid $97k USD

delicate zephyr
#

Seeing juniors like that get hired knowing that they get paid that makes me wanna crawl into a corner

long marsh
#

They’re great at leetcode and gamed the system to get in

wheat mesa
#

Leetcode is a pile of shit imo

delicate zephyr
#

how that makes me feel

#

lmao

queen needle
wheat mesa
#

It’s less about the hiring process and more about how motivated people are to learn

long marsh
wheat mesa
#

He’s a web dev lol

wheat mesa
#

He didn’t know the difference between .Wait and await in C#, which is pretty bad because .Wait is synchronous/blocking and spins the thread

long marsh
wheat mesa
#

C# ASP.NET, Springboot, and html/js/css stuff

#

If you asked that man to start a project from scratch tho… good luck

#

I’m exaggerating bc I’m sure he could figure it out but it’s concerning that his code quality feels worse than the interns 😭

long marsh
wheat mesa
long marsh
#

I've legit never touched C# in my life, but I assume ASP.NET is an opinionated web framework with a templating engine built in. Analogous to Ruby on Rails or Django.

wheat mesa
#

One of the worst technologies I’ve ever worked with

#

It’s SSR, basically a mix of C# and HTML. Horrendous.

#

Working with bad tech stacks is nice because it makes you appreciate the good ones so much more

long marsh
#

SSR is fine, but what in particular makes it awful to work with? What framework would you prefer to use if you could?

#

For the most part, the majority of the enterprise-ready frameworks (imo) are SSR / stable / boring.

#

There's obviously stuff like NextJS that bleeds the concept of backend/frontend ... but other than that?

wheat mesa
#

I’d much prefer a normal SPA with Vue, the reason it’s awful is because it’s an older technology not meant for modern use cases with a lot of reactivity. There is no reactivity, so you have to sync backend and frontend state manually with javascript if you don’t want to do a full page reload every time. The project I’m on was intended to be somewhat small, so they chose it for simplicity, but now it’s large and the client wants lots of state updates without page reloads

#

Most of our bugs come from the fact that making a small change often interferes with other state changes that need to occur, but unless you have a deep understanding of the app, you don’t know what parts need to change

#

The entire stack is just outdated and a pain in the ass to work with

#

I’m going to be the last intern on the project because they said the app has gotten too complex and they only have lead devs on it from now on after I’m gone

#

So thankfully I’ll be moving on to a different internship in June but man, razor pages is awful

quartz kindle
#

unless you have a direct line with 1ms latency or something

long marsh
prime cliff
#

Razor has been one of the best modern pieces of software for all C# users

#

It's like react on steroids you just need to use it right

prime cliff
wheat mesa
prime cliff
#

Both just work as intended and the syntax and flexibility of it is just really nice to use

long marsh
#

It actually does a lot more? Like DOM manipulation?

#

Correct me if I'm wrong for sure – I'm not really in the web dev space all that much

prime cliff
#

Yea razor is more like server-side components but the syntax is template-like react

long marsh
#

Just read up on Blazor haha

#

Apparently it's more analogous to react?

prime cliff
long marsh
#

Does anyone here do file manipulation in their Discord bots? Ie. like drawing out a checkers board for example?

prime cliff
#

Basically each element can be either pure html/css like the table or you do components like the buttons, pagination, inputs with customization.

Razor itself though can template every single text and component and render it based on server data, open/hide stuff on click (without js) and a bunch of interactivity if you use blazor

long marsh
prime cliff
long marsh
delicate zephyr
#

skiacanvas is signficantly better and faster than node-canvas

prime cliff
#

Depends on language and how it's implemented really and i use my own image gen api too

#

I use skiasharp aswell

long marsh
#

But fast enough that it's not noticeable?

delicate zephyr
#

NodeJS is inherently single thread unfortunately

prime cliff
long marsh
#

Sorry, wrong terminology on my end

#

I assume that anything that does image manipulation / image generation would block the thread right?

delicate zephyr
#

Not that i've seen, async wise anyway

prime cliff
#

They can be done in their own thread as long as you don't spam open read files that would be blocking

delicate zephyr
#

^

#

Nice thing about skiacanvas (atleast from what I can tell) is that the loadImage function even if its reading from a file doesn't block for some reason

long marsh
#

As far as I know, node-canvas is bound to the CPU – therefore likely blocks the thread

#

But it may happen so quickly that it's not noticeable until massive scale

delicate zephyr
#

more likely

#

SRA see's 30,000 requests a day

#

and I see no slowdowns on the API side

long marsh
#

That's actually wild

delicate zephyr
long marsh
#

Luke, how many products to you maintain??

delicate zephyr
#

Uhhhhhhhhh

#

TopStats (Formerly DBl Statistics)

  • I work on this with marco and xig
    PyroCDN - I own
    Some Random API (there is history to this one) - I own
    Shiro - Currently shelved but has 15k servers
long marsh
#

All in TS/JS?

delicate zephyr
#

DBL Statistics has TS/JS and GoLang

long marsh
#

I love Go!

delicate zephyr
#

Oh and I have dbot.dev

#

which is just an image api

long marsh
#

I worked at a company that used GO for about 9 months under contract. Was a great time.

#

Paid me well too

delicate zephyr
#

I learnt go in like

#

3 months?

long marsh
#

Yeah GO is simple

#

I love the simplicity of that language

delicate zephyr
#

same

long marsh
#

What did you use it for? Did you offload some specific portion to it for performance reasons?

delicate zephyr
#

Nah just to learn it

long marsh
#

Also LOVE the fact it compiles to a single executable

delicate zephyr
#

wrote dbot.dev it in

long marsh
#

The website?

delicate zephyr
#

there's no landing page atm

long marsh
#

OK

#

love it haha

delicate zephyr
#

it see's some usage

long marsh
#

That's wild!

#

My website gets about 8k visitors/mon

#

But it's dead simple and I haven't maintained it in a while

delicate zephyr
#

topstats btw

long marsh
#

What analytics platform is that?

delicate zephyr
#

Plausible

#

self-hostable

long marsh
#

Ah!

#

I knew it was that

delicate zephyr
#

this is the landing/docs for SRA

long marsh
#

How much do you pay for all of your websites?

#

Hosting I mean

delicate zephyr
#

we split 200 euro/month between us

long marsh
#

I figured it'd be somewhere in that range

delicate zephyr
#

turns out storing 2.2billion rows of data takes some power

long marsh
#

I hope you make some money from this?

delicate zephyr
#

We will when we release premium

long marsh
#

Luke, ever thought about working contract / freelancing?

delicate zephyr
#

I tried

#

I cant seem to find any of the decent sites

long marsh
#

You went through a recruiting agency?

delicate zephyr
#

Tried that

#

I never get any calls

#

just the spam emails

long marsh
#

That's interesting

#

I guess not having a name tied to your resume is the annoyance

delicate zephyr
#

Gotten to the point where since I'm working on all these projects

#

im just gonna try and get some money flowing from them

#

TopStats is a joint venture tho

long marsh
#

That sounds like fun

delicate zephyr
#

it is

#

its awesome

long marsh
#

Do you have any experience with Python?

delicate zephyr
#

I do

long marsh
#

I'm thinking about doing my next bot in Python simply because I'm the fastest in it.

delicate zephyr
#

My only gripes with Python:

  • Async
  • Syntax
sharp geyser
#

python itself isn't a bad language

#

Main reason people hate it is the syntax

long marsh
#

But it's come a long way if I'm being honest

sharp geyser
#

Haven't really used async in python

long marsh
delicate zephyr
#

in all honesty, you don't need to be quick
I stick with JS for most projects because if you build it right it'll scale

long marsh
#

JS is leagues faster than Python

delicate zephyr
#

like your stateless app, once load balanced can scale infinitely for example

#

at that point you just need to scale your databases

sharp geyser
#

I use C# for most of my projects now

long marsh
sharp geyser
#

I used to be a JS/TS dev for like 4 years

long marsh
#

Yeah, let's be honest here: the language is typically NEVER the bottleneck when doing web development.

sharp geyser
#

Then I swapped around to stuff for my industry

delicate zephyr
#

I have experience all the way from Infrastructure, to Backend to Frontend

#

granted my frontend needs work

delicate zephyr
#

but Shrug

sharp geyser
#

My frontend is terrible

#

I want to gain experience in infastructure though

long marsh
#

I've done CI/CD, Infrastructure, API, cloud operations admin, etc.

#

All paid roles by various companies

delicate zephyr
sharp geyser
#

I do backend programming mostly, and even that is a bit on the rough side

delicate zephyr
#

deploying shit is the worst

#

WiLl It WoRk

long marsh
delicate zephyr
#

"Btw this should just deploy and work btw"!

#

sure.

#

never in my life have I ever need a "works as intended"

#

something goes wrong

#

every time

long marsh
#

At my first gig, we were a full AWS shop. As the infrastructure engineer, I built everything in AWS Cloudformation yaml templates.

#

Nowadays, it's all AWS CDK

delicate zephyr
#

I dont handle any of the deployments anymore
And I will stick to making every service I work on, have an autodeployment setup for dev and prod

long marsh
#

At other companies, it's Terraform

delicate zephyr
#

I'm on holiday and you break something? oh well, just fix it and it'll deploy

long marsh
delicate zephyr
#

so they can setup an env

#

or I run a dev db for them to connect to

long marsh
#

What if you need managed service?

delicate zephyr
#

Setup a dev env for it with a duplicate schema

#

stripe for example has sandboxes

long marsh
#

Who setups the dev env for them?

delicate zephyr
#

I tend to keep one on at all times

#

we also connect to them using a VPN

long marsh
#

What if you get hit by a bus?

#

See my point? haha

delicate zephyr
#

yea I know

long marsh
#

Ever used Terraform?

delicate zephyr
#

I'm planning to document everything in notion for topstats

#

for that reason

delicate zephyr
#

never got a chance to use it

#

since we self-host everything

long marsh
#

Self host on what platform?

delicate zephyr
#

Hetzner

long marsh
#

Or do you have a server rack yourself?

#

If someone deleted the server today, what would happen? How long would it take you to spin up a new one and recover everything?

delicate zephyr
#

tbf not long

#

everything is stored in github in a docker image

#

and the env is saved in 3 different places

long marsh
#

Btw, I'm not saying what you have isn't sufficient. Just providing examples why terraform is important haha

delicate zephyr
#

yea I know

#

terraform is mint

#

just gotta work differently when its not at your disposal

long marsh
#

Terraform: spin up hetzner instance
Ansible: configure live server and install stuff like kubernetes / docker on the server
Kubernetes: configure the nodes on the ansible server
Application: have a kube config

#

You can skip Ansible altogether if you use a managed kubernetes service

delicate zephyr
#

in all fairness, terraform is great

#

and it's awesome for VPS spin ups

long marsh
#

It's not needed if you're not at a certain scale

delicate zephyr
#

I've just never liked being heavily reliant on cloud

long marsh
delicate zephyr
#

After the OVH fire kekW I refuse

long marsh
#

In an enterprise setting, not managing servers saves literal millions of dollars per year.

delicate zephyr
#

-# this is a joke btw

long marsh
#

Yeah I know haha

#

I definitely get that you know your stuff lol

delicate zephyr
#

using vps's for what we do

#

would cost us practically almost triple I think it was

long marsh
#

100%

#

You shouldn't do it at your scale

delicate zephyr
#

btw if you wanted to know the setup

long marsh
#

What is qemu? Why does that sound so familiar?

delicate zephyr
#

vms

#

it's a standard AX102

  • upgraded ram to 192GB
  • Additional 22TB HDD
  • /28 subnet
#

thats why it's 200/month

long marsh
#

sshhheeessshhh

#

I'll just continue with my free bot lol

delicate zephyr
long marsh
#

I get free AWS credits to be fair

delicate zephyr
#

Ive been paying out of pocket for a while tbf

long marsh
#

My bot costs around ~$20/mon. But I'm credited $500/yr by AWS

#

So I put everything on it haha

delicate zephyr
#

We put all my invoices in to our accounting software

long marsh
delicate zephyr
#

since jan 2024

delicate zephyr
#

Xig is in NL

long marsh
#

Wait, you're German right?

delicate zephyr
#

im currently in UK

long marsh
#

oof my bad

delicate zephyr
#

all good

long marsh
#

-1.9k ????

delicate zephyr
#

ive been in germany quite a lot kekW

long marsh
#

oooooof

delicate zephyr
long marsh
#

GF there or something?

delicate zephyr
#

yea

#

Ive been funding projects like this since like 2022

long marsh
#

there it is!

#

I remember associating you with germany for some reason haha

delicate zephyr
#

you can tell we're founding the company atm

long marsh
#

jjeeezz

delicate zephyr
#

it'll all be worth it

long marsh
#

I hope so for you!

delicate zephyr
#

hopefully releasing premium on SRA will be helpful

#

5€/month
48€/year

#

tried to make it reasonable

sharp geyser
#

Similar to my pricing

long marsh
#

This entire time user installs could have worked for my bot if I would have set the integration type & contexts correctly on my application command 🤦‍♂️

proven lantern
#

what are these lobbies?

#

docs only have the first 3

sharp geyser
long marsh
long marsh
# proven lantern what are these lobbies?

Side note: still frustrated that they don't have the ENTITLEMENT_UPDATE or ENTITLEMENT_DELETE events as available webhooks. Yet they're under the gateway events ...

zenith tartan
#

@delicate zephyr my bot got rejected?

#

Can u tell why

long marsh
#

How do people keep track of per-server leaderboards in addition to global leaderboards?

sharp geyser
#

Otherwise

#

You can have just a server leaderboard table (or whatever else)

#

Then you fetch every record relating to that user and add up their points

#

Or whatever you use to classify the leaderboard

long marsh
#

So redundantly storing multiple totals per server or hammering the database by fetching / summing all collective points?

sharp geyser
#

You can do it in one db call

#

Most if not all databases allow fetching multiple records

#

Which is rather speedy

#

Then you can just sum the points up

long marsh
#

Got it

sharp geyser
#

I’d prefer method 2 personally

long marsh
#

yeah method two feels cleaner

sharp geyser
#

Storing redundant data feels off to me

long marsh
#

It is typically not recommended for postgres / SQL-like systems ... so it makes sense that it's a code smell to you.

#

It makes sense to redundantly store at certain scales though.

#

But those don't typically hit the 95% of use cases haha

sharp geyser
#

Sure, but most modern dbs can handle fetching multiples of data

#

Not like a user is going to be in more than 200 servers

long marsh
#

true that

#

One last question..

sharp geyser
#

If they are no longer active in a server just prune them

long marsh
sharp geyser
#

Or keep the data in case they join back

#

Up to you

long marsh
#

I'm not really sure how to track that?

sharp geyser
#

Messages is one way

long marsh
#

Am I supposed to listen to updates or prune people who haven't been active in X amount of days from the leaderboard?

sharp geyser
#

Or using the guild member add or remove events

#

When they leave you can track the timestamp and then periodically check if the timestamp has been removed

#

But that’s too much effort

long marsh
#

Nah, I'll just keep the data forever but just filter away older ones

sharp geyser
#

I’d honestly prune them when they leave

long marsh
#

WHERE updated_at ...

sharp geyser
#

Yeah

#

That works as well

#

If it hasn’t been updated in x time delete

long marsh
#

Just filter them out when users look at leaderboards

sharp geyser
#

I mean it should be fine depending on what kind of data you are storing

#

I doubt a users record will take up mbs of storage

sharp geyser
#

That’ll work as well!

long marsh
#

On a leaderboard? Shoot ... it'll be guildId, userId, their score, and last updated at.

#

so ... like no data lol

sharp geyser
#

So basically nothing

long marsh
#

yeah haha

sharp geyser
#

You’re gucci then

#

You could keep it and still be fine later down the road

long marsh
#

On that note, what does your typical "user" record look like in your database? What is the primary key?

sharp geyser
#

I’m different

long marsh
#

is it serial?

#

Is it uuid?

sharp geyser
#

I don’t use autogenerated keys at all

long marsh
#

That's fine

sharp geyser
#

I use the users discord id if its discord related

#

Or my own snowflake generator

long marsh
#

Wait ... back up

#

Is a discord id sortable?

sharp geyser
#

I mean, in what sense?

long marsh
#

Because, if it's not, then you may be inadvertently hurting your performance as you scale

#

Inserting non-sortable ids can lead to performance issues

sharp geyser
#

Iirc it is sortable

long marsh
#

🤷

#

Another note

sharp geyser
#

I haven’t really bothered testing tbh

long marsh
#

Do you prefer discord ids as your primary ... or do you go out of your way to make your own id?

#

for the user?

sharp geyser
#

I dislike uuids

long marsh
sharp geyser
#

I use discord ids since I know it’s a constant

#

I’ll always be able to have access to their id

#

So it’s not like I’m going to wonder how to query the db

#

It’s also unique by nature

long marsh
#

I was contemplating if I should manage my own ids for players / users ... and have a secondary property of "vendorId" for discord's id? The only problem is that I'll always be using the damn vendorId as basically my primary field. Not sure if it'll run into problems

sharp geyser
#

I mean having multiple id fields seems stupid imo

#

I never understood why people do it

long marsh
#

I'll tell you why ...

sharp geyser
#

Especially if the id you end up using is unique already and what you’ll primarily be using to query

long marsh
#

I've also contemplated pushing that problem down the road and having a player table match the id of the vendor ... and creating a "user" table later on if I want to allow users to link their platform-specific "players"

sharp geyser
#

I see

long marsh
#

I may actually release what I'm doing on other platforms as well: slack, Twitch, etc.

#

But I think I can start with a player table and figure that other part out later.

sharp geyser
#

The way I think of it is, if I use the discord id then the user in my db is directly tied to it

#

If you’re wanting multiple platforms then you obviously have to use your own id system

#

Either serial or one you generate

long marsh
#

I'm going to create the concept of a "user" later where they can login to my website and "link" their discord account to it.

#

Or multiple technically

#

so, player for the actual instances of the player. user for my own managed users.

sharp geyser
#

Also I answered your question in #general

#

But it’s bout time I sleep

long marsh
#

same haha

#

Thank you for your help!

sharp geyser
#

My gf will be mad if I stay up too late

#

#longdistance

sharp geyser
long marsh
#

I have the freedom to stay up as long as I want ... as long as I'm not neglecting my child the next morning haha

sharp geyser
#

Yeah that’s fair

#

She’s just 6h ahead of me

#

So if I stay up too late I sleep later

#

And then it’s basically evening for her

long marsh
#

Makes sense.

#

You have a great night, Aaron!

#

By chance

sharp geyser
#

Have a good night yourself

long marsh
#

Have you ever played on Kongregate?

sharp geyser
#

Nope

long marsh
#

Alright cool, just making sure

zenith tartan
#

They said it's clone of eleven but the bot eleven verified on top.gg is now offline this is new eleven bot

zenith tartan
remote lagoon
zenith tartan
remote lagoon
zenith tartan
#

Okk

remote lagoon
zenith tartan
#

@shell tundra heyyy

remote lagoon
#

No

zenith tartan
#

@remote lagoon I'm adding game guess the song will it work to verify ?

zenith tartan
#

@delicate zephyr @next storm

zenith tartan
#

My bot rejected for clone if I add Guess the music

#

It will be verified or not ?

next storm
#

Well this channel is reserved for conversations related to development/coding. If you want any help related to bot you can head up to #support

zenith tartan
#

Okk

earnest phoenix
#

Hey guys, I'm trying to host a bot that is able to run Linux terminal. I don't have a Linux pc but is it dangerous to make a Linux bot? Is it possible for users to use dangerous commands?

I can host it on a free hosting site.

#

I won't run it locally

pearl trail
#

make a sandbox for it

lament rock
prime cliff
#

Even if you do docker it or sandbox it running any remote commands on a server openly like that is always bad

wheat mesa
#

Yeah, you really shouldn’t be running commands openly without knowing what you’re doing. Sandboxing is an absolute must and you’ll definitely need limits to what permissions the user has

long marsh
#

Are gambling bots against discord TOS?

#

Or is it okay if you don't monetize the in-game currency?

#

For example, if users accidentally gamble all their money away ... then can I provide an option to purchase more virtual currency?

#

OR would that be against TOS?

deft wolf
#

I'm pretty sure it would be against ToS because people can lose real money I guess

wheat mesa
#

Not only is that probably a tos violation, it’s probably illegal too

long marsh
#

It'd be more of a "starter pack" where you could purchase X amount of tokens

#

But it's not like you could earn money from it either

wheat mesa
#

I don’t know what constitutes gambling, but this sounds close to it

long marsh
#

Yeah agreed

wheat mesa
#

Yeah that’s the only thing that I would think makes it a gray area, idk the laws

long marsh
#

I'll just monetize skins or something

wheat mesa
#

Since you can’t gain money from it technically

#

Yeah that’s a better idea

prime cliff
#

Gambling stuff isnt allowed in app directory but not really against ToS i think

delicate zephyr
#

Basically if they can put in real money and lose real money, and have the ability to withdraw real money then it's not allow on AD

#

if it's token based (like dank memer) you're fine

#

tho tbh i dont see the benefit with AD tbf kekW

#

unless you're on the front page ofc

wheat mesa
#

Even if it might be allowed on discord itself

#

You still have to comply with your local laws and regulations. If it’s genuinely gambling, then it’s problematic. If it’s something more cosmetic, it’s probably fine

delicate zephyr
#

digital currency is how most places get around it

wheat mesa
#

Yeah I’m not super familiar with the actual legal requirements but it’s just a dangerous game to play if you’re not careful

delicate zephyr
#

it's why steam ran into the issue with csgo skins

wheat mesa
#

If you have some sort of system like that I’d probably consult a lawyer before releasing it publicly

delicate zephyr
#

whilst the lootboxes themselves didnt get considered gambling, it fell into a grey area due to the value of the skins themselves

#

if you dont let them withdraw real money you'll be fine, personally

#

it'll just fall into the same catergory as something like candycrush/fake poker

wheat mesa
#

Ah I see

#

I guess that makes sense as long as you don’t have withdrawal

#

Since there’s no way to profit within the terms of the game itself, only if you break the TOS and sell your items private party

#

Makes sense

delicate zephyr
#

yup

#

Steam fell into the grey area

#

due to them themselves running the market

#

if you can see what I mean now

wheat mesa
#

Yeah I see

#

Plus the market prices are set by private parties, supply/demand, not steam itself

fast sierra
#

am allowed to have a AI chat system in my bot right, i was thinking and i didn't know if that would break an tos of discord

fast sierra
#

thanks

prime cliff
sharp geyser
#

Seems fine

sharp geyser
#

Whatcha guys think so far?

prime cliff
#

Nice although the discord icon looks a bit squished?

#

needs more margin between these

#

Also wait why is the login showing first, last name and date isnt that supposed to be for register or?

sharp geyser
#

I made mistake

#

Didn't change the button to say Register

slow mauve
#

I would center the Login / Register button on the bottom

#

(the one under the password)

sharp geyser
#

Should I add validation to the login form? I feel like it is fine, because I will just display the errors from logging in whether or not they failed yk

lament rock
sharp geyser
#

But what validation would I do on the login form?

lament rock
#

Well. What could cause an error from the server?

sharp geyser
#

If its not the correct email or password

#

Even if they pass in aasdasdad as the email, it will just respond with Invalid Email / Password

#

Should I still do it client side?

lament rock
#

Well that's 1 request you can block client sided at least on your official site

sharp geyser
#

Hm alright then

lament rock
#

Even if the goal isn't ux then it could be reduced traffic to your site processing stupid requests

sharp geyser
#

Fair enough, thanks for the response!

lament rock
#

Still have the server sided validation. Don't rely on client authority!

sharp geyser
#

Ah yeah for sure

queen needle
#

just store a local client cache of every user so you can check if they exist without having to query the backend

#

ez

lament rock
#

:(

brave dawn
#

is it possible for me to add my bot again after deleting it due to a bug in top.gg?

delicate zephyr
#

they may be able to assist you without you needing to take that action

prime cliff
#

vibecat yay filters time

prime cliff
#

🙂 Doing a bunch of filters for stacks, containers, volumes, images and networks

dapper axle
#

Question for yall, I'm very new to webhooks, I have my bot in a docker container on a separate docker-compose.yml than my website, I've gotten my website to transfer the topgg info for voting to my bot, should I buy a random domain for the webhook to anonymize it a little? I'm using python for my bot, and I made sure you can't execute code and sql inject, how safe is it to the webhook on my main bots website?

prime cliff
#

You don't really need a domain for requests as long as you're using https with the IP it will be fine, also people can't see the webhook url

lyric mountain
dapper axle
#

Thank you for awnsering me!!

prime cliff
#

You're only giving your IP out to top.gg in this case noone else can see it

dapper axle
sharp geyser
#

I am going to be 100% with you, you're overthinking it

prime cliff
#

^ top.gg has never had a data breach either, they may have made some goofy mistakes in the past but certainly not to that extent

sharp geyser
#

Knowing you're IP will do nothing

#

Even if you buy a domain, guess what it can still be ddosed cause you have to route that domain somewhere

prime cliff
#

Cloudflare protects from ddos attacks so not really and you can block external access to just cloudflare only

sharp geyser
#

I mean sure

#

but it can still bring it down if its bad enough

#

but no ones going to care enough

#

Its a discord bot

sharp geyser
prime cliff
sharp geyser
solemn latch
#

I've had my servers IP leaked before because I used lets encrypt.

dapper axle
dapper axle
dapper axle
dapper axle
delicate zephyr
#

people do ip scans for open ports

#

we got a /28 ipv4 subnet

#

and instantly had to block ips/access to open ports

#

just use non-generic / freq-used ports and you'll be fine

#

and make sure everything open as auth

carmine flame
#

Hello how can i apply for bot reviewing

deft wolf
#

You want to become bot reviewer?

carmine flame
deft wolf
#

Applications are closed afaik

carmine flame
deft wolf
warm canopy
#

It's great when you can see if Discord had API issues by the sheer amount of interaction failed errors over night 😂

deft wolf
#

Not a big issue weirdsip

carmine flame
deft wolf
#

API response time

carmine flame
#

damn very fast isnt it

warm canopy
#

Looks like it was an unhappy bunny overnight

carmine flame
warm canopy
#

Just wake up with 16 pings going "why bot down?!"

carmine flame
#

i need ideas asap

#

i ma bored

#

am

#

for gambling bot

#

i already did and working but i need ideas

warm canopy
#

I mean, just look at any casino ever for ideas?

carmine flame
#

i need something wild

#

like wild wild

warm canopy
#

A game where you gamble but if you lose it deletes the discord server.

warm canopy
#

You said you wanted wild...

carmine flame
#

but i might try it

#

like on a test bot to see if it actually works

#

i ve never did it

orchid canopy
slender wagon
#

ermm how do i go about using something like better-sqlite3 on a dockerized app

prime cliff
#

@slender wagon you just use a docker volume or bind mount

#

docker volumes live in a pre-defined folder/volume_name and bind mounts are a directory link from anywhere on your host system to the container

slender wagon
#

oh makes sense

#

i totally forgor

#

i just gotta see if like better-sqlite has the option for that

prime cliff
#

That's not an sqlite option that's just how you create a container/compare with the volume argument

slender wagon
#

yes ik thats a docker option

#

but

#

import Database from 'better-sqlite3';

const db = new Database('tokens.db');

#

i gotta find the right way to go about defining it on the code

delicate zephyr
#

easier to keep track of data

#

also easier to migrate an entire project from one machine to another

prime cliff
#

Yea but then that wouldn't really show in docker as volumes you can manage, i use both

delicate zephyr
#

fair

carmine flame
#

what is better storing info in a data base or a json file

#

?

deft wolf
#

Proper database by far

carmine flame
#

my_sqli it is then

small tangle
#

json file is only appropiate for immutable data like a config e.g.

carmine flame
surreal sage
#

postgresql

#

prisma orm

silk forge
#

@delicate zephyr

delicate zephyr
silk forge
gilded plankBOT
#

@silk forge

topgg Volunteer Applications

Hey! It seems like you're interested on volunteering for Top.gg. We're glad for any help we can get regarding our server events, support articles, bot reviewing, moderation, and more!

topggReviewer Reviewers
Reviewers are Top.gg staff and must be 18 or older. Reviewers review the discord bots submitted to the site before they are listed to make sure they follow our rules

topggModerator Moderators
Reviewer is a stepping stone to Moderator - if you wish to be a Moderator you must first apply and be accepted as a Reviewer.

topggDotRed Applications are currently: closed
topggDotRed We open applications when we need more Reviewers. Please keep an eye on #announcements for more information!

silk forge
quaint rampart
#

i want an image accessory instead of thumbnail accessory in sections

#

it would look so clean

#

theres a long space, when you have text thats just empty under thumbnails

#

it makes no sense to not have one

ancient cedar
#

i need 24/7 hostong, PLEASE HELP ME HO HOSTING THIS

deft wolf
#

Rent a cheap VPS and host your bot there

last yoke
#

or use an old laptop/pc!

wheat mesa
#

If you’re going to selfhost then you should do it on something small and power-efficient, like a raspberry pi

last yoke
#

fair enough

wheat mesa
#

There is such thing as free VPS tiers as well, most will require a debit card to prevent abuse

last yoke
#

i host my bot on a old laptop

#

but i dont care about power haha

wheat mesa
#

It’s just clunky to deal with

#

I have a raspberry pi set up running a website right now through cloudflare tunnels, super small, no noise, super power efficient

last yoke
#

nice

#

i use an old laptop coupled to my game laptop with teamviewer 😂

#

but love the pi tho

#

i had the pi 3b+

neon flicker
#

Does Discord API support the new feature application-entry for Discord servers like to log, accept and deny them?

#

This is actually what I'm talkng about

deft wolf
#

It's not documented yet afaik

prime cliff
#

Try it and see :/

silk forge
charred nest
#

-upto

gilded plankBOT
#

topgg When will my bot be reviewed?

Our current average review time is 1-2 weeks.

Some bots may take longer to review than others depending on their features. Because of this, we can't guarantee your bot will be reviewed as quickly as someone else's, and there's no exact timeframe for approval. There's also no way to check your position in the queue — but remember, you're not first or last!

You're free to edit your bot's page anytime, both before and after review. This won't affect your place in the queue.

You can read more about our review process here: How the Reviewing Process Works.

topgg_ico_bulb In the meantime, please make sure your bot follows all of our Bot Guidelines for a quick and smooth approval!

charred nest
#

for further questions regarding bot reviewing/top.gg in general, feel free to head over to #support

charred nest
#

yes ^^

silk forge
charred nest
# gilded plank

for further questions regarding bot reviewing/top.gg in general, feel free to head over to ⁠support
see the replied embed i sent

quartz kindle
#

ok why the heck is textDecoder so slow at decoding multibyte utf8

neon leaf
surreal sage
#

What are Discord's webhook ratelimits based on?

#

As in, would having multiple IP addresses use the same webhook change anything

#

Asking to see if deploying a webhook proxy into multiple regions might help

quartz kindle
#

rate limits are per channel and global

#

webhooks included afaik

#

so 5 messages per 5 seconds per channel

#

and 50 per second global

ancient cedar
#

hi

plain coral
ancient cedar
#

why my bot not get access to the emote?

prime cliff
#

Why are some of the json keys full capitals and the rest lowercase xD

ruby marten
#

From the looks of it you're using the emoji feature in discord developer portal. it should work the same so it could just be your code being out of wack

ancient cedar
#

i trying to fix this..

ruby marten
#

well to be honest have you tried looking at the code for embed to see if you are loading the json file correctly?

#

check the way you're loading the json file and add some debugging try statements.

small tangle
prime cliff
#

Idk how you mess up css that well it clips into other elements

pearl trail
#

mine didn't look broken PepeGlasses

prime cliff
#

Probably broken under specific cases

ancient cedar
#

how to report the bug?

prime cliff
#

What browser/device you using?

ancient cedar
ruby marten
# ancient cedar PC

Browser is like chrome, firefox, edge, etc.
Device is like Mobile IOS/Android, Tablet, Chromebook, Laptop, etc
This can also include your OS like Windows, Ubuntu, Arch, Mac, etc

ruby marten
#

try a different browser see if it fixes it

radiant kraken
long marsh
#

Is anyone using the content component in the new v2 components?

deft wolf
#

You mean Text Display?

long marsh
#

My primary reason for asking: does it support all the same markdown functionality of the prior content? It has an example message that showcases it, but I'm having difficulty making the timestamp work 🤔

deft wolf
#

Yea

long marsh
#

Subscript seemingly doesn't work either

#

Could just be a skill issue

deft wolf
long marsh
#

alright. skill issue then

#

Thanks for the help @deft wolf !

deft wolf
#

Np

long marsh
#

Perfect 🙏

round cove
#

How does posting stats work for sharded bots lmao

sharp geyser
#

You'd collect the stats from all shards

long marsh
sharp geyser
#

I assumed they meant like, getting the stats from the shards

round cove
#

I never updated top.gg with my bots stats so it's always said 0, but im close to 40k so thought I'd do a one time post.

sharp geyser
long marsh
# round cove Thanks lol

Is that what you mean btw? How to post the stats of each shard to topgg? Or were you asking to get a collective number for your own statistics?

#

I love that I don't have to deal with sharding anymore.

#

It's not a big deal, but it's way simpler with the HTTP interaction endpoint method.

round cove
#

I didn't want to bother collecting the shards info so if they had an API endpoint like you sent then that's perfect.

#

Now why would it claim 400, lmao

#

Don't tell me it actually wants all the bot info too, there's no shot..

#

grrrrrrrrrrrrrr

#

getting stats works fine, what the hecky

#

after doing the get, I did another post and it worked that time