#development
1 messages · Page 272 of 1
I mean it may or may not work. I did a lot of troubleshooting and I can't remember if this config was problematic or not
But I'm pretty sure it's at least 90% of the way there
whichever you developed it on tbf
the version doesnt really matter unless you require specific features from said version
plus the security patches etc
which one do i go for boys?
Powerful Ryzen KVM servers from €2.45 per month. Order now and get started immediately.
love that im pretty sure they're literally just hosted a hetzner by the looks of it lol
I drover through Frankfurt Am Main the other day too lol
im now purchasing it
right one is fine
eq7/tornado in frankfurt
ah nice
Kk thanks. Any tips on how to troubleshoot? Like what do I even do to figure out what’s going wrong. Cause like there no errors right and the packets are not being received
They aren't
Hetzner has nothing to do with datalix
Ah cool
Yea I realised that alter I said it
Since hetzner is in Falkenstein & Helsinki iirc (and Nuremberg)
do anyone know how to regester commands in bot profile ?
i wonder why datalix can be that cheap
All EU brands are fairly cheap ngl
they'll overprovision cpu by about 150% generally
there's a few other reasons they can be
like owning their hardware etc
it's not hard if you split up a dedi properly
or you're contabo and overprovision by like 300%
its for verified apps only, takes 12-24 hours to appear on the profile after verifying the app.
It takes the time discord needs to get enough data, there's no timeframe
It can be in 12 hours just like it can be in 4 days
If your bot is used by 3 people it will take longer than if it's used by 300 people
This shit making me lose my mind wtf
No
no
No
@earnest phoenix don't advertise your bot here or anywhere else in this server
ok
yes my is verified and it have been verified over a mont
depends on how frequently the bot is used
and how many guilds use it etc
2k servers
167k user
400 dayily vote
hmm
mine doesn't have them either with around 600 daily users
i think there must be a minimum amount of slash commands used
my users mostly use prefix commands
Yes, you need to use slash commands so that Discord has enough data to determine which ones are "popular"
Hey, i have a Problem with discord.js my code is on the version 13 and now i must upgrade it too version 14. Can anyone Help me with that, because the videos don t help me with my problem.
Maybe I should mention that I'm new to coding Discord bots.
This is my code, thanks for everyone who will help me.
const { SlashCommandBuilder, EmbedBuilder } = require("@discordjs/builders")
module.exports = {
data: new SlashCommandBuilder()
.setName("info")
.setDescription("Zeige Informationen über den Server oder einen Benutzer an!"),
.addSubCommand(subCommand=> subCommand.setName("server").setDescription("Zeige Informationen über den Server an"))
.addSubCommand(subCommand=> subCommand.setName("meber").setDescription("Zeige Informationen über einen Member an")
.addUserOption(option=> option.setName("meber").setDescription("Der Member").setRequired(True))),
async execute(interaction) {
switch(interaction.options.getSubcomman()) {
case "server": {
interaction.reply({embeds: [
new EmbedBuilder()
.setTitle(Informationen für die Guild ${interaction.guild.name})
.addFiles([
{
name: "Channels"
value: ${interaction.guild.channels.cache.size} Channels
},
{
name: "Erstellt"
value: ${Math.round(interaction.guild.createdTimestamp/1000)}>,
inline: true
}
])
]})
break
}
case "member": {
const meber = interaction,options.getMember("member")
interaction.reply({embeds: [
new EmbedBuilder()
.setTitle(`Informationen für die Guild ${meber.user.tag()}`)
.setThumbnail(meber.user.avatarURL({dynamic: true}))
.addFiles([
{
name: "Account erstellt"
value: `${matchMedia.round(meber.user.createdTimestamp/1000)} >`,
},
{
name: "Member beigetreten"
value: `${Math.round(member.joinedTimestamp/1000)}>`,
inline: true
}
])
]})
break
}
}
}
}
This looks like a job for...||chat-gpt||
Not really
There is good guide about updating from v13 to v14 - https://discordjs.guide/additional-info/changes-in-v14.html#before-you-start
Why are you using switch statements for just 1 condition 
i don t know i just following a YT video 😅
Format your code using
const { SlashCommandBuilder, EmbedBuilder } = require("@discordjs/builders")
module.exports = {
data: new SlashCommandBuilder()
.setName("info")
.setDescription("Zeige Informationen über den Server oder einen Benutzer an!"),
.addSubCommand(subCommand=> subCommand.setName("server").setDescription("Zeige Informationen über den Server an"))
.addSubCommand(subCommand=> subCommand.setName("meber").setDescription("Zeige Informationen über einen Member an")
.addUserOption(option=> option.setName("meber").setDescription("Der Member").setRequired(True))),
async execute(interaction) {
switch(interaction.options.getSubcomman()) {
case "server": {
interaction.reply({embeds: [
new EmbedBuilder()
.setTitle(`Informationen für die Guild ${interaction.guild.name}`)
.addFiles([
{
name: "Channels"
value: `${interaction.guild.channels.cache.size} Channels`
},
{
name: "Erstellt"
value: `${Math.round(interaction.guild.createdTimestamp/1000)}>,`
inline: true
}
])
]})
break
}
case "member": {
const meber = interaction,options.getMember("member")
interaction.reply({embeds: [
new EmbedBuilder()
.setTitle(`Informationen für die Guild ${meber.user.tag()}`)
.setThumbnail(meber.user.avatarURL({dynamic: true}))
.addFiles([
{
name: "Account erstellt"
value: `${matchMedia.round(meber.user.createdTimestamp/1000)} >`,
},
{
name: "Member beigetreten"
value: `${Math.round(member.joinedTimestamp/1000)}>`,
inline: true
}
])
]})
break
}
}
}
}
interaction,options.getMember("member")
I immediately see this which is using a comma and not a period.
ok and how to "install" it in my code😅
Sry that i am so Dump in this topic
You mean 'dumb'
yes
No worries everyone has been there
Why do I think you're developing a bot just for the dev badge?
@pale iron Could u pls stop sending GIFs during assistance discussions?
Maybe
Haha, I'm guilty there aswell. But yeah, just change the , to a . in that string of code I posted. Other than that nothing sticks out for me in that code. Could be more deep than this block in regards to upgrading your djs version.
I want to program a bot for our server, not for the badge. The problem is, I've tried to teach myself how to do it easily using YouTube videos. But I can't find the errors. I can already program myself, but I'm unfamiliar with Discord.js.
Thing is, no offense but if you do know how to program, you'd be able to follow the errors it would provide you. As I said, I can't exactly point where / why it's failing for you besides the , I see.
Ic ic
Are you you using visual studio code usually that would tell you common errors if you have the js pack stuff installed
☝️
Yes i using visual studio code.
I think you mean addFields instead of addFiles
Ah that's something I did not notice.
lol
This isn't a "I need a dev" typa server
Just use one already made
Top Job Board 
videos are by far the worst ways of learning to code
you'll either become dependant on them or learn outdated stuff
Yes, that's true. I've also taught myself other languages on YouTube, which worked well. Unfortunately, it didn't help me as much with Discord.
I mean, discord.js likes to change the way it works often
my advice would be to attempt simpler projects before dealing with discord to get used to the language itself
d.js is rather overcomplicated in some aspects for unknown reasons
The problem I have is that I can code Java, but it doesn't work on Discord
You can make bots in java
and both can be used for bots
with Javascript
Hello
what part of d.js are you struggling with?
the part of upgrade my code in the newest version
What was your old version?
version 13
Discordjs has a guide for you
happy bday woo
tyty
Happy birthday
thanks
Happy borthday Woo
happy bday
happy bird day weewooweewoo
ty ^-^
@ashen obsidian also google often is of better help than youtube if you know how to properly use it, including ", site: and more (google dorks)
I wish - worked on google still
ok thanks to all that helpt me
👀 this is so cool.
Heck yea
got docker stack creation automated
So Docker Stack is Docker Compose?
So Docker Stack is your naming? 
That's how portainer and other services name it yea
thats actually the official docker naming
That's for docker swarm mode though so official but not really related the compose
Ok time to get this working properly with a build status and stack info 
hello people, i wanna ask a question.
Ive made a bot that one of its functions is to copy an entire category here in discord along with its text, voice, forum channels and set their permissions to be the same as well.
Unfortunately it seems that by what i coded (setting the permissions AFTER the category and channel creation) now, it demands the Administrator privillege or else even with ALL of the privilleges it will hang and give me:
"discord.errors.Forbidden: 403 Forbidden (error code: 50001): Missing Access"
what can i do to make it NOT want the Administrator privillege so i can share it here?
pretty sure you only need manage channels and manage roles
Tried it, it gave me the error i showed there, and hanged right after the first channel under the category was created
also, you can directly create a channel with the permissions already set, no need to set them after creation
are you sure you are not trying to set permissions before the channel is created?
Yeah 😂😂 i mean i hope so, i can dm you the code if u want. About the create a channel eith permissions directly, i guess i dont know how, cause i tried and this is the only sollution that worked for me
what library are you using?
Are you copying the entire overwrite perms too or doing something weird?
Forbidden access sounds like you have higher roles or restricted perms that your bot can't set
Im creating a copy of a specified category and its channels and then copying the permissions as they are in the original category and channels. Nothing weird
all guild.create_x_channel() methods have a overwrites= kwarg
Ah you're copying the entire perms that's your issue then
Your bot needs to check if those role permission overrides are below the bots current top role
also, discord.py has a channel.clone() method
if you are duplicating an existing channel instead of restoring from a backup
Like if a channel has role permissions
Admin
Mod
User
Then your bot would only be able to set user and mod it also checks denied manage channel/view perms for the everyone role and those roles because you'd lock yourself out (and also denied perms)
Yeah i havent included such a check.. maybe thats the issue.
Should i post my code here to see what ive done?
Also your bot can only copy permissions that it currently has so if a role perms overwrite has manage messages denied/allowed but your bot dosen't globally in the server have manage messages that would fail too
Administrator would bypass all permission checks but would still have to follow the role positions to your current bots top role
Yeah, it will, thats why i started it as admin, but saw that i cant use that, so now im lookin for workarounds, to eliminate the admin privilege.
To be honest i created that bot because i make discord server, and i saw on reddit several people lookin for something like this, so i didnt think ahead (like sharing it)
Honestly there isn't really much you can do with copying channels as bots due to how permissions work and you can't grant administrator per-channel which imo would be a really nice feature
You can fake it kinda, but it requires a lot of manual work.
Like you set a specific role that has ALL privilleges except admin,
Add it on all of ur channels and make it X to even see channels, but tick it to have everything to the specific channel u want it as admin.
Too much work tho
Yup
Thats why my bot can clone roles as well with all of their permissions! 😂😂😂😂
thank you both @prime cliff and @quartz kindle . With your inputs i managed to make it work w/o the Administrator permissions.
Now it will clone the category and ignore any permissions that its missing access to, and if anyone wants he can set it himself as the highest role and then it will work with all the permissions!
Thanks a lot!
Without and with admin role :P, again ty vm
yes i agree, it does pin the everyone role cause its set like this inside the channel permissions, but myself im planning to use it in invisible channel, although ill try to make it as not to ping
most libs has allowed mentions setting that you can use, so it wont ping the role but still can mention it.
thnx, ill try it
A suggestion for the ping
You could also do codeblock so be like
@/ everyone (did / on purpose so no ping incase)
my code right now is this, print(f"❌ Missing Access to set permissions for {role.name})") it gets the role name straight from the discord, i dunno how to make it to not ping since the role inside the category is always @... everyone
Why not just codeblock to not mention (i forgot how so this is another suggestion)
Like using everyone
yeah ill try fighting the bot for it now xD
Ok i hate discord formatting somethimes
i made a change, lets see if it works 🤞
allowedmentions
{ parse: [] } should disallow all mentions
i have to be honest here, chat gpt helped me with this one, but seems to be working better now
i think chatgpt helped you with all of it mate...
not a good idea
did that already, people abused
it's best to simply disable everyone/here pings on the bot itself
if i had used chatGPT for all of it mate, i wouldnt have come here asking questions now, would i? but ty for your input
alright send the code over
is my data struct good
why? go to chatgpt and tell it to make you the same bot bud. Its easy
Good start
up = userphone
a lot of these are of type jsonb cause i cant figure out the arrays
Postgres?
TEXT[] would be a string array
lmfao
if u have an ui its kinda good
yeah but how to set it
i try to default to [] but it syntax errors
To set an array it's {}
i fr need new peripherials
my mouse randomly scrolls
and my keyboard doubles b and g
Had that too with other letters
Fixed itself after some time
i heard its linear switch problem
for me its been like that for 2 years
im used to it
i just backspace doubles
but its so slow
and annoying
also idk why my bot got approved with the moderation tag
it only has !report as a moderation feature
Thats why its just a temp suggestion
which lets users report others and it sends message in a channel
can yall suggest a better table structure pls
wait
i think imma plan first
like what commands imma add
i mean for now json is good
just 4 servers using it wont harm the storage
they should improve d.js docs fr
The djs docs are so easy to use though 👀
whats wrong with it?
im not sure how I want to handle docker image building for my new rust api tbh
im thinking build the app using a seperate step so I can cache depends properly
very little examples
Why do you need examples? they describe the input and output of every method
ok how to set intents
thats client options
Intents are a client option
There is also https://discordjs.guide if you are looking for examples
There are probably not examples for everything, but you should be able to find some for the most popular ones
chunky boi
Compiling api v3.0.0 (/root/projects/mcjars/api)
Finished `release` profile [optimized] target(s) in 11.75s
root@remotedev:~/projects/mcjars/api# ls -lh target/release/api
-rwxr-xr-x 2 root root 19M Mar 20 15:02 target/release/api```
just a tip, standardize your names
go either camel, pascal or snake, but dont mix them
still as cursed as before https://pastes.dev/x1CrjycwkV#L190
but well, your structure seems good enough, my only nitpicks would be the naming itself and the table containing (I suppose) collections
commandSettings, roleSettings, rank_blacklist and rank_users in the case
@solemn latch
@lyric mountain are you down to help with a query?
ah, ill wait then
this is the query, currently build_count only counts builds with type = sb and version/project version = sb, I need it to count the builds for all types, however still version/project version of sb
WITH spec_build AS (
SELECT builds.build_number as build_number, builds.changes as changes, builds.created as created, builds.experimental as experimental, builds.id as id, builds.installation as installation, builds.jar_size as jar_size, builds.jar_url as jar_url, builds.project_version_id as project_version_id, builds.type::text as type, builds.version_id as version_id, builds.zip_size as zip_size, builds.zip_url as zip_url
FROM builds
WHERE builds.type = 'FABRIC' AND builds.version_id = '1.21.1'
LIMIT 1
)
, filtered_builds AS (
SELECT b.build_number as build_number, b.changes as changes, b.created as created, b.experimental as experimental, b.id as id, b.installation as installation, b.jar_size as jar_size, b.jar_url as jar_url, b.project_version_id as project_version_id, b.type::text as type, b.version_id as version_id, b.zip_size as zip_size, b.zip_url as zip_url
FROM builds b
INNER JOIN spec_build sb
ON sb.id = b.id
OR (COALESCE(sb.version_id, sb.project_version_id) = COALESCE(b.version_id, b.project_version_id) AND sb.type = b.type::text)
WHERE b.type != 'ARCLIGHT' OR (
(sb.project_version_id LIKE '%-fabric' AND b.project_version_id LIKE '%-fabric')
OR (sb.project_version_id LIKE '%-forge' AND b.project_version_id LIKE '%-forge')
OR (sb.project_version_id LIKE '%-neoforge' AND b.project_version_id LIKE '%-neoforge')
OR (sb.project_version_id NOT LIKE '%-fabric' AND sb.project_version_id NOT LIKE '%-forge' AND sb.project_version_id NOT LIKE '%-neoforge')
)
)
SELECT *, 0 AS build_count, now()::timestamp as version2_created, 'RELEASE' AS version_type, false AS version_supported, 0 AS version_java, now()::TIMESTAMP AS version_created
FROM spec_build
UNION ALL
SELECT x.*, mv.type::text AS version_type, mv.supported AS version_supported, mv.java AS version_java, mv.created AS version_created
FROM (
SELECT *
FROM (
SELECT b.build_number as build_number, b.changes as changes, b.created as created, b.experimental as experimental, b.id as id, b.installation as installation, b.jar_size as jar_size, b.jar_url as jar_url, b.project_version_id as project_version_id, b.type::text as type, b.version_id as version_id, b.zip_size as zip_size, b.zip_url as zip_url, count(1) OVER () AS build_count, min(b.created) OVER () AS version2_created
FROM filtered_builds b
ORDER BY b.id DESC
) LIMIT 1
) x
LEFT JOIN minecraft_versions mv ON mv.id = x.version_id;```
what in the name of science
https://pastes.dev/fuNqUy1hWw formatted for better readability 
that looks worse 

ok so, it's time for u to start using views lul
also u dont need to put an alias on fields that already have the same name
what are u attempting to do?
its from my semi-orm
mhm
wouldnt be against it
but no clue how
CREATE VIEW the_name AS the_sql
after that u just refer to it as you'd with tables
get build and latest build for same type + (version/project version) + version info from minecraft_versions
just remember that views are merely aliases to larger sql blocks (like WITH), they dont store resultsets
what about a materialized view
sqlite doesnt have mat view
im using pg now

this is how a result should look
[
{
"build_number": 1,
"changes": "[]",
"created": null,
"experimental": false,
"id": 208070,
"installation": "[[{\"url\": \"https://versions.mcjars.app/download/fabric/1.21.1/0.16.10/1.0.1.jar\", \"file\": \"server.jar\", \"size\": 168438, \"type\": \"download\"}]]",
"jar_size": 168438,
"jar_url": "https://versions.mcjars.app/download/fabric/1.21.1/0.16.10/1.0.1.jar",
"project_version_id": "0.16.10",
"type": "FABRIC",
"version_id": "1.21.1",
"zip_size": null,
"zip_url": null,
"build_count": 0,
"version2_created": "2025-03-20 15:16:42.047502",
"version_type": "RELEASE",
"version_supported": false,
"version_java": 0,
"version_created": "2025-03-20 15:16:42.047502"
},
{
"build_number": 1,
"changes": "[]",
"created": null,
"experimental": false,
"id": 208070,
"installation": "[[{\"url\": \"https://versions.mcjars.app/download/fabric/1.21.1/0.16.10/1.0.1.jar\", \"file\": \"server.jar\", \"size\": 168438, \"type\": \"download\"}]]",
"jar_size": 168438,
"jar_url": "https://versions.mcjars.app/download/fabric/1.21.1/0.16.10/1.0.1.jar",
"project_version_id": "0.16.10",
"type": "FABRIC",
"version_id": "1.21.1",
"zip_size": null,
"zip_url": null,
"build_count": 66,
"version2_created": null,
"version_type": "RELEASE",
"version_supported": true,
"version_java": 21,
"version_created": "2024-08-08 12:24:45"
}
]```
first row being the actual matched build, second the latest (highest id) for type + version identifier
and second also including version info
almost
build_count should be how much the version has in total, not just for the type
66 = all builds with type = FABRIC and version_id = 1.21.1
real number is 1298
for version_id = 1.21.1
you dont happen to have a DML of your structure do you?
as in, the tables that are to be used
a bit outdated
the whole "same version id" comparison can be reduced to ```sql
WHERE b.type <> 'ARCLIGHT'
OR split_part(sb.project_version_id, '-', -1) = split_part(b.project_version_id, '-', -1)
OR split_part(sb.project_version_id, '-', -1) NOT IN ('forge', 'neoforge', 'fabric')
even better if you make those split_part as select fields instead of repeating
thats fancy
SELECT b.*
, last_value(b.version_id) OVER (PARTITION BY b.type, b.version_id, b.project_version_id ORDER BY b.id) AS latest_build
FROM builds b
INNER JOIN minecraft_versions mv ON mv.id = b.version_id
INNER JOIN project_versions pv ON pv.id = b.project_version_id
``` something like this?
it'll get the latest build separated by type, version and project_version
project_versions table doesnt have any useful information, thats why the query has stuff like version2 created which uses the min(created) of all builds for type + projectver
very cursed db schema
out of curiosity though, what does the partition by do
SELECT b.id
, b.build_number
, b.changes
, b.created
, b.experimental
, b.installation
, b.jar_size
, b.jar_url
, b.project_version_id
, b.type
, b.version_id
, b.zip_size
, b.zip_url
, count(1) OVER w AS build_count
, min(b.created) OVER w AS version2_created
, mv.type AS version_type
, mv.supported AS version_supported
, mv.java AS version_java
, mv.created AS version_created
, last_value(b.version_id) OVER w AS latest_build
FROM builds b
INNER JOIN minecraft_versions mv ON mv.id = b.version_id
WINDOW w AS (PARTITION BY b.type, b.version_id, b.project_version_id ORDER BY b.id)
should output everything in the json u sent, separated by type, version_id and project_version_id
that as the entire query?
yes
hmmm lemme see how to answer that
where do I add the where clause in this?
imagine you have 5 cars:
- Model A, blue
- Model A, red
- Model A, blue
- Model B, blue
- Model C, white
if you want to count how many cars you have separated by model, you cant just do count(1) cuz it'd be 5 (total of results)
so u do count(1) OVER (PARTITION BY model)
which would have a separate counter for every model
ahh
so it'd output
- 3
- 3
- 3
- 1
- 1
whats the difference to distinct then
distinct excludes identical results, partition "segregates" them
ahhhh
basically the former pretends they dont exist, the latter acknowledge they're of a different group
equivalent to GROUP BY but on a window
between join and window
the query return 121 rows
how many are expected?
well what exactly does the query do now
help bruh
getServerData: async function(id) {
if (!db) x.database.prepare();
try {
id = String(id).trim(); // Ensure consistent formatting
console.log("Searching for server_id:", id);
const res = await db.query("SELECT * FROM servertable WHERE server_id = $1", [id]);
console.log("Query result:", res.rows);
if (res.rows.length > 0) return res.rows[0]; // Found existing server
console.log("No existing server found. Creating new one...");
const createRes = await db.query("INSERT INTO servertable (server_id) VALUES ($1) RETURNING *", [id]);
return createRes.rows[0];
} catch (err) {
console.error("Error in getServerData:", err.message);
return null;
}
},
it returns all builds, with info about how many builds, latest date and latest version for that group
I probably understood wrong
it just added logs
what's the issue?
if i request server data it wont find it so it will create data for it
but it exists and it still creates another entry
you're using postgres right?
yes
dont use TEXT unless strictly necessary
text is a special type of string that's stored off the table
it's not buggy, but it's one of the slowest types of string
you're only supposed to use it when text length is unknown and expected to be big
discord ids are of a known length and short
can be yeah, since it's guaranteed to be within bigint range
tho u still need to get rid of the old column
i did
what does console.log("Query result:", res.rows); show in the console?
it does not log
doesnt log
need a query that returns 2 rows, 1 for the current build and 1 for latest, "latest" is a build with the highest id for a query of b.type = current.type and coal(b.version_id, b.project_version_id) = coal(current.version_id, current.project_version_id)
then I also need version info using version_id if not null (type, supported, java, created) and finally build count (b.type = current.type and coal(b.version_id, b.project_version_id) = coal(current.version_id, current.project_version_id)) and created2 for min(created) on builds (b.type = current.type and coal(b.version_id, b.project_version_id) = coal(current.version_id, current.project_version_id))
wait im an idiot
i used createServerData instead
Searching for server_id: 1350552474271875300
Query result: [ { id: '11', server_id: '1350552474271875300', prefix: '!' } ]
CREATE OR REPLACE VIEW build_data AS
SELECT b.id
, b.build_number
, b.changes
, b.created
, b.experimental
, b.installation
, b.jar_size
, b.jar_url
, b.project_version_id
, b.type
, b.version_id
, b.zip_size
, b.zip_url
, count(1) OVER w AS build_count
, min(b.created) OVER w AS version2_created
, mv.type AS version_type
, mv.supported AS version_supported
, mv.java AS version_java
, mv.created AS version_created
, last_value(b.version_id) OVER w AS latest_build
, coalesce(version_id, project_version_id) AS query_id
FROM builds b
LEFT JOIN minecraft_versions mv ON mv.id = b.version_id
WINDOW w AS (PARTITION BY coalesce(version_id, project_version_id) ORDER BY b.id);
SELECT * FROM (
SELECT *
FROM build_data
WHERE type = :TYPE
AND query_id = :VERSION
ORDER BY id
LIMIT 1
)
UNION ALL
SELECT * FROM (
SELECT *
FROM build_data
WHERE type = :TYPE
AND query_id = :VERSION
ORDER BY id DESC
LIMIT 1
)
``` would this work?
gotta confess, it's kinda hard without the data at hand to see the outputs
why do you have prefix in your database if you're using slashes?
i support both prefix and slash
build_count 1
if you remove LIMIT does the number increase?
I forgot whether limit affects windows
nope
is build_count supposed to consider only versions of the same type and project_id?
type + coal(b.version_id, b.project_version_id)
well, how many builds are there for that combo?
1298
oh wait, remove PARTITION BY b.type, b.version_id, b.project_version_id
since it's already being filtered anyway
now all rows have a different amount, the last one has 66
ah oops
I meant only coal(b.version_id, b.project_version_id)
type ignored for build count
see now, updated the message
Query 1: ERROR: missing FROM-clause entry for table "b"
LINE 31: SELECT * FROM build_data WHERE b.type = 'FABRIC' LIMIT 1
build_count is 2 now
1298
is the rest correct?
well
Query 1: ERROR: syntax error at or near "UNION"
LINE 33: UNION ALL
^
is what happens when I add the union part
I suppose it's due to the limit
put it in a subquery
SELECT * FROM (SELECT * FROM build_data LIMIT 1)
now I get returned one row
ok wrapped both
let me see
data seems correct
now whats needed is the arclight stuff for latest build (so suffix matches) and version data for null version_id
also what ive noticed is that this query is a lot slower than the original
(this one takes 3s)
(old one 20ms)
yeah, it requires some optimization
use EXPLAIN before the query to see what's taking too long
CTE build_data
-> WindowAgg (cost=15277.87..2168709.78 rows=134 width=677)
-> Sort (cost=15277.85..15278.19 rows=134 width=629)
Sort Key: b.id
-> Nested Loop Left Join (cost=297.37..15273.12 rows=134 width=629)
-> Bitmap Heap Scan on builds b (cost=297.08..15199.97 rows=134 width=614)
" Recheck Cond: (type = 'FABRIC'::server_type)"
" Filter: ((COALESCE(version_id, project_version_id))::text = '1.21.1'::text)"
-> Bitmap Index Scan on builds_type_idx (cost=0.00..297.05 rows=26767 width=0)
" Index Cond: (type = 'FABRIC'::server_type)"
-> Memoize (cost=0.29..0.60 rows=1 width=23)
Cache Key: b.version_id
Cache Mode: logical
-> Index Scan using minecraft_versions_pkey on minecraft_versions mv (cost=0.28..0.59 rows=1 width=23)
Index Cond: ((id)::text = (b.version_id)::text)
SubPlan 1
-> Aggregate (cost=16070.36..16070.37 rows=1 width=8)
-> Seq Scan on builds bi (cost=0.00..16068.58 rows=713 width=0)
" Filter: ((COALESCE(version_id, project_version_id))::text = (COALESCE(b.version_id, b.project_version_id))::text)"
-> Limit (cost=0.00..0.02 rows=1 width=1476)
-> CTE Scan on build_data (cost=0.00..2.68 rows=134 width=1476)
-> Limit (cost=3.35..3.35 rows=1 width=1476)
-> Sort (cost=3.35..3.69 rows=134 width=1476)
Sort Key: build_data_1.id DESC
-> CTE Scan on build_data build_data_1 (cost=0.00..2.68 rows=134 width=1476)
JIT:
Functions: 31
" Options: Inlining true, Optimization true, Expressions true, Deforming true"```
ugh, are you using intellij?
nope
meh, else could've used the built in tool to beautify it
but well, lets see
first offender is the count on builds, so lets work on it
try that
do note it's now 2 queries
the with became a view
build count 830
see now
830
do a SELECT * FROM build_data WHERE query_id = :VERSION, see how many rows are returned
66
without type
1298
any variation in the build_count?
counts up a bit each row
and version_id?
nope, that stays
it doesnt make sense then for count not to be retrieving the total
sorry, this one is making my head smoke
aight, sorry for not solving this one
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
it just sends Channel 2 -> Channel 2 instead
One message removed from a suspended account.
I have user phone.js
I want it so
Channel 1 -> Channel 2 and vice versa
But instead it does Channel 1 -> Null and Channel 2 -> Channel 2
Null being nothing it just does nothing if u send to channel 1
I asked gpt to slightly comment and log a lot for easier debug
The weird thing is it does debug correct things
But does nothing
@lyric mountain im not proud, but it works
let query = sqlx::query(&format!(
r#"
WITH spec_build AS (
SELECT {}
FROM {}
WHERE {}
ORDER BY builds.id DESC
LIMIT 1
),
filtered_builds AS (
SELECT {}
FROM builds b
INNER JOIN spec_build sb ON
sb.id = b.id
OR (COALESCE(sb.version_id, sb.project_version_id) = COALESCE(b.version_id, b.project_version_id) AND sb.type = b.type::text)
WHERE b.type <> 'ARCLIGHT'
OR split_part(sb.project_version_id, '-', -1) = split_part(b.project_version_id, '-', -1)
OR split_part(sb.project_version_id, '-', -1) NOT IN ('forge', 'neoforge', 'fabric')
),
build_count AS (
SELECT count(*) AS count
FROM builds
WHERE COALESCE(version_id, project_version_id) = COALESCE((SELECT version_id FROM spec_build), (SELECT project_version_id FROM spec_build))
)
SELECT
*,
0 AS build_count,
now()::timestamp as version2_created,
'RELEASE' AS version_type,
false AS version_supported,
0 AS version_java,
now()::timestamp AS version_created
FROM spec_build
UNION ALL
SELECT
x.*,
mv.type::text AS version_type,
mv.supported AS version_supported,
mv.java AS version_java,
mv.created AS version_created
FROM (
SELECT *
FROM (
SELECT
{},
(SELECT count FROM build_count) AS build_count,
min(b.created) OVER () AS version2_created
FROM filtered_builds b
ORDER BY b.id DESC
) LIMIT 1
) x
LEFT JOIN minecraft_versions mv ON mv.id = x.version_id
"#,
Build::columns_sql(None, None),
if search.hash.as_ref().map(|h| h.any()).unwrap_or(false) {
"build_hashes INNER JOIN builds ON builds.id = build_hashes.build_id"
} else {
"builds"
},
where_clause.join(" AND "),
Build::columns_sql(None, Some("b")),
Build::columns_sql(None, Some("b"))
))
.bind(identifier)
.fetch_all(database.read())
.await
.unwrap();```
nice
500x safer too
does !call require webhook access or do i add a no webhook access mode?
mcjars-api_web exited with code 101
mcjars-api_web exited with code 101
mcjars-api_web exited with code 101
mcjars-api_web exited with code 101
mcjars-api_web exited with code 101
what does it show in the logs?
I fixed it, ty for asking tho
i used guildMessageCreate instead of messageCreate
isnt actions for public repos supposed to be free 🤔
i don't think so, it still have the limit/month
macos takes 4 minutes quota in 1 minute iirc
ah
ah macos takes 10, 
but if im not mistaken, you can use your computers (and also mac) as runner right? and basically run it free
io#println("CALLED!")
fn say(self, text) {
io#println(text)
}
}
let instance = new A
instance.say("hello sir")
instance.say("get out")```
```root@remotedev:~/projects/0x7d8/bad-lang-2# cargo run -r testing/class2.bl2
Finished `release` profile [optimized] target(s) in 0.00s
warning: the following packages contain code that will be rejected by a future version of Rust: nom v1.2.4
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
Running `target/release/bad-lang-2 testing/class2.bl2`
CALLED!
hello sir
CALLED!
get out
root@remotedev:~/projects/0x7d8/bad-lang-2# ```
may be a good idea to redo how this works..
so top level statements inside a class gets called everytime you access a class instance?
yes
i made it use a scope for instances now
so the code is only ran on construction and static calls
interesting
class A {
io#println("CALLED!")
let default = "no text buddy"
fn say(self, text) {
if not (text) {
text = default
}
io#println(text)
}
fn set_default(self, text) {
default = text
}
}
let instance = new A
let instance2 = new A
instance.say("hello sir")
instance.say("get out")
instance.say()
instance.set_default("sus")
instance.say()
instance2.say()
root@remotedev:~/projects/0x7d8/bad-lang-2# cargo run -r testing/class2.bl2
Finished `release` profile [optimized] target(s) in 0.00s
warning: the following packages contain code that will be rejected by a future version of Rust: nom v1.2.4
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
Running `target/release/bad-lang-2 testing/class2.bl2`
CALLED!
CALLED!
hello sir
get out
no text buddy
sus
no text buddy
root@remotedev:~/projects/0x7d8/bad-lang-2#
speedy marco
called rennmaus for a reason 
io#println("CALLED!")
if not (default) {
default = "no text buddy"
}
fn say(self, text) {
if not (text) {
text = default
}
io#println(text)
}
fn set_default(self, text) {
default = text
}
}
let instance = new A("ye")
let instance2 = new A()
instance.say("hello sir")
instance.say("get out")
instance.say()
instance.set_default("sus")
instance.say()
instance2.say()```
looks cursed but I dont hate it

Hey don't collapse that sidebar there's an ad!
the hell
What language is this
it looks like rust
but not rust
Oh wait
this is js
or is it idfk anymore
its bad-lang-2
Bad, Interpreted Programming Language. Contribute to 0x7d8/bad-lang-2 development by creating an account on GitHub.
need to redo more class parsing
so that method calls work on unknown values
like ```
fn do_stuff(instance) {
instance.hi() // <-- error, "unknown expression" due to instance being null at parse-time
}
let ins = new ...()
do_stuff(ins)
run self-hosted runners in docker
so
8 to be exact
because otherwise jobs have to wait in line lol
8 instances?
holy moly
can i ask how long it takes to get to approve my discord bot i submited?
@thorny wadi
When will my bot be reviewed?
Our current average review time is 1–2 weeks.
Some bots may take longer to review than others depending on their features. Because of this, we can't guarantee your bot will be reviewed as quickly as someone else's, and there's no exact timeframe for approval. There's also no way to check your position in the queue — but remember, you're not first or last!
You're free to edit your bot's page anytime, both before and after review. This won't affect your place in the queue.
You can read more about our review process here: How the Reviewing Process Works.
In the meantime, please make sure your bot follows all of our Bot Guidelines for a quick and smooth approval!
thx
please unalive me https://pastes.dev/KAjijYjSn8
7h to get classes working properly
and its not even that slow
WOOOO it fully works aside from the nav menu avatar is bugged
An alternative to Portainer with a bunch more developer tools being added.
How's it look on mobile? ;p
Barely tested for mobile :p been trying to fix annoying small issues and docker setup xD
Lol how did they bypass invite detection
@solemn latch
Someone's script went a little off the rails
That's where css really gets ya
This is peak productivity. Good job man, that’s insane
Yea i'm insane xD i have a bunch of neat things to add
Kubernets support, Azure container support, Short links with customization, Website management, Project management, Pastebin with client side encryption, Status/Uptime monitoring with Discord notification, Image editing/generation, custom dashboards, code editor/formatter and Sentry alternative error logging.
huge!
looking good
just locked myself out of my server completely because i forgot messing with sudo file permission unsets its root bit, oops
:~$ sudo su
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
:~$ su
-bash: /usr/bin/su: Permission denied
:~$
doesnt help that i restricted su to root only as well
hopefully rescue mode will save me
has anyone used nestjs?
im writing a route to download .zip file from github im able to get the stream from github but the nestjs route fails and it crashes the app
finally got real expressions working
let a = 10
io#inspect(bool)
if (a >= 10) {
io#println("hi")
}```
now I need to get stuff like &&, || working
you make your own language?
wow, so cool 👏
couldnt find somewhere else that would be best for this but.
Looking for reviews on my bots info banner, any comments are appreciated. TY!
https://top.gg/bot/1302601200658677830
Collect, Trade, and Battle: Dive into the Ultimate Dandadan Card Game on Discord!
👀 that had to take so long to make
I need to get these skills, really cool
Idk if you want to share. But are the embeds just screenshots of discord? 👀
yep! Straight from my bot
Same actually! I got it done through a very talented artist who i got connected with through a friend of mine who makes bots as well. Only thing i supplied was the outline and what text i wanted on it.
I can give u her @ if u want : P
yeah, im hoping it will boost conversions.
My only real concern is width, I think you might want some custom css
yeah for the whole page?
im not very good with it xd
Ie, doesnt fill the description width.
https://i.imgur.com/NFvpn39.png
ignore the weird colors
my screenshot tool doesnt support hdr
Haha its fine
Yeah i noticed that too, idk how to fix.
If I had more time I'd help with css, but today is a busy day 😦
Xd np, maybe a different day. Ill see if i can fix it myself.
Also do you know how long it will take for a bots name to change? I got it updated through support but doesnt look like its refreshed yet on the site.
refresh data should be pretty much instant
check it again ;p
thanks veld for fixing that ❤️
If you put the image in an image tag
<img href="https://i.imgur.com/PWs8NjZ.png" id="custom-banner" /> you can just use css directly on the banner.
<style>
#custom-banner {
set sizing stuff
}
</style>
Thats all I can help with today though 😦
Hehe alright ill figure it out, thanks!
sorry, i put this in the long description but image doesnt show now?
<img href="https://i.imgur.com/PWs8NjZ.png" id="custom-banner">
is there a different place i should put it?
👀 its src not href, thats my fault
<img src="https://i.imgur.com/PWs8NjZ.png" id="custom-banner">
ah tyvm
got it fixed
!
ty
ill have to see about that momo though she looks a bit blurry
yeah looks like you might need a higher resolution picture for it
looks blurry at that size
https://top.gg/bot/1302601200658677830 @digital swan @solemn latch AI upscaler ftw
Collect, Trade, and Battle: Dive into the Ultimate Dandadan Card Game on Discord!
looks great 😄
i agree, thanks for the help! updated the description to use html and look nicer as well.
think im finally ready to try my hand at some ads now.
Is there a decent guide for me to use while learning React.js? I'm trying to develop a bot with dashboard support after a few months and I already know JS, HTML & CSS
And I'm curious about something, is development on Discord pretty much "dead" nowadays?
dead in what way?
discord updates stuff for bots all the time
so bot devs are always working on new things
Oh I mean, there are barely any new developers and the bot lists are pretty much also inactvie (Top.gg surely isn't as it is the biggest bot list on Discord)
Or it might be only Turkey which I'm a citizen of, but it used to be like a lot more active here
👀 we're not inactive
I know nothing about other lists tbh, but we've not really seen a decline in activity. If anything we have more activity.
We just had to hire more bot reviewers
Pretty much doubled in size volunteer wise
So idk about discord as a whole, but we're growing.
Is Turkey still blocking Discord?
Yes, but it has still been in the same way ever since the ban wasn't a thing
Well no wonder why you feel it's inactive if your fellow people cant access Discord xD
^
I've always felt in the same way for like a year or so, when Discord was not banned
Yet I still think it's mostly valid for Turkey as people used to look for templates to learn how to code and develop, however I can't see any servers dedicated on this anymore (either anyone looking for them)
But the issue is that I also can't see anybody trying to develop their own projects without using any templates
Other bot lists are also more inactive overall
Bot lists and general users don't really like templated bots either fyi
^
You need to make something good and unique to get better at development
Or something that is actually useful
An addition, it isn't really possible to be unique in 2025 as there are thousands of bots that are dedicated on different fields
Im a fresh dev! : P And from what i gather the space is pretty healthy i cant lie, lots of users looking for bots but also good room for new and innovative bots. I think its probably the same as any tech space, where at the start you could get very big simply just building a bot. But now if you wanna get big you will need to make a quality product.
And development on discord isnt dead at all, lots of profit in it if thats what youre worried about. Just gotta find your niche.
Im currently at 23,000 loc manufactured only in my own tiny noggin.
I think so yeah, especially with the new slash commands. Theres tons of stuff you can use them for that i havent seen bots do. Ive been having a lot of fun seeing how far i can push them.
Hello
Dont you just love it when you let a project sit for a month and come back and all of the sudden it throws 20 different errors when it worked the last time you touched it
or perhaps the reason you left it for a month is because of those 20 errors that you didnt feel like fixing

It seldom just breaks unless you've updated packages
you should be a philosopher
more like forgetting the codes and need to relearn your own code
I'm sure i've asked this before. Though ima ask again cause I cant find my question or any answers to it.
How do you web devs usually make scrollable content?
Is it just a bunch of divs with 100vh added to it
what isnt a bunch of divs
DIV CITY!!!
😧
wooooooooooooo
If any linux/docker nerd wants to try out my Dev Space project let me know for download and instructions 🙂
Been grinding out the beta release.
Source: https://github.com/FluxpointDev/DevSpace
guys what is a shard
Yeah, no need to implement it
Scrollable in what way? Like infinite scrolling?
Nah
Your content should define how tall the page is
scrollable = fixed height container + content taller than container
Trying to round a rectangular image and this shit just aint working
These are the css properties im applying
I assume its a height diff and the fact im hiding overflow
I fixed it
Can't u just use border radius?
Not really
because its not square it can't be formed into a "perfect" circle
It will turn into a pill shape
<div className={"w-[256px] h-[256px] relative overflow-hidden rounded-full"}>
<img src="/assets/introduction-picture.jpg" alt="Picture of me" className={"h-full w-full object-cover"}/>
</div>
This is what I ended up doing
Hm, u can put it as a background image of a div, center and use border radius
I still needed to make use of overflow and object-cover
How so?
Would not not just result in the same pill shape
Nope, u set the shape with div size

Can use aspect ratio to guarantee a square too
Can you show me an example?
I've not seen this before
Still new to web dev and anything css related
aha
At mobile atm
Ah damn
Okay
Well what im doing right now seems to work, but when you are free can you send an example of what you meant?
But basically u set background-image: url(theimage)
I'd like to learn a new way
Background-size: cover
Then you need to set either height or width of the div
Else it'll have no size
Oh and background-position: center
Yikes
Ah didnt see this part
Yes that makes it look so much better
😭
Honestly better than what I had previously
Top is your method, bottom is mine.
Css is funny to work with
We have a love hate relationship
Right i'm not feeling the scheme anymore
I think its too prominently purple

I dont know what to make the background
Color theory isnt my strong suite
Does this look much better guys?
Not so "dominant" and more muted
and the red is a nicer contrast to the lighter purple
@solemn latch you've used shadcn right?
How is the button styled do you know?
I cant find the correct class to change
if need be I will just apply a bg myself but I'd like to change the color of all buttons I end up using
Ah its the bg-primary class
sorry for ping
you're fine 😄
use a picture that doesn't give off "linkedin profile picture" 
if you're gonna use a picture make sure to get a good shot, otherwise it doesn't pay off
Nah i think his image is fine it dosen't scream desperation
Wish I had a good photo of me that wasnt just me on my bike lmao
Your portfolio is like a business card imo
bike adds some flair to it since it gives you some personality :)
No like, I have rarely any with my face in 
My "portfolio" (main website) has a jankier hairline than me and that's impressive
😂
i love that your portfolio automatically pop up my idm

it shouldnt lmao
or what do you mean
yeah, idm do that on some websites. ig it depend on how you provide your files in your website
I’ll see if I can fix that at some point lol
I know why it happens
They’re folllowing the links to preload pages
Why are you preloading your cv 
oh i see
it's not really a big deal but yeah
im not
it's a static file
its because I made it a link
You mean in the hader or? links by default are not preloaded
then i have no idea
I know it's an anchor in browser
thats the first time ive ever seen that happen tho
It's not happening on firefox or chrome so 
only for idm users with idm extension
Why are you using an extension to download files...
What even...
Also it says IDM has an auto download feature

idm is mainly for slower sites/torrents
why not? try living in a country outside most servers are hosted, then you'll feel the difference
God nextjs is so annoying
Annoying as fk embeded script spam
And random events on elements that dont do anything
sveltekit 😋
??? why is a mouse enter event on the main root html opening a context menu, especially when there is none to begin with
yo, does anyone know the validation/structure around discord invites?
As in what?

Do bots read your ip?? Is it possible to ip ban someone? Isn’t reading ip against discord tos
bots do not have access to user IPs
Uhm, bots cannot see your IP no
(outside of websites)
Then how can someone be ip banned from a bot
bans are issued based off IP though
Like on discord
but only discord has access to this information
Then they didn't IP ban you
Unless you visited something external that they control
discord doesn't give that information out
Ig not me btw some dude was saying he got ip banned from a bot so was wondering how that’s possible
Even if he ip banned on website if he uses discord to access the bot they won’t be able to detect it’s him no?
so didn’t make sense to me
Again, its not possible unless they visited something external and logged in with discord
then they'd be able to "ip" ban them, but all it is just keeping track of their discord
Gotcha, thanks
IP doesnt really have anything to do with it here
Add a thumbs up reaction if you use CommonJS
discord doesn't give out that information but if they have a website dashboard they could get your ip. It's probably against discord tos if they don't mention it in their privacy policy. But banning your account (with your user id) is easy to do and likely what happened.
it's not the discord TOS, it's literal privacy law (in the EU and for sure California at least)
You can store IPs up to a certain period of time afaik
ipv4 ips are almost becoming meaningless nowadays since we've ran out of them
most residential connections share ips which rotate regularly
Ipv6 really needs to be more popular. Soon™ I hope
hell yea remote docker container info and start/stop
cooking
now u just need auto scaling and you made kubernetes
great article
hey
anybody can help me make my cmd user installable
still havent understood the system
still doesn't work
i have to add a code or smtng
as i have read
Yes you do. You can read this for a guide on how to do that. https://discord.com/developers/docs/tutorials/developing-a-user-installable-app
It couldn’t find the rust compiler I did a quick google and found this, did you try this? https://stackoverflow.com/questions/75085152/cant-find-rust-compiler-to-install-transformers
added importing 🔥
let _ = new Webserver()```
definitely not cursed that it turns any imported code into a class because classes can contain anything so no runtime changes needed
in this case, `new Webserver()` just executes all code inside samples/webserver.bl, because code in the root of a class is ran on construction

well, better than executing everyting inside on import
well this lang doesnt support dynamic imports (yet)
all imports are handled by the parser currently
which just launches another parser for that file
if segment.starts_with("import") {
let parts: Vec<&str> = segment.splitn(4, " ").collect();
if parts.len() != 4 || parts[2] != "as" {
panic!("invalid import in {}", self.location);
}
let name = parts[3];
let file = self.parse_expression(parts[1]);
if let Some(file) = file {
if let ExpressionToken::Value(ValueToken::String(string_token)) = file {
let class = ClassToken {
name: name.to_string(),
args: Vec::new(),
body: Arc::new(RwLock::new(Vec::new())),
location: self.location(),
};
let file = std::fs::read_to_string(&string_token.value);
if let Ok(file) = file {
let mut tokenizer = Tokenizer::new(&file, &string_token.value);
tokenizer.parse();
for token in tokenizer.tokens {
class.body.write().unwrap().push(token);
}
} else {
panic!("unable to read file \"{}\" in {}", string_token.value, self.location);
}
let token = Token::Let(LetToken {
name: name.to_string(),
is_const: true,
is_function: false,
is_class: true,
value: Arc::new(RwLock::new(ExpressionToken::Value(ValueToken::Class(
class,
)))),
});
return Some(token);
} else {
panic!("unexpected value in {} (did you typo?)", self.location);
}
} else {
panic!("unexpected file in {} (did you typo?)", self.location);
}
}```
it's best not to have imports executing code imo
one because it allows cyclical imports, two because it avoids import attacks
yea
I will say that doing a proper AST and such will give you a ton of flexibility down the line as opposed to trying to parse and analyze in the same step
(I know you’re doing this for learning purposes but it might be worth looking into later)
yeah, I think an ast would help with stuff like chained calling <instance>.method().property or whatever
I dont really know how to start though
Read a book called “crafting interpreters”
It’s free online and it’s an insanely good intro to compilers
Very easy to follow even with no experience, I was able to do it in high school when I knew pretty much nothing
There is also the gold standard that has been used in CS for a looooong time called the “dragon book”, but it’s much more notationally complex and more difficult to follow, but if you want to go highly into depth it might be worth checking out
I haven’t personally read it but I know it’s one of the most famous compiler books ever written, only glanced through it
Hello! Good question, I don't think it is. But let me look into this for you.
Afer checking, it appaears it is not only audio.
Bots can't, selfbots can
YOOOO
thats fucking sick dude
keep up the good work
Are selfbots allowed?
I thought discord didnt support it
They are against ToS
😕
Self bots are against the ToS, but that doesn't stop people from using them especially with client brandings meant for bots so they know the moment you attempt to make a request/connect. Though I will only say from personal experience and not to encourage self botting, but I generally haven't seen them take action against people I know who did do it unless they were being a nuisance with it.
Though for your case, the whole video streaming API is totally undocumented and to replicate the client's behaviour, you'd have to inspect packets
^ not worth the hassle
Yea video streaming for bots is not supported at all but i do know some mad lad actually managed to do that before Discord patched it xD
could also just use actvities now tbh
Undocumented APIs are also subject to change at any given time. It is very difficult to maintain
Fun
insane
I know someone who found out how to refresh cdn files with a bot. The token doesn't need to have a presence in the channel the file is in and you don't need the link params for expiration and all that iirc
❤️🔥
Bypasses the new Discord Expiry time on download links. - GitHub - ShufflePerson/Discord_CDN: Bypasses the new Discord Expiry time on download links.
this?
It's probably working the same way but I found different one
I love how people found work arounds but I don't understand why bother.
Just host the files you need ^-^
Honestly? Out of curiosity and sometimes it's useful when I find an old link on a forum or something and I want to see what's behind it
I even have some false memory that this endpoint was in the Discord API documentation at some point
I really hate this new policy, my users tend to use discord images' url for their profiles but they always expire after a day or so
why not store them yourself
advised them to use external image hosts, but alas they cant bother
that'd be an option, but it's just too low in the issue stack to implement now
do testers usually leave reviews?
Not always
but as I needed assistance from the team testing it a few of us jumped in and had a blast playing so me and fellin found it fitting to drop a review
hey i am using typescript but don't want to continously compile it with tsc ..... each time i update the files.
Is there like any watcher or automatic compiler?
tsc has a watch param afaik
yeah i heard about it, but i forgot it tho
nah, tsx is a ts code runner
like ts-node
npx is just npm but executes the cli package
tsx allows you to run the typescript without having to compile it every time
cause it compiles on runtime
x stands for execute usually
guys why discord bot aint adding to my server?
either you dont have moderator role, the bot reached server cap or they purposely made the bot leave servers on join
discord bot did not consent
i see
i would need that tsx
cuz i am sick and tired of re-running tsc each time lmao
yea thats fair
welcome to 2025
they didnt change anything
restart your client (if you're on desktop)
I mean it was ugly at first
but its already grown on me
at the end of the day im here to talk to people
so long as I can still communicate idc
inb4 new discord ui update where you cant chat anymore
rip
also
they make it autoconnect
as soon as you open the server
and remove the mute function
pov nitro to chat
teamspeak direction
pov new nitro plan that costs 12.99 and the only new thing it has is a text chat feature
USER HAS JOINED YOUR CHANNEL
USER HAS JOINED YOUR CHANNEL
Can we all please agree to move to teamspeak?
teamspeak is on version 5 going into 6
wtf
you need an account for beta 😦
teamspeak is weird now
user in your channel was banned from the server

v3 was uwu
Best version
I pay like $2.6 for my nitro 😭
Sounds like something illegal
it's actually legal
and that's the funniest part
Anyway I don't think we should be talking about that here
Ah, you still have those old prices
Yea, then it's fine
I thought you bought it from some shady store or something like that where they are usually stolen
Also it's 20pln, not 10
So you are paying 2.6x2
time for vencord plugins devs to make a og discord ui plugin
eh css would be a better fit
for now you can just toggle the experiment
until it gets removed
what are you trying to do
i mean thats a good thing right?
i wouldnt want 5 new libraries installed after running a second npm i 5 seconds apart
nono like
it says it added the same packages
every time
it normally would just say lock file is up to date and that's all
maybe they just made it so it prints all packages now
Current progress. Fully responsive
Spent a good hour making everything responsive
I really do not like frontend work 
Woooo lets go basic documentation with features and install
https://docs.fluxpoint.dev/devspace
Good job mate
flexbox + viewport meta tag + good margins + width/height auto = very responsive website
once you get into the habit of letting the browser choose the best width/height responsiveness wont be all that much of a hassle (minus stuff like optimizing sidebars for mobile)
why java twice
one is prob supposed to be JavaScript
ur just that extra proficient in java
Web dev is the bane of my existence despite doing it every day
Css will haunt you in your dreams ooga booga
Thank god I don’t do much CSS
color palette and font looks good 👍
it's pleasing to look at
but the progress bars for skills are pointless
it has no meaning, better to just list technologies you're proficient at
don't overdo it though, that was a mistake I did on my previous CVs
There's an experiment to force previous ui
It's called desktop refresh I believe. Set it to not eligible
And you're good
i have a question my bot has a command that create a new category and new channel for users but without admin perm the command not working
so
creating category in discord need admin perm??
Not really
Admin just gives you all permissions and ignores any channel permission overrides
no even if i gave it all permission except admin perm its telling missing access
Creating category needs manage channel perms also you can't be doing it right if it's saying missing access unless you're doing something weird with roles that are above your bots current top role
Send me the code snippet in my DMs.
hey, has anyone used nextjs app router with cloudflare pages? Im using export const runtime = "edge"; like it says in the docs but the page fails with internal server error for some reason. Im using server action to make api calls but it works on static page but not in a dynamic page like /blog/[slug] any idea how to debug or fix this?
I haven't.
If it's an internal error then usually you would check some kind of logs that shows the error or something on cloudflare?
its in the browser
Open up browser console see the errors and network requests that fail
I navigate to a page and this is what it shows
nothing else. there nothing in network tab
the cloudflare page wont build if i remove edge runtime, but when i add it back this happens
maybe it has something to do with fetch? but the docs say fetch is supported
Whatever you're doing in the oauth or api is causing the error
i tried add edge runtime to a page that works. and that page broke after adding it
there is no auth,. its just a blog page
thats open to public
both test and oauth
What is oauth-microservice then?
these are blog pages
its a blog page
its a page like /blog/[slug]
so the home page works and when i added edge runtime and it broke with same error message
Is your page format broken or something that's causing the page to break i think you're missing something here if only specific pages are breaking
its all the dynamic pages that have export const runtime = "edge"; that are breaking
i added export const runtime = "edge"; to a static page and it broke but if i remove the static page works
It's an issue with the runtime being "edge", which is specifying the EDGE browser.
let me try something
Is there no build issues, logs at all for this or cloudflare pages?
Seems a bit silly that you're using something that can just randomly break and throw generic "Internal error" without any way to fix it xD
yeah there sadly no logs. im checkout CF console for logs now.
its basically breaking if i use edge runtime
Um, Cloudflare.. Are y-.. Are you feelin' alright..?
ye there no logs on CF
Are we able to test the API with a bot that's in verification?
You are not.
damnn ok thx
I guess I'll just code it blindly, how do we tell whether a user voted today or not? Do we just have to check "every day"?
And if the number increases, then that's a vote for the day
A vote sends a post request to a webhook.
ah nvm guess i just dont have that yet


found it