#development

1 messages · Page 302 of 1

sharp geyser
#

Yeah I mean I definitely played with the idea, but then threw it out. There's still the posibility of pre-defined roles that can eb assigned, but dynamically creating the roles aren't possible. They are defined at "compilation" time is ig the best way to describe it. You can't create them at runtime

radiant kraken
#

have you thought of the possibility of adding more roles in the future?

sharp geyser
#

There definitely will be as the app is more fleshed out.

frosty gale
#

idk if its just me but gemini sucks so bad

sharp geyser
#

Right now only the developer role exists cause thats as far as my implementation ahs gone for now

neon leaf
sharp geyser
#

I already have a hierarchy of positions in the platform planned out

frosty gale
neon leaf
#

yeah it does have acute dementia

sharp geyser
#

I've tried both claude pro and gemini pro, claude was honestly the better one for me

frosty gale
#

claude is OP

#

idk what crack theyre feeding that llm

sharp geyser
#

no idea

#

but it has hella fuckin insights on even the most obscure libraries

#

💀

#

@pearl trail oh also, roles are secondary, they only exist for the permission system. I don't really check for roles in the backend anymore.

#

PBAC rather than RBAC now

pearl trail
#

oh wow, some complex thing there

radiant kraken
sharp geyser
#

I've been having a lot of fun with the backend

radiant kraken
#

awesome! i am so happy to hear you having fun with the backend and not being burned out!

#

as you should be!

pearl trail
#

might want to learn others

radiant kraken
#

i love your sense of curiosity! topggHappy

sharp geyser
#

especially since you already use RBAC

#

Just make resources with actions attached to them.

e.g

const statements = {
  organization: ['create', 'read', 'update', 'delete']
  listings: ['create', 'read', 'update', 'delete']
} // this is passed to my acHandler

const developer = acHandler.newRole({
  organization: ['create', 'read', 'update', 'delete']
  listings: ['create', 'read', 'update', 'delete']
})

const member = acHandler.newRole({
  organization: ['read'],
  listings: ['create', 'read', 'update', 'delete']
})

I do acHandler here cause I have one, but really anyway you can keep track of the new roles is fine.

Then in your backend api routes, just check for permissions. Look at the role(s) they have, and check for the permissions those roles are assigned

radiant kraken
#

interesting!

sharp geyser
#

Eh I did a rather poor explanation since I use a ac handler but the gist of it is

#

define resources and actions, then define what actions and resources those roles can perform

radiant kraken
#

i see i see, thank you aaron!

stark kestrel
#

Looking at the code, looks like ABAC

radiant kraken
sharp geyser
#

At it's core its just permissions to perform an action on a given resource

frosty gale
#

what about PNAG

sharp saddle
#

can't use emojis in autocomplete?

spark flint
#

pretty sure you can

#

but you pass as an emoji instead of sending the emoji like that

sharp saddle
radiant kraken
#

finally made an actual react app for the first time!! 😃

#

better late than never ig lul

#

i'm so happy that i finally understood what useeffect and usestate mean 😭

#

i feel like a newbie all over again

sharp saddle
#

for the first time

radiant kraken
#

LETS GOOOOO

#

🚀

sharp saddle
sharp geyser
#

very easy to understand em too

sharp saddle
sharp geyser
#

useEffect is used quite a bit in the current temporary frontend for Mercatus

queen needle
#

Lots of people fail

sharp geyser
#

yeah for sure

#

I've run into quite bit of times where i've used them "out of order"

queen needle
#

good read

sharp geyser
#

This happens A LOT when you have nested function calls

#

that also make use of the hooks

radiant kraken
#

useToken is ```js
export default function useToken() {
const [token, setToken] = useState(() => localStorage.getItem('token'))

useEffect(() => {
const storageHandler = () => setToken(localStorage.getItem('token'))

window.addEventListener('storage', storageHandler)

return () => window.removeEventListener('storage', storageHandler)

}, [])

return token
}

sharp geyser
#
function Form() {
  const [firstName, setFirstName] = useState('Taylor');
  const [lastName, setLastName] = useState('Swift');

  // 🔴 Avoid: redundant state and unnecessary Effect
  const [fullName, setFullName] = useState('');
  useEffect(() => {
    setFullName(firstName + ' ' + lastName);
  }, [firstName, lastName]);
  // ...
}
``` im sorry....but anyone who does this
wheat mesa
radiant kraken
#

SHUT

#

this is for my homework

sharp geyser
#

Wait until null runs into out of order issues

#

Ima be real I prolly dont need useEffect for half of what i do either

#

but then again

#

im not the frontend guy so idrc mmLol

#

I already did my homework when deciding to use @tanstack/query

#

Been very helpful in caching and relieving old data

radiant kraken
#

pls roast my newbie react skills 😃

#

it also keeps me happy at 5am

queen needle
#

that specific part

radiant kraken
#

😭

sharp geyser
#

kind of reminds me of the debounce method...withotu setting it back to false ofc

#

Honestly, idc how the app perfroms so long as it performs well enough to make a viable MVP

queen needle
#

Fair

radiant kraken
#

why

wheat mesa
#

Probably shouldn’t use localStorage for a token unless it’s a temporary JWT access and you have a long-lived refresh token saved in an http only cookie

queen needle
#

Also unrelated why axios over browser fetch

wheat mesa
#

The code itself is fine though

sharp geyser
#

I wonder what waffle and pancake would think if they saw my current code 💀

radiant kraken
queen needle
radiant kraken
#

sdddsifdsfhsdf

wheat mesa
sharp geyser
#

They will likely teach you the downsides of it later then...hopefully

#

if its a competent class

wheat mesa
#

You won’t ever be able to prevent the end user of the token from seeing the actual token, but you can prevent attackers from accessing it via JavaScript

wheat mesa
radiant kraken
wheat mesa
#

Tokens should probably be stored in an HttpOnly cookie

sharp geyser
#

Im actually really curious now

#

Waffle, do you think you could review my code at some point

wheat mesa
#

That way the only code that can access it would be the server it’s intended for

sharp geyser
#

I'd like to know if my skills are any good or if i've gotten rusty

sharp geyser
#

I think ur still a member of the mercatus org

#

nvm ur not

radiant kraken
#

wait waffle have you seen my rust code

wheat mesa
#

@radiant kraken generally the user auth flow is something like this

  1. User initiates login request to server with credentials
  2. Server verifies credentials
  3. Server issues an HttpOnly cookie in the headers of the response containing the access token
  4. Client app includes this cookie alongside every request that requires authentication
  5. Server verifies identity of user by reading the authentication cookie in the incoming future requests
radiant kraken
wheat mesa
queen needle
wheat mesa
#

Not if they’re HttpOnly

queen needle
#

I mean I found a website that stored cookies as user_session=userid

#

And I was able to edit it in browser and be any user

neon leaf
#

🧠

wheat mesa
#

Cookies marked as HttpOnly are completely inaccessible to JavaScript, and it is the browser’s job to manage them

#

You can still access them as the end user

neon leaf
#

I once found a site that used jwt for auth, but didnt actually verify the jwt signatures..

wheat mesa
#

You just can’t access them via any sort of javascript

queen needle
#

OHHH

#

I was mixing up my attacks

sharp geyser
queen needle
#

XSS the site has injected scripts that run for every user

neon leaf
#

even better was that the jwt just stored the user email, and the admin email was publicly known

radiant kraken
#

im so sorry for the hideous code guys

wheat mesa
#

There’s a few different forms of XSS and they’re fairly rare now, but yeah that’s the general idea

radiant kraken
#

please dont take it seriously, its just my homework

queen needle
#

yeah okay I get it now

wheat mesa
queen needle
#

but I only store user id in jwt

neon leaf
#

I just dont use jwt for sessions, and do the good old

session_id:session_token in the cookie approach

#

session_id is a random 16 char ascii string, session_token is a bcrypt hash

wheat mesa
#

Yeah I was gonna say, JWT kind of overcomplicates things for simple auth

queen needle
#

is there anything wrong with JWT besides over complication?

wheat mesa
#

Not really

queen needle
#

To work with it is very simple so I've always used it

neon leaf
#

no good way to revoke them

queen needle
delicate zephyr
#

there is

#

just rotate the secret

sharp geyser
neon leaf
delicate zephyr
#

or store a unique ID in the JWT

#

and invalidate it via the ID in redis

queen needle
#

well my week project will be redoing my entire auth to have revokable tokens, and use http only cookies

neon leaf
wheat mesa
#

Generally speaking I prefer the refresh token & access token approach if you really need to use tokens

delicate zephyr
neon leaf
#

depends

queen needle
delicate zephyr
# neon leaf depends

in all fairness a lot of places just rotate the session token with each deployment

#

if they're on a regular release cycle (like 1 release a month)

neon leaf
#

yeah, in my case I need to replicate sessions across the globe without them randomly expiring before their actual expiry and having the ability to revoke individual sessions

wheat mesa
#

If you really want to not worry about auth, use ASP.NET Identity ;^)

neon leaf
#

jwt just doesnt make sense in such a case

wheat mesa
#

The goat of web frameworks

sharp geyser
#

I use better-auth for my stuff

#

It's actually been a godsend

queen needle
neon leaf
#

I dont use any external auth framework for my stuff because im paranoid

queen needle
queen needle
neon leaf
#

also true

sharp geyser
#

I do because I trust the people who are smarter than me

#

Even if I could, I wouldn't bother still.

queen needle
#

that's fair

sharp geyser
#

The amount of effort to re-invent the wheel

#

Better to focus on more important aspects of your application.

wheat mesa
#

There’s so many other high value targets that would be completely fucked if asp.net identity was insecure somehow

queen needle
neon leaf
#

I really hate github projects that claim to be self-hostable and then require some saas auth stuff to use them

sharp geyser
queen needle
#

because they do nothing themselves

wheat mesa
#

I’m biased because I’ve worked with it a lot but C# feels like they really perfected a solid model for REST API development with asp.net

#

They really struck gold

sharp geyser
#

ahem forgot you need tlds

queen needle
#

/what makes it so good

wheat mesa
#

It’s pretty much plug-and-play

#

And fully extendable/customizable

#

It abstracts a lot of the garbage of auth away from you, and supports role-based auth straight out of the box

neon leaf
#

C# is a really extendible language in general isnt it

wheat mesa
#

Yeah, they designed it to be flexible

queen needle
#

I had to add a permission system into my application but role based off that bat? Sounds amazing

wheat mesa
#

finally some progress on the engine

#

I think I'm finally starting to understand wgpu/graphics programming better now

#

@radiant kraken thoughts?

#

my code is lowkey ass ngl

radiant kraken
#

AWESOMEEEE

#

you are truly amazing!

wheat mesa
#

I'm working on materials next

#

Although the materials won't really matter until I have lighting anyways

radiant kraken
#

good luckk!!

wheat mesa
#

real 3d blender models working now

warm surge
#

@frosty salmon what lang do you use on your bot?

warm surge
#

shit idk python as much

frosty salmon
#

im more interested in the domain concept

#

i bought a domain, except im not really sure what to do with it pertaining this

#

i am using FastAPI in code, bought the domain off cloudflare

wheat mesa
#

You're talking about the webhook stuff?

frosty salmon
#

yh

#

currently i have the code to capture the webhook responses

#

but no connection

wheat mesa
#

It's probably because your API has to be publicly accessible to top.gg, using localhost won't work

clever tundra
#

Ngrok or cloudflare tunnels are the next easiest route

#

Ngrok isn't great tho

#

Not ideal long term

#

I personally use cloudflare tunnels

wheat mesa
#

Technically if you want to test locally, you can point top.gg to your domain, then have your domain's DNS point to your home IP, then port forward your API on your home network to the port that the DNS points to

#

But that's a lot of work, and you have to remember to disable the port forward and stuff after you're done testing. You're better off with cf tunnels

clever tundra
#

I used to do that before CF and yeah it's not fun, not pleasant or anything like that

#

Plus having your IP exposed isn't the best

wheat mesa
#

Yup. Anyone can do a simple traceroute command and see your home IP. Not like it's crazy sensitive info, just probably not the best to have exposed

frosty salmon
#

yh i plan to use a tunnel

#

issue is, im not planning on maintaining a local host

#

i have a buddy that has a rasberrypi, i plan to import it there, idk how that would work tho

wheat mesa
#

You can still tunnel from an rpi

frosty salmon
#

is there no way to generalize this process so i dont have to?

wheat mesa
#

There is a utility called cloudflared on ubuntu/linux distros that allows you to have a systemd service running for cf tunnels

#

If you didn't want to use tunnels then you'd have to set up your DNS to point to your buddy's IP, which again, not optimal

#

Either that or you can use a "real" cloud hosting provider, that way you don't have to use a tunnel, since it's no longer your home network

frosty salmon
#

so either which way I need cloudflare?

wheat mesa
#

Pretty much, if you plan on self-hosting

#

If you use a proper cloud provider like AWS, DigitalOcean, etc., then you wouldn't need cloudflare tunnels

frosty salmon
#

local hosting is just for testing, i cant rely on local, i plan to tranfer it after all the testing, so i just wanted to kinda set everything up so it's a smooth transfer

wheat mesa
#

There will be some level of manual setup involved no matter what once you switch from a development environment to a production environment

frosty salmon
#

ic

prime cliff
#

I use ssh tunnel instead to forward my localhost server stuff to pc using bitvise

wheat mesa
#

You could automate some of the process with a CI/CD pipeline, but from the stage you're at, that sounds like way more work than it's worth

frosty salmon
#

yh, it's not smth big, very small project

#

well, i have the domain, i think i do have cloudflare installed, i'd have to double check, and i've integrated code to accept it calls to the webhook, so i just need to create a tunnel and link it right?

wheat mesa
#

Pretty much, yup

hidden gorge
#

haven't worked with the Discord API in a while ik the Embed system was updated and just wanna know if embeds are still locked down to one attachment

queen needle
#

Gallery component allows more I believe

clever tundra
#

@solemn latch @harsh nova scam ^

lament rock
#

How to fit every tech buzz word into 1 message

radiant kraken
#

i mean it gets the investors going

ivory siren
shell echoBOT
#

Banned nana3virtue

hidden gorge
#

gonna take a guess and say im setting the name wrong?

sharp geyser
#

is this for an embed?

ivory hawk
#

The id =/ name

hidden gorge
sharp geyser
#

I see, never used it so nvm

ivory hawk
#
  "type": 3,
  "custom_id": "dept_select",
  "options": [
    {
      "label": "Hartford Police Department",
      "value": "HPD",
      "emoji": {
        "id": "1460317232448934123",
        "name": "hpd"
      }
    }
  ]
}```
hidden gorge
ivory hawk
#

Custom emoji within v2 require a name and an id

#

So name: then id:

hidden gorge
ivory hawk
#

No problem:)

hidden gorge
ivory hawk
hidden gorge
#

is there a proper way to cache/store interactions or embeds so that they stay working after the bot restarts?

deft wolf
#

What kind of interactions?

hidden gorge
# deft wolf What kind of interactions?

for example my bot sends embeds to a certain channel for user appeals but on one of my older bots that did this the embeds buttons stopped working and kept crashing the bot because the bot kept restarting

#

unknown interaction was the error i think

#

i really havent worked on discord bots in a year or so

deft wolf
#

You can listen directly to the interaction_create event

hidden gorge
#

i'll try this in a bit and i'll see how it works

deft wolf
#

Afaik it's somewhat different in python tho? I'm not sure

hidden gorge
hidden gorge
ivory hawk
#

they exist in py

hidden gorge
wheat mesa
hidden gorge
wheat mesa
#

I’m assuming you can save the interaction ID, then fetch it on a restart

#

Haven’t worked with discord stuff in a while though, but I’m assuming that’s what everyone does

hidden gorge
ivory hawk
#

we use custom ids and buttons and such just reconnect with the custom id

wheat mesa
#

"Reconnecting" with the custom id is the same as storing something persistently

queen needle
#

state mangement is always state mangement

sharp saddle
ivory hawk
#

I use js too though

prime cliff
#

No way the .py in your name makes you a python user shockers

ivory hawk
limber horizon
#

hahaha i should do that toooo

ivory hawk
#

Somebody asked me the other day what I code in though...

limber horizon
#

forehead smack

delicate zephyr
#

would have been a good joke

neon leaf
#
use std::ops::Deref;

type BBox<'a> = Box<dyn Deref<Target = Box<dyn Deref<Target = Box<u8>> + 'a>> + 'a>;

fn main() {
    let bbox: BBox = Box::new(Box::new(
        Box::new(Box::new(Box::new(9u8))) as Box<dyn Deref<Target = Box<u8>>>
    ));

    println!("Hello, world! {}", *****bbox);
}
ivory hawk
radiant kraken
neon leaf
#

I am the boxer

radiant kraken
#

🥊

hidden gorge
#

it could work might not idk

hidden gorge
#

HOLY SHIT IT WORKED

sharp saddle
#

...

hidden gorge
#

what

neon leaf
#

very interesting

unreal mist
#

owoh

#

whoops

lyric mountain
#

owobowos

radiant kraken
neon leaf
#

its so useful

radiant kraken
#

i know

neon leaf
#

this was my usecase that required it

    fn read_file(
        &self,
        path: &(dyn AsRef<Path> + Send + Sync),
        _range: Option<ByteRange>,
    ) -> Result<FileRead, anyhow::Error> {
        let mut archive = self.archive.clone();
        let size = archive.better_by_path(path.as_ref())?.size();

        #[ouroboros::self_referencing]
        pub struct ZipFileReader {
            archive: zip::ZipArchive<MultiReader>,

            #[borrows(mut archive)]
            #[covariant]
            entry: zip::read::ZipFile<'this, MultiReader>,
        }

        impl std::io::Read for ZipFileReader {
            fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
                self.with_entry_mut(|entry| entry.read(buf))
            }
        }

        Ok(FileRead {
            size,
            total_size: size,
            reader_range: None,
            reader: Box::new(ZipFileReader::try_new(archive, |archive| {
                archive.better_by_path(path.as_ref())
            })?),
        })
    }
radiant kraken
#

interesting

wheat mesa
#

Rust developers vs recursive structures challenge

neon leaf
#

true

wheat mesa
#

(must avoid pointers at all costs)

#

((Box<T> must be treated as a sin))

radiant kraken
#

i am guilty of that second one

#

😔

wheat mesa
#

Me too

#

Box is awesome

radiant kraken
#

me when i hear dynamic, overhead, runtime 🤢

neon leaf
#

sadly this isnt something Box can fix

#

unless I fork the zip library

frosty gale
#
let boxybox = Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(Box::new(67))))))))))))))))))))))))))))))))))))))))))))))))));
wheat mesa
radiant kraken
wheat mesa
neon leaf
#

tho the 67 makes urs come very close

#

my box could be 2000 references and youd never know

wheat mesa
#
pub struct Box<T> {
    inner: Box<T>
}
neon leaf
#

ohno

ivory hawk
#

Never thought id see people argue about a box

neon leaf
#

the box has feelings too

wheat mesa
#

Rust box fans vs C++ smart pointer enjoyers (they are the same thing)

neon leaf
#

me when Arc enters the room

radiant kraken
#

Box<Vec<Arc<Rc<Cell<UnsafeCell<RefCell<T>>>>>>>

#

Arc ❤️

#

can't live without you

neon leaf
#

noone asks about his brother Rc

#

forgotten

#

lost media

radiant kraken
#

i've never found a usecase for Rc

#

though after 5 years I finally found a usecase for Cell

neon leaf
#

I use it in my lang parser

#

same with RefCell

wheat mesa
#

Rc<RefCell<T>>

neon leaf
#

yes

#

that is how I use it

radiant kraken
#

so far it's very rare for me to need those types

#

i had to use Cell as a last resort

wheat mesa
#

Rc<RefCell<T>> isn’t the best idea unless you know what you’re doing

#

I used it a fair amount in my mini JVM

#

Probably just meant I was doing things wrong

#

But rc is just super cheap to clone so it’s nice

radiant kraken
#

what about Pin? have you guys used Pin?

neon leaf
#

for futures yes

radiant kraken
#

(Box<Pin<T>> for futures dont count)

neon leaf
#

but I usually require Unpin so doesnt matter

#

then no

#

also its Pin<Box<T>> no?

radiant kraken
#

right

#

havent used those in so long

#

i ditched using tokio in my multithreaded app KEKW

neon leaf
#

no clue what you would use them for besides making future traits happy

radiant kraken
#

making things non-async actually made it way easier for me

stark kestrel
#

amazing crate

delicate zephyr
warm surge
limber horizon
neon leaf
#

oh my days finding cursed hang issues is such a relieve

steel oxide
#

i need to query a great mind from the wonderful top.gg community prayge
does anyone know if using components v2 would (help) resolve stale users properly?
my thought would be yes since it (can be) parsed as an actual mention...but not 100% sure
example of what i mean attached in screenshot gifGoblinCool

delicate zephyr
#

Long answer, Yes, with a caveat

This only works if you actually use the resolved users from the interaction. If your code still parses the raw string <@ID> manually, switching to v2 alone won’t magically fix stale mentions.

You also need to handle cases where the user might have left the server - v2 still gives you the ID, but the User object might be partial.

steel oxide
lament rock
#

If you are a music bot maker, please never detect when other bots are in the channel and advertise

regal bison
#

what ?

prime cliff
# regal bison what ?

Looks like rythm is advertising itself with a mention when you join a voice channel

#

Yea that's a bit scummy

sharp saddle
frosty gale
#

though they do let you turn it off it looks like with a button on the embed

#

of course, on by default freerealestate

sharp geyser
#

My understanding is it’s not

frosty gale
#

i dont get why cloudflare doesnt discourage the "flexible" tls option, its basically a copout in terms of security and gives a false sense of security

#

full is the best here since you can maintain your own selfsigned cert and not have to worry about third party CAs, still very secure

neon leaf
#

yeah i do full but with valid certs on my side so im not vendor locked in an emergency but can still use some um, invalid certs

sharp geyser
#

my question is, why is Off an option

frosty gale
#

but for 99% of use cases yeah you should use it

wheat mesa
#

I use full strict because I’m lazy

sharp geyser
delicate zephyr
quartz kindle
#

tfw you get banned by your own fail2ban and wonder why the fk your website isnt loading

lament rock
#

Truly magical

pearl trail
#

ong tim new pfp

sharp geyser
jade vault
#

I'm a bet analyst. I'm into betting and gambling click the link on profile to get access

lament rock
#

@solemn latch !

sharp geyser
pearl trail
sharp geyser
#

yuhhh

#

Got a decent bit done

#

Even some minor frontend stuff

#

been using @tanstack/query a good bit, and it's been very pleasent

#

Settings page

pearl trail
#

so you use it for forms too?

sharp geyser
#

nah

sharp geyser
#

It handles caching, stales, and mutations

#

It's also reactive so any data that is mutated can be re-fetched ahead of time OR when it stales it refetches anyways

pearl trail
#

oh, so just like swr but more advanced yeah?

sharp geyser
#

Yeah it’s similar

pearl trail
sharp geyser
#

I don’t currently validate forms KEKW

#

Wasn’t a top of the priority thing considering I handle validation server side anyways, it’s just not "reactive" rn

#

But I would definitely use tanstack for forms as well just for simplicity sakes

pearl trail
#

ahh i see xD

patent ivy
#

Hey! I wonder if anyone can help me. My server uses the Arcane levelling system and I'd like a bot that auto assigns the roles that correlate to levels - however unsure which ones provide that service. If anyone has any answers, please ping!

pearl trail
#

im not sure, i dont use it

lyric mountain
#

besides, the only bot that can give level roles is the one managing the level

patent ivy
#

Sorry!

radiant kraken
#

how was your exams? did you do well?

sharp geyser
#

When you start separating normal users, from say staff, how would you guys differentiate them code wise? Me I would say use a isStaff field on the database table that is a true/false value but I am not 100% certain that will be concise enough without any vaugeness. Mainly because someone could be a student at a campus, but also be staff for the marketplace.

vivid fulcrum
#

I have no idea what you're working on but it sounds like bitflags are in your lane, since you can mix and match those. a user can simultaneously be "staff" and a student, or staff and a teacher. or just a student/teacher without a staff flag. all stored in a single field

#

just be careful not to introduce any illegal states

#

i.e. teacher and student at the same time

stark kestrel
#

Just because you won't have a table with x columns if you add roles or other stuff

eternal osprey
#

hey guys, how do i check whether a user has a tag?

#

using djs v14

#

i don't think its possible, is it?

deft wolf
eternal osprey
#

i am still on djs v14 though

deft wolf
#

primary_guild or something like this

eternal osprey
#

yeah i know, been logging myseld but didn't work.

sharp geyser
#

Are you logging the raw object

deft wolf
#

Also what's the version you are using

sharp geyser
#

discordjs v14 doesn't parse the primary_guild into the user class

deft wolf
#

It was added in 14.22.0

sharp geyser
#

Oh did they finally add it

#

sweet

#

@solemn latch

swift elk
deft wolf
swift elk
deft wolf
#

We don't care

#

Go somewhere else

swift elk
eternal osprey
radiant kraken
#

I LOVE FINITE STATE AUTOMATA 😍🫶

civic sundial
#

@clever tundra do you know about bot hosting . net and wispbyte ?

#

my cookies work around for my music bot is not working anymore

#

its giving me me this error "[https @ 0x5e97c0e60300] HTTP error 403 Forbidden"

swift barn
deft wolf
graceful heart
tacit kindle
#

do you mean u just dont close it ?

graceful heart
quartz kindle
#

i did the same in the beginning

#

but vps is much better than anything else

pearl trail
#
  • you got static public ip (mostly), 99.9% SLA, guaranteed bandwidth
high coral
#

What's the easiest way to track the source of a bot invite? For example so that I can see what % of my bot's invites come from top.gg or another bot list? is it just to put &redirect_uri=... to my own website at the end of the invite link?

tacit kindle
graceful heart
# tacit kindle i see

i run linux on it + i also changed a bit of the settings so i can keep the laptop on with the lid closed

tacit kindle
graceful heart
#

that's kinda if

tacit kindle
#

hm

pearl trail
#

install any linux server distro -> enable ssh -> locate the ip -> leave that somewhere and you access it from anywhere via ssh

graceful heart
teal kelp
graceful heart
teal kelp
#

I just got trust issues with hosting providers

teal kelp
graceful heart
#

i mean it depends on how many servers u got

#

how many u got?

teal kelp
#

1

#

but that’s including all the hardware

graceful heart
teal kelp
graceful heart
#

lol

#

what bots have u worked on?

#

id like to see

teal kelp
#

There’s a lot of stuff you need to learn. The API is very complicated. The one that we’ve got.

#

I only work on the one discord bot now but I’ve had many in the past at this point, I’ve lost track

graceful heart
teal kelp
graceful heart
#

to the bot

teal kelp
#

Most of my other bots weren’t very popular than this one

#

Just say the least

#

And yes, it’s a really good idea to have the voting thing

teal kelp
deft wolf
#

It's probably some kind of indicator that guarantees the quality of service

pearl trail
#

yeah basically that, service level agreement

teal kelp
#

I hosted everything myself

radiant kraken
pearl trail
radiant kraken
teal kelp
#

The last time I went with the hosting provider, they delivered my shit even though I paid for it couldn’t even get my data back

pearl trail
#

ah yes, dont forget 321 backup rule

deft wolf
#

I trust Florian more than I trust myself Prayge

pearl trail
#

teal kelp
#

I hosted myself at home

#

It’s so much easier and you don’t have to stress about it

neon leaf
#

i am very protective of all my data
raid 1 4tb on all boot disks, raid 6 on all bigger arrays, and all data gets encrypted and sent to hetzner storage boxes every night

pearl trail
#

my issue is that providers here are expensive it's just worth more to rent multiple vpses

teal kelp
#

My butt doesn’t do music so I’m all good

#

It only does commands

pearl trail
#

no wonder your butt doesnt do music

teal kelp
#

Where with Telstra and they are okay we’ve had no issues with them

pearl trail
#

xD

teal kelp
#

We’ve had issues with our code

#

There’s nothing to do with the provider

teal kelp
pearl trail
#

nono i'm joking for the "butt" 😭

teal kelp
#

Oh okay

#

You’re all good

pearl trail
#

🙏

teal kelp
#

I wish we could get it to work, but there’s so many issues with it

#

Funny enough, we did roll it back to an older version of it, but it worked for five minutes and then broke

#

And then two months later than my friend bought broke as well, so it’s not just me that the affected with it

radiant kraken
teal kelp
# pearl trail 🙏

Me and my friend had the same problem at the exact same time so I’m not the only one 😂

#

Any only way to fix it is to move it to Java. I confuse to do.

#

Mainly my projects just for fun and to enjoy it and to keep my brain busy

Because of my disability, it’s kinda hard for me to get out to places and do things so this is the only way that I can keep my brain busy

pearl trail
radiant kraken
#

interesting interesting!

pearl trail
radiant kraken
#

hahaha it's fun until you get burned out

#

when i get burned out my project's progress slows down by a lot

teal kelp
#

I’ve got my way

#

I’ve got my waist that I don’t get burnt out

radiant kraken
#

i have like 4 projects right now

teal kelp
#

Only got one, which is good for me

#

So, I don’t really get burnt out

radiant kraken
pearl trail
#

oo, so far been easy ;D

radiant kraken
#

what was the subject(s)?

shadow spire
#

Hm

opaque beacon
#

Hi, i'm new here. I have just created a Bot, is it a channel where i can request for feedbacks on it?

neon leaf
radiant kraken
#

interesting

quartz kindle
#

funny AI slop

radiant kraken
#

kool

#

when i saw your pfp i thought you were luke for a sec

quartz kindle
#

im lukev2

radiant kraken
#

i was like "since when was luke experienced"

quartz kindle
#

lmao

#

the roast

lament rock
#

damn

#

When can us peasants upgrade to experienced even?

radiant kraken
#

you can notify a staff member for it

#

@pearl trail 100% deserves it

#

0x7d8 too

#

you people here are scary

queen needle
radiant kraken
#

pancake!!!

queen needle
#

Also love the new pfp tim

radiant kraken
#

how's your math engine??

queen needle
#

it works okay ish, I haven't been able to test it for it's actual application yet because I'm figuring out gradle

#

It was just made to make math In programming easier to read and understand for robotics

radiant kraken
#

awesome!!

queen needle
#

What have you been working on? How is school going?

radiant kraken
# queen needle What have you been working on? How is school going?

school is going well, i finally understood a chapter on discrete mathematics!! DoggLaugh doing homeworks right now, because i have three of them due this week 😭

i am currently maintaining one of my projects, i've been reconsidering the ideas i've come up for my biggest planned projects

#

i wanna prioritize novelty

#

but it's really hard to find fresh ideas for a platform unless you're willing to go super niche

queen needle
#

Real

queen needle
radiant kraken
#

i've been looking up like-minded reddit threads and a lot of them seem to be "we don't need another [...] platform"

#

and i agree the oversaturation of platforms can be very overwhelming

#

but it's so demotivating

queen needle
#

🙁

pearl trail
radiant kraken
#

yeah more like beyond experienced

#

but jokes aside you seriously deserve it!

#

you're super active here and you know pretty much everything about the web 🤭

neon leaf
radiant kraken
#

too short

neon leaf
#

true

small tangle
#

Missing AbstractBaseClassFactoryProviderImpl

neon leaf
#

so much identation that rustfmt is refusing to format the idented code

stoic surge
#

hey im looking for a graphic designer to my project if you into the topic please contact with me via dm

deft wolf
#

No thanks

rustic nova
#

contract stuff

#

but god they piss me off at work

#

we have SLAs between departments

neon leaf
#

hr dep has 1% sla per year

pearl trail
rotund sequoia
#

hm

civic sundial
#

what is the difference in them ?

#

i downloaded the youtube-plugin-1.16.0.jar but my lavalink cannot detect it

deft wolf
#

I hope you understand that streaming music from YouTube breaks YouTube's ToS, which also breaks Discord's ToS

civic sundial
#

then how is these bots doing it

pearl trail
#

95% they do it by breaking the ToS, the rest uses other platform i can’t tell

lament rock
#

Trade secrets. Music was/is a super competitive area and with youtube being the big no no haram, it left a void to be filled and some people have found good replacements

#

Needless to say, if you use youtube and make that public, you are inviting trouble

#

try finding some radio stations. There are some real good ones I've found just by looking and listening

lament rock
#

explore https://radio.net and use network tools to see if you can get a link that reliably redirects to or is the raw url of the radio station. I think the ones I've added havent changes their links ever

lament rock
#

That's for you to figure out. If you can't, then you probably shouldn't be making a music bot or a music feature. Music is a pretty hard thing to maintain at scale.

#

I speak from experience

eternal osprey
#

hey guys, does npm install scan the package that i am installing for malicious code patterns etc?

#

I am basically trying to do a bachelor thesis about making the install a bit more safe.
Npm as a package manager let me install one big scammy fucking package whilst on bun it flagged it before install.

frosty gale
#

any malicious packages have to be actioned by the npm team

#

although it sounds like bun is just using somewhat basic heuristics to detect this, which means you could also probably evade it relatively easily

eternal osprey
#

i see awesome!

#

That would form a good basis for my bachelor thesis then

radiant kraken
#

@pearl trail just curious, have you used Doppler?

#

just came across it in my uni's cybersecurity chapter, thought it looked cool

pearl trail
#

oh nope, don't even know what is that yet

eternal osprey
#

Its really nice but useless if you dont use ip restrictions (aka their paid developer plan)

radiant kraken
#

lets dev teams distribute secrets safely across their members without needing to publish tokens to the project's git repository

eternal osprey
#

Well, useless is a huge word. But it injects env variables on runtime.

#

so you dont need to keep env variables or secrets stored locally.

radiant kraken
#

mhm

eternal osprey
#

i used it in prod with ip restrictions.

#

Even if someone gets ahold of my doppler cli token, they can’t get the variables unless they are in my list of ip ranges

radiant kraken
#

niceee!!

naive sequoia
#

sup

frosty gale
#

the kernel is usually pretty good at predicting access patterns

frosty gale
neon leaf
#

which saves some disk io

#

good on slow storage

neon leaf
frosty gale
#

its not only for the fd but also segments within that fd, for example you can hint to the kernel that youll need a certain address range of an fd soon so it can start to perform readahead on it (POSIX_FADV_WILLNEED)
although as i mentioned i really havent seen any noticeable improvements when hinting the access pattern to the kernel before reading (POSIX_FADV_SEQUENTIAL / POSIX_FADV_RANDOM), but then again last time i tested it it was on an m.2 ssd so even if the kernel mispredicts it probably wont slow things down much, so ti could very well be good on hard drives

neon leaf
#

ah I see, interesting

frosty gale
#

theres also madvise for memory mapped ranges which can be useful if you want to avoid a page fault on access by hinting to the kernel you may need an area within that mapping soon
although its very tricky to take advantage of it because the kernel also predicts readahead on memory mappings (quite well too) and i found any hints you try give it it just slows things down because of that extra logic and syscall

#

kernels on machines with lots of memory available also very aggressively cache files and memory mappings (if you read a file/range earlier, chances are its probably still cached an hour later if the kernel hasnt purged it) so hints like these become sort of obsolete (except maybe in the beginning to hint the fd access pattern), so you prob dont see it used often

neon leaf
#

yeah makes sense

#

i wish io_uring were more supported

#

insecure 🔥 but blazingy efficient 🔥

#

but mmaps are also very cool, havent really had a good use for them yet though

frosty gale
#

io_uring is absolutely awesome and i wanna use it soon for my database project because i think it will bring massive speedups

#

back in my day you had to spin up another thread for async IO 🧓

neon leaf
#

was thinking of writing my own rust reactor for async file io with uring that you can put next to tokio (but idk if I want to invest in this)

#

I am aware of the giant cpu and speed savings

#

would also maybe get cursed with buffers, since the kernel needs to "own" them if you want it to be safe

#

which means I either preallocate a slab in the kernel (with drop guarded fake vecs) or I require an owned vec that I give back after reading

#

wonder if youd still get most of the performance even when implementing the default tokio AsyncRead trait + a kernel buffer slab

#

but then obv copying from slab to buffer ref

rustic nova
#

unless you're keeping an own database of music, everything is youtube or soundcloud afaik

sour cairn
#

If i pay someone can they make me a good looking top.gg page like the ticket king for my bot

deft wolf
#

Probably(?) but I haven't seen anyone active on this channel doing it

prime cliff
#

Just use/learn html/css instead like a dev should 🙂

frosty gale
#

tbh nowadays you can just get an llm to write you a decent looking page if you have no experience

#

it will look like an llm wrote it but at least it will be stylish

sharp geyser
#

Could definitely use it to make a top.gg page and tbh there's no shame in it

#

Web dev is one of the only things i'd ever say its okay to use AI for

#

It's good for getting a starting point

#

ofc I would always recommend learning what css variables do, and what html does as well so you can build off it

radiant kraken
#

nexusbot?

sharp geyser
#

mockdata

tawny scroll
#

The servers where my bot is located show 0.

neon leaf
quartz kindle
sharp geyser
#

I mock ur mom

quartz kindle
sharp geyser
#

Woah now buddy

#

Too far

#

reporting you to the brazilian police

warm surge
#

lmfaop

quartz kindle
#

i'll hit you up to "get start" after you get unbanned

sharp geyser
#

@harsh nova wasn't this the course you were lookin for to make it rich

low marten
#

Some minor progress on statcord, I plan to improve the bot from here onwards, with snippets taken from the site

#

There's no mock data being used here, it's all real

#

I stole the sidebar from sahdcnUI

delicate zephyr
delicate zephyr
#

gonna be good competition bro, smashing it 👏

delicate zephyr
low marten
#

The heatmap is fully custom though proud of that

delicate zephyr
#

@low marten how are you storing your data out of curiosity

low marten
#

Postgres, for legal reasons message content isn't collected or stored

delicate zephyr
#

yea fair

delicate zephyr
low marten
#

Raw timescale bucketed into hours, I had someone peer review the database structure for me haha

#

I'm sure it could be improved

delicate zephyr
#

we're doing something similar atm

#

timescale is amazing tbf

#

love how fast it is

delicate zephyr
#

or are you just storing raw data with nothing else

#

for context:
we use timescale and have collectively almost 3 billion rows in timescale so

low marten
#

Raw for now, all this is pretty new. I have around 10-20 million rows last time I checked

delicate zephyr
#

Make sense, looks good tho

low marten
#

Thanks, I'll take a look at the non-smooth charts later on for sure

#

Especially for the area-charts

opaque beacon
#

Hey all – I built a privacy-focused Quote of the Day bot and I’m looking for a few people to break it 🔨

I've tested it myself, but nothing beats real users finding things I missed. It’s free, doesn't need admin perms, and you can kick it immediately after testing if you want.

PM me if interested!

prime cliff
#

joins to advertise
account 2 days old

hazy heron
prime cliff
#

I wouldnt say mod required but it's a bit weird

delicate zephyr
#

doesnt seem genuine tbh

#

most people would just ask and post their bot link

#

not ask for a dm

#

anyways, how you doing builder

prime cliff
#

Yea no clue what their goal is

#

Doing pretty good just been taking a coding break and watching some stuff like anime and a interesting series on bbc silverpoint

delicate zephyr
#

ah fair

#

ive been watching blue bloods

prime cliff
#

Silverpoint is a European science fiction teen television series, which airs on CBBC, created by Lee Walters and Steven Andrew. The series follows a group of kids at an adventure camp who discover a strange artefact, while also drawn to the fate of four children who mysteriously disappeared twenty years ago. The first series was broadcast on CBB...

delicate zephyr
#

Wait

#

im sorry

#

CBBC

#

god I havent heard that channel name in ages

sharp geyser
#

@solemn latch

neon leaf
#

dam, I got over a 50% performance gain when copying a 6gb folder by using rustix::fs::copy_file_range in 32kb chunks instead of manually reading then writing in 32kb chunks

lyric mountain
#

is it within the same machine?

neon leaf
#

yes

lyric mountain
#

why not just make a symlink?

neon leaf
#

cuz I need an actual copy

clever tundra
low marten
#

i don't see this one changing for a while

clever tundra
#

the only thing i would change is removing this

low marten
#

?

clever tundra
#

bruh i accidentally attatched 2

#

the circled bit

low marten
#

ah alright

#

it's only there for design symmetry

clever tundra
#

i think its mentioned a lot in that box so isnt really needed

#

i see 7 'messages'

low marten
#

hmmm this is diffucult, i'm not sure which one i prefer

delicate zephyr
clever tundra
#

i like mine smooth

lyric mountain
#

For messages I say neither

#

Use steps instead of peaks, you can't have 0.62 messages so the interpolation is bogus

low marten
#

actually, correction, since i merged the VC and message charts, there is now decimals, however quite clearly, as you can see on an empty server, with minimal data, it does rest correctly, within whole number boundaries

#

i made the horizontal axis grid lines visible to aid this in some cases too

#

although at higher message counts, this isn't helpful so the tooltip becomes the main informer

lyric mountain
#

Ofc not many people will notice, but it's just a way to make graphs cleaner

low marten
#

yeah but if you used your eyes and looked at the x axis, you could mark each individual point of data, i do see where you're coming from though

#

i suppose i could make the x axis lines visible too

lyric mountain
#

Rechart does support steps btw, in case u wanna try and see

low marten
#

oh damn?

#

could you point me towards them?

#

i've scoured their docs i mustve missed it

lyric mountain
#

Gotta find it again, brb

#

Been a while since I used it

#

Set it to step

#

There are also stepbefore and stepafter, before might feel better in ur case

low marten
#

it may be wise to let users choice

delicate zephyr
#

mildly annoyed how hard it is to properly setup timescale aggregates LUL

lyric mountain
#

better yet, put it as a customization option :D

delicate zephyr
low marten
#

Yeah, I was going to implement a paid tier to extend it to a year, but I'd like to keep statcord 100% free, so for now, 30 days

delicate zephyr
#

ah cool

low marten
#

No use profiting of something someone could easily create themselves imo

delicate zephyr
#

I mean

#

it already exists

#

so

#

its just dominated by statbot

#

for now

low marten
#

Yeah dude 700k servers

#

I'm never beating that haha

delicate zephyr
#

we're gonna try

#

🤣

low marten
#

😂😭

delicate zephyr
#

casually setting up all the aggregates rn

#

can confirm its a pain in the ass

low marten
#

Oh I'm glad I got my backend done first, until I fixed it recently, it was like glitter on a pig

delicate zephyr
#

Oh I handle all of the devops / dbadmin

#

so

low marten
#

I actually haven't stopped collecting data since the backends first launch, so that's (technically) 100% uptime 🙈

low marten
#

I feel like I'd be straining trying to find specific items

delicate zephyr
#

we're using a custom implementation which should lead to almost impossibility of losing data

#

cause to update the analytics we dont even need to restart the gateway

low marten
#

Yeah I don't have any fail-safes in place currently, if the bot is online, data is being collected, if not, it isn't . There's no backup mainly because I haven't figured it out yet... I procrastinate quite a bit

#

I did intend to implement some sort of real-time or near-real time solution to the dashboard, but I thought it'd be overkill

delicate zephyr
#

its not as easy and you'll have a ballache of a time doing it

#

we had to modify something just to get the functionality we want

#

out tech stack is long :^)

low marten
#

Oh you have quite the project roster in your bio

#

Amazing

delicate zephyr
#

tis fun

low marten
#

Dare I say it's over glazed but that may be bias

#

Holy stack though

delicate zephyr
#

Yea

#

with all this we have practically no way to lose data easily

#

unless discord has an outage ofc

#

using grafana as a testing ground for data analysing

low marten
#

I've only ever experienced one discord API outage, so this gives you quite the backing

low marten
delicate zephyr
#

and thats just the beta bot atm LUL

low marten
#

What's the max timescale you plan on showing?

delicate zephyr
#

all time

#

and custom timeframes

low marten
#

Damnnn

delicate zephyr
#

we do with bots already

#

If you have a bot on top.gg it'll be on our site tbf

low marten
#

Only reason mine is limited to 30 days, is I was unsure how optimized my DB setup was, so I didn't want to risk it, and blow on the first day

#

I think over time I'll loosen it up

low marten
delicate zephyr
#

whats the name

low marten
#

statcord itself haha

delicate zephyr
low marten
#

How often does top.gg update the server count? It's in 60-70 servers currently

delicate zephyr
#

you have to post it yourself

low marten
#

Ohh crap

grave zealotBOT
#
Updating Server Count

To update your bot's server count, use the server_count parameter as documented in the Top.gg API.

If you want the server count to update automatically whenever your bot joins or leaves a server, you will need to implement this logic in your guild join and guild leave event handlers.

Server count updates should be sent using the following endpoint: POST: https://top.gg/api/bots/{your_bot_id}/stats.

low marten
#

Yeah I had no idea

delicate zephyr
#

Now you do 😄

low marten
#

The UI is amazing

delicate zephyr
low marten
#

Those tooltips you use too

delicate zephyr
#

some of the data goes back to 2019

low marten
#

Multiple years Jesus

#

How much storage does that use

delicate zephyr
#

200GB with compression

#

around 2.8 Billion rows and counting atm

low marten
#

This may be possible for me, if I locally host postgres, I have a spare 5tb server I just don't use

delicate zephyr
#

decompressed our database is almost 800GB

low marten
#

I feel like it'd be difficult to plot data points for data that vast

low marten
delicate zephyr
#

yea we downsample heavily

sour cairn
sharp geyser
#

One thing I have to say about drizzle is its god-aweful error reporting

#
PS D:\Dev\mercatus> pnpm --filter=server run drizzle:migrate          

> server@0.0.1 drizzle:migrate D:\Dev\mercatus\apps\server
> drizzle-kit migrate

No config path provided, using default 'drizzle.config.ts'
Reading config file 'D:\Dev\mercatus\apps\server\drizzle.config.ts'
Using 'pg' driver for database querying
[⣽] applying migrations... Error  Failed query: 
ALTER TABLE "sellers" ADD CONSTRAINT "sellers_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "user"("id");
params:
D:\Dev\mercatus\apps\server:
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.0.1 drizzle:migrate: `drizzle-kit migrate`
Exit status 1

No shit the query failed I can already tell that by the fact it's erroring out

#

what exactly is the reason it failed though Waaaaaah

pearl trail
#

no way they now got solution for dementia people like me

radiant kraken
frosty gale
#

tbh i really want recall i hope microsoft still brings it to x86 for pcs that arent "ai ready" (despite me having an rtx 3080)

pearl trail
radiant kraken
#

@pearl trail hey, which javascript bundler do you recommend best?

#

essentially i have two .js files, let's say a.js and b.js.

a.js imports functions exported by b.js, but i want to bundle them as one .js file that can be imported in html/vanilla js. i want for the resulting bundled .js file to be only a.js' exports. i'm also looking for bundlers that can apply tree-shaking

#

from looking it up on google, it appears i have four choices: there's rollup, esbuild, vite, and webpack

pearl trail
#

sorry i never touched webpack directly 😔 🙏 i left js for everything but websites, so i don't know which bundler is best. i only know webpack because cra uses it

#

maybe ask sensei Tim

radiant kraken
#

you're my sensei too 😤

#

what's cra?

#

create react app?

pearl trail
#

create-react-app, used that years ago

radiant kraken
#

oooo

pearl trail
#

now moving to vite, which uses vite bundler

radiant kraken
#

ooooo

#

maybe i'll use vite

#

is it overkill? KEKW

pearl trail
radiant kraken
#

🫡

#

thank youu!! ❤️

pearl trail
#

ur welcome <3

delicate zephyr
#

we use nextjs for topstats btw null

radiant kraken
#

awesome!!

delicate zephyr
#

CRA is deprecated

radiant kraken
#

yeah

#

my uni uses it tho

delicate zephyr
#

my portfolio does too

radiant kraken
#

LMAO

#

maybe @quartz kindle too

delicate zephyr
#

vite / rollup

radiant kraken
#

thanks!

delicate zephyr
#

i've used rollup before

#

super cool and easy to use

quartz kindle
#

vite 8 beta already switched to it

#

rolldown = rollup but in rust

radiant kraken
#

YOOOOOOOOOOO

#

🚀

quartz kindle
#

its still early but many are already using it

radiant kraken
#

okay, vite it is!

#

thank you tim! 🫶

quartz kindle
#

im using sveltekit + vite 8 beta + rolldown atm

#

it had a bug for a while where it failed to bundle imported images, but they fixed that now

radiant kraken
#

@pearl trail hey, do you know how to force Vite 7 to NOT inline assets (like in this case a wasm file)?

#

this is so dumb

#

embedding wasm in the form of a base64 string is a waste of ~200-300 KB

#

plus you can't use things like instantiateStreaming

pearl mantle
#

ا

radiant kraken
#

fixed it with a pretty hacky config

primal nebula
#

How does one make action commands, I am having a hard time understanding how to generate gifs for the commands. How do I get a tenor api key, or is there something else I can use?

frosty gale
atomic pewter
#

Does this mean my webhooks work?

ivory hawk
atomic pewter
ivory hawk
#

My webhook is sent to cloudflare workers (free) and then processed to discord webhook

atomic pewter
#

Might be that the problem?

ivory hawk
#

As long as it has a way to process it

#

It has to take the payload sent by top.gg and format it into a discord webhook

atomic pewter
#

I amma try Cloudflare

ivory hawk
#

Its pretty rasy

#

Easy

spring hemlock
solemn latch
lean pine
#

hi

my friend applied for full approval. so our bot can join over 100 servers.

but its been over 2 weeks and discord never responded, is that normal?

prime cliff
spring hemlock
clever tundra
teal kelp
#

Hi

#

Feel like I’m burnt out for a bit for coding

willow cape
#

stop coding

deft wolf
teal kelp
#

We have we’re taking a break for a bit

low marten
teal kelp
# low marten Why do you have VSC open if you're on a break haha

Because I can both close it I haven’t been at my computer for a couple of days.

Cause I’m not, I’ll just leave it on because it’s easier then I just don’t forget what I’m doing for the next one

Or if I’m working on something, why you command that I didn’t finish

vivid fulcrum
#

true developers don't stop programming

#

even in my dream i have my editor open 😎

teal kelp
#

What website in a few days off we basically burnt out a bit plus it’s good to take breaks

delicate zephyr
#

gotta take breaks or burn out kills

#

🤣

#

also hi cry, long time no see

teal kelp
#

Why can’t do much because I’m not working at the moment

#

How much is the thing that’s distracting me?

stark kestrel
#

Just saw that MinIO is in maintenance mode :sadge:

neon leaf
#

*aistor KEKW

lament rock
#

Is regex pronounced "rēhjēcks" or or "rēgēcks"?

neon leaf
#

second one

#

regular expression

#

reg-ex

#

atleast thats what they want you to think

lament rock
#

Also is char pronounced as "chār" or "care"?

neon leaf
#

did u watch a particular youtube video today

lament rock
#

aws

#

perhaps

neon leaf
#

perchance

lament rock
#

Ive always pronounced it rejex

harsh nova
quartz kindle
#

regex as in regular expression
gif as in graphics interchange format
char as in character (although some people pronounce it "karacter", it should be "tsharacter")