#development

1 messages · Page 147 of 1

quartz kindle
#

my old function was also wrong

radiant kraken
#

also is the const here completely necessary?

earnest phoenix
#

No but it is to hint at the compiler for further optimizations, but most importantly to be 1:1 with the original solution

radiant kraken
#

does using const give you performance gains

earnest phoenix
#

Absolutely

lyric mountain
#

it leaves less guessing to the compiler

radiant kraken
#

ah alright

#

what about using curly brackets for variables?

#

they look really ugly in code tbh

quartz kindle
#

yeah whats up with that

earnest phoenix
#

That's called direct initialization, it allows for further optimizations by the compiler, using = means copy initialization which copies the entire value which is less performant/efficient

quartz kindle
#

so doing a = b + c means store b + c in some temp location, then copy it to a?

radiant kraken
#

but it just looks soo ugly sdForgor

radiant kraken
#

i don't see C++ codebases rewriting their variable initialization to {} anytime soon

quartz kindle
#

i mean it makes sense, but i would've guessed the lang/compiler knew to already store the result in the right location when its being asigned to a variable

earnest phoenix
quartz kindle
#

this one is also wrong, third and fourth should return 3 and 6

spark flint
#

ok time to start a war

quartz kindle
#

this one is correct

radiant kraken
#

no

spark flint
#

what is the fastest database for handling lots and lots of data

radiant kraken
#

JSON

#

war over

spark flint
#

as in like hundreds if not thousands of reads and writes a second

proven lantern
#

nice!

quartz kindle
#

do you need synchronous writes or can it be eventual consistency?

quartz kindle
#

:^)

proven lantern
spark flint
#

my old version of it used Mongo

#

which inserted every 1000 entries to reduce load

#

looking at Cassandra now too

quartz kindle
#

well, postgres is well known for being scalable, other than that, any other db thats is specifically designed for distributed storage and eventual consistency

spark flint
#

mongo took like 2 mins to query when it had 255 million entries

proven lantern
#

dynamodb is all you need

#

mongo is too expensive

quartz kindle
#

it all depends on configuration tbh

#

like MongoDB is tecnically designed for distributed computing too, but it takes very careful configuration to make it work corectly

#

here are some interesting comparisons

#

sorry for spam

proven lantern
#

no dynamodb?

quartz kindle
#

in this particular article no

#

isnt dynamo a database "service" tho

#

like, can you download it and install it offline?

#

all the ones above can

proven lantern
quartz kindle
#

ah ok

#

idk then, they didnt mention it, nor they did cassandra

#

anyays g2g sleep, its almost 3 am

#

ffs

proven lantern
#

ok

#

you can review my bot tomorrow

#

i finished that command

frosty gale
#

finally development is free

#

if i see one more function named getCost in this channel i am going to lose it

queen needle
#
const getCost = () => "L"```
soft laurel
#

I understand that server emojis can be added to Select Menus, but I'm missing how they can be added if the server does not have said emoji. I've seen other bots have emojis or icons in the Select Menus, but I don't have those emojis available. Any insights?

lyric mountain
#

They don't need to be in the server

#

All u need is the name + id

#

This applies to every component

civic scroll
#

what am i supposed to look at

radiant kraken
civic scroll
#

nothing happened

#

i tried viewing as desktop site

radiant kraken
tulip ledge
#

I did the rest of the math after that wich was actually quite simple

thick path
#

My websocket ping 40500 ms... How can I fix it...

quartz kindle
thick path
quartz kindle
#

if you did that right at the bot's start, wait a minute or so until the bot stabilizes then try checking the ping again

sharp geyser
#

@rustic nova Step one to making a storage server completed, got a minio server implemented sunglas

civic scroll
#

17s delay????

#

your internet has some serious issues

#

or your code is laggy

quartz kindle
civic scroll
#

that causes it to get spawned out of bounds

#

and said window doesn't have a handle

#

(projects -> pick any)

radiant kraken
#

oof

#

cc @queen needle

civic scroll
#

also the window dragging operations are often briefly suspended, resulting in a very jaggered feel

#

and scrollbars are not styled

#

there's also no window resize handler

#

but overall

#

it looks nice

#

it looked like what i could achieve, but failed to (i stopped and window and process management emulation)

radiant kraken
#

rip

civic scroll
#

'Home for Discord' website: navigation hover menu lacks opacity animation upon removal

#

another thing

#

besides Scroll to zoom, you should also handle Ctrl + Scroll input operations

radiant kraken
#

true

civic scroll
#

another thing is, handling cases where the controls grows out of the window

#

this looks illegal

#

besides that i have nothing else to say

#

because after all

#

you have a portfolio and i don't PensiveWobble

radiant kraken
#

you literally have a portfolio repo on your github

#

just pull up a figma and start working

civic scroll
#

i lack a dependency

#

sprite animation

radiant kraken
#

ezpz

civic scroll
#

no

#

this is png + wasm

radiant kraken
#

what the fuck

#

why

civic scroll
#

you can't draw raster art with svg

radiant kraken
#

is it gonna be like pixel art or something

civic scroll
civic scroll
radiant kraken
#

is that the thing they use for vtubers

civic scroll
#

yup

#

png for sprite assets and wasm for animating them

radiant kraken
#

do you have a planned layout on how it would look like?

civic scroll
#

sorta

#

storyboard, scroll-driven and interactive

quartz kindle
#

i need to install it too

civic scroll
#

or you can install Sayuri.AnimationEngine when it gets first stable release

civic scroll
#

wait also that means it's lightweight

#

ez space saving

real rose
#

you have thought this through

lyric mountain
#

nah I give up, was trynna make a new frame design to pair with the new star design but I'm just not good at this

#

whatever I make feels off the theme

frosty gale
#

battleless left 😢

peak drum
sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

deft wolf
frosty gale
#

should we start a campaign to get him back in

#

as much as we didnt realise it he was an integral part of development

radiant kraken
warm flare
#

Hi, I would like to ask how can I make vote rewards so when someone vote for my bot, it gives him some rewards

Pls ping me

radiant kraken
#

wdym by scroll driven btw

#

how would it work

lyric mountain
#

with it u receive an event when someone votes containing the voter's ID

warm flare
#

And where can I set it up

#

?

lyric mountain
#

in your code

#

do you know how websockets work?

warm flare
#

No

lyric mountain
warm flare
#

Thats java?

#

*for java?

lyric mountain
#

that's javascript

#

u want for java?

warm flare
lyric mountain
#

then look for the equivalent for python

civic scroll
civic scroll
radiant kraken
#

how would you fit that story in a mobile phone

civic scroll
#

a bit of layout work

radiant kraken
#

ah icic

civic scroll
#

or i can go with classic section-based approach
(about, projects, timeline, yada yada)

radiant kraken
#

please dont

#

im so tired of those kinds of portfolios

civic scroll
#

and ofc, interactive mascot

civic scroll
radiant kraken
#

what kind of story would it be?

#

will it be a character introducing your projects and skills or what

thick path
civic scroll
radiant kraken
#

cherupil?

civic scroll
#

yeah i don't remember

#

google it up

#

he's UI/UX designer at apple

civic scroll
#

but i'm guessing that's out of spot

#

i'm mainly suspecting about bad internet delay

thick path
#

No...

radiant kraken
#

i remember that

thick path
#

I use different hosting service bu I got same ms..

radiant kraken
#

his website is incredibly laggy though

lyric mountain
#

then it's code issue

civic scroll
radiant kraken
#

well

thick path
radiant kraken
#

unfortunately most website visitors have the same issue

#

not everyone has big expensive computers yknow

civic scroll
#

but yeah ima add an option to reduce animation / reduce assets if needed

civic scroll
lyric mountain
# thick path ...

don't know exactly what you expect us to tell you, there's nothing to work with

radiant kraken
#

also

#

different scrolling speeds can fuck up the pace of the animation

civic scroll
#

no problem

#

again, timeline should be scrollable

#

like how you scrubbing through a record

#

what matters is how you set it up

radiant kraken
#

yea

#

i hope you can optimize your website to reduce lag

civic scroll
#

about the mascot, she has delayed action so scrolling rapidly won't do anything, except swapping out her outfit

radiant kraken
#

your prts startup animation already looks really good

civic scroll
#

the old one?

thick path
#

Can I find the problem by adding the commands in order?

civic scroll
#

or the concept

lyric mountain
#

no

civic scroll
#

or the rewrite version

radiant kraken
civic scroll
#

oh the old one

lyric mountain
#

you can start by showing how you're checking the latency

civic scroll
#

it's not much yk

#

(open in pc)

thick path
wheat mesa
#

oh boy

thick path
#

.....

deft wolf
#

Omg

thick path
#

Yea I know

lyric mountain
wheat mesa
#

that could be part of your problems...

#

having to rewrite the entire file every time you update something

#

that's problematic

thick path
#

and also

#

Ill say terrible smth

#

Bot update ever after message this database

wheat mesa
#

oh god

#

yeah

#

that's why it's slow

craggy pine
#

Bot is on it's death bed with that 👀

wheat mesa
#

use a proper database like mysql, mongodb, postgresql, etc

#

something that is meant to be queried and updated often

thick path
#

Yea probably I use mongo db...

#

Now Ill go and learn mongodb...

wheat mesa
#

json is unoptimal for this use case because even though you can use json, it requires you to parse and reserialize the file each time you want to update it

craggy pine
#

MariaDB is pretty nice aswell. I like mysql queries. Like writing english.

wheat mesa
#

which is slow when your file is large

earnest phoenix
#

You should use something like PostgreSQL over MongoDB if you don't want to worry about scalability

wheat mesa
#

My personal favorite is postgres

wheat mesa
#

10/10 would recommend

civic scroll
wheat mesa
#

Mongo is easy to use and should be fine for what you're doing if you don't want the burden of learning SQL (Though it's not very hard)

thick path
#

Thanks everbody for advices guys

#

I know mysql, I was learn while I work on web development

#

Can I use this on my bot?

lyric mountain
#

yes it's a database like any other

thick path
#

Oh oke

#

Thx

craggy pine
lyric mountain
#

📠

warm flare
frosty gale
#

bruh i have this function on my microcontroller which does processing on a lot of bytes

#

i needed to call it 1024*1024 times and i was wondering why it was freezing then i worked out it would take 16-17 minutes to complete

#

second time i did it its almost instant

#

turns out gdb is just very slow with its "watch variable" feature

frosty gale
earnest phoenix
#

Yes you can, join the light side Chloe, experience the power of the LLVM project

peak drum
quartz kindle
#

low level database when

wheat mesa
#

I need a project

#

aaaaaaaaaaaaaa

#

maybe I'm just not motivated

lyric mountain
craggy pine
#

Making TCG cards seems fun. Did try it on my own project but it's a lot x.x

lyric mountain
#

wish I could make decent frames

#

but I didn't mean that type of tcg

proven lantern
#

NFT TCG

#

eminem will buy it

earnest phoenix
quartz kindle
#

using it for synchronous multiprocess cache / shared memory

#

much better than redis

frosty gale
#

this is the logo for gdb

#

very fitting the fish looks sick so it needs to be debugged

#

idk

rustic nova
#

bugfish

civic scroll
civic scroll
rustic nova
#

yes

frosty gale
#

who comes up with these gnu logos seriously

#

they suck

#

well now i know how a gnu sounds like

#

the sound it makes is fitting considering giving you weird linker errors for the simplest bug in your code is unintelligible

sullen crater
#

fish

spark flint
#

fish

proven lantern
#

when did discord invalidate discord invites?

#

i noticed the invite strings are 3 characters longer now

lyric mountain
#

maybe it already exists

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

soft laurel
#

With the JDA java discord api library, is there a way to acknowledge an Interaction without sending a message?

rustic nova
#

By doing a follow-up, dunno the equivalent of that in jda

soft laurel
#

What's a follow-up? I'm familiar with deferring a reply, but my understanding is eventually you still need to send a message to complete the action.

rustic nova
#

yeah the only way is to defer the reply if you want to actually respond to that specific interaction

soft laurel
#

Ah. feels bad. I have a StringSelectMenu that I don't want to have to respond to every selection. But I guess there's no way around that.

rustic nova
#

I remember using something in pycord that allowed me to respond to the interaction without a message, no clue what that was called though

soft laurel
#

cool cool. I'll look into that. ty

lyric mountain
#

like, if it's a button simply edit the message with the same content

#

this will consume the interaction and the user won't really notice anything

soft laurel
#

beauty. I'll give that a try. ty

wheat mesa
#

anyone got any vscode themes they recommend

#

been using this for a while and I want to change it up

frosty gale
#

bros making a whole turing machine 💀

#

i use github dark

#

cant find anything else thats a balance of cool and not distracting

wheat mesa
#

basically just going to be a visual brainfuck interpreter so you can see the steps it takes

earnest phoenix
wheat mesa
#

One Dark Pro

earnest phoenix
#

It also has tons of downloads

wheat mesa
#

ehhh

#

not a huge fan of the colors

#

feels a little scuffed

#

I think I'll keep running One Dark Pro for now

earnest phoenix
#

I don't think I would be able to program with those

wheat mesa
#

Yeah

queen needle
#

I use vesper++

sharp geyser
radiant kraken
radiant kraken
warm surge
pale vessel
warm flare
# lyric mountain https://docs.top.gg/libraries/python/

now i have this problem Traceback (most recent call last): File "/home/container/bot.py", line 37, in <module> bot.topggpy = topgg.DBLClient(bot, dbl_token) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/container/.local/lib/python3.11/site-packages/topgg/client.py", line 98, in __init__ self.http = HTTPClient(token, loop=self.loop, session=kwargs.get("session")) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/container/.local/lib/python3.11/site-packages/topgg/http.py", line 84, in __init__ self.session = kwargs.get("session") or aiohttp.ClientSession(loop=self.loop) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/container/.local/lib/python3.11/site-packages/aiohttp/client.py", line 228, in __init__ loop = get_running_loop(loop) ^^^^^^^^^^^^^^^^^^^^^^ File "/home/container/.local/lib/python3.11/site-packages/aiohttp/helpers.py", line 289, in get_running_loop if not loop.is_running(): ^^^^^^^^^^^^^^^ File "/home/container/.local/lib/python3.11/site-packages/discord/client.py", line 140, in __getattr__ raise AttributeError(msg) AttributeError: loop attribute cannot be accessed in non-async contexts. Consider using either an asynchronous main function and passing it to asyncio.run or using asynchronous initialisation hooks such as Client.setup_hook

#

(i did it like it was in that docs)

tulip ledge
#

@earnest phoenix

pale vessel
#

hehe that's what I did

errant flax
#

how would i add cookies into an axios request?

quartz kindle
errant flax
#

is the cookie required to be a string or can it also be an object?

quartz kindle
#

should i a string i believe

errant flax
errant flax
#

this seems to work

#

thx again poggythumbsup

lyric mountain
quartz kindle
#

thanks js :^)

frosty gale
#

for XOR ciphers when you have multiple bytes as the decryption key do you pad the input to match the multiples of the length of the key or do you just ignore that

#

i did it by padding the input to match the key multiples

#

have to make an exercise for a local school thats coming in to my work for some "work experience day" lol pretty fun

frosty gale
civic scroll
#

@rustic nova task view

real rose
#

looking p nice

lyric mountain
#

I think u can fetch votes, but you'll need to read the docs to know for sure

tulip ledge
#

Oh it sais lilyos…

civic scroll
#

but can it be an os if i modify the kernel?

tulip ledge
#

Oh it’s your os?

#

The design looks rlly slick

civic scroll
urban jay
#

If anybody happens to want a YouTube Data API library that's a little more noob-friendly and YouTube-specific than the googleapis npm package, I've made a library called Popyt that is just that.
https://npmjs.com/package/popyt
https://github.com/brandonbothell/popyt

It has life-saver quality of life features like caching and pagination built-in, and over 80% test coverage that is all passing.
Other features include automatic input resolution (detect whether the user is trying to search for something or list it by ID/URL automagically!) and methods directly on the object classes for quick data access/editing.

Sorry if this is advertising, but I see similar messsages in this channel and have made the library myself (with a few open-source contributions) over the last four years or so, and really want to show my work to others and hopefully help people make great things.

proven lantern
#

do these colors look right? it's using this logic to pick the background color based on the text color, but some colors seem too light to have a white background.

const contrastColor = (rgb) => {
    const luma = (
        0.299 * ((rgb >> 16) & 0xff) +
        0.587 * ((rgb >> 8) & 0xff) +
        0.114 * (rgb & 0xff)
    ) / 255;
    return luma > 0.5 ? 0x000000 : 0xffffff;
};```
urban jay
#

Everything is legible to me but I have no forms of color blindness

proven lantern
#

does this look better? js const contrastColor = (rgb) => { const luma = ( 0.299 * ((rgb >> 16) & 0xff) + 0.587 * ((rgb >> 8) & 0xff) + 0.114 * (rgb & 0xff) ) / 255; return luma > 0.36 ? 0x000000 : 0xffffff; };

urban jay
#

Personally my solution would be to give the user list of colors to choose from and use slightly different colors internally depending on the theme of the website

proven lantern
urban jay
#

Ohhhh, maybe then I would adjust the background color of the role text to always be the same color for consistency

#

Only because everything is a lot more understandable to the human brain, but maybe I'm just easily overwhelmed lmao

proven lantern
#

colors are tricky

urban jay
#

Giving random roles background color makes them seem more important

proven lantern
#

i need to figure out how to lighten or darken a color

urban jay
#

So I would give all of them some type of background shading/color to keep it consistent

proven lantern
#

they have a black background on extra dark blue

#

so you can't see it

#

maybe i just need to make that dark blue less dark

urban jay
#

Oh wow, I would make the black more like discord gray

#

Yeah, anything to make the text outline pop from the background a bit more

strange wind
proven lantern
earnest phoenix
#

Hello?

#

Is an admin here or something?

urban jay
proven lantern
urban jay
#

It looks like you're adding a "stroke" using a workaround I found on stackoverflow using text shadows, which is probably not the best way to do it

proven lantern
#

that text-stroke property doesn't look like it's a standard

#

yet

#

looks better

#

though

urban jay
# proven lantern

It seems like a text shadow like this works well until you zoom in on it too much:

text-shadow: 
    1px 0 0 white, /*right */
    0 1px 0 white, /*top */
    -1px 0 0 white, /*left */
    0 -1px 0 white; /*bottom */```

But yeah I agree that it looks a lot better than before here
proven lantern
#

noice

eternal osprey
#
.addStringOption(option =>
    option.setName('severity')
      .setDescription('The severity of the blacklisted word')
      .setRequired(true))
      .addChoices([
        ['Warn', 'warn'],
        ['Mute', 'mute'],
        ['Kick', 'kick'],
        ['Ban', 'ban']
      ])```

how come that it says:  (intermediate value).setName(...).setDescription(...).addStringOption(...).addStringOption(...).addChoices is not a function
proven lantern
#

.setRequired(true))

#

@eternal osprey ^

copper trail
#

Yes

spark flint
#

omg its nextcord

#

(real)

earnest phoenix
#

I created a Base class to give an extends in a class to create the slash commands, passing the options in this, but this is not accepted in super, or before it, how can I solve?

example of what i want to do:

class Base implements ISlashCommands {
    public name: string;
    public description: string;
    public name_localizations?: object | undefined;
    public description_localizations?: object | undefined;
    public options?: ApplicationCommandOption[] | undefined;

    constructor(slashCommandBaseOptions: ISlashCommands) {
        this.name = slashCommandBaseOptions.name;
        this.description = slashCommandBaseOptions.description;
        this.name_localizations = slashCommandBaseOptions.name_localizations;
        this.description_localizations = slashCommandBaseOptions.description_localizations;
        this.options = slashCommandBaseOptions.options;
    }

    getName(prefix: string): string {
        return prefix;
    }
}

class SlashCommand extends Base {
    constructor() {
        super({
            name: this.getName('example'),
            description: this.getName('example'),
            options: [
                {
                    name: this.getName('example'),
                    description: this.getName('example')
                }
            ]
        });
    }

    execute()...
}
#

anyone with any ideas? pogey

quartz kindle
#

also, you cant call this inside super

#

this only becomes available after super has completely finished

earnest phoenix
#
class Base implements ISlashCommands {
    public name: string;
    public description: string;
    public name_localizations?: object | undefined;
    public description_localizations?: object | undefined;
    public options?: ApplicationCommandOption[] | undefined;

    constructor(slashCommandBaseOptions: ISlashCommands) {
        this.name = this.getName(slashCommandBaseOptions.name);
        this.description = slashCommandBaseOptions.description;
        this.name_localizations = slashCommandBaseOptions.name_localizations;
        this.description_localizations = slashCommandBaseOptions.description_localizations;
        this.options = [
            {
                name: this.getName(this.options.name)
            }
        ]
    }

    getName(prefix: string): string {
        return prefix;
    }
}

Error: The type '{ name: string; }' cannot be assigned to type 'ApplicationCommandOption'.
The type '{ name: string; }' does not have the following properties of type 'ApplicationCommandSubCommand': type, descriptionts(2322)

#

gives a typing error that comes from djs

#

and even so, I could not use it that way because I could only pass one option

#

and my creativity is nothing but that KEKW

pale vessel
#

you aren't providing the option type and description?

#

seems like a valid error to me

earnest phoenix
#

I'm trying to think of a way to get the same result as this in super

earnest phoenix
quartz kindle
#

i still dont get what you're trying to do lol

earnest phoenix
#

lol

earnest phoenix
#

so that I can manage more easily

#

for example, there is a yaml folder, with the text options of the specific action that is identified with a prefix, there will be the command name, description, locations of the name, etc...

#

so i am creating some functions such as response, getName and getDescription

#

and I wanted to implement them in a way that avoided importing, so that the code would be cleaner

#

and more self explanatory to myself

earnest prawn
#

This grab command in my old code iam add new code but not removed this grab command snd also new cmds not showing how fix 🥺

lyric mountain
#

Because those methods don't exist yet

lyric mountain
#

And yeah, neither does this

tulip ledge
#

how do the modals work? Are they message components? How do I display them and get back data?

lyric mountain
#

They're interactions

#

Like slash

tulip ledge
#

mmh how do I display one?

#

to the user

lyric mountain
#

Use the hook

tulip ledge
#

what hook

#

this is all the documentation I could find

#

not very helpfull

lyric mountain
lyric mountain
tulip ledge
#

I want to make the user press a button on a message and then the modal should pop up is that possible?

tulip ledge
#

ty

lyric mountain
#

It's the same as sending an eph message

quartz kindle
#

just having the code will not register them automatically, and removing the code will also not unregister them automatically

#

you need to explicitly do that

frosty gale
#

do nodejs/express http servers support SO_REUSEPORT?

rustic nova
#

whats SO_REUSEPORT

frosty gale
#

it lets multiple applications listen to the same port on linux

rustic nova
#

sus

lyric mountain
#

not...exactly

#

ah nvm, I mistook with reuseaddr

frosty gale
#

pesky torvalds confusing us by giving 2 different things very similar names

lyric mountain
#

but that can lead to UB no?

quartz kindle
#

tldr nodejs will not support it because there is no way to emulate it on non-linux systems

#

and according to them, the core values of nodejs is to work the same on all systems

#

the only OS where node will actually use SO_REUSEPORT is BSD

#

because on BSD REUSEPORT and REUSEADDR essentially do the same thing

#

and nodejs does support REUSEADDR

#

however as someone pointed out in the last comment, there is a trick you can use to enable that feature

#

open the port outside of node, then inherit the port through its file descriptor

earnest prawn
#

@quartz kindle bro

#

Halo

#

Can you pls tell

#

Register

quartz kindle
earnest prawn
#

@quartz kindle can you check dm

proven lantern
#

Tim open your door

rustic nova
#

tim open the noor

earnest phoenix
#

Hi, how do I make a widget on top.gg?

#

like this

lyric mountain
#

html

#

either through an iframe or putting it directly on the longdesc

earnest phoenix
#

like this ?

lyric mountain
#

that id is for the iframe, not your bot's

#

btw, I do hope the bot isn't entirely about nsfw

deft wolf
#

It is

#

We Love NSFW is a bot based on the NFW theme but which also contains fun and useful moderation commands.

rustic nova
#

that bot sounds familiar

spark flint
deft wolf
spark flint
#

lmfao ban evasion

#

smh @rustic nova get their ass

deft wolf
#

I love how instead of writing a ban appeal they try to add a bot from another account even though it has already been declined twice for the owner being banned

spark flint
#
#

i love this

#

number one result on UD

rustic nova
#

ian deployed

frosty gale
#

ive actually had it UP TO FUCKING HERE with linux

#

ive been trying to allow r/w access for a SPECIFIC FILE SPECIFIC ACCOUNT

#

litearlly tried every command on the planet still "permission denied"

#

user owns the file too 💀

#

maybe ill have some luck with filezilla instead of linux cmd line

#

also which genius over at the linux foundation decided it was a great idea to not allow user accounts to listen to port 80

#

instead making people run apps with sudo/root to run applications and opening up a massive vector of attack

#

ive had enough of linux for today

#

ok they apparently did somewhat address it via: /sbin/sysctl -w net.ipv4.ip_unprivileged_port_start=0
but it was not easy to find this since apparently its a very new feature

sharp geyser
#

Same thing happens to me

#

I’ve given up and just sudo it

frosty gale
#

turns out it was a symlink

#

for some reason permissions applied to symlinks dont get applied to the destination of the symlink

#

so it still permission denies

#

cmd line needs to make it more clear whether something is a symlink or not

#

instead you need to run an explicit command

earnest phoenix
#

Unless you're using a terminal that doesn't support colors

#

And if so there's the file command (it may not be installed but you can install) so you can run file <path> and it'll tell you what it is, if it's a symlink it'll tell you that

#

For example:

wheat mesa
#

I’m going to create another bot project that uses postgres as my database of choice. Should I bother learning how to use something like docker to deploy it? Or should I just go with my usual “clone the repo and pray there’s not a ton of setup on the host” approach

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

lyric mountain
#

just add a command cooldown that refreshes itself if used before the cooldown expires

sage bobcat
#

One message removed from a suspended account.

lyric mountain
#

it kills 99% of the bot spams

#

make it a random cooldown time and it kills the remaining 1%

lyric mountain
#

they probably got caught in a bot farm

sage bobcat
#

One message removed from a suspended account.

wheat mesa
#

I suppose I should learn it anyways but still

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

wheat mesa
#

Yeah that’s the biggest reason as to why I was thinking of doing this

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

wheat mesa
#

Is docker something you have to set up from the very beginning or can you kinda just throw an existing codebase inside of it and work with it from there

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

wheat mesa
#

I’ll look into it

sage bobcat
#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

#

One message removed from a suspended account.

glass marsh
#

nevermind have opened a discord support ticket

lyric mountain
#

why'd you delete the original question tho

glass marsh
#

not everyone needs to know 😄

soft laurel
hasty nest
#

my bot too runs in a docker container (three actually), they're great for deployment

proven lantern
#

i run AWS in docker on my computer

#

the whole thing

grave skiff
#

So how do I view the list of all Dayz trader bot commands once I’ve added it to my discord server?

hasty nest
hasty nest
grave skiff
#

Oh well this is where the trader bot sent me to

#

At least it’s the discord it sent me to for it I thought

craggy pine
grave skiff
#

Thanks

craggy pine
#

np

cerulean ingot
radiant burrow
#

@cerulean ingot I think it's a matter of checking the pateron python api

cerulean ingot
#

cant even get my patreon client

radiant burrow
#

oh you already have it set up?

cerulean ingot
#

in my code? maybe

#

i cant test it without my client secret and shit

radiant burrow
#

is this what ur using

cerulean ingot
#

no...

#

i was going to use requests

radiant burrow
#

oh ok. I don't know enough to help with that sorry

#

I don't even use the pateron py API but that has documentation if u need

neon leaf
#

what would be the best for storing passwords?

import { encryptStr, hashStr } from "rjutils-collection"

const ENCRYPTION_KEY = 'something'

const getHashPassEH = (password: string) => {
  const encrypted = encryptStr({ text: hashStr({ text: password, algorithm: 'sha512' }), key: password })

  return hashStr({ text: encrypted, algorithm: 'sha384' })
}

const getHashPass = (password: string) => {
  return hashStr({ text: password, algorithm: 'sha384' })
}

const getHashPassE = (password: string) => {
  const encrypted = encryptStr({ text: hashStr({ text: password, algorithm: 'sha512' }), key: ENCRYPTION_KEY })

  return hashStr({ text: encrypted, algorithm: 'sha384' })
}

const getPassE = (password: string) => {
  return encryptStr({ text: hashStr({ text: password, algorithm: 'sha512' }), key: ENCRYPTION_KEY })
}```
rustic nova
#

Add some salting too

#

Then essentially yes

#

Storing, just as a base64 string

quartz kindle
#

just use a password hashing algorithm

#

like bcrypt, scrypt or argon2

#

nodejs has scrypt built in

slender wagon
#

using chakra-ui btw:

   <Box as="li">
            <LinkBox>
              <LinkOverlay href="/security" onClick={onToggle}>
                <Button
                  leftIcon={<FaUserSecret />}
                  fontWeight="bold"
                  px={4}
                  py={2}
                  w={32}
                  bg={'transparent'}
                  color="white"
                  onMouseEnter={() => setShowSecurityText(true)}
                  onMouseLeave={() => setShowSecurityText(false)}
                  _hover={{
                    bg: 'red.600',
                    borderColor: 'red.600',
                  }}
                >
                  <animated.span style={{ ...securityTextStyle }}>
                    Security
                  </animated.span>
                  {!showSecurityText && '******'}
                </Button>
              </LinkOverlay>
            </LinkBox>
          </Box>
#
  const [showSecurityText, setShowSecurityText] = useState(false);

  const securityTextStyle = useSpring({
    opacity: showSecurityText ? 1 : 0,
    config: { duration: 500 },
  });
rustic nova
quartz kindle
#

sure, but in that case start with the basics of how password hashing algorithm works, for example how its purposefully inefficient to make the cpu spend more time on each password and prevent dictionary attacks

eternal osprey
#

is there any way to decorate this embed, meaning but a background image or something? I was thinking about using canvas but yeah.. not sure how to get all the info's on the embed, on the canvas image.

harsh nova
#

You cannot change the background colour of the embed unfortunately. Best you can do is change the left border colour

eternal osprey
#

as i figured that already. I might be able to send a message attachhment instead right?

#

What i actually wanted to do, edit an image to my liking, and then use canvas to put the details as depicted above onto my embed.

#

using the .setImage() property, i mean it should work \0/

#

but right now i am having issues putting the text onto the image.

slender wagon
lyric mountain
#

@quartz kindle what was a good websocket ping interval? every 2 seconds?

earnest prawn
#

A verified music bot change in to all in one bot code any issues

deft wolf
lyric mountain
#

just remember to update your description on topgg if u already submit it for verification

hasty nest
#

I love having to deal with sync process timeouts

lyric mountain
#

async u mean

hasty nest
#

sync

#

async process timeouts are easy

lyric mountain
#

how does a sync process timeout?

hasty nest
#
tokio::select! {
    _ = long_async_fn() => {},
    _ = tokio::time::sleep(Duration::from_secs(2) => return Err(TimedOut)
}

Timeout for an async function

hasty nest
lyric mountain
#

then how did u?

hasty nest
hasty nest
radiant kraken
#

since it's _ = i suppose you were meant to store it in some sort of variable

#

wait is it for something like this? ```rs
tokio::select! {
value = long_async_fn() => println!("{:?}", value),
_ = tokio::time::sleep(Duration::from_secs(2)) => return Err(TimedOut)
}

radiant kraken
#

o nice

lyric mountain
radiant kraken
#

can't you just spawn a thread for the blocking task and for the timeout and select! them

hasty nest
# lyric mountain

i ended up moving the goalposts so i don’t have to worry about it

#

i was going to allow users to have custom rendered SVGs for my leveling bot, but i’ve decided to just make a library of these cards to pick from

lyric mountain
#

no, what I mean is why is sync timeout an issue if you cant have sync and timeout in the same context?

radiant kraken
#

ah

#

icic

hasty nest
#

you need to spawn a new process

#

which is a huge pain in rust

lyric mountain
#

well, yeah but it's not nearly impossible - it is straightout impossible

radiant kraken
#

yeah why not just use async at this point

lyric mountain
#

that'd be async

hasty nest
radiant kraken
#

what library

hasty nest
#

i mean async as in rusts async/await system

hasty nest
#

it’s CPU-bound

radiant kraken
#

wdym by that?

lyric mountain
#

I suppose resvg is similar to java's g2d, as in not being thread-safe

hasty nest
#

the issue is that i can’t just cancel it in the middle of it running like i can with some asynchronous functions

lyric mountain
#

cant u just spawn a new thread?

hasty nest
lyric mountain
#

killing the thread would cease any actions within it

hasty nest
#

there is no way to do so without potentially fucking your allocator

lyric mountain
#

you can make a wrapper which checks whether the thread was signalled to stop, refusing to continue if it was

#

for the svg operations, that is

hasty nest
#

no, because that would require forking resvg

#

all the time would be in an external function

lyric mountain
#

cant u just extend it?

hasty nest
#

huh?

#

wdym by that

lyric mountain
#

idk how things work in rust regarding oop, or if that lib uses class instances at all, but for java I'd just class SomeName extends Graphics2D and override the methods to add stuff on top of them

#

another option is to make your own drawing suite, svg ain't too hard to parse into opengl instructions

hasty nest
radiant kraken
#

rust has no oop

hasty nest
#

i can wrap the function fine

hasty nest
radiant kraken
#

you just store it's value in a struct

#

just like what you would do in C

lyric mountain
#

eh

lyric mountain
hasty nest
radiant kraken
#

but technically you can simulate extending with Deref

lyric mountain
#

well not necessarily a lib, just the functions to pass svg to opengl

lyric mountain
hasty nest
#

parsing SVG is incredibly dangerous

#

and i’d rather a big library do it and i can sanitize the SVG manually

lyric mountain
#

wdym?

#

isn't svg 1:1 to opengl operations?

hasty nest
#

in theory yes

#

in practice no

#

loading fonts is nontrivial

radiant kraken
#

how is it incredibly dangerous

hasty nest
#

resvg is like 70,000 lines of code

lyric mountain
#

loading fonts is trivial in opengl, and there's likely a lib for handling xml for rust

hasty nest
#

also, i don’t think fly VMs have opengl access

lyric mountain
#

fly?

hasty nest
hasty nest
#

i could absolutely write my own renderer on top of resvg that took care of timeouts

#

but i don’t really care enough

lyric mountain
#

hetzner for example is $8.47 for 4vCPU 8GB

#

cheaper if u dont care abt ipv4

hasty nest
#

i use their 256mb 1vcpu plan

#

which may have poor performance per dollar, but i’m not aware of any providers that have a cheaper plan then that

rustic nova
rustic nova
#

very cheap, yet trustworthy names of hosts

lyric mountain
#

contabo is fairly good, didn't have issues since they changed their infra

rustic nova
#

just had issues with network connectivity a few days ago, which caused some important infrastructure to die while I was at work

hasty nest
rustic nova
#

they gave me a prio ticket though

hasty nest
#

and don’t come with a lot of the convenience features

lyric mountain
#

the move to full-ssd was good but the hdd plans were decent for storage lmao

#

not much for anything else

hasty nest
#

i am aware of the alternatives, but i prefer fly for little things- which is currently all of my projects

rustic nova
#

then you'll have to deal with that price

hasty nest
rustic nova
#

and the money/resources balance

hasty nest
#

as stated, i don’t use the expensive plan

#

i use the 1.90/mo/app plan

lyric mountain
rustic nova
#

never had been affected by any maintenance tbf

lyric mountain
#

usually I dont even notice they went down

rustic nova
#

same

#

lmaoo

hasty nest
#

if i can, cloudflare workers, but the rust support is lacking and the lack of database connections hurts me

#

although if anyone knows any good orchestration systems for VPS services, that would be appreciated- i might look into something like Terraform with Kubernetes, if i ever grow beyond a single fly.io VM

lyric mountain
#

orchestration? as in, pipelines?

#

if so u can use github actions

hasty nest
#

i’ve yet to come across something with the same kind of DX as fly, which i value a lot

#

baremetal servers are nice until you want to automate deployments

lyric mountain
#

whats dx?

hasty nest
#

developer experience

earnest phoenix
radiant kraken
#

well said

brisk light
#

I want to replace ✔️Verified✔️ role with all the users in the server
The bot wasn't designed me i never worked with discord api
Please help

    
    userDict: dict = {}
    for i in range(len(role_members)):
        userDict.update({role_members[i].name: role_members[i].id})

    await appendUser(userDict)
    await interaction.response.send_message("Done, Collected all users.")
rustic nova
#

what does appendUser do

#

you're not providing a user to it

#

also

#

getting roles and fetching the members from it doesnt work like that either

brisk light
# rustic nova what does appendUser do

    async with aiofiles.open("./users.json", "w+", encoding='utf-8', errors='ignore') as file:
        await file.seek(0)
        await file.truncate()
        await file.write(dumps(usersList, indent = 4, ensure_ascii=False))
        ```
#

???

deft wolf
#

Oh no, json database monkaShake

brisk light
#

Gonna help or not???

rustic nova
#

.members is not a thing

quartz kindle
#

discord uses ~45 seconds

rustic nova
#

iirc discord paginated bans

#

or not

eternal osprey
#

using a foreach

#

but idk still doesn't work

#

749763576226381845 is not banned.

rustic nova
#

post your code again

eternal osprey
#
interaction.guild.bans.fetch().then(bans => {
  const bannedUser = bans.find(ban => ban.user.id === memberID);
  if (bannedUser) {
    console.log(`${bannedUser.user.username} is banned.`);
    
  } else {
    console.log(`${memberID} is not banned.`);
   
  }
});```The user is in the bans section
#

i verified that both ids are correct.

rustic nova
#

wow djs really fucked up their docs now lol

#

barely usable

#

see if setting cache: false makes a difference

proven lantern
#

discord.js... more like discord.ts

#

shame

slender wagon
#

someone told me about discordeno

#

never tried

#

but people say it's quite good

eternal osprey
#

didn't work sadly

#

Error [FETCH_BAN_RESOLVE_ID]: Couldn't resolve the user id to fetch the ban.

slender wagon
#

└─┬ react-spring@9.7.2
└─┬ @react-spring/zdog@9.7.3
└── react-zdog@1.1.1

for some reason react-spring has this dependency called react-zdog which requires react lower than version 17

#

What could be a way around this

#

i really don't wanna get rid of react-spring

lyric mountain
earnest phoenix
#

Though from looking at it, it supports React 17 and 18

slender wagon
#

yeah i wiped out everything and reinstalled

earnest phoenix
#

You'll have to change >=16.8 in that line to ^16.8.0 || ^17.0.0 || ^18.0.0 to make it support the new React versions

digital swan
#

im not a cache professional but my users cache limit doesnt seem to be working

proven lantern
#

i see three issues. your number has an underscore. there is an arrow character instead of => and there are 3 parallel lines instead of ===

#

you're welcome

digital swan
#

underscore is to help readability (doesn’t affect numbers afaik)

Those are font glyphs my guy

quartz kindle
#

hes obviously trolling lel

#

where are you using that manager option?

#

Options.cacheWithLimits()?

digital swan
#

yeah i was hoping that

#

yeah cachewithlimits

#
makeCache: Options.cacheWithLimits({
    ApplicationCommandManager: 0,
    BaseGuildEmojiManager: 0,
    GuildBanManager: 0,
    GuildInviteManager: 0,
    GuildStickerManager: 0,
    GuildScheduledEventManager: 0,
    MessageManager: 50,
    PresenceManager: 0,
    ReactionManager: 0,
    ReactionUserManager: 0,
    StageInstanceManager: 0,
    ThreadManager: 0,
    ThreadMemberManager: 0,
    VoiceStateManager: 0,
    GuildEmojiManager: 0,
    AutoModerationRuleManager: 0,
    GuildForumThreadManager: 0,
    GuildTextThreadManager: 0,
    UserManager: {
      maxSize: 69_420,
      keepOverLimit: (user) => user.id === user.client.user.id,
    },
    GuildMemberManager: {
      maxSize: 69_420,
      keepOverLimit: (user) => user.id === user.client.user.id,
    },
  }),```
quartz kindle
#

well, last time i tested this, it worked, but i havent messed with djs in a long time so idk

#

does 0 work for the other managers?

proven lantern
digital swan
digital swan
#

it works fine on a dev bot with a lower limit

sharp geyser
#

So I went onto my vps after realizing that my site no longer is running and all the firewall stuff is just gone

#

all it has is active

#

but none of the nginx or mailcow ports that are usually open are and I don't remember what nginx uses so any help?

#

cause iirc nginx uses a specific port other than what I have in my server blocks no?

#

fixed it

lyric mountain
sharp geyser
lyric mountain
#

Lmao

#

What does that add? 80, 443, 8080 and alikes?

sharp geyser
#

80 and 443

#

Nginx Full: This profile opens both port 80 (normal, unencrypted web traffic) and port 443 (TLS/SSL encrypted traffic)
Nginx HTTP: This profile opens only port 80 (normal, unencrypted web traffic)
Nginx HTTPS: This profile opens only port 443 (TLS/SSL encrypted traffic)

sharp geyser
#

So I am using Contabo's s3 object storage cause its fairly cheap, but I am wondering how I would go about dishing out the space on it to other users and make sure they can only access what is given to them (or how I would even give them space). If anyone has any idea or has done this before please do let me know, googling it has only given results that tell me what their object storage is and not how to accomplish what I want. From my understanding even though you can create accounts on contabo's object storage it gives them full access to any of the buckets made allowing them to read and write to any of them (just not create their own bucket)

lyric mountain
sharp geyser
#

Oh?

lyric mountain
#

Like, you already have ftp access to it, simply create an api for managing the data

sharp geyser
#

So should I just make a database of users and essentially link their account to a specific bucket?

#

whats ftp

lyric mountain
#

I THINK apache/nginx are able to control that through plugins, but never attempted something like that

sharp geyser
#

hm

lyric mountain
sharp geyser
#

I just wanna make sure no one can interact with another's bucket

lyric mountain
sharp geyser
lyric mountain
#

Then u can retrieve folder size to check how much space the user has left

sharp geyser
#

I didn't know there was such a thing as an ftp address

lyric mountain
#

It's like using http, but for files

sharp geyser
#

I don't know how this would work with contabo

lyric mountain
#

Like ftp://123.123.123.123:1234

sharp geyser
#

Would this be something I have to do myself?

lyric mountain
#

Their storage already has ftp access no?

#

Like, how do u access it?

sharp geyser
#

I access it through their panel

#

I dont know of any other way to do so

lyric mountain
#

Can u filezilla into it?

sharp geyser
sharp geyser
#

I dont think so

lyric mountain
#

That url, what is it used for?

sharp geyser
#

Also no idea

#

When I visit it I just get a {'message': 'Unauthroized'}

#

I assume its meant to give access to that specific bucket

#

but you need credentials to do so

lyric mountain
#

Maybe, try to see if u find any docs on it

sharp geyser
#

but as far as docs on the object storage goes

#

I dont really understand much

lyric mountain
#

There's likely a way to ftp into it, as using a panel defeats the purpose of a storage server

#

As it'd be used for stuff like cdn or backups

sharp geyser
#

Also malwarebytes keeps interfearing with everything

#

blocking the connection between me and the service smh

lyric mountain
#

Lmao

sharp geyser
#

I keep having to exclude the ip's contabo uses

#

but they have so many

#

yea you can ftp into it

#

as to how I have to figure out

#

but its a supported protocol

lyric mountain
#

Also depending on how those buckets work u can just automate their creation

#

Like, u likely can limit their size yes?

sharp geyser
#

No idea this is all new to me

#

I am figuring it out as I go

lyric mountain
#

Then u can give that address or add a wrapper on top of them (api) if u want more fine control

sharp geyser
#

Though I do realize that using contabo for this might not be the best idea

#

I have to use my access key and secret to ftp into it

#

which exposes a lot

lyric mountain
#

Then make an api and abstract all of it

sharp geyser
#

Wouldn't it be more trouble then its worth?

lyric mountain
#

Like, the api being the only one to know the tokens and secrets

sharp geyser
#

Anyone with the brains could find my access key

lyric mountain
#

They wouldn't know it

#

They'd be sending the files to your api, that's it

#

Then your api sends to the server, but on an entirely new request

sharp geyser
#

So my api would handle all the bucket creation and file saving

lyric mountain
#

Yes

sharp geyser
#

hm

#

Fair point then

#

Still there doesn't seem to be a way to limit the amount of storage space a bucket has

lyric mountain
#

Make the api limit then

sharp geyser
#

Yea I would just have to do a lot of checks before they save the file

lyric mountain
#

It's somewhat a fun project tbh

sharp geyser
#

How would I allow them to view their own files though?

#

Would I not be exposing my tokens and secrets to do so?

lyric mountain
#

U can serve the files directly

sharp geyser
#

Actually I wouldn't if I am not dumb (which I likely am)

#

I would just have to fetch all the files from their bucket and display them in a list on the client

sharp geyser
lyric mountain
#

Yep, u don't even need to download the files, just their metadata

sharp geyser
#

I plan on doing it as a side gig to make some money see how well this will turn out

lyric mountain
#

When they open a file simply stream it directly

#

As u have both the input and output streams

sharp geyser
#

500gb for 5$ from contabo

#

not a bad price

sharp geyser
lyric mountain
#

A fun part about using contabo as a vps and storage is that they're likely to be within the same datacenter

sharp geyser
#

I can make this into a profitable side gig if I do it right ngl

lyric mountain
#

So if u make an ftp symlink u can use it like a part of the vps

sharp geyser
#

hm?

lyric mountain
#

Without having to upgrade ur vps plan

sharp geyser
#

Oh so basically extending my storage capacity?

lyric mountain
#

But since it's within the same datacenter there'll be zero delay

#

This only works if both the vps and storage servers are in the same region tho

sharp geyser
#

I will likely be heavily using this channel throughout my journey on this endeavor

lyric mountain
#

Else latency will start to appear

sharp geyser
#

They are indeed in the same region

#

I have them both in the US

lyric mountain
#

Windows has that feature too, it's pretty seamless

#

Just got to My Computer, right click anywhere, add remote folder

#

Then type the ftp address and credentials

sharp geyser
lyric mountain
#

After that u can use the folder like any other folder

sharp geyser
#

this might be handy

lyric mountain
#

Nice

sharp geyser
#

I dont quite understand it yet but ima keep reading

lyric mountain
#

Also remember to write a ToS and PP for ur storage api

#

As you don't want to be liable for what people might upload

sharp geyser
#

Indeed

#

When I first started this idea I wanted to find a way to moderate it without invading people's privacy

#

but I have no idea how to do that so shrug

#

At this point I will just leave it up to the hopes that the people who use it to do illegal things are dumb enough to share it and people report it to me

lyric mountain
#

I think u can analyze the data (but not store) if u state on the PP

sharp geyser
#

analyze how?

lyric mountain
#

Idk, like use AI to check whether an image is against the law

#

Or check if it's a virus

sharp geyser
#

Hm

#

Yes indeed

#

I will figure that out somehow

#

I doubt I will have to create my own model either

#

there's likely stuff like that online

lyric mountain
#

For virus u can use virustotal api

#

Or some other open source self-hosted virus analyzer

sharp geyser
#

probably will use a multitude

#

or just use virus total and if it flags it as malware I can either put it in a moderation queue for people to confirm or just outright deny it

#

probably will outright deny it though

lyric mountain
sharp geyser
#

Yea thats what I was thinking

#

I was hoping there was some poor soul who already did so but it doesn't seem like it which makes sense

#

Glad no one had to go through that

#

I don't wanna scrap this idea but I also don't wanna give a tool to nefarious people hmm

lyric mountain
#

Try to research how services like Mega or gdrive do it

#

As they have automatic flaggers for those types of content

sharp geyser
#

yea

#

https://torrentfreak.com/google-drive-uses-hash-matching-detect-pirated-content/ well this is the only thing I could find as a first result for anything on how they detect illegal content

Google Drive allows users to store any files they want but the cloud hosting service actively prevents users from sharing or distributing copyrighted files. While Google doesn't go into the finer details of its detection methods, it uses file-hashes to detect infringing content.

#

but this seems to be limited to pirated content

#

hm

lyric mountain
#

Tbh tho, it might be impossible to prevent using it for nefarious purposes

#

As all u need to do is zip the folder with a password

#

Best u can do is throw the entire burden of liability to the user

sharp geyser
#

true

#

At this point I can only implement a report system and hope people use it

#

and state in my tos and pp I am in no way liable for what people use the service for

#

@lyric mountain Discovered something new

#

When you make an account for that user giving them read and write access they get their own acess key and secret key

lyric mountain
#

Oh nice

sharp geyser
#

theoretically I don't really need to make anything but bucket polices at this point

#

Thing is if they login to the contabo object storage panel they can see everyone's buckets

#

Would making my own site for them to view files even be useful at this point?

#

They can just login to the contabo panel themselves

sharp geyser
#

So that means only a specific person is denied it instead of everyone

#

this is all too confusing rn

#

ima take a break from it and come to it soon

#

gonna watch anime

sharp geyser
#

Also just realized that contabo only allows 100 buckets per s3 account, so that means I would have to buy multiple at some point I think

earnest prawn
#

Can you help me only coming one music iam so many search song no change

wheat mesa
#

that doesn't provide us with anything

earnest prawn
#

What bro

#

@waffle.cs#0000

#

@wheat mesa

oak tide
#

What to do if you are not getting this pencil icon to connect a domain with replit ?

#

Anyone there?

sharp geyser
#

@lyric mountain Actually just realized that contabo specifies that ftp will not work, as they use smth called "Amazon S3" protocol

#

Unless im reading this wrong

earnest prawn
sharp geyser
#

No one can help without any code or errors

slender wagon
#

can some1 help me code go boom

earnest phoenix
deft wolf
#

Boom boom boom

radiant kraken
tulip ledge
#

When I use a command, that will send messagecomponents (buttons in this case) for the user to click. The buttons appear on computer but not on mobile. Is this an issue with discord?

sharp geyser
#

Likely a mobile bug

tulip ledge
#

Alright

earnest phoenix
radiant kraken
#

now you can leave Iran

lyric mountain
#

Protocols are just how the data is exchanged, in theory they're the same thing