#development

1 messages · Page 1667 of 1

opal plank
#

thats what i went for tbh

#

i dont wanna deal with ratelimiting or quotas at all

twilit rapids
#

That's why you have IPv6

#

If you want to use YouTube for playback you'll need it

opal plank
#

probably gonna keep the ipv6 blocks for more useful stuff tbh

#

seems like a waste to use on that

twilit rapids
#

Well multiple applications can use it no?

opal plank
#

indeed, but it seems a bit of a waste rn to put stuff on them yet

#

its not a valid reason per se

twilit rapids
#

What block is it

#

/64?

opal plank
#

the main reason i tell you that is cuz i need to write the proxy for it

#

i think its a 16 or 8 block

#

let me check

twilit rapids
#

/16...?

opal plank
#

usable*

#

the provider doesnt give all ips

twilit rapids
#

But what block can you use?

twilit rapids
#

That's ipv4

opal plank
#

oh, my bad

#

thats what i got

twilit rapids
#

So you have 5 ips v4

opal plank
#

usable, yes, can request more

twilit rapids
#

You won't be able to do much with that

opal plank
#

but i dont have a need for it

twilit rapids
#

Fair I guess

opal plank
#

apart from some sites im hitting annonymously

#

im changing the user agent

#

and some other stuff

#

so far so good

#

but if they catch it, rotating ip's is an option too

twilit rapids
#

I mean yeah but there's only 5

opal plank
#

they're barely catching one

boreal iron
opal plank
#

2 would probably be more than enough

twilit rapids
#

How many active players do you have

opal plank
#

for genshin?

twilit rapids
#

For lavalink...?

#

How many active music players

opal plank
#

oh, its not in production yet

#

im not gonna push it until its thouroughly polished

twilit rapids
#

I see

#

Well on prod you won't get past 10 players per ip

boreal iron
twilit rapids
#

Before the ip is banned by YouTube

opal plank
#

right now theres only 1 active connection

boreal iron
#

For what reason does he actually need multiple addresses?

opal plank
#

me? i dont have a reason to

boreal iron
#

He

opal plank
#

he who?

twilit rapids
#

To not get banned by YouTube

#

With 1500+ concurrent music players

opal plank
#

currently it would scale as is

#

since there are no api calls

#

i set lavalink to pull from local

boreal iron
#

I would guess if they detect a pattern they will actually ban a whole CIDR stack

twilit rapids
#

They ban complete /64 IPv6 blocks yes

boreal iron
#

Well it’s easier to detect and ban the whole prefix you got by your ISP

#

But yeah

opal plank
#

just ban the whole isp

boreal iron
#

No matter how ban is ban

boreal iron
#

I would spam yt the whole day to fuck up all the kids out there

#

Which would be on the same (banned) ISP I am

long copper
#

Hello i have an error in my event handler, can someone help me ? :

const fs = require('fs');

module.exports = (Client, Discord) => {
  const load_dir = dirs => {
    const event_files = fs.readdirSync(`./events/${dirs}`).filter(file => file.endsWith('.js') );

    for (const file of event_files) {
      const event = require(`../events/${dirs}/${file}`);
      const  event_name = file.split('.')[0];
      Client.on(event_name, event.bind(null, Client, Discord))
    }
  }

  ["client", "guild"].forEach(e => load_dir(e))
}

The error code is :

Client.on(event_name, event.bind(null, Client, Discord))

TypeError: event.bind is not a function
zenith terrace
#

your problem is right there

trail jay
earnest phoenix
cinder patio
#

Try lowercase p

#

python

#

If that doesn't do it then add the python executable to PATH

boreal iron
nimble kiln
boreal iron
#

The function or method bind expects event to be an actual function which it isn’t

#

It’s important to watch the data types

#

Try and see the example I mentioned above
Should cause the same error

#

let string = []; string.substring();

tranquil marsh
#

so like you need a specific role to use it

boreal iron
#

By checking if the user actually has the required permission

earnest phoenix
#
    public static void main(String[] args) throws LoginException {
        JDABuilder.createDefault(
        "BOT-TOKEN-13",
        GatewayIntent.GUILD_MEMBERS,
        GatewayIntent.GUILD_MESSAGES
        ).setActivity(Activity.playing("play.linnake.ee"))
        .addEventListeners(new MessageEvent(), new Listener())
        .build();

        // Registreerin Eventid

    }``` if anyone knows JDA, could you tell me what i'm doing wrong? the events aren't registering
quartz kindle
#

did you put that code inside a class that extends an event listener like the docs show?

earnest phoenix
#

is it correct ?

const client = new Discord.Client({ disableRoles: true })```
cinder patio
#

There's no "disableRoles" option in the client constructor

#

so no

earnest phoenix
#

turns out I didn't start the queue for sending a message

#

but now it starts the queue

#

but doesn't send the message

#

this is the class ```java

public class MessageEvent extends ListenerAdapter
{

public void onGuildMessageReceived(@NotNull GuildMessageReceivedEvent event)
{

    super.onGuildMessageReceived(event);

    User user = event.getAuthor();

    if(user.isBot() || event.isWebhookMessage()) {
        return;
    }

    event.getChannel().sendTyping().queue();
    event.getChannel().sendMessage("test");

    String[] args = event.getMessage().getContentRaw().split("\\s+");

    String raw = event.getMessage().getContentRaw();

    if(raw.equalsIgnoreCase("tyra"))
    {
        event.getMessage().delete();
        event.getChannel().sendTyping().queue();
        event.getChannel().sendMessage("Ära ropenda pls");
    }

}

}

earnest phoenix
cinder patio
#

const client = new Discord.Client()

earnest phoenix
#

I want to disable roles

cinder patio
#

What do you mean by "disable roles"

earnest phoenix
#

In say cmd

quartz kindle
#

there is no option to disable roles

#

and disable them how

#

wdym by disabling them

earnest phoenix
#

Like !say Hi @role_mention

#

disableMention?

cinder patio
#

Don't allow any mentions for the message your bot's gonna sned

earnest phoenix
#

Ok

quartz kindle
#

you want to disable role mentions?

earnest phoenix
#

Yes

quartz kindle
#

but keep user mentions?

earnest phoenix
#

I disable everyone and here.But didnt disabled roles

#

disableEveryone is not a thing anymore

earnest phoenix
quartz kindle
#

there is disableMentions and allowedMentions

earnest phoenix
#

Man i am asking how to disable roles

quartz kindle
#

you can try ```js
Discord.Client({
disableMentions: "all",
allowedMentions: {
parse:["users"]
}
})

#

but im not sure

#

also this will be changed completely when discord.js v13 is released

#

another way is to use regex on the message content

#

or a simple replace like this

#

message.content = message.content.replace("<@&", "<")

#

but of course that will show the role id, not the role name. you'd need to get the name by parsing the role id first

royal herald
#

hey,im trying to do npm audit but its not working:

 npm audit 
  
npm ERR! Cannot read property '@discordjs/opus' of undefined

npm ERR! A complete log of this run can be found in:
npm ERR!     /tmp/npm-cache/14.15.2/_logs/2021-03-23T11_35_16_737Z-debug.log
#

and i cant install npm packages

#

and when i install the pacages,it says cannot read property "some pacakge" of undifined 9 hour later when i install it

#

npm init does not work tho

peak bough
#

can someone recommend some good chat ai api's ?

earnest phoenix
#

How to remove messages with bot?

dusky sundial
earnest phoenix
#

node.js

dusky sundial
#

Assuming you're using discord.js, it should just be <Message>.delete()

#

and of course the bot needs the manage messages permissions for it to work

earnest phoenix
#
if(command==='purge'){
        
const amount = args.join(' '); 

if (!amount) return message.reply('You haven\'t given an amount of messages which should be deleted!'); 
if (isNaN(amount)) return message.reply('The amount parameter isn`t a number!'); 

if (amount > 100) return message.reply('You can`t delete more than 100 messages at once!'); 
if (amount < 1) return message.reply('You have to delete at least 1 message!'); 


    message.channel.delete(amount 
);```
#

Is it good?

dusky sundial
#

Did you try it?

royal herald
dusky sundial
earnest phoenix
#

ops

#

So i need to delete the "channel"?

dusky sundial
#

No, you wanted to delete a message right?

earnest phoenix
#

yes

royal herald
#

use ```js
message.channel.bulkDelete()

earnest phoenix
#

oki

#

thx

tulip ledge
#

i'm working on this app and its in JS, it currently uses an API from my own server but when I give out the app to people, people can see the IP of the API and I don't want that is there a way to "hide" the IP?

vivid fulcrum
#

no

#

welcome to the internet

#

why do you want to hide it in the first place

quartz kindle
#

keep the api server side

vivid fulcrum
#

wait what what's the domain

#

oh .info

tulip ledge
#

but how do I talk to the API?

#

if I keep it server side?

quartz kindle
#

user makes request to mywebsite.com/api
your server then makes request to the api's IP address

vivid fulcrum
#

HTTP requests

#

protect the api with CORS, ratelimits and CSRF tokens

tulip ledge
#

ohh

#

alright

#

ty

quartz kindle
#

your server gets the answer from your API, then returns the answer in mywebsite.com/api

earnest phoenix
#

what is the discord role format?

#

@steep grove

#

?

quartz kindle
#

<@&

earnest phoenix
#

thanks

carmine summit
#

how do I make multiple api requests at a time?
like if an api is 500ms average, and I need to make 5 requests, I will need to wait average 2.5seconds
how do I make them run simultaneously to save time?

old cliff
#

hmm

#

use await Promise.all([/*api promises*/])

carmine summit
#

also, the pages of the api is not fixed

#

sometimes it may be 7, 4, 9

old cliff
#

make an array of all api call functions

#

and wrap it arround await Promise.all()

#

maybe that would work

#
let a = fetch('https://google.com/1');
let b = fetch('https://google.com/45');
let c = fetch('https://google.com/69');

let [x,y,z] = await Promise.all([a,b,c]);
carmine summit
#

I think it would not work

#

because the pages of the api is not consistent

old cliff
#

you can add variables

carmine summit
#

it does have on the first page on how many pages it have

#

{pages: 8}

old cliff
#

you can use .map()

carmine summit
#

.map?

old cliff
#

and wrap it around the Promise.all

#

Array#map

#

or use a for loop to make all requests

#

and wrap the array around Promise.all

carmine summit
#

so I need to like have the axios request inside a for loop

#

outside the for loop is a promise.all

old cliff
#

nah like

carmine summit
#

the map?

old cliff
#
let j = [];
for(let i = 10; i>0; i--){
j.push(fetch(`https://example.com/${i}`))
}
let values = await Promise.all(j)
#

maybe something like this

carmine summit
#

oh

old cliff
#

check if it decreases the time

carmine summit
#

where is the new Promise ??

#

oh nvm fetch() is already a promise

#

promises are confusing

quartz kindle
#

if you need the response of the request to figure out the urls of the other requests, then you need to await the first response anyway

#

but if you can calculate all the urls from the start, then you can request from all of them at once

carmine summit
#

so j is like a promise

#

?

quartz kindle
#

an array of promises

carmine summit
#

so the array is full of promises

#

later being an array full of data

quartz kindle
#

yes

carmine summit
#

oh ok

quartz kindle
#

Promise.all() awaits them all and returns an array of all the responses

carmine summit
#

oh ok thanks

quartz kindle
#

if one of them is rejected, all of them will be canceled, and Promise.all will return the error

carmine summit
#

ok thanks, btw when to use new Promise ??

quartz kindle
#

if you want to continue fetching the others even if some of them fail, you can use Promise.allSettled

#

new Promise() creates a new promise

old cliff
#

ok I was not wrong... it runs parallel

quartz kindle
#

you only need it if whatever you're using doesnt already use promises

#

for example if you use a library that works with callbacks

carmine summit
#

oh

quartz kindle
#

you can use new Promise to create a promise from the callback

old cliff
#

I would suggest using node-fetch

carmine summit
#

if you like to make an asynchronus function, synchronus

old cliff
#

it returns promises

carmine summit
#

or the other way around

quartz kindle
#

no, it doesnt turn sync into async

#

it simplifies the use of async

#

for example you can combine a bunch of things inside a single promise

old cliff
#

which will run simultaneously

quartz kindle
#

you cannot make an async function sync

#

but you can make a sync function into async, depending on the situation

old cliff
carmine summit
#

ok

#

I kinda getting the hang of it

#

is promises really this confusing? or is it just me?

old cliff
quartz kindle
#

they are confusing at first, but very easy once you get the hang of them

carmine summit
#

auctions.push(axios(`https://api.hypixel.net/skyblock/auctions?page=${i}`).data.auctions);does this work aswell?

#

because of the .data.auctions

upper cape
#

Hey all im looking for a bot that will show my recent twitch event (bits/subs/raids etc) within my discord does anyone know if there is a bot or how to make this possible? thank you

cinder patio
#

unless you've defined the axios function yourself

carmine summit
#

so id have to promise.all() before I do that?

#

make a for loop to make a new proper array with the data?

crystal wigeon
#

how do i escape usernames with ``

#

or some special characters. its messing with the bot embeds

#

if someone has `` in their username

cinder patio
#
\`
quartz kindle
peak bough
#

can someone tell some good chat bot apis ?

jaunty umbra
#

' '

carmine summit
#

alright

cinder patio
jaunty umbra
#

``

quartz kindle
#

axios returns a promise, you can either resolve it immediately using await, or you can put it somewhere to resolve later,

#

that way you can put multiple promises in an array for example

carmine summit
#

does .then do the same thing as await?

quartz kindle
#

not exactly

carmine summit
#

google said to use .then

twilit geode
#

Just discordjs its going with a bot

quartz kindle
#

.then() gives you the result in a callback, if you want to do something with it that is not related to the rest of the code

#

or if you want to add some post-processing step

upper cape
#

Hey all im looking for a bot that will show my recent twitch event (bits/subs/raids etc) within my discord does anyone know if there is a bot or how to make this possible? thank you

quartz kindle
#

for example if you do ```js
promise1.then()
promise2.then()

carmine summit
#

oh

#

alright

quartz kindle
#

but their values will be returned only inside the then as a callback

cinder patio
#

Both then and async/await serve the same purpose, async/await is just syntax sugar

quartz kindle
#

so you cannot use their values together, nor in the rest of the code

#

their values become fully independent

carmine summit
#

so Id have to promise.all

#

before I get to

#

do the thing

quartz kindle
#

you can only return the value to the current code by using await yes, and you can use Promise.all to await multiple promises at once

river panther
#

hello sir @quartz kindle, remember the reason why my command or event handler wasn't working, it was not because of the unnecessery stuff, it was because i was doing

const prefix = require('../config.json');

in place of

const { prefix } = require('../config.json');

and it took me 3 rewrites and 4 days to find this error out

latent heron
#

Genius move

river panther
#

:)

quartz kindle
#

gj

carmine summit
#

ok why does { }make everything fail?

river panther
quartz kindle
#

{ something } = bla
is the same as
something = bla.something

river panther
#

^

carmine summit
#

oh

carmine summit
#

that is one of the things that are fairly easy to understand but very hard to remember

quartz kindle
#

you will remember it once you start using it

#

the best way to learn and remember something is to try implementing it in your code and see it working

carmine summit
#
auctions.reduce((acc, cur) => {acc.push(cur.data.auctions)}, [])
#

doesnt work?

old cliff
lament rock
#

can't you just use map instead of reduce

carmine summit
#

map is confusing

lament rock
#

auctions.map(cur => cur.data.auctions);

#

What's confusing about that

carmine summit
#

everything

old cliff
#

like this @carmine summit

let data = await Promise.all(auctions);
data = data.map(d => d.data.auctions)
umbral zealot
#

map() is the easiest of the array loop features to understand.

#

(I also have an entry on reduce in there)

carmine summit
#

so you feed it array

#

and it returns array

#

cool

umbral zealot
#

yes, and it's an array of the same size as the input

old cliff
#

yes

#

@umbral zealot thanks for that.... I was confused with reduce

umbral zealot
#

Reduce has confused me in the past too 😄

#

took a while for me to really grasp it

carmine summit
#

once I got the hang of reduce

#

ive been using it like crazy

upper cape
#

Hey can someone help please

carmine summit
#

and I look at my old work and be like

#

why didnt I use reduce before?

near stratus
carmine summit
#

my code is so f'n messy

near stratus
upper cape
carmine summit
#

when to use the second and third argument on .map ???

#

nvm

near stratus
carmine summit
#

what is value?

near stratus
vivid fulcrum
#

um

#

what

pale vessel
#

second argument is the index and third is the original array

vivid fulcrum
#

^

upper cape
sand seal
#

Hi, pls anyone tell me the mute and unmute command for bot. For Discord.js

pale vessel
#

cry is there a way to send an image in memory using DSP

vivid fulcrum
#

you should be able to send a stream

#

sec

pale vessel
#

it wants a file stream

carmine summit
next flint
#

how would i check how many servers my bot is in if im not in some of them?

carmine summit
#

when do you use that?

sand seal
#

Hi, pls anyone tell me the mute and unmute command for bot. For Discord.js

pale vessel
#

you usually don't need it

near stratus
#

@upper cape yagpdb can't (It can do Reddit, yt and Twitter)
I'll do a quick search (wait a minute)

carmine summit
#

then why did they put it there?

pale vessel
#

but if you want to access the original array while using .map() you can do that

carmine summit
#

why cant you just use the original array

carmine summit
#

arr.map(arr)

pale vessel
#

because sometimes you use [1,2,3].map()

upper cape
carmine summit
#

oh

#

alright I get it now

pale vessel
#

i used RespondWithFileAsync

#

that's probably why

carmine summit
#

the bot crashed

#

it cant handle too many promises at once

#

its fast tho

near stratus
#

@upper cape I found one
It's called AprilBot (https://aprilbot.me/)
If you want more you can check https://top.gg/tag/twitch

vivid fulcrum
#

it probably can, you just poorly implemented it

upper cape
near stratus
#

^°^

pale vessel
vivid fulcrum
#

i was talking to cwickks ;p

carmine summit
#

my bot is crashing at this line: auctions = await Promise.all(auctions);

#

help?

vivid fulcrum
#

but anyway any other way of sending a message is deprecated, DiscordMessageBuilder is the way to go

blissful coral
carmine summit
#

well, when I divide the length by two, it started working

vivid fulcrum
#

describe your issue in more detail

#

"crashing" is very broad

#

what crashed? what was the error? where did it occur?

carmine summit
#

I have an array [["a"]["b"]["c"]]

#

how do I make it [a, b, c]

#

it was from a .map()

#
auctions = auctions.map((d) => d.data.auctions.item_name);
carmine summit
cinder patio
upper cape
earnest phoenix
#

How to do that bot write something and after 3 second it write again?

vivid fulcrum
#

send the message, delay for 3000 ms, send message again

pale vessel
#

okay but why

#

god if only i could use rider

slender thistle
#

Why can't you?

pale vessel
#

There's only trial and I ain't paying for shit. Can't apply for GitHub student pack either

slender thistle
#

F

pale vessel
#

HOLY FUCK

#

I'm so fucking done

crimson vapor
#

why

pale vessel
#

Spent an hour trying to fix this shit

#

I'm watching YouTube

dim helm
#
import dbl
import discord
from discord.ext import commands, tasks

import asyncio
import logging


class TopGG(commands.Cog):
    """Handles interactions with the top.gg API"""

    def __init__(self, bot):
        self.bot = bot
        self.token = 'dbl_token' # set this to your DBL token
        self.dblpy = dbl.DBLClient(self.bot, self.token, webhook_path='/dblwebhook', webhook_auth='password', webhook_port=5000)

    # The decorator below will work only on discord.py 1.1.0+
    # In case your discord.py version is below that, you can use self.bot.loop.create_task(self.update_stats())

    @tasks.loop(minutes=30.0)
    async def update_stats(self):
        """This function runs every 30 minutes to automatically update your server count"""
        logger.info('Attempting to post server count')
        try:
            await self.dblpy.post_guild_count()
            logger.info('Posted server count ({})'.format(self.dblpy.guild_count()))
        except Exception as e:
            logger.exception('Failed to post server count\n{}: {}'.format(type(e).__name__, e))

        # if you are not using the tasks extension, put the line below

        await asyncio.sleep(1800)

    @commands.Cog.listener()
    async def on_dbl_vote(self, data):
        logger.info('Received an upvote')
        print(data)

def setup(bot):
    global logger
    logger = logging.getLogger('bot')
    bot.add_cog(TopGG(bot))

How to get which member voted in on_dbl_vote ?

old cliff
#

Anyone suggest me some tensorflow js tutorial

#

not from the official website

#

even videos would work

sudden mortar
#

hi

soft glade
#

Is it possible to setup a web hook to send a message in a channel when someone votes for a bot?

earnest phoenix
#

yes.

tardy hornet
#
  bot.on('guildMemberUpdate', async (oldMember, newMember) => {

  const boost = new Discord.MessageEmbed()
  .setTitle("Boost!")
  .setDescription(newMember.user.username +  `boosted the server :boost:\n ${newMember.user.username} got 50,000 coins!`)
  var boostUsers = db.fetch("boostUsing")
  
  if(boostUsers == null) boostUsers = []
  
  for(var i = 0; i < boostUsers.length; i++){
  
  const boostRole = db.fetch("boostrole_" + boostUsers[i])
  
  const hadRole = oldMember.roles.cache.find(role => role.id === boostRole.id);
  const hasRole = newMember.roles.cache.find(role => role.id === boostRole.id);
  
  if (!hadRole && hasRole) {
  bot.guilds.cache.get(boostUsers[i]).channels.cache.get(await db.fetch("boostchannel_" + boostUsers[i])).send(boost)
  await db.add(`money_${newMember.id}`, 50000)
  console.log("pog")
  }
  
  }
  
  });  

its not consoling it and not sending anything

pale vessel
zenith terrace
tardy hornet
#

ooo i see

#

let me try

zenith terrace
#

theres probably other reasons why its not working KEKW

tardy hornet
#

no now it did

#

just that...

#

5 times E lol

#

@zenith terrace

zenith terrace
tardy hornet
#

nah im good

#

ty tho

#

any idea why it send it 5 times?

zenith terrace
#

as of now no

old cliff
#

@tardy hornet are you running multiple instances?

tulip ledge
#

how do I join 2 arrays? this.auctions.concat(newArray); doesn't work

cinder patio
#

concat returns a new array

#

These are the three main ways:

merged = Array1.concat(Array2); 
merged = [...Array1, ...Array2];
Array1.push(...Array2);
#

First two do not modify the existing arrays

#

@tulip ledge

tulip ledge
#

alr ty

coral palm
#

Anyone understand anything about database?

#

i have some questions

cinder patio
#

ask em

dim helm
tired panther
tired panther
dim helm
#

wdym by your api?

#

I got that link from docs

tired panther
dim helm
#

no I just used python requests to access the given url

tired panther
#

instal the dblpy, it is the easiest solution

cinder patio
#

Just add an Authorization header

#

with your token in it

visual parrot
#

i need help with the reaction role bot please

visual parrot
#

idk i just need help with the reaction roles

coral palm
#

anyone can say what this command does?

dusky sundial
#

You clicked the wrong button

umbral zealot
dusky sundial
#

Yeah, that's true. Still not for help with specific bots though

umbral zealot
#

😄

#

people be confuuuuused

unreal estuary
#

anyone know how to add command categories

cinder patio
# coral palm

Selects two columns from the Produto table, then groups all selected identical columns

feral aspen
#

Any difference between <@! and <@

lament rock
#

I've never seen <@? ever

feral aspen
#

woops

#

I mean <@! and <@

#

Bruh

lament rock
#

the ! means that a member with a nickname was mentioned

cinder patio
#

@cinder patio

#

Hmm

feral aspen
#

@Attitude#4616

#

@Attitude#4616

#

Eh

#

Same thing

vivid fulcrum
feral aspen
#

👍 👍 👍

earnest phoenix
#

\👍

pale vessel
#

@vivid fulcrum do you know a fix for this? tried everything from clearing symbols cache to clearing user data, nothing worked #development message

feral aspen
#
// Mentioning a channel
message.mentions.channels.first();

// Getting a channel name or ID
message.guild.channels.cache.find(c => c.name == args[0]) || message.guild.channels.cache.find(c => c.id == args[0]);

Is getting a channel name or ID correct?

summer torrent
#

use get() for ID search

feral aspen
#

what about for name?

#

is it correct?

#

message.guild.channels.cache.get(channelid);

cinder patio
#

use find for everything else

vivid fulcrum
#

im considering switching to rider

cinder patio
#

That would take ages

lament rock
#

isnt it possible to downgrade vs versions

coral palm
#
SELECT Nome_Armazem, Sum(Quantidade),Tipo_Produto
From Produto, Armazem, Armazem_Produto
Where Armazem.Cod_Armazem=Armazem=_Produto.Cod_Armazem AND Produto.Cod_Produto=Armazem_Produto.Cod_Produto
GROUP BY Nome_Armazem,Tipo_Produto```
#

what this command does?

slender thistle
#

An inconvenient legacy, you could say

#

Though I'm really not sure why it was implemented in the first place

umbral zealot
#

@frosty valve show a screenshot of your .env file, but without all the token written (use a blur or draw over it or whatever)

frosty valve
umbral zealot
#

hold up

#

what's the exact name of that file?

frosty valve
#

process.env

umbral zealot
#

yeah no that's wrong

#

the name of the file should be .env

#

not process.env or config.env or blah.env. .env is not a file extension, it's the full name of the file.

frosty valve
#

that will just error it in VSC

umbral zealot
#

No, it won't.

#

It has to be the exact filename

frosty valve
#

yes it will

umbral zealot
#

You're wrong. Just do it.

#

rename process.env to .env

pale vessel
frosty valve
umbral zealot
old cliff
#

no

umbral zealot
#

I said the FILE NAME

pale vessel
#

you access it using process.env

old cliff
#

the filename

umbral zealot
#

not the code

pale vessel
#

the FILE is .env

umbral zealot
#

the filename

frosty valve
#

Oh

#

ok

#

I am dum

vivid fulcrum
#

i remember repairing once broke my installation even more, yes very stable software

umbral zealot
#

Why is it so hard for people to just follow simple instructions

old cliff
#

idk 🧠

umbral zealot
#

Dunning-Kruger is strong in this one

frosty valve
#

worked now

#

thanks for the help

umbral zealot
feral aspen
#

For ID search, it is for roles as well not only channels?

#

message.guild.roles.cache.get()?

vivid fulcrum
#

for any collection, if you're looking up via id, you should use get()

feral aspen
#

and name is with find()

#

Alright.

vivid fulcrum
#

yup

feral aspen
#

👍

#

👍

earnest phoenix
opal plank
lament rock
#

imagine having an imagination

earnest phoenix
#

:sip_coco:

ornate otter
#

is anyone here good with NVM

#

because it isnt correctly installing any version aboutt nodejs v10

earnest phoenix
#

does jda have attachment upload event

vivid fulcrum
#

it isn't a separate event

#

it's the same message event you use for command handling

#

...since it's a message

earnest phoenix
#

how can I check if there is an attachement though?

#

and get it

lament rock
#

Check the docs to see if there's an attachment property on a Message instance

earnest phoenix
#

yeah saw

#

but why Condition 'event.getMessage().getAttachments() != null' is always 'true'

vivid fulcrum
#

well

pale vessel
#

let's ignore this

vivid fulcrum
#

did you read iz

#

it

#

the list wont be null if there arent any attachments

#

it will be empty

#

returning null lists goes against conventions in any OOP language

restive furnace
#

except C++

slender thistle
#

Null lists meaning empty lists/arrays?

vivid fulcrum
#

nah, the value null

slender thistle
#

Interesting

#

As in like [null, null]?

#

My drunk ass should properly go focus on getting my OS back up instead of this ngl

earnest phoenix
#

yeah got it

#

.isEmpty() method

pale vessel
vivid fulcrum
#

this

slender thistle
#

Oh, that

#

Yeah, makes sense to me bow

#

now ty

pale vessel
#

Well, fuck

#

Repairing did not fix it

#

Goodbye

ornate otter
#

I have an Ubuntu 16.04 VPS but no matter what NVm doesn't seem to install nodejs properly after nodejs v10.0.0 it will get to checksums matched and it will stop, nothing else, and then if u ctrl C out of it u can do node -v and it returns something but npm -v doesn't do anything,

lament rock
#

You should download the latest 10.x version

urban olive
#

anyone have any idea why the bot is returning offline regardless of my presence?

ornate otter
#

I did, but i need a version like v12.18.2

#

or something, it works for other people

#

but not for me

lament rock
dusky sundial
lament rock
#

older versions just don't have a point unless you're working with native deps targeting a specific node ver

ornate otter
#

I have tried

#

but its not working

#

nothing seems to work

#

only old versions work

mint fern
#

what is this development u speak of??

umbral zealot
#
  • install old version
  • install nvm
  • install later version through nvm
  • make newer version default through nvm
  • ???
  • Profit!
ornate otter
#

i installed the old version with NVM

#

cus it was the only version that worked

#

i had already tried newer version

urban olive
umbral zealot
#

are you saying you use nvm install 14.16.0 and then nvm use 14.16.0 you can't use npm???

ornate otter
#

yes

#

but it never fully installs node

#

it just gets to checksums matched

umbral zealot
#

that is extremely strange.

ornate otter
#

and then it never does anything

umbral zealot
#

sounds like your OS be fucked, man.

ornate otter
#

so i tried installing through source code

#

and it just got stuck on one section and didnt move

umbral zealot
#

16.04 is old though, maybe you should update.

#

ubuntu LTS is 20.04. Suffice it to say you're... a little behind

lament rock
#

16.0.4 is old
CVRchanMonka

ornate otter
#

i would if i had that option but its not my VPS it was just the VPS i was given

frosty valve
#

why wouldnt this work?

embed.image.url: Could not interpret "{}" as string.
    at RequestHandler.execute (C:\Users\love_\OneDrive\Skrivbord\FoxGirl bot\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async RequestHandler.push (C:\Users\love_\OneDrive\Skrivbord\FoxGirl bot\node_modules\discord.js\src\rest\RequestHandler.js:39:14) {
  method: 'post',
  path: '/channels/775293747205242920/messages',
  code: 50035,
  httpStatus: 400
}``` (this should work, and the screenshot shows wrong, took wrong screenshot)
dusky sundial
umbral zealot
opal plank
#

@urban olive you probably havent enabled intents

lament rock
#

Ah. Was gonna say. Got very worried

#

what year is it derp

umbral zealot
#

I did say Ubuntu 16.04 , which meant the OS version... and I did say 20.04 in almost the same sentence, there's not much room for interpretation here.

pale vessel
#

16

frosty valve
opal plank
#

isnt that promise based?

lament rock
#

I guess I skimmed over "Ubuntu"

urban olive
tulip ledge
#

Hello, I'm working with an array from an API (the array has about 67000 indexes) but when I do .length on it it only sais 819, I even printed the data to a file and checked and there are definitly more then 67000 indexes

#

Is it possible that js just fucks up with huge arrays?

quartz kindle
#

are there any children? arrays inside arrays? objects?

tulip ledge
#

yes

quartz kindle
#

does the 67k include the children?

dusky sundial
frosty valve
#

yes

tulip ledge
#

no

frosty valve
#

it works

dusky sundial
#

Well, for some reason your image url becomes "{}". I can't tell you why, I'm not experienced with js at all

frosty valve
#

oh, ok

tulip ledge
#

One index looks like this

quartz kindle
#

can you try console.logging some random index bigger than what length says?

tulip ledge
#

and there's 67820 of those

lyric mountain
#

Base64

quartz kindle
#

like console.log(array[50000])

tulip ledge
#

it gave undefined

quartz kindle
#

then the length is correct

#

can you show the code?

tulip ledge
#

but why is there 67820 indexes of it when I post it to the txt file?

#
  async getAuctions(pages) {
    console.log("auctions")
    return new Promise(async(resolve, reject) => {
      console.log(pages)
      const response = await axios.get(`https://api.hypixel.net/skyblock/auctions?key=${this.apiKeys[this.currentIndex]}&page=67`);
      this.calls++;
      if (this.calls > 55) {
        this.currentIndex = this.currentIndex > this.apiKeys.length ? 0 : this.currentIndex + 1;
        this.calls = 0;
      }
      let data = response.data;

      if (!response || !data || !data.success) reject("There was no data.")
      else {
        fs.writeFile("data.txt", JSON.stringify(data), () => {})
        let auctions = data.auctions;
        console.log(Object.keys(data))
        console.log(data.auctions[2000])
        console.log("length2", auctions.length)
        let newArray = auctions.filter(auc => {
          return auc.bin && !auc.claimed && ["RARE", "EPIC", "LEGENDARY", "MYTHIC"].includes(auc.tier) && auc.start + 24 * 60 * 60 * 1000 < Date.now();
        })
        this.auctions = this.auctions.concat(newArray);
      };
      //}
      resolve(true);
    });
  }
lyric mountain
unreal estuary
#

apparently brython is a thing

tulip ledge
#

data.auctions.length

unreal estuary
#

client side python

lyric mountain
#

That's char length probably

tulip ledge
#

Do you want me to upload the txt file?

#
{"success":true,"page":67,"totalPages":68,"totalAuctions":68131,"lastUpdated":1616523140403,"auctions":[...]}
#

what the API returns

#

total auctions is always equal to the indexes in auctions

lyric mountain
#

There are pages

earnest phoenix
#

im new how i code a bot on chromebook

tulip ledge
#

Yes I know

#

pages is how many pages are shown

#

not what page you're on

quartz kindle
#

you are on page 67

#

you only have the data for page 67

lyric mountain
#

Pages are chunks of the response

tulip ledge
#
    public static void main(String[] args) {
        ExampleUtil.API.getSkyBlockAuctions(0).whenComplete((page0, throwable) -> {
            if (throwable != null) {
                throwable.printStackTrace();
                System.exit(0);
                return;
            }

            System.out.println(page0);
            if (page0.hasNextPage()) {
                ExampleUtil.API.getSkyBlockAuctions(page0.getPage() + 1).whenComplete(ExampleUtil.getTestConsumer());
            } else {
                System.exit(0);
            }
        });
        ExampleUtil.await();
    }
lyric mountain
#

Imagine returning 68k entries

tulip ledge
#

This is the example given

#

From hypixel

lyric mountain
#

Would kill their api

tired panther
#

Tim, My question in Astro bot support ablobgrimace

tulip ledge
#

So why

#

Does every page start with the same uuid?

#

aka the same auction

boreal iron
lyric mountain
#

Show that uuid

tulip ledge
#

Ohhh nvm I had pages in the url

#

and not page

#

my bad

unreal estuary
#

like nodejs or visual studio code

earnest phoenix
#

I got a pc but its broken

unreal estuary
#

if you can't u can use glitch.com to code nodejs apps

#

but i wouldnt use it for hosting them

earnest phoenix
#

mk

lyric mountain
#

He can

earnest phoenix
#

ok

#

but im new at this stuff

lyric mountain
#

There are tutos for node on cbook

unreal estuary
#

what coding language do u wanna use first?

lyric mountain
#

For node

earnest phoenix
#

I know java

#

thats it

lyric mountain
#

Cool, java dude

unreal estuary
#

can u code discord bots with java lol idk

earnest phoenix
#

but not the best

lyric mountain
#

Obviously

#

Wait

#

No, it's one of tge best actually

earnest phoenix
#

I can only reall code like double exp role

#

thats it

unreal estuary
#

i only know javascript and bit of python

lyric mountain
#

If a language can make http requests then you can make bots

earnest phoenix
#

oh python I know preety good

#

but i preffer java

lyric mountain
#

Just download an ide like intellij and your preferred jdk

earnest phoenix
#

ok

#

but I still dont know how to keep my bot online without being on the bots account

lyric mountain
#

You'll need a vps

unreal estuary
#

wdym being on the bots acc

earnest phoenix
#

like I cant keep it online

solemn latch
#

you need a server to keep it up

earnest phoenix
#

I have to be online for the bot to be online

solemn latch
#

something to host it

unreal estuary
#

heroku?

lyric mountain
#

Heroku for java is a nono

unreal estuary
#

yeah idk peepoShrug

lyric mountain
#

Well, you CAN, but not for too long

unreal estuary
#

what should they use for java

lyric mountain
#

That's the thing

#

Google cloud has that free tier

earnest phoenix
#

gtg

lyric mountain
#

But I wouldn't worry about keeping it online 24/7 before you have an actual bot coded

unreal estuary
#

yeah

#

bye

sonic lodge
#

so i have this code, which sends a text message, and then edits it to an embed

const message = await channel.send('test');
message.edit({embed: {title: 'test embed'}});
#

the result ends up being

lyric mountain
#

Yep

sonic lodge
#

how do i edit the message and get rid of the old text?

vivid fulcrum
#

set the content to null

#

or an empty string

#

i forgot which one

#

or either

#

idk test it

lyric mountain
#

Empty ig

#

But js is so "whatever" that a null might be parsed to empty anyway

sonic lodge
#

ok will test

#

cool, it works! thanks

earnest phoenix
#

My bot is has 5 shards, and sends guild join messages multiple times, and before you say it's being run multiple times, it isn't.

Any help?

#

Sometimes, it posts it once, but sometimes it posts it like 10 times.

#

Hello, in discord.js, how to check if args[2] is a mentionned role please? thx u

boreal iron
#

Using regex for example or check if the message has any mentions at all, making sure argument[1] isn't a mention

royal herald
#
const persence = require("./src/client/persence.js");
var the = new persence()

TypeError: persence is not a constructor (its constructor tho)

opal plank
#

clearly not

#

otherwise it wouldnt give the error

royal herald
#

can you come dm?

opal plank
#

no, keep support here

boreal iron
#

imagine to assign 100GiB of disk space to a VM instead of wanted 1000GiB, just because you forgot a fucking 0,
building up the server, install roles, apps and libs,
start to generate a database which will require ~ 800GiB of the storage,
see the generation process stopped after 2 days,
accessing the logs and notice the disk full error,
can't stop the VM to resize the disk because of qemu limits,
rebooting the physical maschine which fucked up the qemu vhost config somehow,
need to fucking delete the whole VM and start from scratch again

That's what I would call learning by doing just because missing a fucking 0 and didn't check it twice before hitting continue

facepalm

opal plank
#

try module.exports = your Class

royal herald
#

it is*

opal plank
#

ugh fine

#

dm me

oak roost
#

whats best free way to host

opal plank
#

host it yourself

earnest phoenix
#

My bot is has 5 shards, and sends guild join messages multiple times, and before you say it's being run multiple times, it isn't.
Sometimes, it posts it once, but sometimes it posts it like 10 times.

Any help?

opal plank
#

the rest has too many catches

#

heroku or glitch are your best bets, but both are limited

oak roost
opal plank
#

heroku or glitch, but they are shit

#

if you have a credit card you can go aws for a year or f1 micro from google

opal plank
earnest phoenix
#

How does one check such thing?

opal plank
#

you can receive GUILD_CREATE multiple times, thats hhighly due to either your shard restarting (and hence recieveing it again) or the guild coming back from an outtage state

#

detritus has a .fromUnavaibale setting on it, i assume your lib should have it too

#

this means this event was triggered by an outtage, not my a new guild joining

earnest phoenix
#
                    "id INTEGER PRIMARY KEY AUTOINCREMENT," +
                    "user_id VARCHAR(20) NOT NULL," +
                    "coins INTEGER" + ");");```
What's wrong with this?
it's SQLite
opal plank
earnest phoenix
#

Cheers

opal plank
earnest phoenix
#

this is what IDE shows me

blissful coral
#

What is that

boreal iron
#

You don't end an SQL query with ;

#

That has to be done on the command line only

blissful coral
#

this

boreal iron
#

or command prompt

opal plank
#

Not sure why u creating tables on the go too

blissful coral
#

yeah

opal plank
#

Unless you planning for a deployment bot, you shouldnt even need to create /delete tables on a whimp

blissful coral
#

Should be able to just do it in the command line mysql interface and cal it a dya

opal plank
#

@homosapien#2807

#

Dya = do yit yaself

blissful coral
#

hm

opal plank
#

Im horrible at jokes

#

Iknow

blissful coral
#

yeahhhh

#

bad joke

#

Not me waiting for a response from github that I should get in the next few hours

earnest phoenix
#

Well, all SQL should end with ; but some libs do it for you

#

Like quickDB, Mongo...

opal plank
#

QuickDB isnt a db

earnest phoenix
#

(The drivers do, not the command lines)

blissful coral
#

mongo isn't sql

#

lul

boreal iron
#

Nope they do not unless in command line

blissful coral
#

or am I dumn

#

dumb*

earnest phoenix
#

well

#

mongo does use sql syntax

cinder patio
#

you aren't

earnest phoenix
#

just diffrent

cinder patio
#

mongo does not

opal plank
#

but quickDB isnt a db

cinder patio
#

no

#

mongoDB uses a very different syntax

earnest phoenix
#

Yes, what I said.

boreal iron
#

it's document based, which has nothing to do with sql actually

#

completely different engines

cinder patio
opal plank
#

also quickDB isnt a db

blissful coral
#

3rd time is the charm

opal plank
#

indeed

#

just making sure people dont use that garbage

cinder patio
#

also quickDB isn't a db

opal plank
#

there ya go

#

together, united!

#

against json and quick db's!

boreal iron
#

lmao

slender thistle
#

quickdb isn't directly a database

#

It's a wrapper for one, so technically speaking you can kinda consider it one

opal plank
#

i meant as in: its so shit it cant even be considered one, even if it was

boreal iron
opal plank
#

detritus

slender thistle
#

just a really abstracted version of one

cinder patio
#

ORM is the word

opal plank
#

shiv

#

come closer

cinder patio
#

but a shitty one

opal plank
#

so i can whisper to you

#

its shit

cinder patio
#

The creator of quick.db is a mod in this server I think

#

I don't know who tho

tired panther
#

Which libary is the fastest and network/rma efficent lib for mongodb?

cinder patio
#

mongodb

#

the official driver

tired panther
#
    await client.connect();
    const database = client.db('sample_mflix');
    const movies = database.collection('movies');
    // Query for a movie that has the title 'Back to the Future'
    const query = { title: 'Back to the Future' };
    const movie = await movies.findOne(query);
``` the findOne, does it fetch all? I mean if it index on the mongodb server?
blissful coral
#

wdym by fetch all?

#

all results?

tired panther
#

how to measure the network usgage?

blissful coral
#

It doesn't have a built in one with the mongoose lib so you have to do it yourself

blissful coral
#

Yes

cinder patio
#

You should look at the driver's docs

blissful coral
#

.find()

cinder iron
#
from discord.ext import commands
client = commands.Bot(command_prefix="prefix")

@client.event
async def on_ready():
  print("Bot Connected")
@client.event 
async def on_message(message):
    if message.author.id == 712027036511633429:
        await message.delete()```
I need my bot to turn on and do the message so basically I need to add my token in somewhere which I will hide but in which line should I put my token in
tired panther
cinder patio
#

Indexes are always in the mongodb server

#

your server only makes the requests

blissful coral
#
const query = { title: 'Back to the Future' };
    const movie = await movies.find(query);
console.log(movie) //Returns array of movies found
manic root
#

Whats the capital protocol of the dedicated process? I keep getting a error that says that it read unusable memory

cinder patio
#

what

blissful coral
#

what does that mean

manic root
#

I think my Linux install has terminalated early

earnest phoenix
#

jebać naleśnika

craggy pine
manic root
#

Or the memory has executed a harmful task

blissful coral
#

That still doesn't help

#

What language, what function, what lib

manic root
#

I tried to do ls in a Linux terminal

#

On a vps

#

How do I get them to fix the install, if thats the probelm

unreal token
#

TypeError: Cannot read property 'cmdPrefix' of undefined

I get this error each time and my bot shuts down when I first run k!(default prefix). But when i restart it the server gets cached in the db and the bot works w default prefix. How do i make it so that it doesnt shut down and just goes to default prefix unless setprefix is run..

#

mysql btw

manic root
#

console.log(result)

#

And see if you can find cmdPrefix

tired panther
#

Whats the max find() limit on mongodb?

unreal token
#

alright

tired panther
#

isnt it result.cmdPrefix?

manic root
#

I think my sql gives you an array

#

Strangely

earnest phoenix
unreal token
#

[]

#

o ill try that ty

unreal token
earnest phoenix
#

👍

manic root
#

It makes me sad that old versions of node don't have let var = value ?? value

earnest phoenix
#

Nullish coalencing (??) and the optional chaining (?.) operators are only available in Node.js v14 and higher, it's not a bad thing since Node.js v14 is now the stable version (LTS)

manic root
#

Oh ok

earnest phoenix
#

Repl uses v12

manic root
#

Ohhh

thorn nexus
#

is it possible with js and canvas to overlay a static png image on a gif?

earnest phoenix
#

yes

#

But you need gifencoder

thorn nexus
#

Thanks

crystal wigeon
#
\`

@cinder patio I can't add this while putting it in \${author.username} this will throw an error right?

#

Lul

#

In js, it'll throw an error I think

slender dove
#

Hey, question how long does it take to approve my bot on dashboard?

crystal wigeon
#

I tried user \username\ before

dusky sundial
crystal wigeon
#

This dude had `` in his username

#

And the embed legit showed all the emoji ids

tired panther
heavy marsh
#

in d.js v12
I have a sharing manger let say in x.js
And my bot file is v.js
And I have events on an event folder

So on event ready ...
I want to run a special something lets say
I want to check if all the shards are ready before running this.

How can I check this?

unreal estuary
#

ok help

#

it wont let me do a command with a number?

tame kestrel
#

Idk about python specifically but usually symbols can’t start with a number in a bunch of other languages

#

I would assume python is the same

ripe shadow
modest maple
#

thats a syntax rules

#

with any language

#

you cannot have a number starting the name

unreal estuary
#

i fixed it

#

its good guys

ripe shadow
#

Ok

opal plank
boreal iron
#

There’re only experts in here KEKW

opal plank
#

"experts"

boreal iron
#

and Erwin

opal plank
boreal iron
#

Sorry, I do need this once a day

boreal iron
#

lmao

opal plank
#

np

#

next customer!

sand seal
#

Can anyone pls tell me the mute and unmute command

lyric mountain
#

yes, s!mute @user

#

that's the mute for my bot KEKW

small tangle
#

So maybe one of you guys have a good idea AlpakaHappy so i want to refactor my emotes into variables, because most of the bot messages contains them and the whole string with emotename and id is so long, but i didnt came up with a good implementation. i thought about enums or maybe a map but i didnt turned out to be actually shorter. (so im coding in java)

vivid fulcrum
#

enum would be the way to go

small tangle
#
public enum Emotes {
    APPROVE("![GreenTick](https://cdn.discordapp.com/emojis/782229268914372609.webp?size=128 "GreenTick")"),
    DECLINE("![RedCross](https://cdn.discordapp.com/emojis/782229279312314368.webp?size=128 "RedCross")");

    private final String emoteID;

    Emotes(String emoteID) {
        this.emoteID = emoteID;
    }

    public String getEmote() {
        return emoteID;
    }
}
#

so that was my implementation

#

but i mean the call itself is Emotes.APPROVE.getEmote() which isnt really shorter than just typing the String, could be there a better way?

vivid fulcrum
#

you can override the toString method to return the emoteID

#

that'll help you omit the last chained getter

#

so you can just use Emotes.APPROVE

small tangle
#

oh nice, because thats what i want to achieve, thanks ill look into that

lyric mountain
#

like cry said

small tangle
#
if (args.isEmpty() || args.size() < 2) {
    channel.sendMessage(Emote.DECLINE + " Missing arguments").queue();
    return;
}

Yay now thats better, thanks AlpakaHappy

vivid fulcrum
#

i keep forgetting java doesn't have string interpolation

#

c# superior mmLol

small tangle
#

yeah i miss that :c

#

im coding in c# at work and its smooth

#

i mean i could use String.format with %s and all that shit but thats not really better

lyric mountain
#

foreach

#

your problem starts there

sudden geyser
#

String.format 🚪 🚶‍♀️

opal plank
#

you should NOT do this at all

#

this is privacy breach my dude

#

why the heck you creating invites in all ur guilds?

lyric mountain
somber shoal
#

how do i vote for dankmemer

#

im new

lyric mountain
#

go to its page in top.gg and click "vote"

sudden geyser
somber shoal
#

okay thank you

#

thank you :)))

pseudo phoenix
#

What can I do for my send notification of tw i don't know how?

vivid fulcrum
#

what

blissful coral
#

Yk

#

TS is great

#

Don't get me wrong

#

But sometimes the things it yells at me about

#

I swear if it makes me install another types into my dev depends

carmine summit
#

how do I copy text by just clicking a link?

#

just like hastebin

#

but it automatically copies to clipboard once you enter the site

earnest phoenix
marble juniper
#

anyone know how I can merge 2 interfaces in typescript

#

I have an imported interface that I wanna merge with mine

#

idk how to

#

lol

opal plank
old cliff
#

@marble juniper ^

earnest phoenix
#

But it happens with every server in shard 0

#

along with commands

marble juniper
#

what about

#

an interface that is imported

earnest phoenix
#

when a command is used, it registers it multiple times.

marble juniper
#

I get this doe

#

lol

#

I need to merge an import decleration

#

with the local one

#

not a local one with a local one

old cliff
#

Try extends... I have never used ts tho

marble juniper
#

extends doesn't do much

#

lol

#

I think im gonna take a different approach then

old cliff
#

@marble juniper

smoky quartz
#

fun problem with my bot

#

i cant change its name or pfp through the dev portal

#

it just doesnt update and i dont see a way to do it in the docs so is there a way

old cliff
#

Thats not possible

pale vessel
#

it is

smoky quartz
#

wym not possible

#

gotta be a way to change the name

#

cos i changed its profile pic in the dev portal like a month ago and it still hasnt updated

old cliff
#

Try again

smoky quartz
#

ive done it several times over a month