#development

1 messages · Page 278 of 1

sharp geyser
#

Apparently not

prime cliff
#

Events > Logs

sharp geyser
#

I checked the event logs and nothing was logged

#

last log was of the user being created

prime cliff
#

Is it the same situation as DO blocking smtp i guess

sharp geyser
#

Maybe im not allowing SMTP through

#

I mean

#

I am opening up all ports on TCP through GCP policies

#

and gcp doesn't block smtp ports from what I know

#

Yea no it doesn't

#

port 587 is open

#

by default

#

so I can send emails from it

#

No event log for emails are being created tho

sharp geyser
#

For reference, when you use AWS SES you are put into a sandboxed environment initially

#

and you can only send mail to and from verified identities

#

the email I was trying to send to wasn't "verified"

#

I appreciate all your help :D

prime cliff
#

Self hosting for 1/3rd the cost my beloved

amber rose
prime cliff
#

To be real though those enterprise solutions for AWS/GCP/Azure have hidden costs and dark patterns to get you to pay more especially stuff like "advanced endpoint protection" just for extra security and people that can ddos the service to charge you more.

#

AWS especially is confusing when it comes to bills and services that you actually need to run

#

I think they even try billing you for over extending free trial and free to use stuff aswell

sharp geyser
#

Gotta love that

prime cliff
#

LMAO how

sharp geyser
#

Well

#

Not even my fault

#

but turns out compatibility mode isn't fully compatible with all password managers

prime cliff
#

It should be hmm

sharp geyser
#

so now I am not prompted for authenticating with my passkey

#

:))

#

I used to be, before I turned it on

#

so now im wishing I fuckin didnt

prime cliff
#

And you didn't bother with a backup code xD

sharp geyser
#

Not at all, didn't cross my mind

#

My only option is to wait for proton pass developers to fix their shit cause apparently its a them issue, and authentik has notified them of it

#

or to restart everything

prime cliff
#

Me when i take a page from Discord noted

sharp geyser
#

lmao

#

I have not yet updated to the new release yet

#

I am too lazy

#

:))

#

OH MY FUCKIN GOD

#

I GOT IN

#

TY GOOGLE CHROME

#

😭

#

Fuckin google chrome comin in clutch

#

Allowing me to scan a QR code on my phone that has proton pass on it that I can then use the passkey from it

#

💪

#

Turned off compatibility mode fuck that shit

hidden gorge
#

my system is searching for the user via the code supplied is that a good idea or should i do something else?

prime cliff
#

You should probably set an expiration date on that code to like 15 mins, also remove the code after it's been used.

#

You should also check if the code is 0/empty (default) to prevent issues.

hidden gorge
#

also what HTTP code would i return if its expired?

sharp geyser
#

https://pastes.dev/KjJteVnQcX say I have this client component that takes in children (This is for doing a layout)
Then I use said client component in my root layout passing in the children (aka all the pages and such)

export default function RootLayout({
    children,
}: Readonly<{
    children: React.ReactNode;
}>) {
    const theme = createTheme({
        fontFamily: 'Noto Serif',
    });

    return (
        <html lang="en" {...mantineHtmlProps}>
            <head>
                <ColorSchemeScript defaultColorScheme={'auto'} />
            </head>
            <body>
                <MantineProvider theme={theme} defaultColorScheme={'auto'}>
                    <LayoutShell>{children}</LayoutShell>
                </MantineProvider>
            </body>
        </html>
    );
}```
#

Would I still be able to use SSR in the pages, or would they then be bundled with the client because im passing them to a client component that then gets finally rendered in said component

#

Surely it doesn't right? Because technically they are rendered in the layout and then passed on as fully rendered children right?

#

I am very tired so sorry if I am making 0 sense

pearl trail
#

if a layout is a client component, then it's childs will be rendered as a client component too

#

if i'm not mistaken

sharp geyser
#

The layout itself isn't a client component

#

I am simply passing the children from the layout to a client component

#

Since I can't do the interactivity for mobile without doing it this way

#

I need to make use of hooks

#

sorry idk why I said child I meant client 😭

pearl trail
#

as long as you don't render it directly

hidden gorge
#

atp should i use a switch case instead of if?

sharp geyser
#

Sweet

pearl trail
#

🔥

sharp geyser
#

I was worried it would

#

cuz at this point idfk how else I'd do it

#

😭

pearl trail
#

lmfao yeah

sharp geyser
#

I am also implement internationalization early

#

so fuck my life

#

Doing shit I have never done before

#

gotta love it

pearl trail
#

good luck, yeah i never done that before too

sharp geyser
#

next-intl makes it easy luckily

#

I am working on a language switcher tho

pearl trail
#

oh, it's json based

sharp geyser
#

yuh

#

Most i18n impls are

#

if not all

pearl trail
#

i see

sharp geyser
#

which means I can use stuff like crowdin

#

:p

#

In case I want to outsource translations

#

One thing I want to do is implement automatic translations at some point

#

Since people's content won't always be translated, I can translate their page dynamically

pearl trail
#

use apis to translate?

sharp geyser
#

Maybe

#

I wonder how veld does it

#

Oh he was thinking of getting people to manually translate them

#

💀

#

yikes

pearl trail
#

KEK just like discord app directory

sharp geyser
#

Using an api would be expensive

#

something I wouldn't be able to do right off

pearl trail
#

oh yeah This project is mainly for pet projects and prototyping Prayge

sharp geyser
#

yea

#

i'd need to use something like yandex or some other translate api with paid plans

#

Though tbh

#

Idrc

#

Don't have your language? Oh well I am not perfect

pearl trail
#

acceptable KEK

hidden gorge
#

that worked instantly

#

ok thats bad

lament rock
#

I love [object Object]

hidden gorge
wheat mesa
pearl trail
lament rock
#

When you have 3 or more condition checks, use a switch

wheat mesa
#

You’re doing more error handling here than necessary imo. On fatal errors, I usually just redirect users to an error page that shows the status and a message if it exists.

#

Also not sure why you’re using .then if you’re gonna pass it an async function right after anyways

#

Just use one or the other

hidden gorge
#

bruh what

#

i dont wanna commit 😭

wheat mesa
#

Stash

hidden gorge
wheat mesa
#

Stash, pull, branch, pop stash, resolve merge conflicts, merge back into main/whatever branch you wanted

hidden gorge
#

thats fun

#

when you pull your files onto your VPS and it just fuckin dies

#

how am i just getting this error on the server but not in development...

sharp geyser
#
    const [_, startTransition] = useTransition();
    const router = useRouter();
    const pathname = usePathname();
    const params = useParams();

    const t = useTranslations('LocaleSwitcher');
    const locale = useLocale();

    function handleLocaleChange(event: ChangeEvent<HTMLSelectElement>) {
        const nextLocale = event.target.value as Locale;

        startTransition(() => {
            // @ts-expect-error -- TypeScript will validate that only known `params`
            // are used in combination with a given `pathname`. Since the two will
            // always match for the current route, we can skip runtime checks.
            router.replace({ pathname, params }, { locale: nextLocale });
        });
    }
<NativeSelect onChange={handleLocaleChange} defaultValue={locale}>
  {routing.locales.map((cur) => (
    <option key={cur} value={cur}>
      {t('locale', { locale: cur })}
    </option>
  ))}
</NativeSelect>
#

Shrimple as that

hidden gorge
#

finally everything works...

sharp geyser
#

"locale": "{locale, select, de {:flag_de: Deutsch} en {:flag_us: English} other {Unknown}}" wonder how this syntax works. Because it is able to grab the right locale

#

Wondering how each option doesn't become English Deutsch right after

#

Ah

#

It uses ICU format

#

Ty google

sharp geyser
#

hm?

#

IT simply replaces the pathname in the url

#

no refresh happens

pearl trail
#

ohh, your route will start with locale?

sharp geyser
#

yuh

#

Instead of saving the locale in cookies i'd figure this would be easier

#

Sure it'd be nice if I want to save their locale

#

but again

#

don't care enough rn 🧌

#

I am simply doing a quick implementation of everything. I will go back and polish later.

mint sorrel
#

Hey
How to configure
VOTE REWARD SYSTEM ON BOT

pearl trail
#

ah fair, i myself not really a fan of putting locale to the route. but ig if it works, then it works PI_Shrug

sharp geyser
#

For now it works yeah

#

I will go back later and allow them to choose a locale and save it to state

#

rn I just want something quick and dirty

#

Just so for sanity sake I know it works 💀

ivory hawk
slender wagon
#

Cloudflare ip masking to prevent ddos worth it or not?

slender wagon
compact condor
slender wagon
#

I havent implemented any services of cloudflare

compact condor
#

you can fine tune those in the WAF rules

slender wagon
#

But i was just thinking of masking my servers ip

compact condor
slender wagon
#

Oh okay, i dont really do that but sometimes i do stupid shit like open ports in my vps

slender wagon
compact condor
subtle hare
#

how can i become a discord bot developer

deft wolf
#

Just make a bot I guess

subtle hare
quartz kindle
subtle hare
quartz kindle
#

java or javascript?

subtle hare
#

java

quartz kindle
#

alright, then you can look into some discord library for java, such as JDA

small tangle
#

JDA my beloved

subtle hare
quartz kindle
subtle hare
#

from the start

#

like where can i learn

quartz kindle
#

learn a programming language

#

java is just one of many languages

#

if you like it and have experience with it, stick with it

#

otherwise you can try others like javascript and python, both are beginnner friendly

neon leaf
#

why is multithreading with rayon in rust so easy 🥀 ```rs
let worker_pool = Arc::new(
rayon::ThreadPoolBuilder::new()
.num_threads(threads)
.build()
.unwrap(),
);
let error = Arc::new(RwLock::new(None));

    worker_pool.in_place_scope(|scope| {
        for entry in archive.into_entries() {
            scope.spawn({
                let error = Arc::clone(&error);
                let chunk_index = self.chunk_index.clone();
                let destination = destination.clone();

                move |scope| {
                    if let Err(err) = Self::recursive_restore_archive(
                        &chunk_index,
                        entry,
                        &destination,
                        progress,
                        scope,
                        Arc::clone(&error),
                    ) {
                        let mut error = error.write().unwrap();
                        if error.is_none() {
                            *error = Some(err);
                        }
                    }
                }
            });
        }
    });

    if let Some(err) = error.write().unwrap().take() {
        return Err(err);
    }
quartz kindle
#

you can try googling stuff like "java for beginners" or something like that

subtle hare
#

ok

hidden gorge
#

any changes i should make or is this good?

sharp geyser
#

I really hate gradients in text but that’s just me

prime cliff
#

Get ready for gradient role colors coming soon then KappaBig

small tangle
#

Developing more components for modals NO_Pillow
Gradients for roles YES_PILLOW

sharp geyser
#

right wtf

sharp geyser
#

Got this error last night but no fuckin clue what it means. I somehow fixed it but its back again

#

oh wait

sharp geyser
#

Cause like

#

I can set it in a cookie

#

but the client can't access that cookie

#

so I can't set it when they change it

neon tusk
#

hello

sharp geyser
#

If you have any ideas yes

pearl trail
#

you can create and get cookie using document.cookie

#

you can see here https://www.w3schools.com/js/js_cookies.asp for example to get and set one

sharp geyser
#

can you update a cookie from it?

#

oh wait yea you can

pearl trail
#

just do the set cookie again, it’ll automatically overwrite

#

yeah

sharp geyser
#

thank you

#

Will this triger a re-render of the pages?

#

Because when they change their locale I need to make sure it fetches the new translations

pearl trail
#

idk is rerender enough or not

sharp geyser
#

Im not sure

#

I will check

#

:p

neon flicker
#

What does this page even do? I still have no idea

queen needle
#

As long as like obviously the content pulls the translation then a rerender would show the new translation for updating language

spark flint
#

and you'd get someone to test the application on discord

#

now its used for VC interactions where you have to be marked as a tester to gain access

neon flicker
#

Oh

hidden gorge
#

i should prob move away from PM2 someday about to run out of slots

neon flicker
#

I just started to another Next project after a long time, and received the following error for the first time (it hadn't taken place before):
next/font error:
Unknown font Geist
⨯ app\layout.js

queen needle
#

Switch the import to next/font/google

prime cliff
#

It also gives you access to

neon flicker
frosty gale
#

systemd technically i just call it by the tool name

prime cliff
#

vibecat Much better

real rose
real rose
prime cliff
#

HeheGif Yup already on a beta v1.0.24 been doing a lot of updates to improve it

sharp geyser
#

nvm

#

figured it out

#

can just use router.refresh()

#

:D

#

W works

queen needle
#

W

pearl trail
civic scroll
# prime cliff

you might want to differentiate colors of healthy state (i assume "idle / ready") and running state (i call it "active")

#

same with action buttons

#

layout-wise well done

sharp geyser
deft wolf
#

What are your thoughts on components v2 on discord? weirdsip

lament rock
# deft wolf What are your thoughts on components v2 on discord? <:weirdsip:58588422344186265...

As someone who got to try them early, I'm quite happy with them. I think this alleviates some design pain points I've had as a bot developer over the years. The only negative thing I have to say about it is that all of the text is at a limit of 4000 characters which is a bit below the 6000 char limit of embeds and their fields considering cv2 is supposed to replace both content and embeds

#

One example of a pain point would be embeds having to have a color for the left border. You couldn't have anything flush for all color schemes. Another one being you'd have to use an embed to embed a link to media. Also having to worry about permissions attached to embeds if you're creating a message. Luckily interaction responses don't follow this permission

deft wolf
#

I am also positively surprised. They look nice and give a lot of flexibility when it comes to the appearance of these "embeds". Finally, bot messages will not be so boring, each of these messages can be "unique" in its own way

#

This is probably one of the best updates aimed at bot developers in recent years imo

#

Let's just hope Discord doesn't ruin it with their future decisions onionpray

lament rock
#

I doubt it. dv8 seemed quite passionate about a particular design philosophy

neon flicker
#

I'm stuck with something, I'm trying to code a dashboard for my bot, I've been doing good witth the design but I'm curious how I'm supposed to handle API requests while making them secure so people won't be able to send and data change requests for any Discord servers that they're not an administrator of?

#

I've searched about it but I still haven't found a clear answer

deft wolf
#

@solemn latch support scam

solemn latch
#

ty

deft wolf
#

❤️

hidden gorge
#

This error keeps popping up after i pulled files from GIT idk whats causing it

#

ive reverted back to 2 updates and its still not working

small tangle
#

node server.js?

wheat mesa
hidden gorge
#

omfg im so stupid

#

i was running in the WRONG DIR

#

oopsies

#

😭

quartz kindle
#

huehuehuehuehue

quartz kindle
small tangle
lament rock
#

without needing to be in a container like an embed

#

the gate is lifted rn and can be use by anyone

quartz kindle
#

interesting

#

is there docs for it yet?

queen needle
#

I used this to mess around with them

hidden gorge
wheat mesa
#

hope you have a limit for your s3 bucket

hidden gorge
#

each ticket will allow 10 files per hour

#

also all images and messages are deleted after the ticket is closed

#

oh wait this is live chat mb

#

each chat will have 10 images per hour and all data will be deleted after the chat is closed

wheat mesa
#

Time to open 30 tickets

hidden gorge
#

1 ticket per user

#

What sucks rn is I'm basically hitting the limit of my server

wheat mesa
#

A fancy pm2 dashboard is probably not helping you out in terms of performance

hidden gorge
wheat mesa
#

Docker is the way to go

hidden gorge
#

Then I'm gonna use something else

wheat mesa
#

Kubernetes if you really want to be overkill and plan on having much higher performance demands

hidden gorge
#

Rn I'm using PM2 bc i can access it anywhere and its easy to start new instances

wheat mesa
#

I used pm2 once, didn’t really like it.

#

Ever since I’ve learned a bit of docker I’ve been a much bigger fan of using docker and docker compose

#

Super easy orchestration

prime cliff
#

Me when running a bunch of screen sessions back in the early days GIGACHAD

sharp geyser
#

I did this so much

#

before I learned of pm2 and docker

#

😭

#

Needed to run lavalink? screen

#

need my bot to stay online? screen

solemn marlin
sharp geyser
#

I thought I saw something along those lines

hidden gorge
#

any idea of what i should replace Articles with? it doesn't fit imo

deft wolf
#

Although I don't fully understand how this is supposed to work yet

#

It seems to me that it is simply an improved embed video, such as the one created when you paste a link to a video directly into the chat

covert gale
#

that was such a horrible setup

lyric mountain
#

written articles?

sharp geyser
#

I dont remember what it was

#

but I swear the name looked familar

#

💀

covert gale
#

incredible lmao

sharp geyser
#

It was so random

#

I was like hol up that name is familar, but I couldn't remember how you spelled your name 😭

#

Oh right

#

It was create mods

#

This you?

lyric mountain
#

I usually just randomly bump into thund on reddit

sharp geyser
#

Really?

sharp geyser
#

It's a bit murky on what to use, but I am intrigued on learning about the process

vivid fulcrum
#

tbh the best way to learn mc modding is to try to contribute to an already existing mod

#

just to get the gist of how it works

sharp geyser
#

Interesting

#

Is there any like documentation on it all?

#

or is it a smack rock against rock until something works kind of thing

vivid fulcrum
#

kind of, depends which modding framework. fabric is ok, but when modding you're often going to have to use minecraft's internals which have no docs at all... but there's a lot of information on forums

#

sometimes it's a dead end and you have to figure out how something works by yourself

#

just how modding is

sharp geyser
#

Yea

#

That makes sense

#

I heard of a thing called MCCreator

#

or something like that

#

Sounded very similar to what happened with discord bot makers

vivid fulcrum
#

don't know much about it, those scratch-like editors are good for entry level modding

#

it's mostly for people who don't have actual exp with java

covert gale
sharp geyser
#

I see its common that most just try it and see

hidden gorge
#

Like*

lyric mountain
#

Then it sounds about right

#

You could also call it posts

hidden gorge
#

Will do

#

I wonder if i can change that on my phone or not

#

Oh I can

covert gale
# sharp geyser Tools, and how you learned

I primarily use intellij, and then for modeling and textures there's blockbench and aseprite, but personally i don't use those myself since i suck at art WHEEZE

the way i learned was really just jumping into the deep end, would not recommend doing that as it wasn't a great idea at all

#

best resources are just properly learning java first, and then making your first mod, and looking at other mods to see how they work

#

also learn how mixins work, very useful tool when you need to change vanilla's code

sharp geyser
#

I notice a lot of errors relating to mixins in my forge console

#

with mods I use

#

Seems like people do it wrong often mmLol

covert gale
#

yeah

sharp geyser
covert gale
#

most people use mixins to bypass needing to interact with humans and request apis

#

which results in terrible mixins into other mods that break quickly

sharp geyser
#

I also hate how some mods are not compatible with each other Waaaaaah

#

I have mods on my mc server with my gf that have the same ores but somehow different so you can't use the counterparts in the other mod

#

Which sucks cause of terrain gen putting majority of one mods ores in

covert gale
#

and everytime create has a semi-major update every addon breaks, and due to improper dependency declarations they result in crash logs that the average user can't understand

sharp geyser
#

I barely understand them

#

and im a programmer

#

😭

lyric mountain
sharp geyser
#

Lmfao

#

Sounds about right

lament rock
lament rock
#

Yup. One example for forge is all the ores from the all the mods team

tawdry sail
#

someone know how to do this cmds "clickable"?

deft wolf
#

Don't put it in ` and use </commandName:commandId> for mentioning commands

tawdry sail
lament rock
#

from the post application commands response, it gives you an array of commands and the command obj has the id

#

or you can get your application commands without posting

deft wolf
#

Or you can right click on this box above the chat input while typing a command

tawdry sail
#
              console.log(cmd)
              const appCmd = applicationCommands.get(cmd.name);
              console.log(appCmd)
Shazam {
  name: 'shazam',
  description: 'Recognize a song from an attached audio or video file.',
  usage: [ 'shazam <attachment>' ],
  aliases: [],
  options: [
    {
      name: 'file',
      description: 'file to analyze. (MP3, MP4, MPEG, MOV)',
      type: 11,
      required: true
    }
  ],
  category: 'utils'
}
undefined

why appCmd returning me undefined?

#

bruh xddd. nvm i got it, thanks for help

limber sphinx
#

Does anyone know how to update the top.gg bot name? I’ve updated it from discord dev portal

deft wolf
#

Use "refresh data" button

limber sphinx
#

Still nothing

#

Refreshed the page and used the button

deft wolf
#

Idk if they fixed issue with refreshing data or not

sharp geyser
#

Cause I really cant find it

prime cliff
#

Hu?

sharp geyser
#

Being able to view information about what you are looking at is sounding very helpful rn

#

but I cant find the mod

prime cliff
#

Ah you mean the overview

sharp geyser
#

Yeah

prime cliff
lament rock
#

or waila

sharp geyser
#

Would this work for AE2 do you know?

lament rock
#

Yeah

#

Jade usually is compat with a lot of stuff

sharp geyser
#

Gotcha!

lyric mountain
#

Hell yeah, component rework

#

Hm, now we're not limited to text top/buttons below

#

And can add columns apparently

#

Oh, embeds are free form too

sharp geyser
#
{
  message: 'decryption operation failed',
  stack: 'JWEDecryptionFailed: decryption operation failed\n' +
    '    at gcmDecrypt (webpack-internal:///(rsc)/./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/node/cjs/runtime/decrypt.js:67:15)\n' +
    '    at decrypt (webpack-internal:///(rsc)/./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/node/cjs/runtime/decrypt.js:92:20)\n' +
    '    at flattenedDecrypt (webpack-internal:///(rsc)/./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js:143:52)\n' +
    '    at async compactDecrypt (webpack-internal:///(rsc)/./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js:18:23)\n' +
    '    at async jwtDecrypt (webpack-internal:///(rsc)/./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/node/cjs/jwt/decrypt.js:8:23)\n' +
    '    at async Object.decode (webpack-internal:///(rsc)/./node_modules/.pnpm/next-auth@4.24.11_next@15.3_c73b67e76e797616b730a43a574824c9/node_modules/next-auth/jwt/index.js:56:7)\n' +
    '    at async Object.session (webpack-internal:///(rsc)/./node_modules/.pnpm/next-auth@4.24.11_next@15.3_c73b67e76e797616b730a43a574824c9/node_modules/next-auth/core/routes/session.js:39:28)\n' +
    '    at async AuthHandler (webpack-internal:///(rsc)/./node_modules/.pnpm/next-auth@4.24.11_next@15.3_c73b67e76e797616b730a43a574824c9/node_modules/next-auth/core/index.js:136:27)\n' +
    '    at async getServerSession (webpack-internal:///(rsc)/./node_modules/.pnpm/next-auth@4.24.11_next@15.3_c73b67e76e797616b730a43a574824c9/node_modules/next-auth/next/index.js:129:19)\n' +
    '    at async RootLayout (webpack-internal:///(rsc)/./app/layout.tsx:35:21)',
  name: 'JWEDecryptionFailed'
}

I do no fucking understand

#

What am I doing wrong

#

next-auth tell me

#

cause what it tells me to do o nthe docs doesn't seem to solve shit

#

Oh lord

#

Whats the point of having a fucking secrets option if you won't use it

#

Gotta use the damn env variable instead ig iara_smh

rocky wave
#

need help despite putting in the scope to know what servers the user is in my bot during login verification to my next.js website doesn't ask user for permission to know what servers they are in
https://discord.com/oauth2/authorize?client_id=1344537164813439017&response_type=code&redirect_uri=https%3A%2F%2Fdiscord-auth-backend-jet.vercel.app%2Fapi%2Fauth%2Fcallback%2Fdiscord&scope=identify+email+guilds+gdm.join

it only asks for username avatar and banner permission

and when i try to verify without going though my website and just going by the link i get error
https://discord-auth-backend-jet.vercel.app/api/auth/signin?error=OAuthCallback

Try signing in with a different account.

Sign in with Discord

please help been stuck on this for 3 days

lyric mountain
#

from top to down:

  • access your username, avatar and banner
  • access your email address
  • know which servers you're in
  • join private groups for you
rocky wave
lyric mountain
#

no I'll not, sorry

#

are you sure you're using the oauth response correctly?

queen needle
#

If you're just trying to make auth for a dashboard or serverlisting, you shouldn't really need email and joining gourps for someone, howcome you requested those?

lyric mountain
#

there are bots that allow joining servers through dashboard, I think either mee6 or dyno had that

#

it's still a fairly dangerous grant though

prime cliff
#

The join private groups is bit monkaS but other than that email and list servers is common for dashboards

queen needle
#

Email is still a bit confusing, I understand the usecase but lots of people do it for like updates or things and never use it

rocky wave
rocky wave
# lyric mountain there are bots that allow joining servers through dashboard, I think either mee6...

callback.ts

// src/app/api/auth/callback/route.ts

import { NextRequest, NextResponse } from 'next/server';
import { exchangeCodeForToken, getUserInfo, getUserGuilds } from '@/utils/discordOAuth';

export async function GET(req: NextRequest) {
  const { searchParams } = new URL(req.url);
  const code = searchParams.get('code');

  if (!code) {
    return new NextResponse('Missing code parameter.', { status: 400 });
  }

  try {
    const tokenData = await exchangeCodeForToken(code);
    console.log('Token Data:', tokenData); // Log the full token response
    console.log('Token Scopes:', tokenData.scope); // Check if "guilds" is included
    const userData = await getUserInfo(tokenData.access_token);
    const userGuilds = await getUserGuilds(tokenData.access_token);
    console.log('User Guilds Response:', userGuilds); // Log the guilds response
    console.log('User Guilds:', userGuilds);

    console.log('Authenticated User:', userData);
    console.log('User Guilds:', userGuilds);

    return NextResponse.json({
      message: `Welcome ${userData.username}#${userData.discriminator}`,
      guilds: userGuilds,
    });
  } catch (error) {
    console.error('OAuth Callback Error:', error);
    return new NextResponse('Authentication failed.', { status: 500 });
  }
}

auth.ts

import { NextAuthOptions } from "next-auth";
import DiscordProvider from "next-auth/providers/discord";

export const authOptions: NextAuthOptions = {
  providers: [
    DiscordProvider({
      clientId: process.env.DISCORD_CLIENT_ID!,
      clientSecret: process.env.DISCORD_CLIENT_SECRET!,
    }),
  ],
  secret: process.env.NEXTAUTH_SECRET,
};
#
// src/utils/discordOAuth.ts

import axios from 'axios';

const CLIENT_ID = process.env.DISCORD_CLIENT_ID!;
const CLIENT_SECRET = process.env.DISCORD_CLIENT_SECRET!;
const REDIRECT_URI = process.env.DISCORD_REDIRECT_URI!;

export async function exchangeCodeForToken(code: string) {
  const params = new URLSearchParams();
  params.append('client_id', CLIENT_ID);
  params.append('client_secret', CLIENT_SECRET);
  params.append('grant_type', 'authorization_code');
  params.append('code', code);
  params.append('redirect_uri', REDIRECT_URI);

  const { data } = await axios.post('https://discord.com/api/oauth2/token', params, {
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  });

  return data; // { access_token, token_type, expires_in, refresh_token, scope }
}

export async function getUserInfo(access_token: string) {
  const { data } = await axios.get('https://discord.com/api/users/@me', {
    headers: { Authorization: `Bearer ${access_token}` },
  });

  return data;
}

export async function getUserGuilds(access_token: string) {
  const { data } = await axios.get('https://discord.com/api/users/@me/guilds', {
    headers: { Authorization: `Bearer ${access_token}` },
  });

  return data;
}
#

also login.ts

// src/app/api/auth/login/route.ts

import {  NextResponse } from 'next/server';

export async function GET() {
  const redirectUrl = `https://discord.com/oauth2/authorize?client_id=1344537164813439017&response_type=code&redirect_uri=https%3A%2F%2Fdiscord-auth-backend-jet.vercel.app%2Fapi%2Fauth%2Fcallback%2Fdiscord&scope=identify+email+guilds+guilds.join+gdm.join&prompt=consent`;
  return NextResponse.redirect(redirectUrl);
}
deft wolf
#

Your link on the page is different from the link you sent here in the login.ts file

deft wolf
#

This is the link you are redirected to after clicking this button:

https://discord.com/oauth2/authorize?client_id=1344537164813439017&scope=identify%20email&response_type=code&redirect_uri=https%3A%2F%2Fdiscord-auth-backend-jet.vercel.app%2Fapi%2Fauth%2Fcallback%2Fdiscord&state=Yp5qt7LR_dE_iLeh1vK91jg-D9CGWCQO48BWMRUvSAk
deft wolf
#

"and when you rty to login via website itll not ask for permission to know what servers ur in
despite scope in the url"

The scope responsible for knowing which servers a given person is on is not included in this link

sharp geyser
#

wtf does this even mean

solemn latch
#

what hydration errors?

sharp geyser
#

Well no I understand hydration errors

#

but there isn't anything even going on to cause this

#

dark reader isn't even enabled

#

Like its a disabled extension

solemn latch
#

👀 idk

#

weird

sharp geyser
#

I mean it doesn't impact anything

#

it still functions normally

#

but its weird this is occuring and im wondering how I can resolve it in case it does cause impact

rocky wave
sharp geyser
#

What exactly are you trying to do

rocky wave
#

wait

sharp geyser
#

cause from the sounds of it you are missing a scope on your auth url

#

which is the guilds scope if you want to know what guilds they are in

#

and if you want them to join a server on your behalf its guilds.join

rocky wave
#

/oauth2/authorize?client_id=1344537164813439017&response_type=code&redirect_uri=https%3A%2F%2Fdiscord-auth-backend-jet.vercel.app%2Fapi%2Fauth%2Fcallback%2Fdiscord&scope=identify+email+guilds+guilds.join+gdm.join&prompt=consent

so this is correct string?

#

???????

sharp geyser
#

Sure but do you need the guilds.join and gdm.join scopes?

rocky wave
#

yea cuz it didnt work

sharp geyser
#

what didnt work?

pearl trail
#

unless it's next or other things, idk

rocky wave
#

despite the permission in the scope url

sharp geyser
pearl trail
#

im pretty sure react component can't do that, also with the dashed props, aria-label -> ariaLabel

rocky wave
#

HELP

sharp geyser
pearl trail
#

oh

sharp geyser
#

I think it is anyways

pearl trail
#

try this

import dynamic from 'next/dynamic';

const IconChevronDown = dynamic(() => import('...').then(mod => mod.IconChevronDown), {
  ssr: false,
});
sharp geyser
pearl trail
#

yeah now i see

pearl trail
#

nice

rocky wave
#

Why is my dam code not working?

prime cliff
#

Have you tried debugging Kappa

rocky wave
#

yea no errors nothing discord issue not my code i put the string with scopes correctly

lyric mountain
#

you need to give us something to work with, cant solve an issue if there's no error or console output to know what even is the issue

#

just redact the tokens before sending (and stop printing them to console)

rocky wave
#

everything worked thanks!

lament rock
pearl trail
#

yeah, right

lament rock
prime cliff
#

vibecat Taking a page from Discord, gonna change the pre-defined colors

delicate zephyr
#

managed to get super tokens working with custom UI Pog

sharp geyser
#

How can I make a side nav instead of a top nav

return (
        <>
            <SessionProvider session={session}>
                <div className={'grid h-screen grid-rows-[auto_1fr_auto]'}>
                    <div className={'grid grid-cols-1 md:grid-cols-[auto_1fr]'}>
                        <Sidenav />
                        <main className={'p-4 space-y-4'}>{children}</main>
                    </div>
                    <footer className={'p-4'}>(footer)</footer>
                </div>
            </SessionProvider>
        </>
    );

It all squishes together because there is not 3 divs or elements in there

#

This is what it looks like if I put a div above the second one

queen needle
#

https://discord.mx/i/MueSqsQuvf.png?

This was the last time I did a side bar, and it was done like this:

 <main className="flex h-screen w-full flex-col">
      <div className="w-full h-full grid grid-cols-[0.4fr_2fr]">
        <Sidebar />
        <div className="flex items-center justify-center p-4">
          <div className="w-full max-w-4xl">
            <h2 className="text-xl font-semibold mb-4">Your content goes here</h2>
            <p>This is the main content area that will be centered while the sidebar stays on the left.</p>
          </div>
        </div>
      </div>
    </main>
#

If that is any help

sharp geyser
#

It should be thank you!

queen needle
#

it was a project i started and then abandoned lmao

sharp geyser
#

My issue was the footer not being stuck to the bottom

queen needle
#

Ohh

#

I wish i had these sidebars but no clue where they are on my computer

sharp geyser
#

I think because of me using grids it wasn't working properly

#

Got it!

#

Thank you a lot

#

I want to try something a little less traditional in terms of navigation iara_lul_haha

#

Always see top navs but im getting bored of em

pearl trail
#

the color 💀 (ik it's to test layout)

shell tundra
#

no that is the real colour

#

🔥

sharp geyser
#

Am I dumb

#

why is my transition not applying

#
.sidenav {
    transition: all 1000ms cubic-bezier(0.250, 0.250, 0.160, 1.025);
}

.sidenav:hover {
    width: 10rem;
}
pearl trail
#

do you have the width set without hover?

sharp geyser
#

I dont set a static width no

#

do I have to?

pearl trail
#

yes iirc, try it

sharp geyser
#

You're a god send

#

Also how can I make the main content not move when the sidebar is opened?

pearl trail
#

have sidebar with absolute or fixed position, and set top, bottom and either left or right to 0

sharp geyser
#

Interesting

pearl trail
#

yep, and for that, you can set padding or margin on the content based on the navbar's width if you like

sharp geyser
#

the width of the content is like..fucked no?

pearl trail
#

hmm, nope

sharp geyser
#

but the red background is now shorter

#

in width

pearl trail
#

you use padding or margin?

sharp geyser
#

I use a mix of both

#
'use client';

import { ReactNode } from 'react';
import { SessionProvider } from 'next-auth/react';
import { Session } from 'next-auth';
import Sidenav from '@/components/sidenav/Sidenav';

export default function LayoutShell({ children, session }: { children: ReactNode; session: Session | null }) {
    return (
        <>
            <SessionProvider session={session}>
                <div className={'flex h-screen w-full flex-col'}>
                    <div className={'w-full h-full grid grid-cols-[auto_1fr]'}>
                        <Sidenav />
                        <main className={'bg-red-500 p-4 mx-[3.5rem] w-full space-y-4'}>{children}</main>
                    </div>
                    <footer className={'p-4 bg-green-500'}>(footer)</footer>
                </div>
            </SessionProvider>
        </>
    );
}

#
import './Sidenav.css';

export default function Sidenav() {
    return (
        <>
            <div className={`bg-orange-500 p-1 sidenav`}>
                <h1>hello</h1>
            </div>
        </>
    );
}
#
.sidenav {
    transition: all 1000ms cubic-bezier(0.250, 0.250, 0.160, 1.025);
    width: 3.5rem;
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
}

.sidenav:hover {
    width: 10rem;
}
pearl trail
#

hm, your main supposed to be full width ?

sharp geyser
#

yes

pearl trail
#

with sidenav's position is fixed, your w-full h-full grid grid-cols-[auto_1fr] is no use anymore. that parent div is basically only styling the main

#

so you can try removing that, and for main, you don't actually do mx, since it margins both left and right. in this case, you only want to margin left

#

also fyi, you can do transition and hover in tailwind

#

smth like this can do it transition-all duration-1000 top..etc w-x hover:w-y

sharp geyser
pearl trail
#

your welcome ^-^

eternal osprey
#

ehh wtf

#

this never happened before on my mac

sharp geyser
#

Welcome to Mac

sharp geyser
#

This looks a little weird

#

The main content seems to stretch over into the sidenav

#

and also there are elements in the sidenav completely missing

sharp geyser
#

Never mind

#

turns out I was using the wrong component (imported one from a diff lib)

sharp geyser
#

Fixed

solemn marlin
sharp geyser
#

Yea

solemn marlin
#

nice nice, can do a lot with it.

#

That's how i made my site

sharp geyser
#

Indeed

solemn marlin
#

i have some fancy animations, but my navbar feels like 💩

sharp geyser
#

your navbar is cluttered

#

Also you ask for donations like 3 times

#

💀

solemn marlin
sharp geyser
#

hmmCat fairly certain a footer is supposed to be at the bottom

pearl trail
#

its called mider

sharp geyser
#

I really

#

can't for the life of me

#

figure out how to get this to work with flexbox

#
        <>
            <SessionProvider session={session}>
                <div className={'flex h-screen w-full flex-col'}>
                    <div className={'block md:hidden'}>
                        <header className={'flex flex-row justify-end p-2'}>
                            <Burger opened={opened} onClick={toggle} />
                        </header>
                    </div>
                    <div className={'flex flex-row h-full'}>
                        <Sidenav opened={opened} />
                        <main className={'p-4 md:ml-[3.5rem] grow z-0 space-y-4'}>{children}</main>
                    </div>
                    <footer className={'p-4 md:ml-[3.5rem]'}>(footer)</footer>
                </div>
            </SessionProvider>
        </>

Anyone can figure out and teach me, be my guest

#

I swear I am brain dead at css

#

I read some fuckin stackoverflows and I swear they were useless

pearl trail
#

that shouldn't happen pepe_glass_c

#

what happen if you remove this <main className={'p-4 md:ml-[3.5rem] grow z-0 space-y-4'}>{children}</main>

sharp geyser
#

like remove the entire tag?

#

footer in the center

pearl trail
#

yeah, is it really that element "renders twice" or not

sharp geyser
#

Well

#

main renders this

'use client';

export default function Home() {
    return (
        <>
            <div className={'h-full space-y-4'}>
                <div className="h-full flex items-center justify-center">
                    <h1 className={'text-4xl'}>HereForUs</h1>
                </div>
                <div className="h-full flex items-center justify-center">
                    <h1 className={'text-4xl'}>HereForUs</h1>
                </div>
            </div>
        </>
    );
}

#

So its supposed to be there twice

pearl trail
#

ohh

sharp geyser
#

but the footer for whatever reason just wants to ruin the party and get in the middle

pearl trail
#

what happen if you remove flex and flex-col on the parent div (first one)

sharp geyser
#

Assuming I am to bring back the main element

#

this happens

#
export default function LayoutShell({ children, session }: { children: ReactNode; session: Session | null }) {
    const [opened, { toggle }] = useDisclosure();
    return (
        <>
            <SessionProvider session={session}>
                <div className={'min-h-screen w-full'}>
                    <div className={'block md:hidden'}>
                        <header className={'flex flex-row justify-end p-2'}>
                            <Burger opened={opened} onClick={toggle} />
                        </header>
                    </div>
                    <div className={'flex flex-row grow'}>
                        <Sidenav opened={opened} />
                        <main className={'p-4 md:ml-[3.5rem] h-0 grow z-0 space-y-4'}>{children}</main>
                    </div>
                    <footer className={'p-4 md:ml-[3.5rem] grow'}>(footer)</footer>
                </div>
            </SessionProvider>
        </>
    );
}
pearl trail
#

oh well

pearl trail
sharp geyser
#

h-fit ?

#

Changes nothing

pearl trail
#

wait, lemme do quick testing

sharp geyser
#

Okay

pearl trail
#

you got it?

sharp geyser
#

Nah

#

Everything im trying is making it worse

pearl trail
sharp geyser
#

I somehow put the footer way off the page

pearl trail
#

if you remove h-full, it'll collapse because there's no height set

#

you can do min-h-screen and remove h-full on the parent

#

is it working? (i guess it's not)

sharp geyser
#

Erm

pearl trail
#

high chance it will not work. for the parent's class name, you can do min-h-screen flex flex-col, then for the childs, instead of h-full, use flex-1

sharp geyser
#

I am confused

pearl trail
#

you actually need to put the content first tbh for the child's height to be there

sharp geyser
#

I mean I had this, but the content's height is still off

pearl trail
#

can i see the code now?

#

-# sorry my brain is not working quite properly rn

sharp geyser
#
export default function LayoutShell({ children, session }: { children: ReactNode; session: Session | null }) {
    const [opened, { toggle }] = useDisclosure();
    return (
        <>
            <SessionProvider session={session}>
                <div className={'min-h-screen w-full flex flex-col'}>
                    <div className={'block md:hidden'}>
                        <header className={'flex flex-row justify-end p-2'}>
                            <Burger opened={opened} onClick={toggle} />
                        </header>
                    </div>
                    <div>
                        <Sidenav opened={opened} />
                        <main className={'p-4 md:ml-[3.5rem] h-full z-0 space-y-4'}>{children}</main>
                    </div>
                    <footer className={'p-4 md:ml-[3.5rem] absolute bottom-0'}>(footer)</footer>
                </div>
            </SessionProvider>
        </>
    );
}
#

I ended up using absolute

pearl trail
#

the main

pearl trail
sharp geyser
#

Always at the bottom?

pearl trail
#

if your main content is long enough, it'll scroll behind footer

pearl trail
sharp geyser
#

I want it always at the bottom

#

IS that not good?

#

-# I want it on record that I really hate css

#

yea

#

so

#

I hate css please save me from my suffering

pearl trail
#

if you still want to do that, put relative on the parent div

sharp geyser
#

I just want the footer to stick to the bottom

#

Why is this so hard

#

I would much rather prefer walking on hot coals right now

pearl trail
#

uhm, my question to clear this is, will your content have an actual content that's long enough?

sharp geyser
#

Well, my goal was to make the content take up full width

pearl trail
#

uh, height?

sharp geyser
#
'use client';

export default function Home() {
    return (
        <>
            <div className={'h-full space-y-4'}>
                <div className="h-full flex items-center justify-center">
                    <h1 className={'text-4xl'}>HereForUs</h1>
                </div>
                <div className="h-full flex items-center justify-center">
                    <h1 className={'text-4xl'}>HereForUs</h1>
                </div>
            </div>
        </>
    );
}

Make each div take up full height so it's scrollable

#

yea height my bad

#

im also tired

pearl trail
#

haha it's fine, then what is the "full height" you refer

sharp geyser
#

I only have night time to work on things since I spend the day with my gf panicBasket

pearl trail
#

full screen height?

sharp geyser
#

From top to bottom yes.

#

so yea screen height

pearl trail
#

so you do this

export default function Home() {
    return (
        <>
            <div className={'space-y-4'}>
                <div className="h-screen flex items-center justify-center">
                    <h1 className={'text-4xl'}>HereForUs</h1>
                </div>
                <div className="h-screen flex items-center justify-center">
                    <h1 className={'text-4xl'}>HereForUs</h1>
                </div>
            </div>
        </>
    );
}
sharp geyser
#

Well that would cause issues

pearl trail
#

what happen?

sharp geyser
#

It'd add more overflow than needed

pearl trail
#

pepe_glass_c do you want this <div className={'space-y-4'}> to take full screen and split those 2 childs into 50 50 height?

sharp geyser
#

Doesn't this look off?

pearl trail
#

i mean idk how you want the page to be actually look like so..

sharp geyser
#

god I wish it wasn't 1am

#

I would be so much better at explaining

#

😭

pearl trail
#

🙏 🙏

sharp geyser
#

Seemingly the footer is still inside the content

#

Unless im lookin at it wrong

#

Eh whatever

#

It seems fine

#

Seemingly works now I think

pearl trail
#

is this what you wanted?

sharp geyser
#

Not really. I want to be able to scroll between content 1 and 2

pearl trail
#

hm yeah i don't quite get what layout do you want 🙏

sharp geyser
#

what?

#

At this point im confused on whats confusing

#

It's the basic layout of every website

#

The easiest way I found in the past was to set the parent div of the layout to h-screen, and then in my pages use h-full

#

but introducing a footer seems to mess this up

pearl trail
sharp geyser
#

Right so not the animation, I guess cloudflare was a terrible example

#

I am explaining this the best I can, but it seems my words are just not making sense

#

I am just going to shelve this for tmrw. I am getting frustrated cause of how late it is and I want to sleep

#

and I dont want to take my frustration out on you

pearl trail
#

sorry, might be my english limitation. just trying my best 🙏

sharp geyser
#

No it’s not your fault

#

It’s 2am almost and I’m irritable right now for numerous reasons

#

I thought coding would calm me down guess not mmLol

sharp geyser
pearl trail
#

you too!

pearl trail
sharp geyser
#

If you’re still willing to later then yeah!

#

I’m sleeping in the next few minutes

pearl trail
#

alright see you later :)

languid sedge
#

change_presence discordpy not working in cog

how do i fix?
my code looks like this:


import discord
from discord.ext import commands
import asyncio

class StatusChange(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        self.bg_task = None
    
    async def cog_load(self): 
        print("Cog is loading...")
        self.bg_task = asyncio.create_task(self.rotate_status())

    async def rotate_status(self):
        statuses = [
            discord.Game("📅 Holiday tracker!"),
            discord.Game("🌙 Stars counter!"),
            discord.Game("☀️ Shadow length measurer!"),
            discord.Game("🌆 City lights admirer!")
        ]
        while True:
            for status in statuses:
                await self.bot.change_presence(status=discord.Status.online, activity=status)
                print(f"Status updated to: {status}")
                await asyncio.sleep(3600)
    
    async def cog_unload(self):
        if self.bg_task:
            self.bg_task.cancel()

async def setup(bot):
    await bot.add_cog(StatusChange(bot))```
queen needle
sharp geyser
#

That was my original idea but now I’m not so sure after sleeping on it

#

How do you guys usually make your pages?

pearl trail
sharp geyser
#

Yeah, but I’m wondering if that’s the best way to handle it

#

I think if there’s not enough content to fit in each section then it might end up looking weird

pearl trail
#

oh yeah

#

then i suggest making it like min-h-[50vh] for each "hereForUs"

#

or more or less

sharp geyser
#

Hm how would you normally do it?

pearl trail
#

hmm, depend on how much the content is. if it's like 50% of the screen, i do 100vh and center the content

#

or just make the content bigger KEK

sharp geyser
#

I see

#

I’ll play around with it then

#

Appreciate all the help

pearl trail
#

good luck :>

clear kite
deft wolf
#

🤨

neon flicker
#

I'm working on a bot dashboard, will I have to check every time a user updates a setting for a server (for example auto-role) if they're permitted in the server using Discord API?

deft wolf
#

I think you would quickly reach the rate limit this way

neon flicker
#

Could you please let me know a better way? I'm kind of lost

#

It checks it for the first time once the user logs in to make sure the servers are loaded properly

neon flicker
#

I'd appreciate any help

neon flicker
#

Yes, I'm pretty much stuck with making it secure so people won't be able to change other servers' settings using GET on the API link

vivid fulcrum
#

this endpoint seems to be in your lane

neon flicker
vivid fulcrum
#

so ratelimit the user on your backend so it doesn't hit discord's rate limits

#

but I don't think that's what you should do

vivid fulcrum
#

yeah now that I think about it, you should probably throttle the user on your side

#

allow them to try to manage a server to something realistic, like 3 requests/1.5sec

#

doing it that way actually protects your endpoint from being spammed & also gets the benefit of not hitting discord rate limits for free

#

in a production app, ratelimits should be applied to all of your endpoints anyway. sometimes alongside anti-csrf mechanics and basically anything else that allows the user to abuse your app

prime cliff
#

vibecat There we go nice

clear kite
sharp geyser
#

@pearl trail Did you ever tell me how to fix this, I can't remember

#

Cause I swear I fixed it

#

and now its a problem again

#

💀

prime cliff
sharp geyser
#

Yea I saw that and removed it

#

but at the end of it I can't remember if we actually solved it

#

cause I did end up going to sleep iara_lul_haha

prime cliff
#

Lol

pearl trail
sharp geyser
#
<SessionProvider session={session}>
                <div className={'w-full flex flex-col relative'}>
                    <div className={'block md:hidden'}>
                        <header className={'flex flex-row justify-end p-2'}>
                            <Burger opened={opened} onClick={toggle} />
                        </header>
                    </div>
                    <div>
                        <Sidenav opened={opened} />
                        <main className={'p-4 md:ml-[3.5rem] z-0 space-y-4 mb-1'}>{children}</main>
                    </div>
                    <footer className={'border-t-2 border-white/10 px-[3.5rem] absolute bottom-0 w-full overflow-x-hidden'}>
                        <div className={'flex flex-col md:flex-row justify-between items-center space-y-2 md:space-y-0 p-4'}>
                            <h1>HereForUs</h1>

                            <Group>{items}</Group>

                            <Group gap={'xs'} justify={'flex-end'} wrap={'nowrap'}>
                                <ActionIcon
                                    onClick={() => router.push('https://discord.com')}
                                    size={'lg'}
                                    variant={'default'}
                                    radius={'xl'}
                                >
                                    <IconBrandDiscord size={20} stroke={1.5} />
                                </ActionIcon>
                            </Group>
                        </div>
                    </footer>
                </div>
            </SessionProvider>
#
<div className={'relative h-screen'}>
                <Container
                    className={'h-[500px] md:h-[700px] flex flex-col justify-end items-start pb-48 z-1 relative'}
                    size="md"
                >
                    <Title className="title">Build Your Love Story Online</Title>
                    <Text className="max-w-full !text-white !text-lg md:max-w-[600px]" size="xl" mt="xl">
                        A beautiful, easy website builder for couples to celebrate, share, and preserve their journey — forever.
                    </Text>
                </Container>
                <Container
                    className={'h-[500px] md:h-[700px] flex flex-col justify-end items-start pb-48 z-1 relative'}
                    size="md"
                >
                    <Title>Wh</Title>
                </Container>
            </div>
#

I wanted to add more content after the first container, but that seems to cut into the footer

prime cliff
#

My guess is you'll need to add an overflow: if it's cutting into the footer

pearl trail
#

i assume that header is this?

                        <header className={'flex flex-row justify-end p-2'}>
                            <Burger opened={opened} onClick={toggle} />
                        </header>
```?
sharp geyser
#

header is that yea

#

It only shows when in mobile view tho

#

Thinking about it I likely don't need it, I can probably keep the sidenav open all the time, I think old code made it impossible

pearl trail
#

PepeGlasses lemme analyze a bit more

#

so like, the Burger is the actual header, yes? (the HereForUs,,, Contact,Privacy,ToS, discord Logo)

sharp geyser
#

huh no

pearl trail
#

oh it's the footer?

sharp geyser
#

wait am I misunderstanding

pearl trail
#

is this footer or header

sharp geyser
#

The burger is the header for when its in mobile view, so they can open and close the sidenav (I dont use a top nav)

#

what you circled is the footer

pearl trail
#

ahhh

quartz kindle
#

or a feather

sharp geyser
#

nvm

#

I cant send the gif I actually want to send

#

might get warned

quartz kindle
#

huehuehue

pearl trail
#

what happen if you remove absolute bottom-0 on the footer?

sharp geyser
#

It does go down a tad bit (literally an inch or two)

quartz kindle
#

kaboom happens

small tangle
#

:^)

sharp geyser
#

Yea but still not at the very bottom 😭

pearl trail
#

but is it at the bottom of main?

sharp geyser
#

Wait yea

#

Why the fuck is it all sorts of fucked

#

I am confusion

sharp geyser
pearl trail
sharp geyser
#

Im so stupid

#

Thank you once again my friend

pearl trail
#

haha no problem :D

sharp geyser
#

wait hm

#

Adding a second container messes with stuff, so I figured I'd remove it, and just add in the content all in that single container (idk if thats a good idea)

#

and then this happens

#

I really am not cut out for frontend work

#

I have no idea what im doing Waaaaaah

pearl trail
#

ah, so you only have 1 container now, and the height is still h-[500px] md:h-[700px] right?

sharp geyser
#

Yea

prime cliff
pearl trail
# sharp geyser Yea

well, the screenshot makes sense. the footer is placed right after h-[500px] md:h-[700px] ended

sharp geyser
#

I mean I know it makes sense

#

but I dont really understand how to get the effect I want

pearl trail
#

i haven't tried it yet, but you may want to do min-h-screen on the very top of the parent, then on the footer, add mt-auto. PepeGlasses

#

hoping that mt-auto will margin the empty space so the footer is at the bottom

sharp geyser
#

You are a genuis

pearl trail
#

is it working?

sharp geyser
#

Yes

pearl trail
#

wow

sharp geyser
#

Now then, how do you recommend I add more content to the main page?

pearl trail
#

nice, now you can add as many as container as you want, and the footer is still at the bottom

#

there will be no problem anymore

sharp geyser
#

So I can put another container in that page

pearl trail
#

yes

sharp geyser
#

and it'd work fine

#

good

pearl trail
#

try duping the current container multiple times

#

see if it's working

sharp geyser
#

You are indeed correct

pearl trail
#

🙏

#

for just in case, use min-h-dvh. it'll look ugly on mobile with address bar with just vh

sharp geyser
#

gotcha

#

Thanks a lot

#

I don't understand how you are able to think of all this

#

but your brain is really meant for frontend work mmLol

pearl trail
#

kekw, i'm still learning :) thank you tho

sharp geyser
#

Yea well, compared to me you are like an abundant book of knowledge

#

Do you mind if I bug you about my questions?

#

I know I ask for a lot of help 💀

#

Don't wanna be a bother

pearl trail
#

i'll help if i'm availale

sharp geyser
#

Thanks val_Prayge

pearl trail
sharp geyser
#

Right this is getting annoying

sharp geyser
# pearl trail <:Prayge:990101013455306842>

Rate my way of laying things out

<SimpleGrid cols={1} spacing={500} mt={50}>
                <Container className={' flex flex-col justify-end items-start z-1 relative'} size="md">
                    <Title className="title">A Home for Your Heart</Title>
                    <Text className="max-w-full !text-white !text-base md:max-w-[600px]" size="xl" mt="xl">
                        A beautiful, easy website builder for couples to celebrate, share, and preserve their journey — forever.
                    </Text>
                </Container>
                <Container className={' flex flex-col justify-end items-start z-1 relative'} size="md">
                    <Title className="title">What is HereForUs?</Title>
                    <Text className="max-w-full !text-white !text-base md:max-w-[600px]" size="xl" mt="xl">
                        HereForUs is a website builder made for love — a space where couples can celebrate their story, preserve
                        memories, and mark every milestone together.
                    </Text>
                    <Text className="max-w-full !text-white !text-base md:max-w-[600px]" size="xl" mt="xl">
                        We’re building a platform for heartfelt expression — for those who want to honor their bond and create
                        something lasting for the one they love.
                    </Text>
                </Container>
                <Container className={'flex flex-col justify-end items-start z-1 relative'}>
                    <div>
                        <Title className={'title'}>What does HereForUs offer?</Title>
                        <Text ta={'center'} mt={'md'} c={'dimmed'}>
                            Make use of our feature rich component library to build your love journey
                        </Text>
                    </div>
                    <SimpleGrid cols={{ base: 1, md: 3 }} spacing={'xl'} mt={50}>
                        {features}
                    </SimpleGrid>
                </Container>
            </SimpleGrid>
#

I am honestly contemplating walking on hot coals over doing this

pearl trail
#

good enough, nothing's wrong

sharp geyser
#

Really?

#

Surely I thought using 500 spacing was absolutely wild

#

My old code just wasn't responsive, and trying to get it responsive was annoying as all hell

pearl trail
#

i mean if it works, it works right? KEK if you don't want to use that, you can use like min-h-[500px] on each container

sharp geyser
#

This is what it looks like

#

bland asf

#

😭

pearl trail
#

idk but imo the very first container is placed a little bit too top

sharp geyser
#

Yeaaa

#

Hows this?

#

I can just increase the top margin of the grid

pearl trail
#

maybe around this

#

user often focus on the center of the screen first

sharp geyser
#

Wym

pearl trail
#

hmm, that's just my theory mmLul you can keep it as it is

sharp geyser
#

no like

#

Idk what you are saying to do

#

😭

#

Im a little slow today, once again mind is all over the place

pearl trail
#

oh, make the first container placed around that red box

sharp geyser
#

Interesting

#

May I ask how you'd do the html?

#

Cause I have been trying to get this stuff to be not super compact

#

but every time i try it is either too close together, or too far away

#

and they have to scroll ages

pearl trail
#

hmm, probably i'll reduce the gap between them like only ~96px, then set each container's height to be min-h-[60vh]

sharp geyser
#

Spacing looks uneven

#

Idk it just looks so funky like this

#

I keep playing around with the min-h

#

and it just looks off to me

pearl trail
sharp geyser
#

No

#

I removed the margin entirely and still like that

#
<SimpleGrid cols={1} spacing={'96px'}>
                <Container className={'min-h-[50vh] flex flex-col justify-end items-start z-1 relative'} size="md">
                    <Title className="title">A Home for Your Heart</Title>
                    <Text className="max-w-full !text-white !text-base md:max-w-[600px]" size="xl" mt="xl">
                        A beautiful, easy website builder for couples to celebrate, share, and preserve their journey — forever.
                    </Text>
                </Container>
                <Container className={'min-h-[50vh] flex flex-col justify-end items-start z-1 relative'} size="md">
                    <Title className="title">What is HereForUs?</Title>
                    <Text className="max-w-full !text-white !text-base md:max-w-[600px]" size="xl" mt="xl">
                        HereForUs is a website builder made for love — a space where couples can celebrate their story, preserve
                        memories, and mark every milestone together.
                    </Text>
                    <Text className="max-w-full !text-white !text-base md:max-w-[600px]" size="xl" mt="xl">
                        We’re building a platform for heartfelt expression — for those who want to honor their bond and create
                        something lasting for the one they love.
                    </Text>
                </Container>
                <Container className={'min-h-[50vh] flex flex-col justify-end items-start z-1 relative'}>
                    <div>
                        <Title className={'title'}>What does HereForUs offer?</Title>
                        <Text ta={'center'} mt={'md'} c={'dimmed'}>
                            Make use of our feature rich component library to build your love journey
                        </Text>
                    </div>
                    <SimpleGrid cols={{ base: 1, md: 3 }} spacing={'xl'} mt={50}>
                        {features}
                    </SimpleGrid>
                </Container>
            </SimpleGrid>
#

This is my most recent try

#

and the first element is still miles from the top

pearl trail
sharp geyser
#

Idk man

#

its how it is

pearl trail
#

can you like inspect the first container

sharp geyser
#

Yea, it's height is proper but the thing is the content sits at the bottom of it.

#

I tried centering it

#

but that didn't seem to do anything

pearl trail
#

it's because of this justify-end

#

try justify-center

sharp geyser
#

Ah right the bottom one isn't centered exactly iara_lul_haha

pearl trail
#

oot, but do you prefer 1st one or 2nd one on closed navbar? the 3rd pic shows how it looks on opened navbar

sharp geyser
#

First

vocal knot
#

ngl i agree

pearl trail
#

alright, thanks!

sharp geyser
#

No problem

prime cliff
#

ThonkWhat scam link gone

prime cliff
#

🙂 nice even a resources view of what the role can access

scenic horizon
#

Hello all, could anyone help me out with how to use CSS? I had a chat with support earlier today and they pointed me here. Basically, I have a custom background image but I want it to be more prominent and cover the entire page, and they had said CSS may be able to achieve this. I know less than nothing about CSS so any help would be great!

lyric mountain
#

uhhh...we'll need more info

#

where are you trying to put the image?

scenic horizon
#

Hey, sorry i missed your message, I'm using the websites "Background Url" box in the bots info page, and it does display properly, however its very hard to see and to my understanding, a custom CSS would be able to make this more prominent. I have toyed around with the inspect element shenanigans and i actually managed to edit it in a way i like and captured a screenshot. however, obviously I know nothing about web stuff and don't know how to..save it?

sharp geyser
#

if you messed with the css propeties and captured a screenshot, just modify those same properties in the long description

scenic horizon
#

I'm not 100% on how to do that, what I did was right clicked, hit inspect and eventually found the lines that edited my image and then tampered with those, I'm not sure how to I guess "properly" do it

#

Googling was not super helpful, they all included some kind of custom css button in the website itself which topgg lacks

#

I did see a video from a while ago where he had elements in the description itself, so would i find the relevant portion with inspect again, paste it there and edit it?

sharp geyser
#

iirc you can use inline styles in the long description, @shell tundra could correct me on this

scenic horizon
#

would it matter the order in which it is placed in the description like python? or could i put it either on top or the bottom of the rest of the description

#

I imagine it would go first but figured id double check

sharp geyser
#

I can't answer beyond this, I haven't done it before so I have no idea

sharp geyser
#

I think its just a style tag at the top of the description

gilded plankBOT
shell tundra
#

the cheatsheet will be helpful

scenic horizon
#

thank you! I'll have a look and see if I can figure it out

shell tundra
#

what exactly are you trying to set

#

have a look at this page and let me know

scenic horizon
#

I'm trying to ultimately edit the opacity of the background image i have set using the websites built in setting, i can attach the screenshot of what im trying to achieve

shell tundra
#

yeah that'd be helpful

scenic horizon
shell tundra
#

can you send me the page link please?

scenic horizon
shell tundra
#

check your page

#

still making edits

scenic horizon
#

That's..actually what i originally wanted before i compromised with my screenshot, the only thing really now is the colour, and its just a little zoomy, i love the aesthetic of topo so if it could show more of the design thatd be awesome

#

oh it just refreshed, thats amazing, maybe a 15% opacity boost?

shell tundra
#

hows this?

scenic horizon
#

hmm, i can't decide whether i want more colour or if i want the fade, they both look good imo, could you try a little closer to the screenshot opacity just so I can see?

shell tundra
#

can't get it to do the fading for some reason

scenic horizon
#

oh that's totally fine, i think for how the website is, a little more on the darker side is better, just enough to give it that personal touch

shell tundra
#

this is the best i can do

scenic horizon
#

honestly, i love it

#

its what i was aiming to do originally (whole page coverage) but struggled with immensely haha

shell tundra
#

no problem poggythumbsup

#

learning a little html/css would help

#

do you want it like this?

scenic horizon
#

yes fs, I will 100% be doing that after starting to port my little projects into..big ones 😂 thanks so much for helping me!!

shell tundra
scenic horizon
#

I really do love them both, the second one (if I was a wizard) I'd add boxes or something to make the foreground elements stand out and be more legible

#

It's off to YouTube university for me 🤓

shell tundra
#

boxes where?

#

this looks more black

scenic horizon
#

Ouuu hold on I like that

shell tundra
#

hold on let me do something else

#

@scenic horizon you like this?

#

i was making something similar for my topgg page too i just copied the code KEKW

scenic horizon
#

Honestly I don't have words, are you my dad

shell tundra
#

LMAO

scenic horizon
#

Whatever they're paying you it ain't enough

sharp geyser
#

Congrats

scenic horizon
#

I'm sweeping AND mopping for this

shell tundra
#

0.5$ please

#

i need to feed my family

#

ok i should study, rest is up to you. good luck!

scenic horizon
#

Don't worry about rent this month, I'll do extra chores 🙂‍↔️

scenic horizon
shell tundra
#

np

clear kite
eternal osprey
#

Hey, is it possible to check user statusses and how long theyve been playing it for?

#

Its for a game like black ops

deft wolf
#

Probably yes, I remember one meme where someone made a bot that banned people who played League Of Legends for more than 30 minutes

sharp geyser
#

oh shit dont even need to ping woo

#

I was about to

#

Sup woo you reading my mind?

sharp geyser
#

Just found it

#

Looks pretty legit

solemn latch
#

Yeah I have

sharp geyser
#

Ever used it?

solemn latch
#

Nah

sharp geyser
#

Lowkey might give it a try to see how well it works. Cause it could likely replace the need of a traditional IDP

solemn latch
#

I have no issues with next auth, since I just use the basic stuff anyway

sharp geyser
#

Yea

#

I mean tbf next auth also isn't like a authentication library

#

more of a middleman situation that helps you connect with idps

solemn latch
#

Yeah

#

I'm trying to refrain from changing things just to change them, use what I know

sharp geyser
#

Looks like better auth makes an attempt to replace self-hosted or cloud idps like authentik, authelia, zitadel, ory, etc

#

and use whats already existing

prime cliff
eternal osprey
#

Just 1 server

prime cliff
#

Then you'll be good

eternal osprey
#

Tyy

eternal osprey
#

Yoo whats going on with discord?

#

Been seeing a lot of posts on social media declaring the end of discord?

spark flint