#development
1 messages · Page 1967 of 1
Yes
I can hear the gif crying
256 is a stupid arbitrary limit
Not arbitrary actually, 8 bits
oh no weeb stuff
If only discord supported the superior apng
Smaller size, full argb colors, crisp quality
But they don't allow us to upload with preview
😔
It end as a file
Also apng is a lot easier to encode
oh. You right
no preview. That fucking sucks
There was a preview in the upload
I wonder if webp can be animated and if Discord supports it
So much anime stuff in development 
thought this is a save place

Ok I officially don’t belong to this sort of people then
Thank god
me too 
It is… guys like you will soften our society even more 
is it so necessary to be so cut throat though
Yes boys only like dirty things, oil, motors, engines, DIESEL etc.
Not anime
What are you using for encoding?
Consider yourself lucky.
Fake & Tim are the role models here in #development
role model?
Wtf does that mean
We’re old, very old, yes but there’s always somebody older… cough Brain
A role model is someone others look to as a good example. ... Just as a model is something that represents an inspirational ideal, a role model is someone who inspires others to imitate his or her good behavior. Parents try to be role models for their children by being good people.
no problem,already used it for some applications
I used a wrapper for gifs around jimp
I have made php app where you can modify sql tables.Just the sql injection part was tricky
The progress bar you mentioned has nothing to do with the images you sent above?
It was related to encoding gifs
it took upwards of 5min to encode those gifs on my setup
Ah ok missed that context then
no, I can't switch to something else
If you’re doing something with image/gif manipulation, you can make the processing end in c++ and make bindings to node
Much faster, it’s the way esmBot does it
how can i check if a user has a pfp using discord.js?
user.avatarURL?
Yeah, just .avatar: https://discord.js.org/#/docs/discord.js/stable/class/User?scrollTo=avatar
Will be null if no avatar is present.
Or .avatarURL if you want the full URL if they do have one: https://discord.js.org/#/docs/discord.js/stable/class/User?scrollTo=avatarURL
ah, ty
how do i check if a member is the bot?
what language
i fixed already
you can start sharding at any point realistically.
I figured out how to Log my commands so when My bot has a command used it sends a message to my console saying and then sends a message using a webhook to one of my channels
yea lmao
also, if your bot reaches a considerable size, it may be wise to aggregate the command usage so you can have general statistics on command usage (e.g. how many times was the roll command used)
It also might not be a good idea to be creating and destroying a webhook client every time a command is run
seems inefficient
It's probably worse if u keep it open all the time
why's that
Open connection
it's probably relatively expensive to keep open but I feel like constantly opening and closing it would be worse
for every command
Idk abt other langs, but at least in java some clients or managers are disposable (and should be disposed of asap)
Like Graphics2d or EntityManager
Also most streams
Idk abt disc webhooks tho, but leftover clients usually clog the memory because they can't be collected until disposed
from looking at the source code it seems like nothing is actually freed, and it just stops a scanning interval
but I could be wrong
destroy() {
if (this.rest.sweepInterval) clearInterval(this.rest.sweepInterval);
}
this.sweepInterval = setInterval(() => {
this.handlers.sweep(handler => handler._inactive);
}, client.options.restSweepInterval * 1_000).unref();
could be worse!
seen people do ```js
client.on('messageCreate' async message => {
if(message == '!ping') {
message.channel.send('pong!');
}
client.on('messageCreate' async message => {
if(message == '!foo') {
message.channel.send('memory leak!');
}
}
}
// etc
Saw that here enough times to not be surprised
[2022-01-25 08:01:57.223 +0000] ERROR (Cluster #0): getaddrinfo ENOTFOUND accounts.spotify.com
service-bot3-1 | err: {
service-bot3-1 | "type": "Error",
service-bot3-1 | "message": "getaddrinfo ENOTFOUND accounts.spotify.com",
service-bot3-1 | "stack":
service-bot3-1 | Error: getaddrinfo ENOTFOUND accounts.spotify.com
service-bot3-1 | at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:71:26)
service-bot3-1 | "errno": -3008,
service-bot3-1 | "code": "ENOTFOUND",
service-bot3-1 | "syscall": "getaddrinfo",
service-bot3-1 | "hostname": "accounts.spotify.com"
service-bot3-1 | }
``` ```js
[2022-01-26 02:56:50.307 +0000] ERROR (Cluster #0): Client network socket disconnected before secure TLS connection was established
service-bot3-1 | err: {
service-bot3-1 | "type": "Error",
service-bot3-1 | "message": "Client network socket disconnected before secure TLS connection was established",
service-bot3-1 | "stack":
service-bot3-1 | Error: Client network socket disconnected before secure TLS connection was established
service-bot3-1 | at connResetException (node:internal/errors:691:14)
service-bot3-1 | at TLSSocket.onConnectEnd (node:_tls_wrap:1585:19)
service-bot3-1 | at TLSSocket.emit (node:events:402:35)
service-bot3-1 | at endReadableNT (node:internal/streams/readable:1343:12)
service-bot3-1 | at processTicksAndRejections (node:internal/process/task_queues:83:21)
service-bot3-1 | "code": "ECONNRESET",
service-bot3-1 | "host": "accounts.spotify.com",
service-bot3-1 | "port": 443
service-bot3-1 | }
```has someone got errors like this from spotify?
looks like a DNS error
Ik it's dns issue but I am not sure why it's happening
Only spotify is broken on my vds everything else works fine like making requests to discord, youtube, patreon, etc works
and it doesn't happen all the times
for 1-2 hour it would be good
but after that it starts doing that
What should I use to make a api? I was also thinking of experimenting with graphql
That way I dont really need to make a rest api for querying data
Can someone help me?
Trying to figure out slash commands. The options are raw API data structures and this is what it looks like:
[
{
name: "play",
type: Discord.Constants.ApplicationCommandOptionTypes.SUB_COMMAND,
description: "Play music from multiple sources",
options: [
{
name: "content",
type: Discord.Constants.ApplicationCommandOptionTypes.STRING,
description: "The content to play"
},
{
name: "source",
type: Discord.Constants.ApplicationCommandOptionTypes.STRING,
description: "The source the content should be played from if searching",
choices: [
{
name: "YouTube",
value: "yt"
},
{
name: "SoundCloud",
value: "sc"
}
],
required: false
},
{
name: "insert",
type: Discord.Constants.ApplicationCommandOptionTypes.BOOLEAN,
description: "If the song should be inserted as the next song in the queue",
required: false
}
],
required: false
},
{
name: "stop",
type: Discord.Constants.ApplicationCommandOptionTypes.BOOLEAN,
description: "If the queue should stop. True to reveal you initiated the stop",
required: false
}
]
However, this doesn't work and only shows music play as the only command under the music command instead of also showing stop.
Can someone point out why that is
Are these sub commands?
or is stop its own command
play is a sub command, but stop is not
The idea is
/music play content:despacito
or
/music stop:true
Welp. Only /music play shows up. All of the other options do not exist
Mmmm
Oh well. I've just changed play to a string for now
It could be an issue with subcommands right now?
I haven't played with slash commands enough to get to sub commands but that looks correct to me from what i've read on the docs
same for me
the docs dont give sub command examples
and Discord.js sure as hell doesn't
I have to dig into source code to figure it out which is why I asked here
U have the correct intents?
how can I use ytdl-core, get the stream, convert it to buffer, send it to discord api, to play the music file
If ytdl-core passes you a stream, you have to push all of the Buffer chunks into an array and then Buffer.concat that array together which is the full Buffer you can convert to a file
but you should only be using ytdl-core for legal stuff like videos you own :)
im trying to make a music bot. that plays music from youtube link
I highly advise against making a music bot
- too much pain for what it's worth
- can become really expensive
- risk lawsuit
if you do anyways, then you shouldn't be attempting to buffer the entire song into memory and instead just stream it.
Alternatively, you should look at LavaLink or LavaLink compatible applications which manages all of the voice related stuff for you
https://github.com/freyacodes/LavaLink
https://github.com/AmandaDiscord/Volcano
but still, I want to. and its for my personal use
Can someone help me with this please?
@lament rock u hv a guide using Valcano?
Volcano is the same as LavaLink, so look for LavaLink guides
?
client.on('messageCreate', async (message) => {
const data = await prefix.findOne({
GuildID: message.guild.id
});
const messageArray = message.content.split(' ');
const cmd = messageArray[0];
const args = messageArray.slice(1);
if (cmd.length === 0) return;
let command = client.commands.get(cmd);
if (!command) command = client.commands.get(client.aliases.get(cmd));
if (data) {
const prefix = data.Prefix;
if (!message.content.startsWith(prefix)) return;
const commandfile = client.commands.get(cmd.slice(prefix.length)) || client.commands.get(client.aliases.get(cmd.slice(prefix.length)));
if (!commandfile) return;
commandfile.run(client, message, args);
} else if (!data) {
const prefix = '!'
if (!message.content.startsWith(prefix)) return;
const commandfile = client.commands.get(cmd.slice(prefix.length)) || client.commands.get(client.aliases.get(cmd.slice(prefix.length)));
if (!commandfile) return;
commandfile.run(client, message, args);
}
await chatschema.findOne({ Guild: message.guild.id }, async (err, data) => {
if (!data) return;
if (message.channel.id !== data.Channel) return;
message.channel.sendTyping();
fetch(
`https://api.affiliateplus.xyz/api/chatbot?message=${encodeURIComponent(
message.content
)}&botname=${client.user.username}&ownername=Angel`
)
.then((res) => res.json())
.then((data) => {
message.reply(`${data.message}`);
});
});
@rocky hearth You there?
1 sec
Thats my guild id
There is no line in my code like this
that's what this error says
where is chatbot required from?
The error message tells you the file and the line of the occurrence of this code.
You just need to read it.
chatbot.findOne try catch
or find where it was previously executed
and prevent from calling twice
i'd recommend a database cache util for this
why does this work inside h1 tag but no in img
hint: look at the colors
regex
plus if you want to make sure it's a valid token you could try making a simple http request to Discord's REST API with it as header
Or put them in a public gist if you want to invalidate it
Doesn't discord automatically invalidate a token if it's in a discord message?
oh it just warns you
didnt had anything to do with colors lol it was completly diff syntax for jinga
I'd recommend springboot
but u said u don't want rest
didn't make a graphql api yet, so I don't have much suggestion
Has somebody yet dealt with slash command permissions?
Regarding to the docs you have to register the commands and need to assign permissions (user/role) to it after it's active.
that's true
It still says the command which has an user/role permission is visible for anyone but cant be executed (is greyed out)?
How does that look?
I somehow don't really get the usecase of global commands being available for a specifc user only, since role IDs globally even makes less sense
Can I set a permission as placeholder to "lock" a command for anybody?
no
How fast it an permission update? Is it instantly available in any guilds (regarding global commands)?
oof wtf
Ok it's trash then
My own permission handler is more useful then even if some can execute commands they have no permissions for.
a bit unsafe
But I mean the emphermal response doesn't bother anybody
(the permission delay)
wut?
I'm awaiting the user permissions before executing the command
Or do you mean something else?!
it confuses me
lol
Well I will still need to make a api that calls the graphql stuff
because templates don't work in attributes if you put "" around it
yeah i figured it out thanks for help tho
I have found what happened to me with the color library
Es posible ser hackeado por alguien que no es hacker? Hoy lo exponemos y explicamos un poco lo que ocurrió con github hace unos días.
Mis redes
➤ Tiktok: @Linkfydev
➤ Instagram: @Linkfydev
➤ Twitch: twitch.tv/linkfy
➤ contacto: me@linkfy.xyz
#shorts
Quieres estudiar python? Enlace a mi curso...
const members = sServer.members.cache;
.addField(`${person} Members`, [
`Total Members: **${sServer.memberCount.toString()}**`,
`${online} **${members.filter(member => member.presence?.status === 'online').size}** ${idle} **${members.filter(member => member.presence?.status === 'idle').size}** ${dnd} **${members.filter(member => member.presence?.status === 'dnd').size}** **${offline} ${members.filter(member => member.presence?.status === 'offline').size}**`
].join("\n"), true)
It's giving me the incorrect amount for each?

you can only do that if you fetch all members
I'm curious if V8 optimizes functions created with the Function constructor
I'll get ratelimited? Unless, I'm understanding it wrong?
Also members presence need the intent for it.
you need both the members and the presences intent
I have both.
you can only request 1000 members per second per guild
so if you have 100k members, it will take a long time
Well the member count is more or less accurate since the guild obj includes the correct number in the ready event
and your memory usage will be very large as well
Big yikes, although, with I having sharding, it yet works, right?
it doesnt matter, it will still use a lot of memory
i mean, try it
all you need to do is await guild.members.fetch({ withPresences: true })
Showing the total amount of members is okay, but think about if it's worth to waste that amount of ressources to show the presence nobody cares about
Yeah, true.
Does this apply to guild channels, as well?
I mean, they are short numbers, and I am not fetching each type, althogh, what if I did?
Guild channels should be cached in djs by default iirc
because cache is not always the correct amount
Ohh..
is more or less accurate since the guild obj includes the correct number in the ready event
should be a few seconds ago
Last command usage: in the near future

lemme check
Type 2
Or simply using the string
SUB_COMMAND_GROUP
woops
Type 1
or SUB_COMMAND
my bad
i mean like .addUserOption
Example:
{
name: "config",
description: "Customize features of the bot on this server.",
permissions: ["ADMINISTRATOR", "MANAGE_GUILD", "MANAGE_CHANNELS", "MANAGE_MESSAGES"],
options:
[
{
name: "channel",
description: "Customize the channel(s) the bot should listen to. Entering no value will reset this config.",
type: "SUB_COMMAND",
options:
[
{
name: "channel",
description: "Select a channel the bot should listen to exclusively.",
type: "CHANNEL"
}
]
},
{
name: "nickname",
description: "Customize the nickname of the bot on this server. Entering no value will reset this config.",
type: "SUB_COMMAND",
options:
[
{
name: "nickname",
description: "Enter the new nickname the bot should have.",
type: "STRING"
}
]
}
]
}
oh
nvm
the docs aren't clear about subcommand options
ah i'm on another site thats why
After changing it to fetch, I got this TypeError: members.filter is not a function.
i use discord.py and made a leaderboard command that worked just fine the oter day but now doesnt want to work anymore
async def leaderboard(ctx,x = 10):
users = await get_bank_data()
leader_board = {}
total = []
for user in users:
name = int(user)
total_amount = users[user]["wallet"] + users[user]["bank"]
leader_board[total_amount] = name
total.append(total_amount)
total = sorted(total,reverse=True)
eml = discord.Embed(title = f"Top {x} Richest People" , description = "The classement is determined on the actual money poeple have and not on the objects they have bought.",color = discord.Color.blue())
index = 1
for amt in total:
id_ = leader_board[amt]
member = client.get_user(id_)
name = member.name
eml.add_field(name = f"{index}. {name}" , value = f"{amt}:coin:", inline = False)
if index == x:
break
else:
index += 1
await ctx.send(embed = eml)```
the error: File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 94, in wrapped raise CommandInvokeError(exc) from exc discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'NoneType' object has no attribute 'name'
try await client.fetch_user(id_)
Still returns the incorrect number?
const members = await sServer.members.fetch({ withPresences: true });
.addField(`${person} Members`, [
`Total Members: **${sServer.memberCount.toString()}**`,
`${online} **${members.filter(member => member.presence?.status === 'online').size}** ${idle} **${members.filter(member => member.presence?.status === 'idle').size}** ${dnd} **${members.filter(member => member.presence?.status === 'dnd').size}** **${offline} ${members.filter(member => member.presence?.status === 'offline').size}**`
].join("\n"), true)
deffo got member intents?

springboot is pretty much express but java
see my handlers/api package
Hey guys. My bot joined 20 guilds by now the python process is already at 100% CPU somehow
. Any tips on how to utilize multiprocessing with discord.py?
That doesn't seem right
multiprocessing
python
kekw
nonetheless, you should never reach 100%, something is clearly wrong
Python is known for not reaching above 80% isn't it?
very helpful nice
probably, iirc python has some max cap for most resources
actually is, python can't do real multithreading
so all is processed in a single thread
but that aint ur issue, multithreading wouldnt reduce cpu usage
if anything it'd increase
but multiprocessing != multithreading
how do u do multiprocessing without multithreading?
Multiple processes would use 1 thread
...that'd technically not be a single execution, that'd be the same as running the file multiple times
maybe wrong db?
You'd still be at 100% with multiple processes on the same thread
unless I could delegate some responsibilities to the different processes somhow
show ur message listening event
i dont listen to messages
not u, prince
no idea, but if this helps, fs considers the root of the project instead of the current file
maybe that sqlite lib uses fs to get the file
oh my
A loop on every message inside a guild
is that a json db?
weird that actually worked ty kuu
yw
no there's only a tiny bit of config stored on RAM in a json but I'm moving it to sqlite as well now.
The db searched for each message is SQLITE
Hey, so I've been confused during my entire development to slash commands.
When it comes to bots like Dank Memer and using their slash commands, as you can see from the below screenshot, it's grey and it immediately replies.
While for bots like mine, it has to be white then reply?
How is this possible and what did they do to immediately return without doing the white text thing?
It has made my bot so so so slow.
They don't defer their responses
That makes sense.
You should only defer your responses if your bot needs more than three seconds to respond
where does DB_PATH refer to?
This is my current handler?
module.exports = async (bot, interaction) => {
if (interaction.user.bot) return;
if (interaction.isCommand()) {
await interaction.channel.sendTyping()
await interaction.deferReply({ ephemeral: false }).catch(() => {});
const slashcommand = bot.slashcommands.get(interaction.commandName);
if (!slashcommand) return interaction.followUp({ content: "An error has occured, whereas this command is no longer available." });
const args = [];
for (let option of interaction.options.data) {
if (option.type === "SUB_COMMAND") {
if (option.name) args.push(option.name);
option.options?.forEach((x) => {
if (x.value) args.push(x.value);
});
} else if (option.value) args.push(option.value);
};
interaction.member = interaction.guild.members.cache.get(interaction.user.id);
if (slashcommand) await slashcommand.run(bot, interaction).catch(error => console.log(error));
};
};
DB_PATH = r"Guilds/{0}/Messages.db"
What can I do instead of .deferReply()?
...that's not how u use a sql database
that's probably the culprit, leftover open database streams
weird the interaction is replied to if row is not defined. apparently row is never defined
somethings wrong
the db isnt being reached for some reason
Just use interaction.reply()
wdym? that's just the code figuring out where the DB is located for each guild (db file for each guild)
This raised an error?
C:\Users\HamoodiHajjiri\Desktop\Rewrite\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:165
if (!this.deferred && !this.replied) return Promise.reject(new Error('INTERACTION_NOT_REPLIED'));
^
Error [INTERACTION_NOT_REPLIED]: The reply to this interaction has not been sent or deferred.
at CommandInteraction.followUp (C:\Users\HamoodiHajjiri\Desktop\Rewrite\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:165:64)
at C:\Users\HamoodiHajjiri\Desktop\Rewrite\src\slashcommands\utility\help.js:117:49
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
[Symbol(code)]: 'INTERACTION_NOT_REPLIED'
}
same tbh
for both of you, you didn't answer within 3 seconds
wdym answer within 3 seconds
on interactions, you have 3 seconds to either reply or defer
it replies immediately
Check what method you used
I see what ur saying. But why do u think it means there are open streams? btw is there a way I can check that? And thanks for the tip
In here, I used .reply() and in my code, I used .followUp()?
i use interaction.reply and it replies immediately after the cmd is sent
Follow up only works if there's an original response
deferReply() creates a response even if it says thinking
You have to just reply instead of doing follow up
it always replies with added to db
the database connection wont be closed after a request, you need to manually close it
or check if it replied before following up otherwise reply
What do I put in my handler and in a return message example?
HOWEVER, since you have many databases, constantly opening and closing the connections will lead to a HUGE processing time
that on each message leads to 100% cpu usage
you use offline database connections on desktop softwares where connections will only happen so often
I have removed the await .reply() in my event and added the .reply() on my command code, is that an efficient way?
not on constantly-ticking services like bots
shit mean I just checked and there are places where I don't close it.. thanks!! I got some work now to convert all the files to tables in the same file and etc..
it was a dumb early decision on my part
Sure
You shouldn't defer unless you need to
pov you use nextjs
well if I make that change SQLITE should suffice though shouldn't it? I could store theoretically store hundreds of terabytes of data. Or would it work extremely slow if lets say I have 1000 servers and each table got about 1000-3000 entries?
It's not slow
SQL is made to handle even more than that
Looping through files and looking for a correct one is slower
| guild | | message |
| -------------- | ---------< | -------------------- |
| PK id: varchar | | PK id: varchar |
| name: varchar | | FK guild_id: varchar |
| author: varchar |
| content: text |
there
have a guild table which has whatever data about a guild you wanna store
Should I defer when it comes to using Message Button Collectors?
create a 1-N message table to store whatever messages u wanna store
relation it with guild table using guild_id
when u wanna fetch all messages, SELECT * FROM message WHERE guild_id = :id
although I'd not store messages in the db, it just looks like a waste and probable privacy breach
instead, process the messages in memory, but limit how many you store
like last 50 messages or so per guild
so in my case it's not a mod bot but it can be taught to remember stuff, so it scans messages for containing certain keywords
process that without storing all messages
yep ofc
actually, you have no reason to store any message in this case
I only store the ones that I find that need to be remembered
except command logging, which is good to have
to prevent, yk, people saying your bot was racist or some shit
that way you have logs to back you up
got logging too yes
that was the most unorthodox reason ever
haha
that's one of the reasons I have mine
so just to make sure I understood correctly - gonna make one DB with table for each guild, and those tables are gonna have guild ID as their name?
people love to throw shit whenever possible
nono
s!say I do not like Speedy
one table for guilds
one row for each guild
then put messages in another table and link both together through a foreign key
@clear marlin lmao Shiro DM'd me
dmed u with
Insufficient permissions
ah, shiro the dog
yes
Man those were the days
what days
dog days™️
Shiro being a thing
isnt shiro still a thing
in name sure lmao
if you're talking about community, it's regrowing
shiro bigsnipe
OH
so all messages in 1 table and they'll have one column saying which guild they belong to
yes
ok, infrastructural overhaul
thanks a lot for the help
yw
indexes are sussy bakas
guildID would be the primary?
ye
pkeys have to be unique
on guilds table btw
as papi said, pkeys are unique
yup
in the messages table I need the combination of guild ID + message to be unique. How can that be achieved?
depending on how you access it, it could also be a join of channel_id and message_id
only the combination of both
oh yeah, also putting channel id would be sick
1 message per guild? Fair
lots of messages per guild, but guild X can only have message Y once
content u mean?
yeah yeah
If you're storing a bunch of messages from the same guild and/or channel, then set pkey as message id
ohh wait
it'll always be unique
no message id ever repeats
and no guild id ever repeats
so, no combination of guild + message will ever repeat
Unless you try to insert a new row with the same pkey
unless u insert twice
guild 82358325 can have message "lol" only once
guild 21742375 can also have message "lol" but only once
set content as unique then
I used NOCASE
l0l
wouldn't that prevent 2 diff guilds to use the same message?
not if u use composed constraint
got it. I'll play around, and thanks again
pkeys can be a mix of multiple keys
at least in postgres
mysql and maria use pkeys and skeys
m*sql
pov you dont like mysql because its maintained by oracle
Well that’s why you choose MariaDB
how to get server user avatar?
What's the ratelimit for editing a message several times to not get rejected by top.gg (such as dank memer's hack command)?
rich presence
How can i shuffle 2 arrays in the same way?
Like make the order random, but the same order in both arrays
seed
?
alternatively, u can just copy the array
all rng allows setting a seed, which defines the "pattern" of the randomness
they are completely different arrays, but need to have the same order
in that case, you can't shuffle the second
cuz even with the same seed it'll result in different order
you can, however, use a lookup array to check new placements
you can apparently check index
extending the durtensfield or whoever that is algorithm
but you will have to shuffle those two simutaniously
or just yk
deep clone the shuffled array
didn't get this
let origList = [...]; // the original list/array
let secondList = [...]; // the secondary list of whatever
let shflList = origList // the new, shuffled list
.map((value) => ({ value, sort: Math.random() }))
.sort((a, b) => a.sort - b.sort)
.map(({ value }) => value);
let secShflList = []; // the container for the second shuffled list
for (i in secondList) {
secShflList.splice(origList.indexOf(shflList[i]), 0, secondList[i])
}
so the output arrays have the same order but are different from original
this works too
wont install any ideas?
like, they are 2 different arrays with the same length, but they doesnt have anything else in common, what i need is to make their order random, but synchronized
LMFAO
both array looks the same or what
can you give me an example?
ah wait
i think i figured it out
so the same shuffler order applied to both arrays
yeah
these need to be randomized, but still share the same order
like this
you need a sequence generator
[b, a, d, c]
[2, 1, 4, 3]```
Error: Could not find any Visual Studio installation to use hmmmm seems legit
with a sequence generator you can synchronise the sequence on n number of arrays
Sounds about right
first off you generate an index array with
const indexSeqGenerator = length => new Array(length).fill(null).map((_, i) => i);
then use whatever you have, shuffle the output array
then apply it via
const outputArray = inputArray.map(shuffledIndex => inputArray[shuffledIndex]);
you can apply to itself too
please, someone say something code related. im in my trashy ass teams meeting for college and the lecturer is boring me to sleep teaching nubs what a web browser is.
same idk man
Hey how do i check if a user has already reacted before?
Like, he adds an reaction and then removes it
hold a Map temporarily with type <string, boolean>
Like this @civic scroll ??ts const indexSeqGenerator = (length:number) => new Array(length).fill(null).map((_, i) => i); const outputArray = oneArray.map((shuffledIndex:number) => oneArray[shuffledIndex]); const outputArray_2 = twoArray.map((shuffledIndex:number) => twoArray[shuffledIndex]);
then on react event, <map.set(<userId>, true)>
@eternal osprey
yeah
but that doesnt use the indexSeqGenerator
but you can assign to the array itself
you have to call it
alright wait
Aha, thank you!
And after 5 minutes for example, i could use map.set(user.id, false).
Awsome!
// seq generator
const indexSeqGenerator = (length:number) => new Array(length).fill(null).map((_, i) => i);
function shuffler<T>(array: T)
{
// some algorithm to shuffle the array
}
const randomSeq = shuffler(indexSeqGenerator(4));
let array_1 = [1, 2, 3, 6];
let array_2 = [1, 2, 5, 3];
const shuffleToSeq<T> = (value: T, _, array: T[]) => array[value];
array_1 = array_1.map(shuffleToSeq);
array_2 = array_2.map(shuffleToSeq);
typescript looks so ugly compared to vanilla js imo
that's because it is
Is it me or am i logged out of my alt account?
once you go typescript you'll find it hard to go back to javascript
I tried to test a project, but it logged me out and is throwing bad connection errors
const indexSeqGenerator = (length: number) => new Array(length).fill(null).map((_, i) => i);
function shuffler<T>(array: T) {
// some algorithm to shuffle the array
}
const randomSeq = shuffler(indexSeqGenerator(4));
let array1 = [1, 2, 3, 6];
let array2 = [1, 2, 5, 3];
const shuffleToSeq<T> = (value: T, _: unknown, array: T[]) => array[value];
array1 = array1.map(shuffleToSeq);
array2 = array2.map(shuffleToSeq);
There. Prettier.
Welcome to Discord's home for real-time and historical data on system performance.
That's tuff
@lyric mountain following our previous conv, I was reading a bit more on sqlite, found this, seems weird - why use a create_connection function that won't close the connection? So should I be opening a connection for every message sent in the guild or should I have 1 open connection all the time?
Yea, my thinking is graphql will be useful for querying the data from the database but I will still have post requests to handle creating the data (unless I don't really need to and graphql can handle that I haven't used graphql before so I gotta read up on it)
Or I could just go completely rest api and just not even use graphql
I've been using graphql recently
I don't like it
I think it's overkill
I guess if you are creating an API which will be used by other developers, then yeah, graphql is okay, but if you're making a backend for a website and the api is used to communicate with the frontend, then no I wouldn't go for graphql
and you can handle creating data, look up mutations.
Mmm see that is why I was wondering if i should use graphql cause it isn't just for the website, I plan on making a public api for people to use in bots and such (for some features).
what even is graphql? i never understood it
But i've never used graphql so im not sure how it all works
It's a custom query language which allows you to select to receive only the data you need, which means more efficient http requests
By "efficient" I mean more space / network efficient
yeah it's sort of a standard
and each language has different frameworks for it
I just don't know if my project is right for graphql
How do you determine if graphql is right for your project?
Cause you seem to say its useful when you are making a public api but I don't understand how so
People who are querying your API may not want all the data it provides, so they can easily get what they need using graphql
also graphql APIs are easier to document
Mmm
My assumption was that I would use the graphql in my api endpoints.
Unless im being dumb I don't think graphql is useful for me
I don't see how I can use it and make it work with this project
You can use graphql for your endpoints too
hmm
Are you using ApolloClient and ApolloServer?
i mean graphql is basically a "use it or dont use it" framework
I plan on using springboot
I am not entirely sure as of yet how graphql can integrate with it
i rarely see apis use it
i doubt a couple of excess data bytes transferred over a network is a big deal
unless you've of course got an api which can return tons of data
graphql also provides nice data validation
Sorta unrelated, but I just switched from graphql to regular REST for one of my personal projects, and now I'm looking for good data validation libs... Ajv is the fastest out there, but it's errors are TERRIBLE! Like why
dont know personally i always went the ugly if statement validation but i'd love to know a library too
So I decided to make my own and it's faster than Ajv... which claims it's the fastest json validation lib 
I am thinking of not even using graphql at this point
At least not yet
It doesn't seem like with how small this api will be starting out that graphql will be needed
What do the errors look like?
if your api doesnt return lots of data graphql isnt really your target market
I've been using a schema library called Malli and having it return errors structured after the request.
for my lib? You make your own
const resultObjvl = Objvl.compile({
properties: {
name: { type: "string", maxLen: 15, errors: {
maxLen: () => "String length exceeded."
}},
value: { type: "string", maxLen: 33, minLen: 15, errors: {
maxLen: () => "String length exceeded.",
minLen: () => "String length must be at least 15 chars."
}}
}
});
just an example
You can return objects or other data
i also bet request has one which also plays nicely with the request and response objects
Ajv just gives the errors to you and you decide what to do with them, but the errors are super strangely structured
interns, pft
that's meta as shit
Ajv is super fast actually, I think their error system is the reason for this. It's creating these big error objects, and you don't use most of the data they give you. My lib even inlines the functions you give to the error, so in the example I gave above it just turns to a string literal
My lib is also lacking some features, so that could be why it's sooo much faster. But also, I'm giving the exact same schema to both libs... so I dunno
Also, I do not plan to 100% support "JSON Schema" with the lib cause it's just... whatever
it's stupid because you're not supposed to use untrusted schemas... so why do you need a specification for this? I don't get it
need a little sqlite3 help. seems my row.ts is logging undefined and im genuinely not sure why.
https://github.com/xWass/utr-vouch/blob/main/commands/vouch.js
tim is afk and hes the last person who helped me with sqlite stuff kek
data: new SlashCommandBuilder()
.setName('add')
.setDescription('Add a user to the blacklist! OWNER ONLY')
.addSubcommand(user =>
user.setName('user')
.setDescription('Add a user to the blacklist! OWNER ONLY')
.addUserOption(option => option.setName('user')
.setDescription('The user')
.setRequired(true)))
.addStringOption(option1 =>
option1.setName('reason')
.setDescription('The reason')
.setRequired(true))
.addStringOption(option3 =>
option3.setName('evidence')
.setDescription('The evidence')
.setRequired(true)),```
damn a mini dsl
Though that's interesting
It looks correct, unless subcommands can be marked as required, which wouldn't make sense.
if "trigger" in message.content:
if message.author.id == 294882584201003009:
confirm = discord.Embed(created embed)
button = [
Button(
style=ButtonStyle.red,label=":cute: BroadCast"
)
]
await message.channel.send(embed=confirm, components= button)
res = await client.wait_for("button_click")
if res.channel == message.channel:
if message.guild.name in db.keys():
link= str(db[message.guild.name])
else:
db[message.guild.name] = str(await message.channel.create_invite(max_age=0))
link = str(db[message.guild.name])
msglink = "https://discord.com/channels/" + str(message.guild.id) + "/" + str(message.channel.id) + "/" + str(message.id)
GaTimeone = message.embeds[0].description.split("Ends:")
GaTime = GaTimeone[1].split("Hosted")
if message.guild.id in premium:
GA_msg = discord.Embed(created embed)
#non premium
else:
GA_msg = discord.Embed(created embed)
for guild in client.guilds:
channel = discord.utils.get(guild.text_channels, name='giveaway-index')
if channel:
await asyncio.sleep(0.5)
await interaction.send_message(embed=GA_msg)
``` 🥺help
🛌
we don't own crystal balls, so no amount of pleading emoji faces will help us interpret that
cmon klay you cant indentify an error from just the code smh
we programmers are god and can understand anything
interactions won't work
but why
that's what I am asking
is there any error?
no that's for you to discover 🔍
if not then probably skill issue
for example, an error message
or your ide screaming at you with red squiggly lines pointing to errors
or just looking at it and seeing
GA_msg = discord.Embed(created embed)
and wondering why there's a space between created and embed
i think he is just simplifying
maybe
it's just to shorten the code, exceeds msg character limited without it
ok is there any error message on your console?
nope
skill issue
just interaction failed
you can upload large files and we can still see it, but alright.
yes I am a idiot , can you bless me with some knowledge
please I need knowledge
me idiot still don't know why
probably cuz it needs to defer the interaction
and i dont understand why you put that in your on_message
and i dont frickin understand why you dont use pycord or nextcord
🛌
I am using pycord
thats not pycord code
defer mean
read pycord docs
I better watch video docs confuse me
then you are not watching the right video
and you wont understand pycord just by watching video
someone help me?
You need to handle promises with .catch or try {...} catch (...) {...}
As for where that happened, the stacktrace may help you.
well...
I checked ALL codes
and I didn't see anything with async function
I mean... The commands are, however with try and catch
hmmmmmm
can i send github?
??
@sudden geyser this error appeared to me after discord came back
Generally try to use Hastebin for code

True
why i can't send github link?
Personally I don’t see any reason for Sharding now
I do it straight, nothing like this has ever happened to me
If you were dealing with say, 900+ servers then fair enough
it's better to shard sooner rather than later imo
True, but 99 severs seems a bit soon
my bot is sharded with like 24 servers lol
My bot in 290 servers isn’t
I’m gonna recode it for the 2839202th time
But in JS this time
use ts 🔪
.. Why?
future proof because I don't work on it anymore
why struggle when it comes time to
https://img.pyrocdn.com/efLJaizt growth is pog
all my bots have been sharded since 0 servers
because future proofing is 100% a good way to learn
idk why people get triggered when people shard at a low amount of servers like its a problem
True but it also depends on your expectations
Mine will never reach more than a few hundreds guilds
How do you know that
As it offers a very specific service for a few existing gaming communities only
Nobody else actually can use it
Thats an edge case tho
Yeah
if you know your target audience isnt that big
then yea
but like, if you want to build something that you hope will grow, build it to scale, even better when its at a low number
how about you future proof some ux experience
But yeah I agree.
bro I wrote that 2 years ago
Should've future proofed it
im rewriting it to tailwind rofl
xd??
All that css was manually written rofl
In this case, if you have the time to keep the project up and running then yes
I was crying in my sleep getting that done
i just over engineered a 20k bot with an infra thats suitable for way more than its ever going to get used for
I still manually write CSS. I hate most of these shitty bundled CSS libs
i like tailwind
its alright
not perfect
but alright
its good to get the job done quick
I should clarify I mostly just hate material-ui
I dont have the time to write css anymore
got a kid on the way and multiple other projects that need time
You'd have time if you got good at it 🧐
But you can’t always spend the time to develop anything perfectly being able to scale in the future.
Sometimes you gonna throw something out, see how the interest is and if it blows up your expectations you gonna redo it
true
What other projects you got going on
i use mui just for the component logic, end up re-styling most of the components in every app lol
By the way this is on a 1440p monitor.
I know about this
havent had time to fix
Yeah I could never got into working with frameworks, too
PyroCDN - the one you looked at
Shiro - Currently rewriting, should release in around 3 weeks~ ish
Shiro's new featureset - will be working on after shiro's base rewrite release
Shiro's Web Dashboard - Will be releasing after rewrite also
DBL Stats - update soon™️
Not to mention I work full time and have a kid on the way and will be moving flat soon 
Shiro is my main project atm
This doesn't help my case but I started writing my bots site 2 days ago :^)
It is still in early dev obviously.
https://rolebot.gg
Sounds familiar…
Time management nowadays is pain
minimal
That’s always the case!
Im basically unable to get anywhere right now cause my Bike failed its MOT, meaning i have no mode of transport
and taking public transport is a massive risk cause my fiancée is high risk if she gets covid
so like, unless I walk 6 miles to get to work... not happening
luckily i can work from home
Err that’s an unfortunate situation
remote work is a blessing
indeed
its also a pain tho, cause I was supposed to go in tomorrow for a meeting...
now I cant

@round cove also, not to mention ive had a team shift with shiro
which you probably saw
Possibly.
so thats been interesting
What are you trying to make shiro into even?
Im atm just renewing its current features
then more to come™️
making them work via slash commands and such
then im gonna add a lot more
I have some big ideas for it
Slash commands are a mistake
If you're doing slash commands you better put them all onto a stateless server or lambda
shiro itself
is stateless now
its consumer based
with a centralized gateway and cache
It still has a gateway queue no?
No when receiving and parsing all the events.
Oh not really
more consumers less response time
1 consumer can take up to 10k requests per second + im using a rest proxy to handle ratelimits now
discord went down
old infra just completely shit itself and something in eris caused a mem leak
and new infra didnt even ask what happened, just handled it
Lmao.
I wanna get rid of the old shiros code base
its a fucking mess
ive been thinking "do I open source the old"
but quite frankly I just wanna delete the repo lol
I mean the code is probably about 5 years old at this point. Bound to happen to those learning.
Oh?
the old infra was rewritten when I joined
a lot of my code is fine
but theres a ton of obviously copy pasted stuff
since I looked across all the projects
and theres inefficient code everywhere
just wanna delete it
new infra is like 90% done
just waiting on a protocol in the gateway cache to be added for past data on user/member updates and then its done
and i can release
I managed to code most of it ahead of schedule
so now im just doing metric stuff
for example, old infra: https://img.pyrocdn.com/eImXx-9N
Do you use K8?
moving from docker compose scaling to k8s soon yea
I mean you can combine them
Yea I can
I would personally.
but im going to be building auto-scaling checks so it'll upscale and downscale automatically
still surprised new infra only uses 1.3GB ram

Brains C++ lib does like ~200k servers at like 5GB which is nice.
thats dope lol
He do be smart.
I honestly just wanna see how the new infra handles it
But also most of the lib only tracks snowflakes and uses good typings for it so it makes sense.
@round cove also, shiro's not changing much, keeping current features plus adding more after ive gotten new prod out
Certainly an interesting way to do command listing.
this also fixes a lot of the issues with logging
Thanks 😛
Since I'm stuck using d.js and don't wanna move off it 😛
What would be a reason for a raw packet to claim that a message is unknown if a reaction event was caught, message id parsed and then fetched.
It shouldn't be hitting cache. I guess it's possible it was an automodded message that was deleted before I could fetch it?
Do you understand what it's saying?
at Object.execute (/home/runner/NEXTRO-xD/src/commands/misc/invite.js:17:22)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at async Object.execute (/home/runner/NEXTRO-xD/src/events/message.js13)```
Now that you put it here, read it with me okay.
What do you think it's saying
The first line
disbut is not defined
Okay cool. Do you know what disbut is?
nah
did u copy pasted code..
Are you saying you didn't create some variable called disbut in the file invite.js?
(:
ty
thats a lot of invite buttons
that are very aggressive
lmao truueeeeee
Okay stay with me here okay?
okay
What if you read the error out loud.
await is only valid in async function
Is the function async
??
It doesn't look like your code is in a function based off the SS.
hey
i want this command to be accessed by members with manage server permission
how can i do that?
help...
Check if the (hint) member has the permission before doing anything else
What does this mean?
use import instead of require or do npm i node-fetch@cjs
if you're not using ESM and still want to use the same version, then it's (await import("node-fetch")).default
why would you put your imports inside an async function
also is cjs even a valid npm version
it's a tag
Hii, i am trying to make a music bot for my server so here is the code for the play command
@commands.command()
async def play(self, ctx, *, url: str=None):
try:
ctx.voice_client.stop()
except:
return
if url is None:
embed0 = Embed(description=f"Please write a link to a song!",
color=random_color())
await ctx.send(embed=embed0)
return
FFMPEG_OPTIONS = {"before_options": "-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5",
"options": "-vn"}
YDL_OPTIONS = {"format": "bestaudio"}
vc = ctx.voice_client
with youtube_dl.YoutubeDL(YDL_OPTIONS) as ydl:
info = ydl.extract_info(url, download=False)
#info = ydl.extract_info(url)
url2 = info["formats"][0]["url"]
source = await FFmpegOpusAudio.from_probe(url2, **FFMPEG_OPTIONS)
vc.play(source)```
and here is the error
```Ignoring exception in command play:
Traceback (most recent call last):
File "J:\PycharmProjects\MyWorkProjects\work\.venv\lib\site-packages\discord\ext\commands\core.py", line 179, in wrapped
ret = await coro(*args, **kwargs)
File "J:\PycharmProjects\MyWorkProjects\work\SadisticFairyFolder\SadisticFairyCogs\music.py", line 53, in play
source = await FFmpegOpusAudio.from_probe(url2, **FFMPEG_OPTIONS)
File "J:\PycharmProjects\MyWorkProjects\work\.venv\lib\site-packages\discord\player.py", line 452, in from_probe
return cls(source, bitrate=bitrate, codec=codec, **kwargs) # type: ignore
File "J:\PycharmProjects\MyWorkProjects\work\.venv\lib\site-packages\discord\player.py", line 384, in __init__
super().__init__(source, executable=executable, args=args, **subprocess_kwargs)
File "J:\PycharmProjects\MyWorkProjects\work\.venv\lib\site-packages\discord\player.py", line 153, in __init__
self._process: subprocess.Popen = self._spawn_process(args, **kwargs)
File "J:\PycharmProjects\MyWorkProjects\work\.venv\lib\site-packages\discord\player.py", line 170, in _spawn_process
raise ClientException(executable + ' was not found.') from None
discord.errors.ClientException: ffmpeg was not found.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "J:\PycharmProjects\MyWorkProjects\work\.venv\lib\site-packages\discord\ext\commands\bot.py", line 335, in invoke
await ctx.command.invoke(ctx)
File "J:\PycharmProjects\MyWorkProjects\work\.venv\lib\site-packages\discord\ext\commands\core.py", line 916, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "J:\PycharmProjects\MyWorkProjects\work\.venv\lib\site-packages\discord\ext\commands\core.py", line 188, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: ClientException: ffmpeg was not found.
Exception ignored in: <function AudioSource.__del__ at 0x000002331E782670>
Traceback (most recent call last):
File "J:\PycharmProjects\MyWorkProjects\work\.venv\lib\site-packages\discord\player.py", line 116, in __del__
self.cleanup()
File "J:\PycharmProjects\MyWorkProjects\work\.venv\lib\site-packages\discord\player.py", line 212, in cleanup
self._kill_process()
File "J:\PycharmProjects\MyWorkProjects\work\.venv\lib\site-packages\discord\player.py", line 177, in _kill_process
proc = self._process
AttributeError: 'FFmpegOpusAudio' object has no attribute '_process'
do you copy paste'd this code?
i found this code in a tutorial and followed the steps, did some changes like embeds and etc
okay fair
Can someone help me with this please?
but thats a bad practice, the problem is url2 has a wrong value
oh?
I mean it says ffmpeg is not found so i was wondering what is ffmpeg
well i do as you say and print info then
you know how to fetch value from a json right?
ik lol
i didn't ask you for that, i just want to know how to fix that
well it spammed a load of dicts
the problem is you fetched the wrong value, if you can fetch the right value its fixed
yep its the json
okay so what am i supposed to look for?
find a value that is a url
there are a lot
if you are confused you could use online json formatter
oh wait
so you could see the format better
i found it
it has the "url" as the key
try sending the dicts for me
then its probably it
that's the info["formats"][0]
and what if you print info["formats"][0]["url"]
hmm
no-
nvm it's googlevideo's ip

https://rr1---sn-uxaxjvhxbt2u-amgl.googlevideo.com/videoplayback?expire=1643296049&ei=0GDyYZqJPM2B7gP-1qbgAQ&ip=156.202.108.23&id=o-AKNqiZs5urYrpqXhZ50_O-iROlNtzCjIdgJKDBfLkD1X&itag=249&source=youtube&requiressl=yes&mh=ve&mm=31%2C29&mn=sn-uxaxjvhxbt2u-amgl%2Csn-hgn7yn7l&ms=au%2Crdu&mv=m&mvi=1&pl=19&initcwndbps=323750&vprv=1&mime=audio%2Fwebm&ns=hh6vgByCDDxtt4ag_qwNT8oG&gir=yes&clen=1301212&dur=207.341&lmt=1640988056089035&mt=1643274080&fvip=1&keepalive=yes&fexp=24001373%2C24007246&c=WEB&txp=5432434&n=x6DILiRauuVN3x&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRgIhAKJYFCSI-pfMFkjWaSce0GbvOYe_NybUqTJiWjhdWoJOAiEArIEsBrLgfHqHe9Abuf9fpcsRPjZhFs_4cBx9M4QZlp4%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAP-te8H9YqLdbqXlQyTSDqRKnTjjLFXX9ZFL6kMe65XaAiEAxWqzi0QGYlqi5gpzu2PYCh5dAKPKN0JILTMm5dLj0_Q%3D
that's the link to the mp4 file that contains the music video
oh?
fetch the link, pass it to ffmpeg to convert it to audio, play it in a vc
sedc
pass it to ffmpeg to convert it to audio
where is that
oh?
idk
i don't use python
why is it None in the error
look for ffmpeg on pip

anyone knows how i can fix this error?
class sendAPICallback extends dAPIMessage {
^
TypeError: Class extends value undefined is not a constructor or null```
side note: if you're using replit there are some extra steps you need to do to use ffmpeg
what None ?
tf
?
I am not, is it like a file or what? i don't understand what's that ffmpeg thing
what even is that error
a library for handling video and audio
oh
its an error from an npm package
looks like it's a problem with the lib itself
i did install it but then what XD
i dont think thats the case
hmm
lemme see
i am not sure what's the case lmao
discord.FFmpegOpusAudio.from_probe takes a webcam file
try printing info
oh sure
it's too long tho
send as file then
can i do it in DMs ?
sure
alr
const x = "123"
const z = "z"
const y = {
x: z
}
console.log(y)
Ouput :
x: z
I want
123: z
can someone send link to opensource pycord projects
const member = interaction.options.getUser('user')
const kickedMember = member
kickedMember.kick()
kickedMember.kick is not a function
lol
I have this code,but why does it return False even though the bot has these permissions in that channel
if not Channel.permissions_for(interaction.guild.me).attach_files or Channel.permissions_for(interaction.guild.me).embed_links or Channel.permissions_for(interaction.guild.me).send_messages or Channel.permissions_for(interaction.guild.me).view_channel:
i think this is the correct one
What's Channel
Channel = discord.Channel
what's the easiest way from json to mongodb atlas
what do you mean by "do json"
Wdym ?? What are you tryna do
migrate from jsondb to mongo maybe?
jsondb
How can I embed a link in the bot description? (md)
If markdown links don’t work, then you can’t
it's a json formated to fit in mongodb without issues
it contains the _id and everything else
i don't wanna do it manually as there is a bunch of those files
like 15
i dont get what the issue is.
if the json is formatted to be converted to mongodb without issue, why do you have an issue?
Thanks
how do i upload it to mongo
that's the issue
mongo.db("botData").collection("sexyData").insertOne(myIncredibleDocumentContainingJSON);
if you use a tool like 'compass' (mongo db's gui) then you can import and export entire databases
yep
i think so. never used atlas myself as i always run my db in a container but it should be fine as atlas is official mongo too
mongo.db("botData").collection("sexyData").insertOne(myIncredibleDocumentContainingJSON);
tf did I just read?

erotica
code913 is horni
The only code that makes me horni is C++ that doesn’t cause memory leaks and doesn’t crash with SEGFAULT
that’s why you use Java 
Wtf
There exists a reality where fake is a Java developer working for oracle
they grow so quickly 〒▽〒
How did that sound like I would recommend it?
There’s no sentence I ever sent without sarcasm included
The only code that makes me horni is C++ that doesn’t cause memory leaks and doesn’t crash with SEGFAULT
that’s why you use Java


