#development
1 messages · Page 219 of 1
hoe about it indeed
we always hoein for linux
so you're saying
(217 - 100)/2 = x coordinate? what is "squareX" ?
the numbers are 100px
AND it comes in like 7 flavors
First, find X dimensions
As in, the size of the X character ur printing
idk what that means lol 
X
cause the font size im using is 100px
Font size is irrelevant
Find out the dimensions of the character
As in, vertical and horizontal pixels
Search online if you don't know how
Don't think you get it
You need the pixel size of
>>>> X <<<<
The letter X, the thing ur using to mark the squares
OH.
The letter after W and before Y
What is adab
Ok, then find the dimensions of it
Width and height
The rest is very straightforward
Open the file in any image viewer
1640x1640
small markers
They're 1640x1640?
thats fucking massive
Holy hell put that in an image editor and downscale it to like 128x128
You'll kill your memory by dealing with images that large in such high amount
Resize it to what'd be the size you'll actually use
So you don't need to resize it during runtime
that’s what i thought this was doing lol
but that makes sense!
you’re a life saver
Using a pre-resized image is much better than doing it for every single slot
ok i got you now
Now draw the image without resizing
The horizontal coordinate will be leftPadding + (slotWidth / 2 - markerWidth / 2) * (currentIndex + 1) + gap * currentIndex
LeftPadding is the red are at the left size
SlotWidth is the white squares' width
MarkerWidth is the width of the marker chip ur using to mark slots
Gap is the tiny red gap between slots
And currentIndex is your current iterator value
If ur using one
Otherwise 0 for first slot, 4 for the fifith slot
Same formula for vertical coordinate, just replace widths with heights
e.g indexes of an array (to make it simpler to understand)
shiiieetttt 
Literally just replace values in the formula
LMAO ayoooo they got good emojis, i swear that's why i'm in it 😂
mhm
ok let me do this piece by piece
the red space on the left from the side of the photo to the first row B is the LeftPadding
Yes
that was me eyeballing it cause idk the math to find the center
what image editor do you use to get the pixels? i’m using pixlr but idk if it’ll show me pixel counts
or if it does idk how to display it
can i just pay one of you to find the coords 
yes
Open paint
Yeah that's unnecessarily big
discord likely wont even display that will it
It will
it will
Whats discord's max size
cause I remember there being a limit before its not embeddable
that's what this is
My tcg arena is like almost 3k width
Wtf
Cuz I need to show the cards at real size
Else people can't read em
Each card is 225px wide
i have paint open
ok
Look bottom left of the screen, there'll be ur mouse coordinates
when the fuck was thread channels added to discord
ok
just curious
cause I was just reading an article from 5 years ago talking about threads
💀
leftpadding 147
Put that in the formula
leftPadding + (slotWidth / 2 - markerWidth / 2) * (currentIndex + 1) + gap * currentIndex
For the other values it's a bit harder to get with paint
so 147 + (218 / 2 - markerWidth / 2) * (currentIndex + 1) + gap * currentIndex
Yes
slot width is the width of the boxes?
Yes
now to get the width dont you need to start at one end of the box, then do the other and subtract the two values to get the actual width?
or is there an easier way
To get with paint, move the whole image to the left till the slot touches the border
or that
Then repeat the mouse thing
With gimp or smth it'd be easier lul, trying to use vanilla tools
But Microsoft doesn't help with not updating paint since Windows 98
Why update it if it does its job - some tech at microsoft
It STILL doesn't have a proper selection box
218x205 is the first box wxh
And no transparency
Bah who needs those
are all the boxes different widths and heights??
Put in the formula
no they are all the same
so 147 + (218 / 2 - 128 / 2) * (currentIndex + 1) + gap * currentIndex
marker width? as in the chip it's dabbing with?
aaron resized it to 128 so that would be 128 correct?
so 147 + (218 / 2 - 128 / 2) * (currentIndex + 1) + gap * currentIndex
what is current index?
if you are looping you'd have one
else just use the index of the square as if its an array
e.g first square 0, second 1, third 2, so on so forth
and what is gap width?
The tiny red distance between each slot
right
so currentIndex is just the current square you are working on
e.g say you wanted to place a chip in square 1
the currentIndex would be 0
now if you were looping over all squares, currentIndex would be the index of that current interation
e.g
for (let i = 0; i < 10; i++) {
let currentIndex = i;
}
so this goes into the code?
- the gap value
Yes
or this is math i’m doing?
thats the math the code will be doing
to figure out the X/Y of where to place the marker in the square
ahhh ok i see now
You can pre-calculate it if you want, but keeping it as a formula is fine too
pre-calculation is a little weird though
will this same logic work with the generation of the numbers as well?
It'll be easier to remember what it's doing
You'd have to do that for every square I think
I meant pre calculate the other values
doing so in code as a formula allows you to just calculate it based off the current square
oh yea for sure
Like the divisions
yuh
Anyway, you can use it for the numbers too ofc, but they'll be centered too
Do note tho, text is usually bottom-aligned
147 + (109 - 64) * (currentIndex + 1) + gap * currentIndex
So for vertical you'll sum instead of subtract
even further
192 * (currentIndex + 1) + gap * currentIndex /j
shit wait
sorry ima stop im probably adding to confusion
let me dissect this
U can't sum the parentheses value with the padding
As padding is constant
Just use the formula, no need to solve the equation
what would be different to find the y
Instead of widths you'll use heights
ah
And padding is the top margin
https://pastes.dev/peyHjbkyRE for some reason in between calling HandleNumber it is consuming the first number in the expression 2 + 2 so it is tripping up because it is reading the + and ignoring it causing an index out of range error
I've tried debugging, but I don't see what is causing it to consume the first number before tokenizing it
Solved the issue ironically using chatgpt
@scenic kelp @radiant kraken https://github.com/aarondyejr/msharp
I completed my lexer! I wrote some comments explaining my thoughts on how the code works. If either of you could in your spare time read through them and give feedback i'd much appreciate it 
Unless defining an AST is part of lexing I can't remember, if so then its not completely done
good job!!!
arch linux has the consensus that you should put in the most effort possible to achieve one thing which i do not agree with
i think an operating system should just work out the box and features should be extremely easy to set/configure
dont have too much time to fiddle with my os for hours to fix one small thing lol
i tried endeavouros yesterday and KDE themes are absolutely broken on it and are a pain to install
im putting in a second attempt today to install the theme i want
and yes themes do matter to me a lot dont judge me
girl just wants her os to look good
definitely not me who spent 2 days configuring plasma to get it exactly how I wanted
Lexing is just the step of turning the input string into tokens, parsing is where you do the majority of the work of turning things into an AST
So yeah you’ve completed Lexing pretty much
lexing is annoying to get right, especially with recursive structure
One message removed from a suspended account.
One message removed from a suspended account.
i had to do that for palworld
One message removed from a suspended account.
i had to use a program made specifically for doing what i needed with it
because same as you, i couldnt open it at all
google just says to use python to process it 💀
notepad++ can open
can it? Dont think it could open my 15gb level.json file 😭
you can also use terminal if u know the line ur looking for
i cant remember now if i tried it, but i imagine i did
it can, just takes a while
i didnt try intellij, but i tried webstorm and pycharm from jetbrains
terminal will be the fastest option tho, just grep the content you want
you need to disable inspections for such files
gap width is 13px
147 + (218 / 2 - 128 / 2) * (currentIndex + 1) + 13 * currentIndex
@lyric mountain right? for x coordinate
nano the beloved can as well
yes i got overstimulated and took a break lol this is new to me
💀
the tears in my eyes rn
One message removed from a suspended account.
your units are wrong
do note they're neatly packed in a square
so the sizes you used simply dont match the real image size
he also told them all to go to one index did he not
Also me personally, I would not be generating the numbers on the board on the fly (just as a side note)
you used the same values from horizontal apparently
it's a bingo
u gotta to
Just generate 1000 predefined boards /j

kinda scared to show my code now
most of it is AI

dont do this
it'll prevent u from deploying the bot to a server
use relative paths
if Da-High-Roller-Bot-main is the name of your project's root, then the path is simply ./hrbingoboard.png
Bro I swear to fucking god, and all things holy
ok
but well, code regardless, you just need to fix your units
the formula is correct, as the numbers assembled into a square
done. should i do this for the dab marker as well
do it for everything
all paths must be relative to your project's root
nothing absolute
One message removed from a suspended account.
I am absolutely positive I hate automod
does that count
can i pay you to find the units lol
no
shit you can pay me if you want, but I charge 5$ a pixel I find
A single pixel
i got $2m waiting for you
fixing to make bank
yes
why would you resize it
isn't 1500x2000 really big?
too low res tbh
all units i use here should be in px right?
OH.
I think i see what i did wrong.
BINGOO
I THINK
Ma'am, we do not accept false bingos here
leftpadding 728px
so real for that
nvm i confused myself
This GitHub Sponsors profile is waiting to be reviewed by GitHub.
its been over a week bruh 😭
well
dont get too excited
there is a 3 month period where you cant payout
after you got reviewed
thats fine
I think i got reviewed in like 6 hours tho lol
WAIT.
I GET IT NOW.
YES.
well, almost
so close
ok so i almost have the numbers centered
@sharp geyser @lyric mountain
thank you!!! i figured it out from here, i get it now
but the dab markers are a bit off
looking good
id imagine the markers are the same concept as number placement
you'll need to match the resolution to overlay your image to scale
(idk how to best phrase that)
yes still trying to find the perfect numbers!
const coordinates = Array.from({ length: 25 }, (_, index) => {
const rowIndex = Math.floor(index / 5);
const colIndex = index % 5;
const x = 200 + (218 / 2 - 128 / 2) * (colIndex + 1) + 180 * colIndex;
const y = 700 + (218 / 2 - 128 / 2) * (rowIndex + 1) + 180 * rowIndex;
return [x, y];
});
this is what i have at the moment
for number placement
Yes, the formula is correct, but some value u passed to it is wrong
Double check padding, gap and slot sizes
i guess i’m struggling to know which numbers to use
ew why is it crooked
but what number do i use to put in the formula?
why are you crooked
hint hint
im not crooked, im cooked
uh, isnt it the opposite?
leftPadding + (slotWidth / 2 - markerWidth / 2) * (currentIndex + 1) + gap * currentIndex
you'd use width when calculating the X values, and height when calculating the Y values
no?
X goes left to right, Y goes up and down
left to right = horizontal
x is horizontal
i know what you meant lol
Anyway
point stands
Width = X, Height = Y
so use width to calcualte X and Height to calculate Y
lmfao
oh tim
I made a lexer!
Step 1 to making my own programming langage (granted I used crafting interpreters to do it)
but still I think I understand teh code 99%
nice
shit
theres something iffy about that formula
idk what part is off
this doesnt sound right
cuz peek is literally
private char Peek()
{
if(IsAtEnd) return '\0';
return Source[current] // How is this the next character, is it not the one currently being lexed?
}
right now i have
const coordinates = Array.from({ length: 25 }, (_, index) => {
const rowIndex = Math.floor(index / 5);
const colIndex = index % 5;
const x = 200 + (225 / 2 - 128 / 2) * (colIndex + 1) + 170 * colIndex;
const y = 700 + (225 / 2 - 128 / 2) * (rowIndex + 1) + 170 * rowIndex;
return [x, y];
});
and it looks like
but idk what part is off
where was the marker supposed to be?
the marker is suppose to be directly ontop of the free space and ontop of the numbers
the formula doesnt look right
342 lines dang
padding + (slot * index) + (gap * index) + (slot/2 - marker/2)
change padding slot and marker to width for x and height for y
padding = distance from image border to the white squares
slot = size of the white square
marker = size of the marker
gap = size of the small red line between white squares
for x, take the width of all the above
for y, take the height of all the above
so instead of x = 200 + (225 / 2 - 128 / 2) * (colIndex + 1) + 170 * colIndex I would use ```x = 200 + (225 * (index + 1)) + (170 * index) + (225/2 - 128/2)111
theres no way gap is 170
also, i made a mistake, should be just index, not index+1
i drew a line between the gap and paints is showing "11 x 1px"
colindex for x and rowindex for y
x = 200 + (225 * (index)) + (11 * index) + (225/2 - 128/2)
x = 200 + (225 * index) + (11 * index) + (225/2 - 128/2);
why the 111 at the end lul
y = 700 + (225 * (index)) + (11 * index) + (225/2 - 128/2)
accident lol
so would the gap be 11? or 1
ok
the gap cant be applied on the first slot
oh wait nvm
yeah I miswrote the formula lmao, forgot the centering should only be applied on the first pass
tho u can reduce that to padding + (slot / 2 - marker / 2) + (slot + gap) * index
errmmm
so i replace this
const coordinates = Array.from({ length: 25 }, (_, index) => {
const rowIndex = Math.floor(index / 5);
const colIndex = index % 5;
const x = 200 + (225 / 2 - 128 / 2) * (colIndex + 1) + 170 * colIndex;
const y = 700 + (225 / 2 - 128 / 2) * (rowIndex + 1) + 170 * rowIndex;
return [x, y];
});
with
const coordinates = Array.from({ length: 25 }, (_, index) => {
const rowIndex = Math.floor(index / 5);
const colIndex = index % 5;
const x = 200 + (225 * colIndex) + (11 * colIndex) + (225/2 - 128/2);
const y = 700 + (225 * rowIndex) + (11 * rowIndex) + (225/2 - 128/2);
return [x, y];
});
nvm that's not right
that's what this did lol
OHHHH
like this? @lyric mountain
idk what that means
you have rowIndex and colIndex
use them
you'll never use the iterator for anything but calculate those two
I have a feeling part of this is due to the squares not being perfect squares
they are squished height wise
yes, you cant use the same value for height if it isn't equal to width
aside from that, the numbers appear to be centered by the first digit
you need to calculate the total width, not just the first digit
...
@quartz kindle I dont remember how to get string metrics from canvas, your take
are you doing that with canvas?
generating the numbers and dab? yes
and canva is where i made the board
const { createCanvas, loadImage, registerFont } = require('canvas');
remake the board, and remove the white squares
much easier to make the white squares with code, it guarantees the measurements are always exact
thats what i would do
canvas can do everything
wtf
people make games on canvas
yea even i made my othello command with that
the entire board can be done with pure canvas
which would also be much faster because it wouldnt need to load any images
ppl make chess board, connect four and more
my bot generates astrological charts with pure canvas
so i dont even need a png of the board
nope
so you're telling me
canvas alone can make a bingo board similar to this?
stop playing
wizardy
Yes and quite literally only nerds like you can understand it

How to import json file in esm
require("...")
import/from
according to the proposal (currently stage 3), it should be like this
import json from "./foo.json" with { type: "json" };
import("foo.json", { with: { type: "json" } });
but idk if that was implemented yet
import contents from 'some.json'
Do you really need to do that whole with types: json thing
thats honestly such an ugly flaw
this dont work
do it the way tim said
yes
try it
no they didn't work either
chrome 91 added this:
import json from "./test.json" assert { type: "json" };
console.log(json.hello);
idk if it works on node
are you using node?
what was the problem with brave browser
you mean like privacy and business concerns?
Still think that looks ugly
anything can be done with canvas, but programatically generating images is slightly complicated if you cannot visualize the result in your head
as you'll be using pure code, no visual guides
i mean, the company behind brave did some shady things i guess, i dont remember much
otherwise most complains are just "its another chromium fork, use firefox"
im using brave rn
same
I'd love to use firefox, but I cant get behind their shortcuts
they aren't even changeable
every single time i tried firefox it was noticeably slower and clunkier
i think it was mostly that incident a while ago where they inserted affiliate links to certain links without telling anyone
so they would get the commission for use of the link
and of course that crypto stuff but theyve listened to the feedback and let you disable and hide those elements
so i'd say its a pretty solid browser that i use personally
brave was the only browser that never gave me issues on youtube lmao
every other one i tried, with ublock and all, always broke youtube at some point
help with what?
you want to try making it without images?
create a canvas, just like you did, then instead of loadimage, do a fillRect to add the red background, then use fillText to draw the texts for high rollers, bingo, etc
then on your loop for the numbers, add a fillRect to draw the white squares
brave did break to the youtube thing a few times for me but they fix it very quick
i think they use the same blocklists are ublock origin too
fanboy or whatever its called
ye but afaik they way they block them is different
their blocking engine works on a lower level than extensions
Hey! is it possible to transfer team ownership? if the account has been disabled/deleted? (top.gg team ownership)
yeah it is a bit better
and theyre not subject to the whole "manifest v3" update which would limit adblocker network interception ability
oh what a coincidence
google say theyre doing it for better privacy but somehow their enterprise customers arent affected by the manifest v3 restrictions on adblockers?
HOLY SHIT
lmao
they are literally doing anything they can to make ad blocking a paid feature
this shits hard
give it some laxatives to shit easier
lol another question
different game
i have my bot in 2 different servers
how can i register the command for it to work in both with no issues?
companies like microsoft and google are scared of their enterprise customers
thats why they arent so pushy with things like that on their enterprise products
windows enterprise lets you completely disable telemetry for example while normal windows you need to do hacks to do it
thats why LTSC windows is so good
im gonna install windows 11 ltsc next time i reformat
make sure that all the game data is unique per server
or better yet, unique per channel
oh wait i never knew that existed
i'll do anything to get away from the consumer windows
microsoft manages to make windows worse and worse
its seriously making me consider going back to linux
ye windows 10 ltsc was as good as windows 7 was at its prime
windows 11 ltsc took a long time to arrive
- let game = {
- players: new Set(),
- round: 0,
- inProgress: false,
- timer: null,
- numButtons: 3,
- timeWindow: 7000,
- survivalButtonIndex: 0,
- extraLifeButtonIndex: -1,
- playerLives: new Map()
-};
+ const games = new Map();
object with a fancy name and harder to access info
so just add + const games = new Map ();
-if (game.inProgress) {
- await interaction.channel.send('A game is already in progress.');
- return;
-}
+ const game = games.get(interaction.channel.id);
+ if(game && game.inProgress) {
+ await interaction.channel.send('A game is already in progress.');
+ return;
+ }
you'd index it based off some unique id
like either a channel id
or if you want to allow multiple games in a channel a game id you generate
so this will allow both servers to run games simultaneously with no issues or errors?
yes
servers and different channels too
you still need to add code to create the game object
and it'll still keep the logic of tracking lives, timers and everything if I remove all of this?
you still need to create the game object somewhere
ie
if(!game) {
games.set(interaction.channel.id, {
players: new Set(),
round: 0,
inProgress: false,
timer: null,
numButtons: 3,
timeWindow: 7000,
survivalButtonIndex: 0,
extraLifeButtonIndex: -1,
playerLives: new Map()
});
}
separate states for each server
exactly
const games = new Map<any, any>();
no
please delete this
😭
im calling my lawyer
I was called?
const games = new Map<*,*>();
const games = new Map() as Map<*,*>;
tim
your experienced role should be revoked
thats not something an experienced person would ever write
*,*
w
const game = new Map<string, {
players: Set<string>
round: number
inProgress: boolean
timer: number | null
numButtons: number
timeWindow: number
survivalButtonIndex: number
extraLifeButtonIndex: number
playerLives: Map<idk, idk>
}>()
y
Might need it later who knows
const game = new Map<string, {
players: Set<string>
round: number
inProgress: boolean
timer: number | null
numButtons: number
timeWindow: number
survivalButtonIndex: number
extraLifeButtonIndex: number
playerLives: Map<idk, idk>
}>()
type GameMap = typeof game
export type MapValue = GameMap extends Map<string, infer V> ? V : never
WHat in the absolute fuck did you just show me
inferring the value from the map
no
yes
no
yes
no
prove
ok
my ts code is full of infer 😊
remove lines 4-14
im sorry for your loss
I use actual good code tho
I program in rust
💪 🚀 
look at these beautiful types https://github.com/0x7d8/NPM_WEB-SERVER/blob/main/src/classes/Validator.ts
and add ```js
const games = new Map();
*/ public extend<V extends Validator<any, any, any>, _Data extends [any, any] = V extends Validator<infer Data, infer Context> ? [Data, Context] : [{}, {}]>(validator: V): Validator<Data & _Data[0], Context & _Data[1], Middlewares> {
yea I closed that immediately
could i not just add const games = new Map(); ontop of the game object?
const games = new Map();
let game = {
players: new Set(),
round: 0,
inProgress: false,
timer: null,
numButtons: 3,
timeWindow: 7000,
survivalButtonIndex: 0,
extraLifeButtonIndex: -1,
playerLives: new Map()
};
like this?
const game = new Map<string, {
players: Set<string>
round: number
inProgress: boolean
timer: number | null
numButtons: number
timeWindow: number
survivalButtonIndex: number
extraLifeButtonIndex: number
playerLives: Map<idk, idk>
}>()
type GameMap = typeof game
export type MapValue = GameMap extends Map<string, infer V> ? V : never
oh lol
so remove 4-14
and put that there?
if(!game) {
games.set(interaction.channel.id, {
players: new Set(),
round: 0,
inProgress: false,
timer: null,
numButtons: 3,
timeWindow: 7000,
survivalButtonIndex: 0,
extraLifeButtonIndex: -1,
playerLives: new Map()
});
}
you'd set the game state whenever a game is started
idealy you'd store the games map somewhere you can access anywhere
like on the client
im gonna cry
client.games since djs attatches the client to literally everything
i have $2m more dollars for you to fix it up for me lol
interaction.client.games.set() is how you'd call it then
it's simple
wherever you instantiate the client e.g const client = new Client() or const client = new Discord.Client() whatever
just put client.games = new Map() under it
then inside your game command, when its called set the game state
tell him to maybe consider choosing another course of study
luckily he has me (a self acclaimed professional) to fix his errors
(typescript) how can I set the type of a dictionary and then also make a type of the values like a "string1" | "string2"
this is what I want
but
replacing as const with as const satisfies Record<number, string> does the same thing
Im confused on what you really want to do
ok so i have this large object as record<number, string>
yuh
i want to create a type where the values are like the enum
yuh
with enum I mean the "string" | "string"
but I don't know how to do that
so a union type using predefines trings
without this
suppose so
im not too familiar with the typescript terms
right
so you can make it readonly by using Object.freeze and give it a type of whatever you want
const dictionary: Type = Object.freeze({})
This will make it read only not allowing you to modify it
and also setting the type and able to index it how you want
assuming the key you are giving is the right type for that Record<number, string>
The Object.freeze() static method freezes an object. Freezing an object prevents extensions and makes existing properties non-writable and non-configurable. A frozen object can no longer be changed: new properties cannot be added, existing properties cannot be removed, their enumerability, configurability, writability, or value cannot be changed...
I assume this is what you were looking for?
yes :3
is there a way to do it without Object.freeze
like Readonly<something>
or will that screw up the value type
you can sure
iirc all it does tho is call Object.freeze anyway
but if you want the ts code to look nicer then go for it
ya but how
const dictionary: Readonly<Record<number, string>> = {};
i dont know the type though
ya okay
that turns dictionaryvalue into
from
Right, but from my understanding when you make use of Readonly, it will compile down to using Object.freeze no?
When something is a type ReadonlyArray, TS will tell you its readonly but you can tell it to stfu
I see
Nope! TS does not insert any extra code for you
Compile time safety
and I guess runtime as well
The whole point is that you can use Object.freeze at any point
not just at Object creation
also by doing this, you are asserting that it must satisify Record<number, string> soyou do know the type
this
What
You have a object
it can't be a string
you can do
Record<number, DictionaryValue>
if need be
I cant know DictionaryValue before it was made

what are you talking about
then your only option is to use any if you dont know the type
nvm object.freeze works :3
imagine not pinging me for typescript help smh
ELIFECYCLE = exit code 1?
exit code 1 just means error
yes
oki ty
only exit code 0 is success
What is your guys opinion on https://rythm.fm return?
Me personally its just spotify with extra steps
Not ot mention you can't use it by yourself as of rn, and you need premium to even listen with others anyway (free users can listen along to any premium user)
it is useless
they tried to reinvent music by removing features
thats not how it works
ah yes our unique selling point is the fact that you cant listen to music alone and have to listen to music with another person
not to mention they appear to want to be standalone, but dont want to break ties with discord
Which honestly is what really would hold them back. I mean spotify is massive yes, but anyone will opt for a cheaper option over that.
Providing its quality is up to standards that is
music streaming is a really difficult market to break into
spotify is barely staying afloat and thats their only product
theyre probably already paying more than theyre earning from the publishers they are paying right now to allow them to host some music on their platform
yup
Not to mention, daring to offer lower prices over more popular services like spotify is pretty ballsy
It's a shot in the dark hoping you actually hit your target
At most they will barely break even i'd say (if they are lucky)
its also possible discord is paying them a bit of money for being an activity
thats the only way i can think of them justifying launching this
We launched a new feature that allows anyone to add apps to their own account, and use them across all of their servers, DMs, and GDMs.
hmmm
has anyone made one of these?
https://discord.com/developers/docs/tutorials/developing-a-user-installable-app
i checked it out, but didnt actually apply it
since you need to redeploy the commands and icba
we can't even use them until like the 18th i think
mmkay
unless its one of those slowly rolling things
but my bot does have that option in the dev panel
does it need to be a new bot or can it be added to an existing bot?
existing bot
that's pretty cool
no
the commands are the same
its just that if the person choses a user install, they can use the command anywhere
even if your bot is not there
ofc only they can see it
mandatory ephemeral or something idk
Yea no, i've definitely been able to do it myself, as well as a number of other people
so if someone installs the bot and then runs a command in a server will it send the guild_id just like a normal command?
i'm hoping people wont be able to record matches using the user installed bot on a server
mmmkay, i'll try to get it enabled to test it out
oh, i can just not enable user installs
anyone having issues with their bots?
Discord's api is struggling
Messages & Bots are experincing problems sending / connecting
lmao
ok thought it was just me
💀
intended design
"we thought it best to slow down our API to encourage our developers to touch more grass in the meantime "
Have u guys made load balancers with different locations not using cloud services such as aws but just normal vps's?
If yes pls enlighten me :)
yes
i have a few different use cases
- multiple API nodes, running same software and uses nginx locally to proxy to different host IPs - requests are a tiny bit slower but its worth it for stability
- same as above but using CF dns level load balancing ($5 month), not slow as its dns level
For the first do the nodes connect to the same db?
yes
So the db could still be a bottleneck?
I see
Aws is so cool for letting u create private subnets or rules for the db
yeah
you can do the same with a few providers

through load balancer
directly to node
direct to other node
it depends on the speed of the node
2nd node is a lower spec node
Oh nice
So when u are doing this on a single vps u can't really chose between locations right?
Hey! is it possible to transfer team ownership? if the account has been disabled/deleted? (top.gg team ownership)
docker for 0 config!
why are server racks so expensive
bare metal + setup scripts for maximum performance
whar
https://web.archive.org/web/20240000000000*/top.gg
I am trying to use this to train my AI but it's hella much data
I am gathering many different web crawls, of like 1-2tb worth of warc files but this shit takes way too much
crazy
What you building it on @eternal osprey
bro thinks he works at openai
Is it good to have prefixes?
if your bot is message-based, yes
nah i work at a smaller company but they need hella lot of data for no reason.
I swear i want to record my meetings so you can hear how i am yapping about numbers and predictions i don't even understand myself
😭
hello ChittyKat
"Yeah, so you see here that there's a trend in sales and the months. i guess, next month we will get more sales."
Yo Code Lawyer
How goes it
noice noice
wby?
Oh yknow just torturing myself more

Making a programming language
With what
An esolang or an actual language
just toy languages rn
ah iss
I have plans in the future to make an actual general purpose language
chill out there pal
LMAO
What does it look like?
The one right now is modeled after lox
Im going through that book as its the best resource I could find that balances theory with actual code application
It still lays theory on pretty thick in some parts and I myself am not one that learns by just reading 
Hm i see. Yeah it seems like a decent book... what are you going to create your language in>
I also was interested in creating my own language but i never got the time to finish it
> var x = (2 * 3) * 10 - 1 / 2;
VAR var
IDENTIFIER x
EQUAL =
LEFT_PAREN (
NUMBER 2 2
STAR *
NUMBER 3 3
RIGHT_PAREN )
STAR *
NUMBER 10 10
MINUS -
NUMBER 1 1
SLASH /
NUMBER 2 2
SEMICOLON ;
EOF
This is the current state of my stuff
cuz my bitch ass finally is not unemployed rn 🗣️
I also have an AST generated but its not in use rn I am working on parsing the expressions from the actual lexer
owh damn it looks good
I took a semantics course once
The language I am making right now is in C#
VAR x = NUMBER y | POINTER z
or whatever
Context-Free-Grammar
I have no course to teach me
I am self-teaching basically by reading books and looking at theory vids

mine's
> decl x = (2 * 3.5) + 0x2 - 1 / 2;
Decl
Ident "x"
Eq
LParen
NumberLiteral (Integer.Decimal "2")
Ast *
NumberLiteral (Float "3.5")
RParen
Plus
NumberLiteral (Integer.Hex "0x2")
Minus
NumberLiteral (Integer.Decimal "1")
Slash
NumberLiteral (Integer.Decimal "2")
Semi
Eof
but i got stuck at AST generation

cause of the grammar
🤝
I basically skipped the theory on that for now just to keep moving along
I have the AST generated basically
and it works
I ust need to make use of it now and prase the expressions from the lexer
i wanted it to also support more complex syntax






