#development

1 messages · Page 864 of 1

digital ibex
#

does anyone know?

ripe lantern
#

what language?

digital ibex
#

its got nothing to do with the language

cinder patio
#

refresh compass? You always have to refresh it

digital ibex
#

i am, still nothing

ripe lantern
#

i still need help with my bot not sending anything

cinder patio
#

Like, click on something else then click back on the document

digital ibex
#

kk

#

nope, still

ripe lantern
#

oof

cinder patio
#

Are you sure you're checking all pages?

digital ibex
#

only the page im using

cinder patio
#

have you tried restarting compass?

digital ibex
#

i'll try that now

#

do you see anything wrong with the code?

ripe lantern
#

whats the code

ripe lantern
#

hm

slender thistle
#

@ripe lantern replace bot.say with ctx.send

ripe lantern
#

ah ok

cinder patio
#

I think you are just filtering the guild, not updating anything

digital ibex
#

i copied and pasted from my prefix command and just changed the stuff for the db

cinder patio
#

Last time I used mongodb I used await this.collection.updateOne(query, {$set: newValuesObject}); but I haven't used it a long time

digital ibex
#

restarted compass but still

mossy vine
#

since i cant fetch more than 100 messages can i fetch 100 then use the oldest as the before parameter of another fetch?

ripe lantern
#

how do i add an embed command?

earnest phoenix
#

Anyone know why bots aren't able to use animated emotes anymore?

cinder patio
#

Yes Cyber

digital ibex
#

ok idk what i done wrong but i just copied and pasted the prefix to the welcome channel thing

#

awesome

#

it works

#

also

#
module.exports = async (client, member) => {
    const guildS = require('./models/Guild');
    let guild = await guildS.findOne({ id: message.channel.guild.id });
    const channel = guild.welcome.channel;
    const message = guild.welcome.message;

    const serverName = member.guild.name;
    const size = member.guild.memberCount;
    const username = member.username;

    client.createMessage(channel, message);
};
``` that is how you set variables right?
cinder patio
#

I mean in the code you provided most of the variables are unnecessary but I guess yeah? You can just do client.createMessage(guild.welcome.channel, guild.welcome.message);

digital ibex
#

kk

#

i was meaning like

#

u kno how some bots have like welcoming variables

cinder patio
#

Like {user} is the name of the user who joined?

digital ibex
#

like welcome {member} to {server}!

#

yeah

cinder patio
#

You would use the .replace function to replace {member} with the name of the member

ember atlas
#

You’d have to replace {user} with what you want

#

Ya

digital ibex
#

wdym?

#

u don't define them like that?

#

pre in the event?

cinder patio
#

no

ember atlas
digital ibex
#

o

earnest phoenix
#

Anyone know why bots aren't able to use animated emotes anymore?

ember atlas
#

Mine can iirc

cinder patio
#

You are probably doing something wrong

digital ibex
#

yep, my one can as well

#

also

#

with eris, how do you edit a message after, lets say, 5 seconds?

broken jay
#

Is good idea to use Kotlin + Spring Boot + Hibernate REST backend API for Rust discord bot?

ember atlas
#

@digital ibex use setTimeout() and probs make a little function to edit it

digital ibex
#

kk, ty

ember atlas
#

Mhm

golden condor
#

@cinder patio pm2 still broken

cinder patio
#

oof maybe you've enabled cluster mode?

#

though idk if that would be the reason why...

#

@golden condor do pm list

#

pm2 list*

golden condor
#

Ok

cinder patio
#

how many processes do you see?

#

can you send a screenshot?

golden condor
cinder patio
#

can you do it in the console

earnest phoenix
#

It just shows sends :emotename:

ember atlas
#

Bot have access to the emote?

earnest phoenix
#

yeah

ember atlas
#

Like is it in a server the bots in

earnest phoenix
#

it works just fine with any other emote

#

yeah it is

ember atlas
#

Probably emote specific

#

I’m not really sure

#

You can try deleting the emote and readding it if you have access to it

earnest phoenix
#

ok

#

ill try

golden condor
#

@cinder patio not on pc atm

earnest phoenix
#

nope, Didn't work

cinder patio
#

oof, wait let me see all the messages

golden condor
#

I can turn the phone sideways

#

That looks better

cinder patio
#

Ok, I guess you can do pm2 delete bot, though I doubt it would fix it since it's errored

golden condor
#

Yeah ik

cinder patio
#

Try restarting the script pm2 restart index

golden condor
#

I keep trying

#

It goes onto one

#

And then later on

#

It duplicates

cinder patio
#

That's weird

twilit rapids
#

@golden condor you have 2 instances of your bot running.

#

Running exec, will run twice as well...

cinder patio
#

Try restarting your VPS if you can

twilit rapids
#

pm2 stop all -> pm2 delete all -> pm2 start <appname>.js

cinder patio
#

but then you'll have to start it again and you said you can't access the console

golden condor
#

@twilit rapids I've tried

#

Not on my pc atm anyway

#

It's so annoying

#

It starts with one instances

#

Then shows two

#

Please help

#

I'm going crazy

#

The only event that runs twice is message

cinder patio
#

seems like a problem with your code then

golden condor
#

@cinder patio I can show my coee

#

Later

digital ibex
#

hi

#

so

#

uh

#

in my guildMemberAdd event, i have this let guild = await guildS.findOne({ id: member.guild.id }); to get the guilds message and channel id

earnest phoenix
#

My new Raer Mouse Mats has blinked

digital ibex
#

and uh

golden condor
#

Would that be ok @cinder patio, can I DM you later with my code?

digital ibex
cinder patio
#

yea sure

digital ibex
#

can't read property of guild of undefined

#

is the error i get

#

any ideas?

obtuse wind
#

Can someone walk me through how to get a user.username from a mention, (keeps saying undefined.)

v11.6.1, not v12.1.1 ::discord.js, node, windows 10 etc

golden condor
#

Kk thanks

cinder patio
#

Toxic, show us how you're doing it first

mossy vine
#

@obtuse wind have you looked at MessageMentions yet?

golden condor
#

@obtuse wind message.mentions.members.first().user.username

mossy vine
#

^ that but with less spoonfeeding

obtuse wind
#

mentionedUser.username

golden condor
#

What is mentionedUser defined ae

obtuse wind
#

what you put without the .user.username

#

its literally mentionedUser

golden condor
#

That's how you get the username of the first user mentioned

#

Is message.mentions.members.first() is what mentionedUser is?

#

If so

#

mentionedUser.user.username

obtuse wind
#

so basically I'm trying to pull their username in the mention and put it in a JSON file

( like my warnings.json );

golden condor
#

mentionedUser.user.username

#

Is message.mentions.members.first() is what mentionedUser is?

obtuse wind
#

alright thanks

#

yes it is

golden condor
#

warnings.json?

#

Try use a dB

#

Even a simple one like quick-db will do

obtuse wind
#

let mentionedUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
for my warn command; I want to have their username put into the warnings.json file

#

I just put multiple = in that

golden condor
#

Don't need message.guild.member( bit

#

Just do

#

message.mentions.members.first()

obtuse wind
#

with minor re-defining mentionedUser to wUser

golden condor
#

Kk

digital ibex
#

any ideas why this is happening?

#

its for the guidlMemberadd event and uh

#

idk why thats happening

obtuse wind
#

turn your bot off.

digital ibex
#

why?

obtuse wind
#

Before it pings discord's tos

golden condor
#

You shouldn't do tbat

digital ibex
#

its stopped

golden condor
#

It's across all guilds

digital ibex
#

its not

#

only across two

obtuse wind
#

Your bot may not spam in multiple channels, guilds; it'll get ur bot banned

golden condor
#

The guildMemberAdd event is across all guilds

digital ibex
#

just

#

its in two

#

like

obtuse wind
#

yeah like turn it off and keep it off for a while

#

and reprogram your guildMemberAdd listener

digital ibex
#

i mean

obtuse wind
#

its not a debatable thing

#

your bot WILL get banned.

digital ibex
#

i did kinda come here for help on that

#

sigh

obtuse wind
#

if you want help on reprogramming your guildMemberAdd I will help you, but your bot must be offline because its no use programming a banned bot

digital ibex
#

um

#

the bots not sending anymore messages but ok

#

its off

obtuse wind
#

thank you please show me your guildMemberAdd listener

digital ibex
#
    const guildS = require('../../models/Guild');
    let guild = await guildS.findOne({ id: message.channel.guild.id });
    const channel = guild.welcchan;
    const Message = guild.welcmsg;

    client.createMessage(channel, Message);
obtuse wind
#

hmm

#
client.on("guildMemberAdd", async member => {
let logchannel = member.guild.channels.find(c => c.name === `channel-name-here`); //case Sensitive; must be lowercase, with dashes, in order to get channel name
if(!logchannel) return;

logchannel.send(`${member} has joined, welcome!!`)

console.log(`\n AUTOMOD: ${member.id} has joined ${member.guild.name}:${member.guild.id} : Time: ${member.joinedAt}\n`);
});
```~~~
#

do something like that

digital ibex
#

um

#

what

obtuse wind
#

change your listener to something like that

digital ibex
#

no...

obtuse wind
#

that way its posted ONE TIME on a certain channel

digital ibex
#

thats not going to work with a database

#

how

#

thats like

golden condor
#

You want to let the user pick the channel?

digital ibex
#

yes

#

and the message

#

for each server

golden condor
#

The channel is easy

digital ibex
#

i've got the message done

#

and the channel for each server done

obtuse wind
#

well then ignore me.

cinder patio
#

Toxic, they are using eris, not discord.js

golden condor
#

Ohhhhhhh

digital ibex
#

but its sending it in every server when one person joins

#

toxic, u can't do ur way for the way i am doing mine

#

how can i make it not send loads of messages and make it only send when its in that server that someone joined

#

not another one

obtuse wind
#

thats the part I dont understand

#

its not supposed to send multiple times.

digital ibex
#

its nested, but

obtuse wind
#

not to mention, its not your whole code.

#

for that part ^

digital ibex
#

that is my whole code

#

its nested but, im using a handler and i've got no idea why its sending loads of messages

ripe lantern
#

how do I create a command that makes an embed?

digital ibex
#

i understand its nested with the message event because i wanted to be able to use message to get the guilds name + id but idk

#

blaine

#

uh

ripe lantern
#

in python 3.6

summer torrent
#

@ripe lantern which library

obtuse wind
#

how do I create a command that makes an embed?
@ripe lantern

you make a command that sends an embed,

what version are you using

ripe lantern
#

1.3.3

obtuse wind
#

hold up

#

Your discord.js is 1.3.3?

digital ibex
#

sigh

ripe lantern
#

i think so

digital ibex
#

python

#

not js

summer torrent
#

in python 3.6

obtuse wind
#

idk it just seems odd to me

digital ibex
#

how do u send a normal message blaine?

#

like

#

hi

#

like that?

ripe lantern
#

oh

#

i forgot because im dumb

digital ibex
#

ok

obtuse wind
#
let vwarnEmbed = new Discord.RichEmbed()
.setAuthor(`Verbal Warning`)
.setDescription(`optional desc`)
.setFooter(`optional footer.`)
.setColor(`#f76707`)
.addField(`something here`, `something`, true/false)
.addField(`something here`, `something`, true/false

@ripe lantern if you can translate that into python, you can use that as an example

ripe lantern
#

neat

digital ibex
#
(<send>{
       embed: {
            title: 'this is a fancy title'
}})
#

no its not @obtuse wind

obtuse wind
#

I said if he can translate that into python.

digital ibex
#

since when does py look like that

#

just use the object embed

ripe lantern
#

now how do i add the body and color of the embed

digital ibex
#
(<send>{
       embed: {
            title: 'this is a fancy title',
            color: 0xcolor,
            description: 'this is a description'
}})```
ripe lantern
#

thanks!

digital ibex
#

no worries

obtuse wind
#

idk how you can add a field'

#

i was attempting to do something

digital ibex
#

field is an array of objects in js

obtuse wind
#

yes

#

yes

digital ibex
#

not sure about python

obtuse wind
#

IK

digital ibex
#

i wasn't talking to you

ripe lantern
#

so how do i put dat into a command

digital ibex
#

can u show me ur command so far

#

do u have a different command?

ripe lantern
#

@bot.command(pass_conetext=True)

#

that's it so far

earnest phoenix
#

.

digital ibex
#

async def test(ctx.send):
await bot.say (embed: { title: 'hi'}))

#

try that

ripe lantern
#

neat

digital ibex
#

just say ur prefix test and see

ripe lantern
#

so < instead of test?

digital ibex
#

no

#

<test

#

say that and see what happens

#

assuming < is ur prefix

ripe lantern
#

oh

zinc condor
#

How do i dm a discord user by their id

#

djs 12

summer torrent
#

get user from client

#

then send message

zinc condor
#

client.users.get(id).send(msg)

#

this apparently is not a function

summer torrent
#

client.users.cache.get

ripe lantern
#

how do i keep a discord bot online?

zinc condor
#

thanks

#

worked

summer torrent
#

@ripe lantern you need a host

ripe lantern
#

oh

#

where do i get one?

digital ibex
#

most hosts you have to pay for

digital ibex
#

but i know a good free host

ripe lantern
#

what is it?

digital ibex
#

its called "loc"

#

library of code

summer torrent
#

free hosts are bad

digital ibex
#

me again talking about it

#

loc isn't

#

since december, i've been using them and they've only had one time when their services are actually down

ripe lantern
#

dang

digital ibex
#

and that was recent tbh

#

just dm me if u want their website

#

(if thats allowed)

golden condor
#

Getting this error in #commands ```js
0|index | DiscordAPIError: Missing Access
0|index | at RequestHandler.execute (/home/cxllm/Bots/Corynth/node_modules/discord.js/src/rest/RequestHandler.js:170:25)
0|index | at runMicrotasks (<anonymous>)
0|index | at processTicksAndRejections (internal/process/task_queues.js:97:5) {
0|index | name: 'DiscordAPIError',
0|index | message: 'Missing Access',
0|index | method: 'post',
0|index | path: '/channels/697061184708280350/messages',
0|index | code: 50001,
0|index | httpStatus: 403
0|index | }
0|index | DiscordAPIError: Missing Access
0|index | at RequestHandler.execute (/home/cxllm/Bots/Corynth/node_modules/discord.js/src/rest/RequestHandler.js:170:25)
0|index | at runMicrotasks (<anonymous>)
0|index | at processTicksAndRejections (internal/process/task_queues.js:97:5) {
0|index | name: 'DiscordAPIError',
0|index | message: 'Missing Access',
0|index | method: 'post',
0|index | path: '/channels/265156286406983680/messages',
0|index | code: 50001,
0|index | httpStatus: 403
0|index | }

summer torrent
#

what are you trying to do

digital ibex
#

oh

#

yeah

#

ok, i've sent him the website then

mossy vine
#

pls help wtf

#

i just want to get all attachments sent in a channel

#

and by all i mean all, not just the ones in the first 100 messages

cinder patio
#

That would be API abuse (if you want to fetch ALL messages in the channel)

mossy vine
#

even if i add timeouts so i dont bypass ratelimits?

#

plus we are talking like 500 messages in total

digital ibex
#

hi, if i have an event, how can i make that event work only for that server? like, when a member joins, it sends the message to all servers a welcome channel has been set?

cinder patio
#

I mean, if you fetch every maybe 20-30 seconds then it wouldn't be, also you can fetch max 100 messages, so put 100 instead of 50 so you make less requests

#

Use an if statement Officially lost

mossy vine
#

i know i can fetch 100, forgot to change it back to that after debugging

#

but that still doesnt answer my question mad

cinder patio
#

cache gets console logged before the async function has finished executing

digital ibex
#

what would i put in it?

cinder patio
#

if (guild.id !== someGuildIDYouWantTheEventToBeRestrictedTo) return;

mossy vine
#

right but im getting 2 fetching... logs while the channel has 300 messages

digital ibex
#

kk

mossy vine
#

with 50 and with 100 as the limit

#

so that is not the only issue

#

lmao so adding await fixed everything

digital ibex
#
const guildS = require('../../models/Guild')
const guild = await guildS.findOne({id: message.channel.guild.id})
if(messaage.channel.guild.id !== guild.id) return;
#

u think something like that?

#

i dont think so bc it is looking for the same id?

cinder patio
#

yea

digital ibex
cinder patio
#

messaage.channel.guild.id != guild.id will always return false

digital ibex
#

oh

#

so

ripe lantern
#

does this command work?

    await  bot.send(embed:
        {title: 'oop',
        color: 0xcolor,
        description: 'test'}))```
digital ibex
#
const guildS = require('../../models/Guild')
const guild = await guildS.findOne({id: message.channel.guild.id})
if(!messaage.channel.guild.id !== guild.id) return;```
cinder patio
#

Now you are comparing false to a string

#

What exactly are you trying to do?

digital ibex
#

make a logs command and only send the messages to that channel for that servers moderations not some other random one

cinder patio
#

okay well you are comparing a guild IDs, make sure to compare channel IDs instead

#

where is this code executed? In which event?

digital ibex
#

guildMemberAdd

#

so, would it be like

#
const guildS = require('../../models/Guild')
const guild = await guildS.findOne({id: message.channel.guild.id})
if(message.channel.guild.id === guild.logchan) return;
#

but wouldnt that just send it to every server which has a logs channel?

cinder patio
#

I don't understand why you want to compare the IDs of channels / guilds? You can just send the message to the channel: client.sendMessage(guild.logchan, "...")

#

You want to restrict it to a specific guild? Let's say your bot's guild?

digital ibex
#

yeah

cinder patio
#

ookay then you would compare message.channel.guild.id with the specific ID of the server

digital ibex
#

confusion

#

like

cinder patio
#

example: message.channel.guild.id === "264445053596991498" This checks if the message was sent in DBL for example

digital ibex
#

if i delete a message in this server, and my bot is in this server, it will also send it to my server

#

yeah but i can't hardcode in every server Thonk

cinder patio
#

Uuh depends on how you do it... can you show how you're sending the message

digital ibex
#

ok, look uh

#

before i had my database set up

#

i made a few logs commands

#

and uh

#

they failed because there were logs from other serves coming into my server

#

so, i had to do this js client.on('messageDelete', (message) => { if (message.channel.guild.id !== '650128487511883796') return; client.createMessage('686997585541726264', { embed: { title: 'Message Deleted', color: 0xdb1a1a, author: { name: ` | ${message.channel.guild.name}`, icon_url: message.author.avatarURL }, description: `A message was deleted by ${message.author.mention} in ${message.channel.mention}.`, fields: [ { name: 'Message Content', value: message.content } ], timestamp: new Date() } }); });

#

but again, i can't hard code in every server :/

cinder patio
#

well, if you use client.sendMessage(guild.logchan, "Some message") that will send the message in the guild's logs channel, and only there

digital ibex
#

it won't

#

it sends it to all servers which has a channel for logging

cinder patio
#

yeah... I'm still not sure what your goal is.. isn't that the purpose of a logging channel

ripe lantern
#

what is the author thingy?

digital ibex
#

thats my thingy rn, if i delete a message in server 1, it will send it to the logs channel in server 2

#

sorry if im not explaining it very well, i haven't slept

#

blaine, thats a different langauge

cinder patio
#

No.. client.sendMessage(guild.logchan, "Some message") won't do that, it will send the message in the guild where the message was deleted., unless you have some other code which does what you say

digital ibex
#

i just tried that, my friend joined the server to test and it sent the message in both servers

#

both do have a welcome message set

#

and it sent two different things, the welcome message

#

if i remove this if statement, it'll send every deleted message from every server my bot is in to that channel

ripe lantern
#

how do i put an image into code?

#

like when my bot says something with an image in it

digital ibex
#

blaine, you're best asking in the d.py server

ripe lantern
#

ok

wheat jolt
rare tangle
#

Heya, is there a way to check who upvoted via API?

summer torrent
#

yes

#

which library do you use

clever arch
#

i just updated to discord.js 12.1.1 and it's not working anymore

#

can anyone help

finite bough
#

message.guild.channels.cache.find

clever arch
#

like that

finite bough
#

try it

clever arch
#

it worked i thing now this error

cinder patio
#

member.roles.add

#

Please look at the documentation from now on cause there are a lot of changes https://discord.js.org/#/docs/main/stable/general/welcome

charred jetty
#

let f = "i am trying something..."

I wanna get all the characters after "am" so how can i get that?

summer torrent
#

@charred jetty which lang

digital ibex
#

how would you create a blacklist command?

charred jetty
#

Js

digital ibex
#

if the user is blacklisted, they can't use any commands?

slender thistle
#

Regex

digital ibex
#

aw shit

slender thistle
#

Or find index of "am" in the string and choosr everything after

summer torrent
#

@charred jetty .split("am")[1]

digital ibex
#

ok, im not doing regex

slender thistle
#

I wasn't talking to you

digital ibex
#

oh

#

thank

#

god

slender thistle
digital ibex
#

ok, i've forget making a blacklist command now

#

how would i create variables for a welcome message? like with some bots they have welcome to {server}, {member} would output welcome to dbl, @OfficiallyLost™#3484

round glade
#

member

digital ibex
#

i tried with and uh

#

that was just as a test

round glade
#

ummm

#

it seems like you used a simple string

#

``

cinder patio
#

no

round glade
#

wth

#

why would you need that?

digital ibex
#

ok, here comes some mad regex

#

be ready

cinder patio
#

you don't have to use rejex??

#

regex*

digital ibex
#

thats how it shows

cinder patio
#

string.replace("{memer}", member)

digital ibex
#

oh, ok

#

so

cinder patio
#

Or string.replace(/{memer}/g, member) to match all cases of {member}

digital ibex
#
Message.replace('{member}', member);
Message.replace('{size}', member.guild.members.size);
Message.replace('{username}', member.username);
//etc
``` like that?
#

ok, thats wrong

slender thistle
#

`${member}`

#

honestly

#

String templates ftw

round glade
#

That's literally what i said

#

``
@round glade

#

it seems like you used a simple string
@round glade

slender thistle
#

Let me put my 5 pointless cents in

#

I have a right of word because my role is superior gabCoolSunglasses

round glade
#

and i can't fight you bcz your role is higher

digital ibex
#

i confusion

cinder patio
#

no, they have a welcome message from a database and they want to replace {member} with the member who joined

#

how do template literals help here

elder vine
#

Is it in the guildMemberAdd event?

round glade
#

I didn't read that

elder vine
#

Have you defined member to the arrow function?

digital ibex
#

yeah

round glade
#

¯\_(ツ)_/¯

digital ibex
#

yeah

#

i mean

cinder patio
#

replace doesn't modify the string itself, it returns a new string with the replaced words

digital ibex
#

i don't mind using ${member}

elder vine
#

Then use it?

cinder patio
#

const finalMessage = Message.replace('{member}', member).replace('{size}', member.guild.members.size).replace('{username}', member.username);

digital ibex
#

i did

elder vine
#

What’s the issue then?

#

Did you open and close with these `

digital ibex
#

i just done it like client.createmessage(channel, Message)

#

thats it

elder vine
#

the Message...

elder vine
#

It needs to be inside two `

cinder patio
#

no what

elder vine
#
`${member}`
digital ibex
#

this is literally it

#
module.exports = async (client, message, member) => {
    const guildS = require('../../models/Guild');
    let guild = await guildS.findOne({ id: message.channel.guild.id });
    const channel = guild.welcchan;
    const Message = guild.welcmsg;
    client.createMessage(channel, `${finalMessage}`);
};
#

that my whole guildMemberAdd file

cinder patio
#

and where do you define final messagwe

elder vine
#

Where is finalMessage defined?

digital ibex
#

i was just doing that and i just shown u

#

just saying wot i've got so far

#

im adding it now

cinder patio
#

okay cool

digital ibex
#
module.exports = async (client, message, member) => {
    const guildS = require('../../models/Guild');
    let guild = await guildS.findOne({ id: message.channel.guild.id });
    const channel = guild.welcchan;
    const Message = guild.welcmsg;
    const finalMessage = Message.replace('{member}', member)
        .replace('{size}', member.guild.members.size)
        .replace('{username}', member.username)

    client.createMessage(channel, `${finalMessage}`);
};
``` there is is :D, also uh
quartz kindle
#

btw, how do you call that file?

digital ibex
#

it won't send the message, yeah

#

idk

#

uh

quartz kindle
#

show where you use this file

elder vine
#

How is message defined?

digital ibex
#

client.on(eName, evt.bind(null, client, message));

#

its in my message event

elder vine
#

In the guildMemberAdd event there is no message

digital ibex
#

ik im nesting events

quartz kindle
#

you're what...

elder vine
#

But what message would you got from a member joining?

digital ibex
#

because

elder vine
#

Tf

quartz kindle
#

nesting events is a recipe for disaster

digital ibex
#

okay

#

how do i get the guilds id from member then? :/

#

because

elder vine
digital ibex
#

in eval its just

#

yeah

#

i get an error

#

can't read property of id of undefined

#

so

elder vine
#

Where?

quartz kindle
#

because

#

you're not passing in a member

#

you're passing null, client, message

quartz kindle
#

the member that you receive from the memberAdd event is never sent to your file

digital ibex
#

i am in the file

#

it is

quartz kindle
#

show your memberAdd event

#

the client.on("guildMemberAdd")

digital ibex
#

okay

#
module.exports = async (client, message, member) => { //here
    const guildS = require('../../models/Guild');
    let guild = await guildS.findOne({ id: message.channel.guild.id });
    const channel = guild.welcchan;
    const Message = guild.welcmsg;
    const finalMessage = Message.replace('{member}', member)
        .replace('{size}', member.guild.members.size)
        .replace('{username}', member.username)

    client.createMessage(channel, `${finalMessage}`);
};
quartz kindle
#

no

elder vine
#

No

quartz kindle
#

the client.on("guildMemberAdd")

elder vine
#

Why is message defined there

digital ibex
#

oh uh

quartz kindle
#

not this

digital ibex
#

i don't have that

quartz kindle
#

...

elder vine
#

This is event handler, I guess?

digital ibex
#

yeah

quartz kindle
#

where do you define the event?

elder vine
#

In the filename, I’d guess

digital ibex
#

in my bot.js file

#

lemme get it

quartz kindle
#

show how you define the event, how you get the data from client to pass it to that file

#

that file doesnt work by itself, it needs to be executed by something else

#

where are you executing it? or binding it?

digital ibex
quartz kindle
#

jesus christ WHAT

elder vine
#

Eh...

#

Inside an event??

quartz kindle
#

you're killing you own bot

digital ibex
#

in the messageCreate event uh

#

yeah

elder vine
#

no no no

#

It should be free

digital ibex
#

ik it should be

slender thistle
#

Tim's about to go crazy

elder vine
#

like wth is this

digital ibex
#

but i needed a way to get mesage

#

😳

#

scary

elder vine
#

no

quartz kindle
#

there is no message lol

elder vine
#

Message can’t be defined when there is no message

quartz kindle
#

just... look, im gonna explain to you what your code is doing

elder vine
#

xD

digital ibex
#

ik, when a message gets sent, it sends another message because its in the messag eevent?

regal saddle
#

Dafuq is going on here?

quartz kindle
#
  1. you receive a message
  2. you load all events and connect them to client
  3. you receive another message
  4. you AGAIN load all events and connect them to client AGAIN (you now have 2 copies of ALL events)
  5. repeat the above for EVERY SINGLE MESSAGE you receive
#

in 500 messages you have 500 copies of all events running

digital ibex
#

ok uh

elder vine
#

xD

digital ibex
#

i had the right idea i guess lol?

#

but very smaller

#

version

#

of

#

it

elder vine
#

What?

digital ibex
#

ok uh

#

when i do let guild = await guildS.findOne({ id: member.guild.id }); i get the error: 'can't read property of id of undefined'

#

so, idk what to do

#

apart from nest it

#

ok, i should not have said that

quartz kindle
#

dude

#

events should NEVER be nested, because they have absolutely 0 relationship to each other

#

its useless to nest them anyway

digital ibex
#

okay

#

noted

quartz kindle
#

you will still not have a message object on a guildMemberAdd event even if you put it in the message event

digital ibex
#

okay

#

what can i do about this then?

misty raft
#

Does anyone know if there is an api/npm package or something to post guild count to multiple bot lists?

quartz kindle
#

first, all your events must be defined separately

#

so set your event loader outside of any other code

#

then you need to correctly pass the event arguments in your bind function

digital ibex
#

it was

#

and ok

#

the order was incorrect?

regal saddle
#

Im checking for the Permission Manage Roles for both < Bot and me >
The Role will be add to the User but then this warning comes.

quartz kindle
digital ibex
#

not the command handler

#

the event handler

#

yeah

quartz kindle
#

then it should work if you just put that code outside of the message event, and remove the message arg from it

golden condor
#

How would I use webhooks from an external site

#

without a library

#

Just from any website

quartz kindle
#

if you want to receive webhooks, you need to setup a webserver, like express.js or something

#

then you create the url endpoints to handle the webhooks, and give those websites your urls

vernal sorrel
#

Anyone got advice for what system specs for a new bot should be?

#

Using Kubernetes and don't want to over pay for the specs

#

also weighing up a few options so wanna know if it's even worth it for some

quartz kindle
#

depends on the size of the bot, and how you handle caching

#

and whether you use intents

vernal sorrel
#

we don't cache any more that JDA does, and we won't be using either intent

#

also the size isn't a large factor atm, looking for what i should be aware of when it comes to scaling

limpid leaf
#

Do you guys use libraries when parsing commands?

quartz kindle
#

im not sure about how JDA's caching works, but in general you should expect a few hundred MB of ram per thousand guilds

vernal sorrel
#

using a private one currently which is fairly good with memory usage

#

i'll show my grafana dashboard

limpid leaf
#

Is it hacky to use regex?

quartz kindle
#

not using intents will increase cpu usage, but depending on how JDA uncompresses discord packets, the cpu usage shouldnt be a problem, you can expect about 1-2% cpu usage on idle per thousand guilds

vernal sorrel
#

gotcha

#

and as for memory usage?

quartz kindle
#

as for network requirments, make sure you get an unmetered connection

#

as you can expect several tens of gb per month per thousand guilds (or even hundred gb/month)

vernal sorrel
#

gotcha

#

as for memory usage?

vernal sorrel
#

ah

#

alright, ty haha

#

much appreciated

quartz kindle
#

@limpid leaf depends on what for, its hacky if there are better tools for the job, not hacky if used for the right job

vernal sorrel
#

oh one more thing

#

wdym by "not using intents will increase cpu usage"

quartz kindle
#

are you familiar with discord intents?

vernal sorrel
#

to a certain extent yea

quartz kindle
#

not using them will simply enable ALL intents, so discord will send you everything they got

vernal sorrel
#

oh i see

quartz kindle
#

the worst offender is presence update packets, which will come in hundreds per second depending on user count

#

which does put a strain on cpu to uncompress them in real time

#

intents can be used to disable the events you dont require

vernal sorrel
#

yep gotcha

#

didn't realize the fallback was all though

wide wharf
golden condor
#

if you want to receive webhooks, you need to setup a webserver, like express.js or something
@quartz kindle like when it receives say /webhookexample as a post

clever arch
#

it's turning undefined i can't solve it

elder vine
#

bot is defined right?

clever arch
#

yes

elder vine
#

What version of djs?

clever arch
#

12.1.1

elder vine
#

1 second

clever arch
#

it was working in 11.6

elder vine
#

Yea..

#

You need to add .cache now

#

bot.guilds.cache.size

grizzled raven
#

do you need to apply for intents?

elder vine
#

Yes, I think so.

grizzled raven
#

follow up question, if you disable an event, will it still pop up in raw?

elder vine
#

Ehh, wdym?

clever arch
grizzled raven
#

in v11

clever arch
#

it worked

elder vine
#

Good.

#

You can try and see, TheNoob27?

tender silo
#
module.exports = (client, message) => {

    const Discord = require("discord.js")

    client.on("voiceChannelJoin", (member, channel) => {

    let logger = client.guildSettings.get(message.guild.id,"logs")

    let voiceChannelJoin = client.guildSettings.get(message.guild.id,"voiceChannelJoin")

    if(logger === "null") return;

    if(voiceChannelJoin === ":x:") return;

    const salon = message.guild.channels.cache.get(logger);

    const Embed = new Discord.MessageEmbed()
    .setAuthor("Salon rejoint")
    .setDescription(`Le membre ${member.user.tag}, viens de se connecter dans le salon ${channel.name}.`)
    .setFooter("Agathe par !Zerio.js#7632")
    .setTimestamp()
    .setColor("ORANGE")

    salon.send(Embed) 

    });
}
grizzled raven
#

my bot is in 1800 servers no thanks

tender silo
#

Why the spam bot in the living room ?

grizzled raven
#

uh

elder vine
#

What's the error @tender silo?

tender silo
#

None it just spam in the lounge configured

elder vine
#

Is that an event inside an event?

tender silo
#

Yes

elder vine
#

Why?

tender silo
#
    fs.readdir("./events/", (err, files) => {
    if (err) return console.error(err);
    files.forEach(file => {
        const event = require(`./events/${file}`);
        let eventName = file.split(".")[0];
        console.log(`[⌛️] event ${eventName}, démarré.`);
        client.on(eventName, event.bind(null, client));
    });
    });```
elder vine
#

Ofc it will spam

tender silo
#

I have the voicechanneljoin.js file in the events folder

elder vine
#

Well, why is the event inside the message event?

tender silo
#

How do we get around it ?

#

Hmm ?

elder vine
#
module.exports = (client, message) => {

    const Discord = require("discord.js")

    client.on("voiceChannelJoin", (member, channel) => {
#

This??

#

Wth

tender silo
#

Hm

elder vine
#

What file is this inside?

#

what event?

#

The message.js?

tender silo
#

Voicechanneljoin.js file in the events folder

elder vine
#

Why do you define message then?

#
module.exports = (client, message) => {

    const Discord = require("discord.js")

    client.on("voiceChannelJoin", (member, channel) => {

this must be changed with

const Discord = require("discord.js");
module.exports = (client, member, channel) => {

If I'm correct

tender silo
#

Okay

clever arch
elder vine
#

What's the issue? @clever arch

#

Any errors?

clever arch
#

im in voice channel

#

but bot dont think so

fresh hatch
#

hello, who can work with heroku?

elder vine
#

discord.js version?

clever arch
#

12.1.1 😄

elder vine
#

Oh, right ( I got bad memory) xD

#

Does it have permission to the voice channel?

#

also, VoiceChannelextends GuildChannel

tender silo
#
const Discord = require("discord.js");
module.exports = (client, member, channel) => {

    const Discord = require("discord.js")

    client.on("voiceChannelJoin", (member, channel) => {

    let logger = client.guildSettings.get(member.guild.id,"logs")

    let voiceChannelJoin = client.guildSettings.get(member.guild.id,"voiceChannelJoin")

    if(logger === "null") return;

    if(voiceChannelJoin === ":x:") return;

    const salon = member.guild.channels.cache.get(logger);

    const Embed = new Discord.MessageEmbed()
    .setAuthor("Salon rejoint")
    .setDescription(`Le membre ${member.user.tag}, viens de se connecter dans le salon ${channel.name}.`)
    .setFooter("Agathe par !Zerio.js#7632")
    .setTimestamp()
    .setColor("ORANGE")

    salon.send(Embed) 

    });
}```
#

= spam

elder vine
#

You gotta remove

#

client.on("voiceChannelJoin", (member, channel) => {

#

and }); at the bottom

clever arch
#

yes it have permission

elder vine
#

VoiceChannel extends GuildChannel

grizzled raven
#

the worst offender is presence update packets, which will come in hundreds per second depending on user count
which does put a strain on cpu to uncompress them in real time
@quartz kindle if i use a raw event, will v11 disabledEvents still emit the event?

elder vine
#

Try it and see?

tender silo
#

Thx @elder vine ^^

grizzled raven
#

i cant just try it

elder vine
#

No problem.

clever arch
#

VoiceChannel extends GuildChannel
@elder vine i don't understand should i replace VoiceChannel with GuildChannel :?

elder vine
#

No

clever arch
#

(my english is bad sorry btw)

elder vine
#

gimme 1 sec

#

You can use:
guildMember.voice.channel;

clever arch
#

msg.member.voice.channel i done this and it worked

#

thank you

elder vine
#

No problem :)

scenic nest
#

i need help with lua

#

anybody?

#

know roblox?

quartz hill
#

When we enter another channel and click on this channel again, fixed this message

elder vine
#

What do you mean?

sudden geyser
#

That's an issue with Discord I believe.

quartz kindle
#

@grizzled raven yes

#

@quartz hill this is a bug with discord mobile, but it only happens if the embed has no author field

#

if you add the author field to all embeds it wont happen anymore

quartz hill
#

weird bug

#

.setAuthor() this ?

quartz kindle
#

yes

quartz hill
#

thx so much

grizzled raven
#

oh wow

#

now i dont want to use raw events but i need some form of partials

#

would using raw events have a noticeable change in performace or anything?

cinder patio
#

mmno I don't think so

glad charm
#

Need to do raw events for certain things as because they're not cached they won't get triggered by the normal event emitters.

#

EG: Reactions

grizzled raven
#

yeah that was what i was planning on doin

earnest phoenix
#

Use parials

grizzled raven
#

i cant smh

earnest phoenix
#

why ?

quartz kindle
#

@grizzled raven the event that is emitted by discord will still be emitted as raw

#

the disabledEvents stops discord.js from processing it and emitting its own version

#

ie: "MESSAGE_CREATE" will still be fired by raw, but the "message" event will not

grizzled raven
#

ok yeah

#

so would addinf a listener to the raw event have a noticeable effect?

glad charm
#

No

quartz kindle
#

not performance wise

grizzled raven
#

ok cool

glad charm
#

Unless you decided to sift through each and every single event and emit it

#

I only need it for a couple of things for example.

regal saddle
limpid leaf
#

Anyone having this clunky message embed format when viewing it on your phone?

#

Im using discord.js

grizzled raven
#

ok so in js, you can do this, ```js
let obj = {}
obj["127342015"] = 42 // { "127342015": 42 }

what is the mongo equivalent?
buoyant totem
#

Is it possible to add a "currently playing" embed? Like to get what the person is currently playing and then type it in as an embed?

glad charm
#

With the new Discord privacy update coming out you better hope apply to get verified or you wont get that info anymore.

buoyant totem
#

Ah

#

Thanks

amber fractal
#

@grizzled raven it'd be something like:

<MongoDatabase>.collection(yourCollectionName).insertOne({"12342015":42}) // {_id:xxxxxxxxxxxxx, "12342015":42}

I believe

grizzled raven
#

i forgot to mention

#

i have that object in another object

#

its for lb stuff

#

im just seeing if i should try to use mongo or just use rethink, as i was already going for rethink

amber fractal
#

mongo collections basically work as js objects

grizzled raven
#

oh ok

#

well i'll look into it more when i try it myself

#

just wanted to see if i could get an example as that was the main thing i was wondering how i was gonna do

balmy knoll
#

How can I create a new channel category with discord.js?

elder vine
#

just as normal, but instead of "channel" use "category", I think

balmy knoll
#

Ok

#

i try

earnest phoenix
#

How to make bot leave voice channel if no one on voice channel for more than 5 minutes using voicestateupdate?

#

library: discord.js

sudden geyser
#

on the voice state update, if no members are in the channel, set a timeout (setTimeout) for 5 minutes. If you get a voicestateupdate and that person joined the channel, cancel the timeout (clearTimeout)

balmy knoll
#

Just created a category via bot, which string should I use to insert the id of the category just created in a variable?

amber fractal
#

await the creation then use <Category>.id like a channel

balmy knoll
#

@amber fractal I don't understand. You could send me a little example of the code

amber fractal
#

let category = await (category creation code) then use category.id

balmy knoll
#

@amber fractal I have got an error: Cannote use keyword await outside an async function

amber fractal
#

yeah the function needs to be async

edgy heron
#

how can i make a command in my bot

#
case 'topgg':

message.channel.send("Coming soon");
break;```
sudden geyser
#

Have you not made a command before?

ripe lantern
#

i know how to!

#

wat language you use?

spice pier
#

That’s js

ripe lantern
#

oh

earnest phoenix
#

Is he actually saying he doesn't know how to make the bot say that when he says topgg?

#

If it's that... Then if that's the case... Then the code he showed is correct isn't it?

#

@edgy heron what kind of command are you trying to make?

edgy heron
#

@earnest phoenix check it in ss

#

like luca's botinfo @BOT#2563 command

earnest phoenix
#

@edgy heron oh like a command that shows bot info about the mentioned bot?

edgy heron
#

yah

#

not mentioned bot

#

only for our bot

#

i need to understand the api

#

but i dont know, i need an example

#

then i can do them rest

earnest phoenix
#

Oh like try to fetch info about our bot from top.gg?

edgy heron
#

just show me an example how to get the ID of bot from top.gg API

spice pier
#

Pretty sure there are examples in the doc

edgy heron
#

really?

spice pier
#

Yes

edgy heron
#

i need. cant find

earnest phoenix
#

But idk how to fetch info from the top.gg api tbh lmao

#

I'm wondering that question of yours too @edgy heron

#

Is there a way to see who added a role to a user?

spice pier
#

You have a method called getBot(id)

edgy heron
#
    message.channel.send(bot.id) 
});```
#

right?

spice pier
#

That would return the bot’s id ¯_(ツ)_/

edgy heron
#

😭 wht

#

i will contact later

fallow quiver
#

I have an extremely weird error. My bot has this line of code:

if(msg.includes("shut up meg"/*msg is message.content.toLowerCase()*/) {
  message.channel.send("Yeah, Shut Up Meg!");
}

Whenever the message is typed in chat however, the message is sent multiple times and I get this error in the console:

#

I really don't know what to do

spice pier
#

If you can read the error, it says missing permission. That means your bot can’t send the message

fallow quiver
#

It definatly sent it

#

multiple times

#

it has admin

#

I had to kill it to stop general from getting flooded

blazing portal
#

are you making sure the bot doesn't accept bot's text? aka creating an infinite loop?

fallow quiver
#

Yeah,

spice pier
#

Is your bot responding to itself?

fallow quiver
#

I don't think

blazing portal
#

can you show us how you did that part?

fallow quiver
#
if (message.author.bot && message.author.id != "535499942970785793") {
    if (message.content.startsWith(prefix)) {
        message.channel.send("Shut up Meg")
    }
    return;
}
#

It only accepts one other bot and that is to censor it because it has a bad mouth

blazing portal
#

there is your problem

#

you check if its a bot, then - if it is - you send your response, then return. this response triggers another message event, where again. it checks if its a bot - yes it is, responds with the message etc.

spare goblet
#

It's odd that it throws out that error tho

#

If it has all permissions, I mean

blazing portal
#

yeah, that would suggest there is another problem too

fallow quiver
#

Yeah, that is what is really tripping me up

spare goblet
#

His issue is just logic error

#

mhm

blazing portal
#

lets see if we can figure out the infinite loop and the the other one

fallow quiver
#

I'll refine it and run a test to see if it still gives me the error

#

Ok

blazing portal
#

in your case you would want something like

if(message.author.bot && message.author.id != "535499942970785793") return;

// your commands etc
fallow quiver
#

I fixed the loop

#

And the error magically disappeared

#

I don't understand it

spare goblet
#

Interesting

fallow quiver
#

The world of programming is odd to say the least

spare goblet
#

seems like you found a discord js bug thing

blazing portal
#

indeed weird, as the error did not have anything to do with what we just fixed as far as i can see 😄 but glad it's working now

fallow quiver
#

As long as it isn't giving errors and works ¯_(ツ)_/¯

#

Thanks

grizzled raven
#

thats an api thing

#

the client tried to make the request but the api denied

#

if you client disconnects, should you try to login again?

#

or just terminate the process

spice pier
#

If it disconnects discord will try to resume the session

grizzled raven
#

i mean the disconnect event

#

Emitted when the client's WebSocket disconnects and will no longer attempt to reconnect.

spice pier
#

imo you should restart when that happens

ripe lantern
#

My code wont work

#
@bot.command(pass_conetext=True)
async def test(ctx):
    await message.send(embed)
          {title: 'test'
        color: 0xcolor
        description: 'test'}```
knotty steeple
#

what wont work

ripe lantern
#

the code

knotty steeple
#

also that just doesnt look right

#

even the indents are bad

grizzled raven
#

im sorry what

ripe lantern
#

how do i fix it?

knotty steeple
#

also when u have a problem say what specifically doesnt work instead of just "my code no work"!!!!

#

read the docs

#

thats not how you make an embed

grizzled raven
#

nah read python docs

ripe lantern
#

oh

knotty steeple
#

maybe learn more python

grizzled raven
#

embed is an object you pass into the function

ripe lantern
#

sounds about right

knotty steeple
earnest phoenix
#

Is there a way to see who added a role to a user ?

knotty steeple
#

uh

#

audit log

ripe lantern
#

1.3.3

knotty steeple
#

events

spice pier
#

Or just listen to the event

knotty steeple
#

ok so not latest

#

latest

earnest phoenix
#
if(command === "reseteconomy") {
    await db.delete("coins", message.guild.id)
  }```
#

Why won't this work?
I'm trying to reset all coins

knotty steeple
#

what exactly is db

#

oh yes

earnest phoenix
#

quick

knotty steeple
#

economy without knowledge

#

kek

earnest phoenix
#

...

knotty steeple
#

i dont think thats how it works

earnest phoenix
#

Well laughing about it isn't gonna help

knotty steeple
#

btw that would mean the amount of coins is the id

#

wouldnt it

earnest phoenix
#

I tried deleting the whole database of the server

#

Probably doesn't work like that

knotty steeple
#

and what exactly doesnt work

earnest phoenix
#

I tried deleting the whole database of the server
...

grizzled raven
#

what

#

what do you set coins as

earnest phoenix
#

he asked somthing

#

const coins = new db.table("coins")

grizzled raven
#

i meant

#

how do you set user's coins

earnest phoenix
#

oh

#

let usercoins = coins.fetch(`${message.guild.id}.${message.author.id}`)

true ravine
#

I'm hosting my bot on a vps but I want to be able to send data to my website (which is hosted on glitch [unfortunately]). I'm sure I'm not the only person who wants to do this as many bots put some stats on their websites. If anyone could suggest some ideas of how to achieve this (bonus: send me a useful tutorial/demo) I'd be very grateful. Please ping me with any responses. Thanks!

grizzled raven
earnest phoenix
#

i tried

#

didnt work but no errors

grizzled raven
#

@true ravine you could maybe make a request to the website, like you.glitch.me/stats
then on the glitch project, listen with "/stats"

#

idk how to put it in words but

#

and itay what version of quickdb

cinder patio
#

make them communicate via HTTP

#

Listen for endpoints in the server, make requests to endpoints from the bot

grizzled raven
#

yep that is what i was trying to say

#

my brain lags sometimes

#

unrelated question, is glitch debian or ubuntu

earnest phoenix
#
if(command === "reseteconomy") {
    await db.delete("coins", message.guild.id)
  }```

@earnest phoenix

knotty steeple
#

can you get neofetch on it

#

kek

tough relic
#

How do you call these box where the bot can display an output?

ripe lantern
#

i dont know what im doing wrong here, the message will not send

#
async def test(ctx):
    await message.send("test")```
#

it worked last time

slender thistle
#

ctx

#

not message

ripe lantern
#

ah ok

slender thistle
#

Also pass_context is redundant

golden condor
#

Tryna make a mention prefix in discord.js and nothing I try works

slender thistle
#

Context is always passed starting from d.py 1.0.0

ripe lantern
#

i tried and it still does not work

blazing portal
#

How do you call these box where the bot can display an output?
@tough relic do you mean Embed?

tough relic
#

Yep someone helped me in dms!!

earnest phoenix
#

cough

golden condor
#

Tryna make a mention prefix in discord.js and nothing I try works
Tried a lot of stuff and I am getting stressed about it

grizzled raven
#

man why is everything

ripe lantern
#

my bot still doesent work

true ravine
#

@grizzled raven @cinder patio Thank you for your help, I will look into that 👍

sudden geyser
#

@golden condor do you need help on that, or did you figure it out already? Just check if the content starts with the mention (there will be an ! if the bot has a nickname)

slender thistle
#

Send errors and code if you say your bot doesn't work

golden condor
#

@sudden geyser I have tried

sudden geyser
#

can you show your code

velvet zenith
#

the program u said costs money and i dont have enough money

ripe lantern
#

heres my code so far

#
import asyncio
from discord.ext import commands

bot = commands.Bot(command_prefix = '<')

@bot.event
async def  on_ready():
        print("The bot is ready!!!")
bot=commands.Bot(...)
bot.remove_command("help")

@bot.command(pass_context=True)
async def test(ctx):
    await ctx.send_message("test")```
modest maple
#

no

#

stop following what ever tutorial you are using

#

it is horrifically wrong

ripe lantern
#

okay

#

i cant find anywhere good to learn python

modest maple
#

Dont start by making a discord bot

frail ocean
modest maple
#

they are not beginner friendly

ripe lantern
#

oh

modest maple
#

and like there are hundreds of good places to start learning python...

grizzled raven
#

test

#

oh

#

thought my discord broke

modest maple
#

i mean no

grizzled raven
#

😳

modest maple
#

cuz im not gonna charge people to learn a language

grizzled raven
#

not easy money

slender thistle
#

There's good free tutorials

ripe lantern
#

im not trying to earn money

grizzled raven
#

what

regal saddle
modest maple
#

ignore lukas

grizzled raven
modest maple
tight plinth
#

Ignore the guys above me

regal saddle
tight plinth
#

Except cf

regal saddle
#

Ok, i stop shitposting here sry.

modest maple
#

can we stop with the off-topic here please...

opaque kite
#

Say no to python, js is dashing ;)

modest maple
#

trying to help someone and just gets carried off with shitposting kny_Nezuko_angry

velvet zenith
#

i need help

#

the program u said costs money

fleet chasm
#

📋

tough relic
#

@velvet zenith need help with what?

velvet zenith
#

well

modest maple
#

@velvet zenith what

tough relic
#

you want a free python tutorial?

velvet zenith
#

the program they said to put the code in