#development

1 messages · Page 168 of 1

lyric mountain
#

...no

#

see, this is why I dont recommend taking a bot template and attempting to work on it without previous knowledge

#

your issue is that the command file you're trying to read doesn't have a help property on it

#

so you cannot do props.help.name because props.help doesn't exist

earnest phoenix
#

should i delete name on this line?

#

@lyric mountain

lyric mountain
#

you're missing the issue

#

the issue is not the line, it's the abscence of that property

#

please start a bot from scratch while following a guide

#

you can't just belly push projects like this

earnest phoenix
#

i am new on developing

#

and i dont have a good english

lyric mountain
#

yes, I know

earnest phoenix
#

and

#

i dont know how to use scratch

lyric mountain
#

this is why I'm telling you to start from the ground

earnest phoenix
#

i am trying my best sorry bout everything

lyric mountain
#

as in, start from zero

earnest phoenix
#

understood

#

but i need do it asap

lyric mountain
#

well, doesn't work like this

earnest phoenix
#

bcuz why i am using ready codes

#

bcuz why i am using template*

lyric mountain
#

you cant make a bot if you don't know what you're doing

#

even if you manage to get the bot online you wont be able to make any command that works

deft wolf
#

Templates are no good if you don't understand any of it. If let's say something doesn't work or something breaks in the future when they change the discord API you won't even know how to fix it like in this case

#

Start with a simple bot, text commands first, some simple embeds first, then maybe something more advanced. Don't jump into big templates from github right away because you will lose all your enthusiasm for programming

earnest phoenix
#

Hi everyone, I listen to the votes my bot receives on Top.gg by listening via webhook, it happens that once every 2-3 days my bot goes into heap memory limit due to a 504 Gateway Time-out error ..how can I avoid it?

deft wolf
#

What exactly do you want to avoid?

rustic nova
#

so

#

I've discovered that some browsers have built-in text to speech

#

thats fun

frank cove
#

Is that bad?

rustic nova
#

no lol

#

its fun to fuck around with

frank cove
#

ye

earnest phoenix
#

aurel

#

@rustic nova

#

can you check your dm?

earnest phoenix
wheat mesa
earnest phoenix
#

waffle

#

can you help?

wheat mesa
#

You’re doing something else wrong

#

I don’t know what you need help with

#

Post it here

earnest phoenix
#
    at C:\Users\Administrator\Desktop\discordJS-V14-main\events\ready.js:17:27
    at Array.forEach (<anonymous>)
    at C:\Users\Administrator\Desktop\discordJS-V14-main\events\ready.js:14:7
    at FSReqCallback.oncomplete (node:fs:188:23)

C:\Users\Administrator\Desktop\discordJS-V14-main>```
#

anyone can help?

wheat mesa
#

I would recommend learning javascript as a start

deft wolf
#

It's unlikely that anyone here will fix your every template error

quartz kindle
#

your commands dont have a "help" property

earnest phoenix
quartz kindle
#

in that code you have props.help.name
props is the content of the command file you are loading
then .help is looking for a help part, inside that command. but it did not find it.
so open your command files, and check if they are missing a help property

earnest phoenix
#

i cant find any help file

quartz kindle
#

its not a help file

frank cove
#

Yoy need tk export it

quartz kindle
#

its a help property inside the command file

#

in the code of the commands

earnest phoenix
#

yeah

frank cove
#

module.exports.help

#

that's what you need to do

#

It's looking for a file being exported as module.exports.help

#

I'm not gonna help you any more than that, I suggest you learn javascript before making a bot

#

I suggest you learn how to export things in js

blazing forge
#

If I update the name of the bot in the developer portal, will that automatically happen in top.gg?

deft wolf
#

No, you need to "tell" top.gg that you have changed the bot name. This is what the "refresh data" button is for

#

Then click "edit" and "save"

blazing forge
#

Right, thanks

civic scroll
civic scroll
radiant kraken
civic scroll
#

in that case,

module.exports = {
    help: ...
}
radiant kraken
#

they were probably following a youtube tutorial

deft wolf
#

I think they simply downloaded the template from the Internet and tried to run the bot

quartz kindle
#

safe to say they have zero idea what they're doing

lyric mountain
#

it's a template yes

#

the sole command in their repo is called example.js

frank cove
#

lmao

frank cove
civic scroll
pale vessel
#

it's just preferences

frank cove
#

^

quartz kindle
#

you can also do this

#
exports.help = ...
exports.abc = ...
tulip ledge
#

Anybody knows how I can do cron notation for every 136 hours?
* */16 */5 * * doesn't work because it runs twice per 5 days and
* */136 * * * is invalid

lean perch
#

how do I edit where the votes go through

#

because I thought it was somewhere like webhook url

quartz kindle
#

thats where you set your webhook url

lean perch
#

I didn’t see it so I had to look it up but I figured it out thanks though

tulip ledge
unkempt nimbus
#

Can anyone help me with the answer to verify the discord bot?

deft wolf
#

Just answer it

unkempt nimbus
#

Since yesterday I submitted a request but it was always rejected, maybe because my answer was not significant enough

quartz kindle
#

and what was the question and the answer you gave?

unkempt nimbus
rustic nova
#

something I always use lol

quartz kindle
radiant kraken
#

@earnest phoenix @neon leaf i love overengineering my projects mimu_thisisfine

unkempt nimbus
quartz kindle
earnest phoenix
radiant kraken
#

no

#

its the project's data binary structure

earnest phoenix
#

I don't think that deviates from it being pseudo code

radiant kraken
#

its not

#

just because it has if else doesnt mean its pseudocode

earnest phoenix
#

What you wrote entirely is pseudo code, but in the form of data binary structure

#

Anyway why are you writing that though?

unkempt nimbus
radiant kraken
quartz kindle
radiant kraken
#

because i am planning to add (almost) the entire Unicode bidirectional class dictionary to the binary

quartz kindle
#

you need to use slash commands

unkempt nimbus
radiant kraken
#

yes

earnest phoenix
#

I thought you said you weren't gonna support that

radiant kraken
radiant kraken
earnest phoenix
#

We do a little yoinking implementing

radiant kraken
#

the project's primarily missing arabic and hebrew

#

also most if not all homoglyph-clearing libraries don't even have unicode bidi support

#

so they translate things based on the characters being stored on memory, not how it's rendered onesieKEKW

earnest phoenix
#

Good luck implementing that, I'm here to help if you need any

quartz kindle
radiant kraken
unkempt nimbus
#

oww i see

#

thanks

radiant kraken
#

too much effort for a project with such low following sdSadge

earnest phoenix
radiant kraken
radiant kraken
#

have you seen its code

earnest phoenix
#

Yeah?

earnest phoenix
#

You can simply integrate it, you don't need to reimplement it nor understand the entire thing

#

As long as its license permits it and is compatible with yours

radiant kraken
#

it'll bite them in their asses if they do

earnest phoenix
#

That's not how it works, you don't have to entirely understand the inner workings of a project to integrate it to your own project

#

You just have to use what the project provides

radiant kraken
golden dagger
#

i can vouch i be importing the entire npm website and do the typey typey and click clack and woooshhh booommm everything works 🤷

#

got no clue wtf i’m doing 👍 😁

earnest phoenix
#

Doesn't change my point, you don't have to when it's already very optimized

radiant kraken
golden dagger
#

they call me the programmer 😎😎

#

woahhh y’all are library developers thats actually rly cool :o

radiant kraken
#

whats so cool about that

earnest phoenix
#

That's the importance of simplicity, you don't have to entirely know how the inner workings of a project works to integrate it or work with it, that's like saying you have to know how the inner workings of a TV works to buy and put it in your house and use it

golden dagger
#

i too have uhhh not made a library but i do this funny lil thing where i have these function thingie bois that i use in a lot of projects so i always just paste those into new projects i start

radiant kraken
#

two projects dont combine together by just copying and pasting

earnest phoenix
#

It isn't, not at all

#

You integrate it by using the APIs the other project provides to accomplish something in your own, as simple as that, it's like a dependency

#

You're not reinventing the wheel, you're using it

radiant kraken
#

i am not using it as a dependency

earnest phoenix
#

For example, we use the V8 JavaScript engine in our runtime called Node.js, do we entirely know how its inner workings are and how it exactly works? No (well I do because I'm a maintainer of it, but that's besides the point as I'm talking collectively), we only use its APIs that it provides, integrating it, and making the runtime work, flying the turtle to the moon!

earnest phoenix
radiant kraken
earnest phoenix
#

And how does that change my point?

radiant kraken
#

i want for that to be handled in some way

earnest phoenix
#

You can use the APIs the project provides as I already said, the project provides APIs to detect what characters can be translated (actually it's called mirroring, not translating)

#

It's part of the Unicode Bidirectional Algorithm specification to provide it

radiant kraken
golden dagger
#

unicode bidirectional algorithm specification.
that’s my favourite thing in the whole world…

#

yall are such nerd emojis im going back to scratch

radiant kraken
#

skill issue

earnest phoenix
#

It provides multiple APIs that allow you to accomplish your exact goal

golden dagger
#

kinda praying my bot doesn’t actually get checked any time soon because i’m fucked if they somehow find a way to crash it. i’m currently like 3 hours away from my home and i won’t be back anytime soon

#

i’ve spent the last few days doing minimal programming and just bug testing and i think i have everything worked out but 👀

earnest phoenix
#

Don't worry they'll go to lengths to find your exact location through the bot

golden dagger
#

😔

earnest phoenix
#

But jokes aside, if you've vigorously tested everything as much as you can, then you're most likely fine

#

Just make sure your bot meets the guidelines outlined here

golden dagger
#

uhhhhh, yes…

#

this is my bots current logo, it’s so epic and slay

#

i’m thinking about changing it to just a 2x2 board

#

like what sm people do with connect4 bots/games/apps

earnest phoenix
#

Nice logo

golden dagger
#

very misleading, it’s actually a connect4 bot muwhHaha

#

or maybe it’s both

earnest phoenix
#

Incarnation of evil

golden dagger
#

you will never know

#

or maybe its a sudoku bot !!!!

earnest phoenix
#

Hopefully it's not yet another kitchen sink bot mmLol

golden dagger
#

uh translate

#

i live under a roque

#

when i hear kitchen sink i think of a kitchen sink

#

my bot is indeed not a sink

#

that you wash dishes in

crystal wigeon
#

Hey guys would you be interested in a product that lets you like monitor all your running servers across providers? Like an all in one platform where you can see what services are running, for example ec2, lambda, s3, etc. so that way you can track what services are idle or running and see configurations. It’s easy to lose track Of all the servers and might simply lose money. https://www.figma.com/proto/4IONcuznXdLKCL1AQ8pnD7/cloudview?type=design&node-id=102-5&t=cC1CiADuPu8I9VU5-0&scaling=scale-down&page-id=0%3A1&starting-point-node-id=102%3A5

#

I have a prototype I can show and was looking for some feedback EMJ_think2

golden dagger
#

that would be crazy bagaizy

earnest phoenix
golden dagger
#

oh what’s wrong with those? my bot has like 5 commands..

earnest phoenix
#

And 99% of the time it's features that many other bots already have, no uniqueness

golden dagger
#

o

#

yea my tictactoe bot can purge channels 😎

#

that makes me atleast 3.6% cooler right

deft wolf
#

That's cool feature

earnest phoenix
#

Can it make me a sandwich?

radiant kraken
#

can it make me bitches?

golden dagger
#

you will never believe me when i saw this

#

but it can make you the best sandwich you’ve ever had

golden dagger
radiant kraken
#

0/10 bot not cool

golden dagger
#

it can help you with your plans on world domination however

earnest phoenix
radiant kraken
#

10/10

earnest phoenix
golden dagger
#

it makes beese churgers

earnest phoenix
#

Does the bot contact its owner to make the sandwich? 😉

radiant kraken
golden dagger
earnest phoenix
golden dagger
#

standwich

#

i personally like wichsands

#

instead of bread stuff bread it’s stuff bread stuff

earnest phoenix
#

Damn so secrets of this channel were to develop new sandwiches

golden dagger
#

m e a t

#

sometimes i’ll cut 3 slices of pork and make a meatwich where it’s just meat meat meat no bread

golden dagger
#

mayo french toast

earnest phoenix
#

The ban hammer is about to sandwich us

golden dagger
#

not again!

#

my twelfth alt account 😭

#

i prolly actually shouldn’t say things like that, can’t let them know i’m ban evadi-
/j /j /j (don’t hurt me)

#

anyway

#

french toast but just mayo

#

i have a crippling mayo addiction. i’ve been going to mayoholics anonymous meetings but i fear they aren’t helping 😢

earnest phoenix
#

Damn that's so sad, Alexa play Despacito

golden dagger
#

no habla despacito 😔

#

sLowWWyLYYyyYy

golden dagger
#

i self host everything with my trusty 10 yr old laptop

neon leaf
#

how risky is it running a 2tb hdd with important data without raid

rustic nova
#

if it fails, you're fucked

#

with raid, you might or might not be fucked

real rose
#

crazy

rustic nova
#

depending on raid configuration obv

real rose
#

Raid10 KEKW

neon leaf
#

I mean with raid 1 if both fail at the same time I guess some force doesnt like me

rustic nova
#

yeah with raid 0, both failing is rip

#

but very unlikely both will

#

at the same time

#

raid 1*

rustic nova
#

raid 100

real rose
neon leaf
#

raid 10 not too crazy if ur using hdds from a dumpster

rustic nova
#

yeah you just have to balance between cost and redundancy

#

depends on how important that data is

#

and how you otherwise protect against loss (such as a backup system)

golden dagger
#

figma

#

haha, ligma

crystal wigeon
#

lmao

#

let me know what you guys think EMJ_think2

neon leaf
#

finally finished the first version of my bots dashboard

#

frontend is so depressing

real rose
#

looks like aws to me

crystal wigeon
#

would you use a product like that is the question

#

imo it makes devs life easier

earnest phoenix
#

That would be useful yes

crystal wigeon
#

nice thanks

neon leaf
#

somehow my level system managed to give out negative xp to users

deft wolf
#

This is something you don't see every day

tulip ledge
neon leaf
#

nah it turns out when a user sends "aeifjas" it gets detected as 0 words because I split by spaces, and I always subtract 1 from word count so it ended up being -1 and that got multiplied by more stuff

#

I just set word count to 1 if its 0 now

marsh lark
#

Why do you always subtract 1?

neon leaf
#

I dont know why I did that

#

but it probably had a reason

frank cove
#

Lmao

#

That reminds me of those comments thatre like "I don't know why I did this but everything breaks if i remove it"

crystal wigeon
#

Lmao

neon leaf
#

I think I finally made a working ipv6 parser

#

its somehow shorter than my ipv4 parser

rustic nova
#

swag

#

does it support cidr notation?

#

does it support shortening the ip (such as ::1 for 0000:0001)

neon leaf
#

no cidr

#

im not that crazy

neon leaf
#

that was the main pain

#

but turned out easier than expected

rustic nova
neon leaf
#

I dont understand cidr

#

I mean

#

yes but no

rustic nova
#

the subnet length

#

ipv6 is pain, one of the reasons all my internal shit is still ipv4

neon leaf
#

yes but if im gonna do that ill have to do subnet parsing too is my perspective

#

like an iterator maybe

#

to iterate over subnet

neon leaf
#

wtf

#

I somehow managed to break mariadb

#

without touching its folder

#

??

#

how even does this make sense

global-mariadb_db  | 2023-10-08  0:08:56 0 [Note] InnoDB: Number of transaction pools: 1
global-mariadb_db  | 2023-10-08  0:08:56 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
global-mariadb_db  | 2023-10-08  0:08:56 0 [ERROR] mariadbd: Can't create/write to file '/tmp/ib8EiVBX' (Errcode: 13 "Permission denied")
global-mariadb_db  | 2023-10-08  0:08:56 0 [ERROR] InnoDB: Unable to create temporary file; errno: 13
global-mariadb_db  | 2023-10-08  0:08:56 0 [ERROR] mariadbd: Can't create/write to file '/tmp/ibFhemtd' (Errcode: 13 "Permission denied")
global-mariadb_db  | 2023-10-08  0:08:56 0 [ERROR] InnoDB: Unable to create temporary file; errno: 13
global-mariadb_db  | 2023-10-08  0:08:56 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
frank cove
neon leaf
#

ye but its in a docker container

#

it should not have an error on /tmp

#

like ever

neon leaf
#

well I fixed it by mounting the hosts tmp to the container

eternal osprey
#

in this pseudocode there isn't a deadlock possible right?

#

I went through all the cases, and the first 2 always acquire atleast 1 variable, where the last acquires 0 and must wait on both functions to finish.

eternal osprey
#

wym?

static light
#

Im french but i understand english

#

What wym?

deft wolf
#

What you mean

eternal osprey
#

i mean what do you mean

static light
eternal osprey
#

no.

static light
#

Is for ?

eternal osprey
#

operating systems, but ig it would just be applicable to all coding domains?

quartz kindle
#

what do the f functions refer to?

eternal osprey
#

f are semaphores

quartz kindle
#

and those P functions are gonna be used at the same time in multithreading?

eternal osprey
#

yup, ran parralel

quartz kindle
#

is that signal in there the only way to release those locks or can they be released elsewhere?

eternal osprey
#

nope semahpores in c++ only have wait to acquire a lock and signal to unlock it.

quartz kindle
#

ah i was misunderstanding the purpose of the wait method

#

i thought it would wait for the signal first, not acquire the lock first

eternal osprey
radiant kraken
#

yes

eternal osprey
radiant kraken
#

whats the difference though

#

i've never used semaphores

quartz kindle
#

like, when you run f0.wait() for the first time, it does not wait right? it acquires the lock and proceeds

eternal osprey
#

The signal increments it

quartz kindle
#

only if you call f0.wait() again it will wait until the previous signal is used

eternal osprey
#

for some reason my word doens't allow text to be copied without copying an image, so here's what i came up with.

radiant kraken
#

that paragraph destroyed my brain

quartz kindle
#

lmao

eternal osprey
#

basically i concluded that there couldn't be a deadlock because 1 thread acquires 1 lock, the other acquires 2 while the last lock will not acquire any locks as it must wait on the rest.

quartz kindle
#

i mean, its hard to wrap your head around it in detail, but in a less detailed way it makes sense and sounds good

eternal osprey
#

i see, thanks for the confirmation!

neon leaf
#

ok I added cidr shit to my ip parser

#

send help

quartz kindle
#

now add some apple cider

radiant kraken
neon leaf
#

it was pain sir

#

especially with ipv6

#

but it works now so ill never touch it again

radiant kraken
#

there are like a billion ways to write ips

#

glgl onesieKEKW

neon leaf
#

ye ip parsing is ez

#

I got
1 = 1.0.0.0
1.1 = 1.0.0.1
1.1.1 = 1.1.1.0
1.1.1.1 = 1.1.1.1
for ipv4

#

and ipv6 just the official ways

radiant kraken
#

do u use regex

neon leaf
#

no

radiant kraken
#

so you iterate character by character

neon leaf
#

kinda

#

I store it in uint8arrays (ipv4) and uint16arrays (ipv6) so regex wouldnt help at all

radiant kraken
#

o nice

neon leaf
radiant kraken
#

looks very good

#

do u have plans to fix the 100 MB problem tho

neon leaf
#

what 100mb problem

radiant kraken
neon leaf
#

sir

#

I am still working on the rewrite

radiant kraken
#

oh icic

neon leaf
#

im prob just gonna make a script that downloads a prebuilt binary

#

I can also move those off of github since I now have a dedi with proxmox

#

idk what to do about arm yet though

quartz kindle
#

also, what is this for exactly?

neon leaf
#

look at the example

quartz kindle
#

cant you just use typescript's built in things?

neon leaf
#

yes

#

but its sometimes very annoying

#

like

as<{ ok: string }>(something).ok

;(something as { ok: string }).ok
quartz kindle
#

you can also do this tho:

(<{ ok: string }>something).ok
radiant kraken
#

typescript is weird

quartz kindle
#

indeed

neon leaf
radiant kraken
#

looks pretty clean

#

good job

quartz kindle
#

cant really say much because idk the details of whats going on, but look good

radiant kraken
quartz kindle
radiant kraken
quartz kindle
#

:3

#

im working on a chrome extension for google meet

#

reminds me how much i dislike frontend

radiant kraken
#

and what does that chrome extension do

quartz kindle
#

watches the meeting UI for changes

#

and records people's activity

radiant kraken
#

for what

#

google already did that for you

quartz kindle
#

ie, how much they talk on mic, on cam, emojis, texts

#

nope, they dont

#

the closest thing i found is this

#

but this only records time spent in meeting

#

it doesnt record what people do in it

radiant kraken
quartz kindle
#

for my job we need to record how much our students actively participate in the classes, how much they talk, interact, etc

neon leaf
unkempt nimbus
#

@quartz kindle

#

im tired

deft wolf
#

Why do you need guild presence intent?

quartz kindle
unkempt nimbus
# deft wolf Why do you need guild presence intent?

We need the 'guild presence' intent in our music bot to provide a better music experience to our users on the Discord server. With this intent, our bot can recognize which server is requesting music playback, ensure that only authorized server members can control playback, and provide finer control over the music experience tailored to user preferences within that server. This allows our music bot to provide better and more interactive entertainment within various Discord communities.

spark flint
#

thats... not really a valid use case

#

you can get guild members and permissions WITHOUT the intent

quartz kindle
deft wolf
quartz kindle
#

do you use presenceUpdate in your bot?

quartz kindle
#

why do you need other peoples statuses?

#

oh nvm, wrong ping, i thought he posted that not you lmao

neon leaf
#

dedi without dedicated graphics card 💯

rustic nova
#

it wont start

#

some dedis have a simple integrated graphics card

#

I did think about getting a gpu dedi ngl

lyric mountain
rustic nova
#

and proxmox it

lyric mountain
#

geforce now was built on top of them

rustic nova
#

tf is sunshine/moonlight

#

graphics driver?

neon leaf
lyric mountain
#

geforce now (the cloud gaming thing) uses this

#

it does work pretty well from the times I tested it, tho the network bandwidth does matter a lot

rustic nova
#

ohhh thats something selfhosted?

#

nvidia

#

kind of sounds like this will only work with nvidia graphics cards

lyric mountain
#

works with amd too

rustic nova
#

also doesnt give me linux vibes KEKW

lyric mountain
#

well, geforce now runs on linux

rustic nova
#

but moonlight doesn't

lyric mountain
#

moonlight is the client

#

the host is sunshine

rustic nova
#

i meant sunshine yeah

lyric mountain
#

because moon reflects the sun's light KEKW

neon leaf
rustic nova
#

OH TRHEY DO

#

welp

#

new plan: get a gpu server at some point

lyric mountain
neon leaf
#

I think the vm needs more ram

#

8gb is a bit tight

golden dagger
#

@earnest phoenix

earnest phoenix
golden dagger
#

my bot was accepted

#

happy

deft wolf
#

Good job

earnest phoenix
deft wolf
#

Next step - discord verification

craggy pine
#

Does mariadb (mysql I guess) have an easier way to update all values besides like 3 for an "Enable all" type of command without having to specify each column?
Something like UPDATE * IN <thing> WHERE NOT something something something

#

Idm typing it all out if needed but I would think there could be a quicker way. It's like 15 things being changed to the same value which is just "1" since "0" is off.

earnest phoenix
craggy pine
#

Thanks for quick response. Typing it all out it is.

earnest phoenix
#

I mean, you could write an script to write the whole SQL transaction for you

craggy pine
#
await client.database(`UPDATE logs SET channel_Create = ?, channel_Delete = ?, channel_Pins_Update = ?, channel_Update = ?, guild_Ban_Add = ?, guild_Ban_Remove = ?, guild_Update = ?, member_Add = ?, member_Remove = ?, member_Update = ?, message_Delete = ?, message_Update = ?, role_Create = ?, role_Delete = ?, role_Update = ? WHERE guildid = ${interaction.guild.id}`, ["1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"], false)

I probably could instead of =? just do =1 thinking about it.

earnest phoenix
#

Just in case you need to do that in the future

craggy pine
#

It's only a "Disable all" and "Enable all" log command. Idm just typing it out since its only ever used twice.

earnest phoenix
#

Oh alright

craggy pine
#

But am I right about using =1 instead of =?

earnest phoenix
#

Yes you can do that, the database driver you're using only changes ?s to the values you provided in the second argument

craggy pine
#

Correct, its just what I am use too. The false at the end is just to tell my function to return it or not.

#

Like if I were to store it into a variable.

#

But thanks, I can cut some of it down then

earnest phoenix
#

You're welcome

eternal osprey
#

any tips on how to make this more beautiful

#

i mean there's a LOT of text

#

and the image looks idk kinda strange in contrast to the text

quartz kindle
#

split that text in two

#

put the second part with a different picture down below

#

and switch their sides

#

ie:
text1 pic1
pic2 text2

eternal osprey
#

oehh that might just be the way to go

#

lemme try

quartz kindle
#

if it still feels like too much text, split it into 4

#

1 pic for each paragraph

#

always stiwching sides

eternal osprey
#

i see

#

i will try and send you the results

#

in like 5 min

eternal osprey
#

shit looks ugly af

quartz kindle
#

also, try colder colors

#

a whiter gray backgound

deft wolf
#

There is something disturbing when the margin of the image does not match the margin of the text

quartz kindle
#

also you have to balance the alignment of the text with the images

#

ye

#

for example

#

see how the text and the image is always aligned

eternal osprey
#

hmm i see

quartz kindle
#

a very easy way to do that is using flexbox

#

and here's the alternating design i mentioned

#

dont be afraid of spacing things too much

#

large spacing improves readability and makes things less overwhelming to look at

vivid fulcrum
#

also try simplifying your text

quartz kindle
#

cry me a river

#

havent seen you in a while, all good?

vivid fulcrum
#

yeah, i've been so busy with work i barely turn on my pc 😭

quartz kindle
#

rip

vivid fulcrum
#

how have you been

quartz kindle
#

lots of work as well, not well paid tho xD

vivid fulcrum
#

in IT? that is heresy

quartz kindle
#

working on a chrome extension for google meet

#

for my part time job as a teacher

vivid fulcrum
#

ah

quartz kindle
#

im also in Portugal rn, in a sort of part time job arangement with a friend

#

helping them with their entrepreneurships

vivid fulcrum
quartz kindle
#

its rare for me to find motivation to do stuff

#

i only like working on very nieche stuff

#

which rarely comes by

#

xd

eternal osprey
#

i see this is really cool

vivid fulcrum
#

yeah, i've been dipping my toes into NLPs a bit since machine learning is still the unknown for me

vivid fulcrum
#

same, i was at a google conference and listened to a speech from a guy who is actively working in the AI field, it was pretty cool and peeked my interest

quartz kindle
vivid fulcrum
#

it's nice though fr

#

nice UX too

quartz kindle
#

working on this project renewed my hatred for frontend

#

i had someone else offer to do the UI for me

#

i let them

#

but i didnt like what they did

#

so i did it myself anyway

#

lmao

vivid fulcrum
#

the only true way

#

im bad at designing good at copying designs

quartz kindle
#

ye

#

same

#

im mostly copying another extension

#

main page UI still not done

vivid fulcrum
#

oh cool

#

how do you extract the meet info to display in the extension

eternal osprey
#

would this look any better

quartz kindle
#

lots of mutationObservers

#

lmao

eternal osprey
#

maybe bit of shadows on the image to make it pop a bit

quartz kindle
#

i looked into the meet html, found all the things that change when stuff happens

#

set up a bunch of mutationObservers on them

#

so i get events when stuff changes on the html level

eternal osprey
#

tbf this frontend shi is way too creative for me

quartz kindle
eternal osprey
quartz kindle
#

still a bit too much text

#

if you can split that text more would be better

#

and make the text a bit bigger

vivid fulcrum
quartz kindle
#

ye

vivid fulcrum
#

is the html hard to read

quartz kindle
#

it was annoying af

quartz kindle
#

lmao

#

i mean

vivid fulcrum
#

could've guessed

quartz kindle
#

its easy to find stuff via inspector

#

but there are very few usable anchor points

#

its all autogenerated ids and classes

#

that can change at any time

vivid fulcrum
#

nasty, i'd assume they're using angular

#

because its their own tech

quartz kindle
#

probably

vivid fulcrum
#

so basically a lot of mutations

quartz kindle
#

i had to do a lot of shit like this

#

navigating through parents and children

#

xD

vivid fulcrum
#

lmfao

quartz kindle
#

yeah

vivid fulcrum
#

xpaths are a no go?

quartz kindle
#

and when they decide to change/update their UI

#

im screwed

quartz kindle
vivid fulcrum
#

i don't know the textbook definition but basically it represents the path to a html element via xml

quartz kindle
#

weird

vivid fulcrum
#

or something like that

quartz kindle
#

im using querySelector on things that have something usable, then from there i just navigate

vivid fulcrum
#

so you don't have to traverse the node tree, just slap the xpath into your query

quartz kindle
#

hmm

#

looks complicated

vivid fulcrum
#

/html/body/div[4]/div[2]/form/div[1]/div[1]/div[1]/a/img

#

i don't know if querySelector supports it though

quartz kindle
#

ah

#

that relies a bit more on the html being very fixed

vivid fulcrum
#

yeah fair

quartz kindle
#

the way i did it, i tried to find the things that are more unlikely to change

#

and go relative to that

#

for example for some parts i use querySelector to find an svg element

#

and get to the place where certain icons are shown

#

and from there navigate to the surrounding text

vivid fulcrum
#

that's smart

#

i'd guess it's the most reliable way

quartz kindle
#

i hope so

#

but it remains to be seen xD

#

im pretty sure im fucked anyway if they decide to update anything

#

also, some stuff i didnt found a way to go around

#

for example if there are too many people in the call, the UI starts grouping them up into a block that says "and N more"

#

i cannot get camera status from anyone thats inside there

#

because its removed from the html

#

theres a lot of things that are dynamically added and removed

vivid fulcrum
#

that calls for reverse engineering the JS and injecting your own 🙃 /s

quartz kindle
#

i tried

#

and failed miserably

vivid fulcrum
#

yeah, it's heavily obfuscated and minified right?

quartz kindle
#

yup

#

i looked at other extensions

#

and found they do basically the same thing, html scraping xD

vivid fulcrum
#

lmfao

#

if you can't beat them join them

#

a lot of development is just copying each others ideas

quartz kindle
#

ye

#

i got the idea of mutatinoObserver from them

#

i didnt even know mutationObserver was a thing

#

before i was running an interval and checking the state of everyting xd

vivid fulcrum
#

get with the times old man, it's not the 2000s anymore we have ✨ reactive programming ✨

quartz kindle
#

xDDDD

vivid fulcrum
#

(i also dont know what mutationObserver is)

quartz kindle
#

hahaha

vivid fulcrum
#

which manifest ver is the extension on

quartz kindle
#

it runs a callback everytime a specific html node changes

#

v3

vivid fulcrum
#

i heard a lot of extension devs are getting fucked with v3

#

primarily adblockers

quartz kindle
#

ye i dont really know much

#

i know v3 blocks all third party scripts

#

so you cant use libs via cdn, you have to download and bundle

vivid fulcrum
#
V3 forces extension developers to use a different system — referred to as the declarativeNetRequest API — in which extensions must create a blocklist of predetermined addresses to block. Why is that a problem? Because Manivest V3 only allows extensions to run 30,000 rules and most ad block extensions would need the capacity to run at least 300,000 rules to work effectively. In this context, a “rule” would be a mechanism that blocks a specific HTTP address. 

https://nordvpn.com/blog/manifest-v3-ad-blockers/

#

doesn't affect you at least xd

quartz kindle
#

ah

#

ye i dont use that api

#

but i did see it in the docs, a way to intercept network requests

vivid fulcrum
#

is there a way to listen for the requests the web page makes? this is just a blind guess but if meet makes any API requests for meet participants, surely you could listen in on that

#

if it's over webrtc you can kiss that idea goodbye

quartz kindle
#

i cant see shit in the network tab

#

not even websocket

#

so im pretty sure its some obscure shit like wrtc and service workers

craggy pine
#

I did resolve the issue on my own but I wanted to know if anyone had an understanding as to why creating a message with the gif library can trigger the messageUpdate event even though it's not really updating anything but just creating the message? I have an assumption that it's because the gif doesn't fully load by the time the message is sent and when it does it's considered an update.

ocean harness
#

So my bot is supposed to watching another bot of mine to see if it goes offline. Instead its giving the wrong status and I don't know why, ive tried everything and I can't get it to work.
Code:

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => res.send('System Online'));

app.listen(port, () =>
  console.log(`Your app is listening at http://localhost:${port}`)
);

const botToken = process.env['TOKEN'];
const targetBotId = '1159916872234455080'
const channelId = process.env['CHANNEL_ID'];
const pingUserId = '824650638532411392'; // Replace with the user's ID to ping

const { Client, IntentsBitField } = require('discord.js');

const client = new Client({
      intents: [
    IntentsBitField.Flags.Guilds,
    IntentsBitField.Flags.GuildMembers,
     IntentsBitField.Flags.GuildMessages,
    IntentsBitField.Flags.MessageContent
    ],
});

let lastStatus = null;

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}`);
  checkBotStatus();
  setInterval(checkBotStatus, 5000); // Check every 5 seconds
});

async function checkBotStatus() {
  try {
    const targetBot = await client.user.fetch(targetBotId);
    console.log(`${targetBot.presence.status}`)
    if (targetBot && targetBot.presence.status !== 'online') {
      // Bot is offline
      if (lastStatus !== 'offline') {
        // Send a message if the bot was online previously
        const channel = client.channels.cache.get(channelId);
        if (channel) {
          channel.send(`<@${pingUserId}> Bot <@${targetBotId}> is offline.`);
        }
        lastStatus = 'offline';
      }
    } else {
      // Bot is online
      lastStatus = 'online';
    }
  } catch (error) {
    console.error('Error fetching bot status:', error);
  }
}

client.login(botToken); // Replace with your bot's token
wheat mesa
#

You don't have the presence intent

#

Likely why it's not working

ocean harness
deft wolf
#

When you declare a Client, you add the intents to which your bot has access

#

There is no intent responsible for the status of users

#

Which is presence intent

quartz kindle
#

the file is loaded asynchronously and then added to the message afterwards

craggy pine
surreal sage
#

How do I 'forget' a commit in git to remove the commit but keep the changes?

rustic nova
#

git squash

#

to merge 2 commits into one with the changes

surreal sage
#

I want to switch branches and the commits with it

#

been workin in the wrong silly lil branch

#

made a backup*

quartz kindle
#

thats why dont use branches, i push everything to main

#

:^)

#

i also test in prod :^)

surreal sage
#

real

#

time to grow some legs mate

#

its a bitch cuz vercel deploys from the prod branch

#

which in your case would also be main

#

guess git push origin main

#

that dont work lol

quartz kindle
#

i dont use vercel so /shrug

#

xD

#

shame that /shrug is now a slash command, so it doesnt work in the middle of the message anymore

#

¯_(ツ)_/¯

lyric mountain
#

then u rebase to remove the head

surreal sage
#

i followed some funny stackoverflow thingie

#

moved to branch main

#

rebase later after i confirmed everything works :3

#

GitHub > Discord webhooks seem to be dead for me

quartz kindle
#

working fine for me

surreal sage
#

code 204 on gh

#

no messages in dc

quartz kindle
#

type application/json?

surreal sage
#

yea

#

the failed one was formdata

#

just testin

quartz kindle
#

weird

surreal sage
#

let me try in a diff guild

#

diff guild

#

same result

#

I did a funny express server test

#

And made gh send me a ping message to that

#

And I received it

quartz kindle
#

maybe delete and recreate the webhook on the discord side?

#

i guess you already did that when you changed guilds

surreal sage
#

yup

surreal sage
#

How would one create a pull request on their own repository?

#

Wouldn't you have to push it somewhere? If yes, where would most devs do?

lyric mountain
#

Make a branch, create merge request

surreal sage
#

Ignore pushing rules? 😅

surreal sage
lyric mountain
#

Anything

surreal sage
#

great name

#

"working" ig

#

potato

#

feature

lyric mountain
#

Nightly, working, indev, unstable, etc

neon leaf
#

Is there any way to get the "position" of a row in postgres?

#

I mean hard to explain what I mean

#

But basically go through all users of serverId 1

#

Find the position of userId 5 in that

quartz kindle
#

theres a ROW_NUMBER() function

#

but i think it generates numbers for the returned rows, rather than get some internal row id value

quartz kindle
# neon leaf Is there any way to get the "position" of a row in postgres?

rowid is the physical location of the row. It has nothing to do with the order of insertion and cannot be used to identify the most recently inserted record. The closest equivalent in PostgreSQL would be the ctid. In Oracle the rownum is the position of the row in the result set, which can be emulated in PostgreSQL using the row_number() function

surreal sage
#

ok so what the fuck rq

#

this silly warning

#

telling that im being useless

#

however

#

if i remove that, my entire shit breaks

#

socket.io custom marshal and that little question mark is the bottom brick

earnest phoenix
surreal sage
#

😭

#

if there is no warning, there is no problem

#

😃

surreal sage
#

hi i've been rebasing my stuff but github likes to show This branch is 3 commits ahead, 3 commits behind main. which i resolve with resetting HEAD and force pushing
but what's the right way? what is the right way to make a pr, and merge in a way that This branch is 3 commits ahead, 3 commits behind main. doesn't show up?

deft wolf
#

Good job

quartz kindle
errant flax
#

one question, can you host a website in github if so how?

deft wolf
#

Why would you host a website on github?

errant flax
neon leaf
#

Using GitHub pages

surreal sage
errant flax
#

looking it up rq

surreal sage
frank cove
#

is it not vercel.app anymore?

deft wolf
#

Applications probably have such a domain

#

Like something.vercel.app

frank cove
#

yea

marsh lark
lyric mountain
#

Like, find if it's followed by that part, else find whatever matches without it

civic scroll
#

how come it broke

#

can you show me the socketio error

earnest phoenix
#

It has absolutely no effect

surreal sage
#

idk what it is

#

idk what is making it happen either

#

all i know is: no question mark: no worky

surreal sage
#

JSON parser in javascript with support for json objects that don't have quotation marks?

#
eval(`(${theJson})`);``` works ig but not really safe
wheat mesa
#

Why would a json object not have quotation marks? That’s not a valid json?

surreal sage
#

regex extracted from an html script

#

json5 nvm

marsh lark
#
pale vessel
#

they already said the solution

#
#

I use this myself, it's really nifty for user input

surreal sage
#

Would you call it a DDoS when:

  • Nginx proxy is functional and quick
  • Page content loads quickly
  • Page websocket connects quickly (but isn't functioning as expected)
sharp geyser
#

I mean DDoS is a denial of service attack so if anything is working properly then they failed

quartz kindle
#

well a ddos attempt its still an attempt

#

i guess you would call it a "ddos attack"

sharp geyser
#

Yea

civic scroll
#

the program crashes or something something

surreal sage
#

no idea

surreal sage
quartz kindle
#

no its a dos

#

disk operating system

#

:^)

surreal sage
quartz kindle
#

im at a shopping mall

#

connected to a wifi called:

#

unprotected cex

surreal sage
#

buy a nintendo switch and destroy it

#

'hack' it fr

#

is it called hacking when it's unprotected? LULW

quartz kindle
#

its an open wifi

#

no password

surreal sage
#

🤯

quartz kindle
#

i can see the router login page, but admin admin doesnt work

surreal sage
#

have u tried password123

quartz kindle
#

these routers are preconfigured with a randomized login password

#

it comes written in their box

surreal sage
#

find the box

#

gg

quartz kindle
#

at a shopping mall?

#

lmao

surreal sage
#

yup

#

climb up the struts ig

quartz kindle
#

idk which store it is from

#

what matters is that it works

#

:^)

surreal sage
civic scroll
surreal sage
#

oh

#

oops

#

thought u were talkin about something different

#

i knew that it didnt work, because group 1 from the regex was undefined

#

ok i just realized that a portion of the regex

#

is useless

#

goal was to get the numbers at the start of a string

#

/^\d+/gi

#

whatever i did was useless

#

fixed anyways

#

crazy stuff

surreal sage
#

downloading a movie gon take a while 😭

#

2 seconds a second fr

quartz kindle
#

also, isnt that super inefficient since you need to decode the video chunks to identify frames?

rustic nova
#

well technically

#

you have internet frames

#

soo

#

A frame is a digital data transmission unit in computer networking and telecommunication. In packet switched systems, a frame is a simple container for a single network packet. In other telecommunications systems, a frame is a repeating structure supporting time-division multiplexing.
A frame typically includes frame synchronization features con...

quartz kindle
#

lmao i guess you could measure stuff in tcp frames

#

but those have variable size

surreal sage
#

video

#

fps

#

ffmpeg fps

#

fps fps fps

quartz kindle
#

i mean

#

that makes sense if youre measuring transcoding

#

which looks like what youre doing in that code

surreal sage
#

m3u8 input to video output

#

segments are hosted somewhere

#

not stored locally

quartz kindle
#

so its download plus transcoding

surreal sage
#

rah

surreal sage
#

since most movies run around 30 fps

#

57 fps is kinda slow Sad

quartz kindle
#

its typical transcoding speeds

#

if you only dowload the m3u8 files without ffmpeg its gonna be faster probably

surreal sage
#

that is definitely true

#

but concatting it

#

having all the file names in one cmd

#

eww

quartz kindle
#

well, just auto generate file names, then join them in the script

#

you have all names in memory already

surreal sage
#

ffmpeg file input

#

but downloading is smthn

#

having to write a whole script

#

yk

quartz kindle
#

anyway streaming it like youre doing is probably better anyway

surreal sage
#

poorly and quickly written lil downloader for plex

#

ig

quartz kindle
#

ita easier on your resources that way

#

no temp files on disk or ram

surreal sage
#

yea

#

hey

#

-threads <num>

#

fuckin hell

#

I think that works mate

#

jesus

#

2 hour movie downloaded in 30 sec

#

😭

quartz kindle
#

its gonna run ffmpeg with threads

surreal sage
#

silly 150 mbps o 1gig

quartz kindle
#

xd

surreal sage
#

aight

#

i deleted the recycle bin shortcut so now i gotta google the run cmd

quartz kindle
#

lmao

surreal sage
#

explorer.exe shell:RecycleBinFolder

#

bleh

quartz kindle
#

recycle bin should be in a right click menu

#

both on desktop and on disks

surreal sage
quartz kindle
#

it should be

#

aka im suggesting that ms should add it

#

lmao

surreal sage
#

get the windows source

#

modify it a lil

#

export to iso

#

gg

quartz kindle
#

ye

#

custom editions

surreal sage
#
  • wintard 10
quartz kindle
#

good old windows xp black edition

#

there are still some decent modded windowses out there

surreal sage
#

oh yeah

quartz kindle
#

like ghost spectre's editions

surreal sage
#

silly performance win 11 editions

quartz kindle
#

windowski leviosa

neon leaf
#

what could I even make as vote rewards

#

like I dont have a global economy so def not money

surreal sage
#

cat pic

deft wolf
#

You can extend some functionality with additional things if someone votes

#

I don't know what your bot does, but there will definitely be something like that, and if not, you have to think about it this way

neon leaf
#

E

#

Why was my bot accepted in like 6 hours

slim void
#

Bc it was in queue?

radiant kraken
#

its too long

#

god the brs are slacking again

#

🙄

vague zealot
radiant kraken
#

still too slow

#

i expected it to be instant!!!! 😠

earnest phoenix
#

Hey guys ,
Im wondering if its possible at all to create a bot that keeps a tally. Say if only a select few people has permission to add or subtract from this number with a simple command / add *amount or / minus *amount

#

Does something like this already exist I wonder

neon leaf
#

No but last time I verified it took 5 days, are not many bots being submitted anymore?

radiant kraken
icy smelt
#

is any one here able to help with a problem im having with my code?
neither me or my friend have been able to fix it
the attached image is the error

this is the code:

    def __init__(self, ctx, channels):
        super().__init__()
        self.ctx = ctx
        self.bot = bot

        options = [
            discord.SelectOption(label=channel.name, value=str(channel.id))
            for channel in channels
        ]
        print('1')
        self.select = Select(options=options, placeholder="Select a channel")
        self.select.callback = self.callback
        self.add_item(self.select)

    async def interaction_check(self, interaction):
        print('2')
        print(interaction.user,'\n',self.ctx.author)
        print(interaction.user.id,'\n',self.ctx.author.id)
        user1 = interaction.user.id
        user2 = self.ctx.author.id
        if user1 == user2:
            print('yes')
            return True
        else:
            print('no')
            return False
    
    async def callback(self, interaction: discord.Interaction):
        print('4')
        
        selected_channel_id = int(self.select.children[0].value)
        selected_channel = bot.get_channel(selected_channel_id)
        print('5')

        response_message = f"You selected channel: {selected_channel.name} (ID: {selected_channel.id})"
        await interaction.response.send_message(response_message, ephemeral=True)
        print('heres the selected stuff -'+selected_channel_id,'-'+ selected_channel)



@bot.slash_command()
@blacklist()
async def lists(ctx):
    guild = ctx.guild
    channels = guild.channels

    view = ChannelDropdown(ctx, channels)
    await ctx.send("Select a channel:", view=view)

*im just trying to have a drop down menu to choose a channel for my bot to send messages on *
any help would be greatly appreciated (:

deft wolf
#

I may be wrong because I don't quite understand python, but what does for channel in channels do inside the options array?

icy smelt
#

i belive it lists all of the channels

#

from my understanding

deft wolf
#

And did you write this code?

icy smelt
#

i got a bit from examples and put it together with some other things to get what i was looking for

deft wolf
#

Okay, logically. Should channels be listed before or after adding them to options?

#

I'm also not entirely sure if it's possible to do a for loop inside an array, but someone who knows Python would have to comment on that

icy smelt
#

sorry probably should have included this earlier but, i have that much working just fine it sends the message in discord shows the channels in the list but once a channel has been selected it goes to the interaction_check which works fine and returns True when its supposed to. the line I think i am having a problem with is selected_channel_id = int(self.select.children[0].value) as 'select has no attribute channel'

digital swan
#

maybe print out self.select to see if its what youre expecting it to be

icy smelt
#

tysm for helping :D
turns out the problem was self.select.children[0].value in selected_channel_id = int(self.select.children[0].value) the fix was changing it to self.select.value[0] this now works perfecly.

eternal osprey
#

class FromJson a where 
fromJson :: Json -> Maybe a

instance FromJson () where
fromJson JSNull = Just ()
romJson _ = Nothing



instance FromJson Bool where
fromJson (JSTrue) = Just True
fromJson (JSFalse) = Just False
fromJson _ = Nothing```
hey, in haskell why is this giving me an error that True, False and () are not compatible for a.
Isn't a used for polymorpishm... so that it can be used for multiple types?

Couldn't match expected type ‘a’ with actual typeBool
      ‘a’ is a rigid type variable bound by
        the type signature for:
          fromJson :: forall a. Json -> Maybe a
        at Json.hs:80:1-27In the first argument ofJust’, namely ‘True
flat copper
#
await wb({
      webhook: isCopyChannel,
      data: {
        content: message.message === "" ? "** **" : message.message,
        username: user.username ?? user.firstName,
        attachments: files,
      },
    });

its a function that sends webhook (data as it is)

  {
    name: "file.png",
    attachment: Buffer.from(ImageBuffer)
  }
]

the error is that its not sending image

quartz kindle
flat copper
quartz kindle
#

sending files requires using FormData

#

does axios convert that into FormData?

flat copper
#

nope it just sends data as data

#
module.exports = async (data = {}) => {
  return axios({
    method: "POST",
    url: data.webhook,
    headers: {
      "Content-Type": "application/json",
    },
    data: JSON.stringify(data.data),
  })
    .then((e) => {
      return e;
    })
    .catch((e) => e);
};
#

its a discord webhook btw

quartz kindle
#

yeah so thats wrong

#

the content type must be multipart/formdata, not json

#

and you have to use a FormData builder

#

node should have it built in

#

this is how the raw request should look like:

#
--boundary
Content-Disposition: form-data; name="payload_json"
Content-Type: application/json

{
  "content": "Hello, World!",
  "embeds": [{
    "title": "Hello, Embed!",
    "description": "This is an embedded message.",
    "thumbnail": {
      "url": "attachment://myfilename.png"
    },
    "image": {
      "url": "attachment://mygif.gif"
    }
  }],
  "message_reference": {
    "message_id": "233648473390448641"
  },
  "attachments": [{
      "id": 0,
      "description": "Image of a cute little cat",
      "filename": "myfilename.png"
  }, {
      "id": 1,
      "description": "Rickroll gif",
      "filename": "mygif.gif"
  }]
}
--boundary
Content-Disposition: form-data; name="files[0]"; filename="myfilename.png"
Content-Type: image/png

[image bytes]
--boundary
Content-Disposition: form-data; name="files[1]"; filename="mygif.gif"
Content-Type: image/gif

[image bytes]
--boundary--
#

the data type is multipart/formdata, then inside the formdata you have a payload_json which is the stringified json you're sending, then a files[n] containing the actual file content

#

inside the json, the attachments array does not contain any data, only a reference to the correct file id

#

like this:

"attachments": [{
      "id": 0,
      "description": "Image of a cute little cat",
      "filename": "myfilename.png"
  }]
wheat mesa
#

How can I get git to delete a branch? I had a development branch that I merged with master, and then deleted the branch on GitHub. However, I cannot do git checkout-b development because it thinks that it still exists. I already tried git remote prune origin to no avail

#

Ah I did git branch -d development and it worked

rustic nova
#

bold question

#

does anything amazon try to force you to use more of their services?

#

such as amazon echo skills wanting you to use aws

slim void
#

Never had that issue

grim aspen
rustic nova
#

or its keeping me the fuck away from even trying to develop anything on their shit

grim aspen
#

idk. looked it up and most skills aren't required

#

did you do anything to break the API TOS

rustic nova
#

no i didnt

#

didnt even let me begin anything