#development

1 messages · Page 759 of 1

icy osprey
#

Okay

#

do you know how I can iterate trough client.guilds?

glad charm
#

How so?

#

Have you programmed in js before?

icy osprey
#

yep but nodejs is quite badly documented

#

I use database, cache, github for my bot

peak bloom
#

if a user is a member of two guilds with the bot in it, both guilds will have the user in the member cache

icy osprey
#

but still struggle to do simple things like that

peak bloom
#

adding the user counts from both builds results in that user being counted twice

glad charm
#

True.

peak bloom
#

nodejs is very well documented actually lol

glad charm
#

It is.

icy osprey
#

yeah but checking the users cached is too unconsistent

#

I don't I just type

#

"Javascript print map"

#

I can't find anything

peak bloom
#

that is a really vague search term

glad charm
#

You're trying to iterate over a map

#

Learn forEach or for of loops.

icy osprey
#

search that in java, C#you'll find

peak bloom
#

"js how to loop over map object" will get you plenty of stackoverflow results

#

the docs for discord js collections also have plenty of functions for looping

#

sometimes with examples

icy osprey
#

awesome thanks

#

So I did that

#
  var servers = client.guilds;
  var users = 0;
  for (var key of servers.keys()) {
    users += servers.get(key).members.size;
  }
#

but it didn't fix the problem unfortunatly

glad charm
#

What the

#

Why are you going over the keys

icy osprey
#

servers.get(key)

#

I told you I have no idea how to loop a map

#

I always use array

sudden geyser
#

that's one way, kinda inefficient. If you want the number of guild members, check out <Guild>.memberCount

glad charm
#

^

icy osprey
#

thanks @sudden geyser

glad charm
#
    client.guilds.forEach(g => {
      userCount += g.memberCount;
      channelCount += g.channels.size;
    })``` something else.
icy osprey
#

oh thanks

sudden geyser
#

you can get even shorter if you use reduce HyperAI

glad charm
#

Right

icy osprey
#

Okay I used your code

#

but why the hell do my member count keeps getting higher and higher

#

until I restart the bot

modest maple
#

Do you actually tell it to stop

#

E.g you're not just calling it again and again and again

icy osprey
#

no

#

It's increasing slowly

#

Like 1 user every second

#

when I restart the bot it comes back to right number and starts to increase again slowly

modest maple
#

Hmmm

#

Sounds odd

grizzled ingot
#

s!bammmmm

#

bammm

#

bam

#

bam

icy osprey
#
            var servers = client.guilds;
            var users = 0;
            client.guilds.forEach(g => {
              users += g.memberCount;
            })    
            var uptime = process.uptime();
            tools.sendCatch(channel, eb[lang].getInfoEmbed(users, servers.size, tools.format(uptime)));
#

that's my full code

modest maple
#

Does it stop after a lil bit of time?

icy osprey
#

Nope

#

It keeps increasing slowly

modest maple
#

I have no idea then

#

Saying that

#

I can't iterate over my guilds and add up the members without it bugging df out and maxing to the limit and duping counts

#

-_-

icy osprey
#

The thing is

#

On my dev bot which is on my own server

#

I don't have this problme

modest maple
#

Idk

#

Discord is weird

icy osprey
#

yeah sadcat_2

#

it's at 39579 now

#

it was at 38000 I think when I booted it up

#

what's hapenning inside my bot when I'm coding

#

bugs

#

40 108 yeah

#

I wonder how much it will be tomorrow

shy turret
#

finally

#

i beat everyone who told me to use SQL when i kept using json

#
async function loadConfig() {
  let config1 = fs.readFileSync("config.json").toString().split("} ]");
  loopnum = 0
  done = 0
  config2 = ""
  while (done === 0) {
    if (config1[loopnum]) {
      config2 = config2 + config1[loopnum].toString()
      loopnum = loopnum + 1
    } else {
      done = 1
    }
  }
  fs.writeFile("config.json", config2.toString(), function(err) {
  if (err) throw err;
  });
}
glad charm
#

yeah but why

lapis merlin
vital lark
#

do npm I discordbots-api

#

show the script

scenic kelp
#

(not you btw daluina)

wraith hornet
#

There.

#

Hello guys, I have this big question, I'm dev my roblox game and I want that when someone uses a command in the game appear here on my discord server
Someone can help me with the script, please.

west spoke
#

....

#

ew

#

but fine

#

you would embed a discord bot into your roblox server

#

idk how that shit works so there ya go

#

that's what you would do

#

Webhooks would be more secure than a token, so use that

wraith hornet
#

I know I have to use discord webhooks but I don't know how to script for it, only for msg

west spoke
#

we wont spoonfeed. I'd reccomend researching how to make a discord bot in C/java(/whatever the fuck roblox uses)

stray wasp
#

you'll need to learn how to create web requests

#

post/get/patch/delete etc etc discord webhooks use the post method btw

slender thistle
#

Roblox is written in C++

stray wasp
#

and you script in c# I believe

#

or lua

#

can't remember

slender thistle
#

Script what

stray wasp
#

yeah it's lua

#

to script modes/games

slender thistle
#

Do you mean in Roblox

stray wasp
#

yeah

slender thistle
#

I get it now, I thought you were talking about sending web requests in C#/Lua

stray wasp
#

when I'm talking about scripting I'm meaning like creating modes/games for people to play

#

and I was meaning to say you'd need to learn how to create web requests in lua

slender thistle
#

Thanks for elaborating

stray wasp
#

yes np 🤣

earnest phoenix
#
let balance = db.fetch(`money_${message.author.id}`)
    let bank = 2000;
    
    if(!args.length) {
      
      return message.channel.send(":x: | Please give me a proper item id!")
    } else
    
    
      if(balance < bank) {
             return message.channel.send(":x: | You don't have enough money to buy this item!")
           }
         if(args[0] === "bankacc") {

           let fetched = client.inv.fetch(`inv_${message.author.id}.items.bankacc.name`)
           if(fetched === null) {
             client.inv.set(`inv_${message.author.id}.items.bankacc.name`, "Bank Account")
             client.inv.set(`inv_${message.author.id}.items.bankacc.amount`, 1)
             
             message.channel.send("[NEW] Item `Bank Account` was bought!")
           }
           
           if(fetched === "Bank Account") {
             message.channel.send("Item `Bank Account` was bought!")
             client.inv.add(`inv_${message.author.id}.items.bankacc.amount`, 1)
           }
           
         } else if (args[0] === "rod") {
           let fetched1 = client.inv.fetch(`inv_${message.author.id}.items.fishrod.name`)
           if(fetched1 === null) {
              client.inv.set(`inv_${message.author.id}.items.fishrod.name`, "Fishing Rod")
              client.inv.set(`inv_${message.author.id}.items.fishrod.amount`, 1)
             message.channel.send("[NEW] Item `Fishing Rod` was bought!")
           } 
           if(fetched1 === "Fishing Rod") {
             client.inv.add(`inv_${message.author.id}.items.fishrod.amount`, 1)
             message.channel.send("Item `Fishing Rod` was bought!")
           }
         }
         else {
              message.channel.send(":x: | You have provided an invalid item!")
          
         }

When i buy the 1st item, it works, but when i buy the second item it doesn’t return anything. Why is this happening?

earnest phoenix
#

nvm fixed

wooden lance
#

anyone know how to detect when my bot is disconnected from a vc? (js)

prime cliff
#

Guild.CurrentUser.VoiceChannel will be null

wooden lance
#

thanks

icy osprey
#

Hello guys, would anyone want to explain me how "foreach" "for x in y" and those kind of things work please?

#

like, how to use them to loop trough maps, array

cedar brook
#

uhm

vital lark
#

@icy osprey what language

icy osprey
#

Javascript

vital lark
#

well

icy osprey
#

I don't understand the difference between

#

foreach =>
and
for each x in y

vital lark
#

forEach is just recursiving the array but not really useful for big lengths (>20)

#

for (x in/or y) is a faster & better way to recurisve the array for small and big lengths

broken jay
#

Anyone know online unlimited image hosting free with API (no request limit)?

icy osprey
#

So I should always use for each x in y ?

vital lark
#

you can use whatever

#

I would recommend for loops then Array#forEach

icy osprey
#

This ?
for each (variable in object) {
statement
}

vital lark
#

it's just for (variable in object)

icy osprey
#

okay

#

and also I have a question

vital lark
#

you can do ```js
const array = [];
for (let i = 0; i < array.length; i++) {}

or ```js
const array = [];
for (const arr of array) {}
icy osprey
#

what's the difference between
var i = {};
var i = [];
var i = new Map();
please, I'm not sure to understand

#

thanks for your help btw

vital lark
#

new Map is a map instance

#

[] is an Array

#

{} is an Object

icy osprey
#

ooooh

#

okay thanks

vital lark
#

I would recommend using the MDN for basic JavaScript help

icy osprey
#

Okay thanks

#

weird

#

for each (x in y) {} gives me error

vital lark
#

you don't need each

icy osprey
#

oh okay thanks

vital lark
#

it's just for (x in y)

icy osprey
#

Since that doesn't work for maps

#

I use

for (var entry of map.entries()) {
    var key = entry[0],
        value = entry[1];
    console.log(key + " = " + value);
}
#

Is that a good way to go ?

#

or

mapmap.forEach(variable => {
  console.log(variable);
});
late hill
#

You can remove .entries() and you'll still have the same result

icy osprey
#

thanks

late hill
#

That array of key, value doesn't read that smooth

#

Unless you actually need both the key and value

#

Your code would "look" and read better if you just used the forEach

#

or a for of map.values()/map.keys()

rotund rock
#

de ellos aprendi

slender mountain
#

just wondering, is the ability for bots to use the search engine on discord something that is planned to happen?

icy osprey
#

thanks @late hill

#

I'm trying to improve the code of my bot

#

it's quite a mess haha

vital lark
#

@slender mountain don't think they will

modest maple
#

You could probably make a system

mossy vine
#

how could i shorten this code?

    let cmd = null
    cmdRegex.test(message.content.toLowerCase()) ? cmd = message.content.toLowerCase().slice(2) : cmd = null
    if (cmd === null)
        return```
icy osprey
#

Hello guys, do anyone use MongoDB JS for his bot ?

#

Why do I get empty field when looking for data ?

#

guildCollection.find({}, { projection: { _id: 0, channel: 1 } }).toArray(function (err, result) { });

late hill
#

Your query is just {} so it'll be all documents in that collection, the projection makes it so it'll only display their channel field

#

So the empty objects are most likely documents in your collection that don't have a channel property

icy osprey
#

oh

#

so what should I put in those

#

{channel} ?

late hill
#

What are you trying

icy osprey
#

I want

#

let me take a screen$

#

I have fields like this

#

with channel propertie

#

I want to get only those

late hill
#

There's an $exists operator

icy osprey
#

but how do I use that think

#

They don't explain that on the wiki

late hill
#

should be collection.find({field: {$exists: true}})

#

in which you replace field with channel

icy osprey
#

I'm trying now

late hill
#

But like, it would be a good idea to make collections have a set model for their documents

icy osprey
#

wdym

late hill
#

If the document will have different properties, you might want to put it in a different collection

icy osprey
#

oh okay

#

I don't have a lot of knowledge in database

#

the collection name is the server id

#

and I put everything inside

#

awesome it works, thanks @late hill

late hill
#

@mossy vine You could move the cmdRegex line up and use it as the cmd declaration directly?

#
let cmd = cmdRegex.test(message.content.toLowerCase()) ? message.content.toLowerCase().slice(2) : null
if (cmd === null)
  return```
#

Should do the same thing

quartz kindle
#

why not just if(!cmdRegex.test(message.content.toLowerCase())) return;

#

then proceed with let cmd = message.content.toLowerCase().slice(2);

pearl jasper
#

how to check if a member has a certain role

vital lark
#

library?

blissful scaffold
#

Depending on the library and language it's something like
member.roles.contains(expectedRole)

valid frigate
#

does anyone know a reliable way of calculating the probability that 5 alphanumeric characters (uppercase included ) will be a certain set of characters, for example gFh4K?

mossy vine
#

1 in the total number of possibilities

#

alphanumeric characters would be 26 (lowercase) + 26 (lowercase) + 10 (numbers) = 62

#

there are 5 characters in the string, with 62 possbilities for each character

#

so 62^5

#

1 in 916 million

#

if i can math correctly

slender thistle
#

62^5 = 916132832

barren heath
#

anyone know how to do a GET request to https://reddit.com/r/shiba/hot.json and then get the images in python? (using aiohttp)

valid frigate
#

thanks cyber

slender thistle
#

Any HTTP requests library (requests for sync, aiohttp for async) @barren heath

#

By viewing the JSON that endpoint returns, you would need to iterate over response_json['data']['children'] and access the url key from there

barren heath
#

ok thx

#
#the ".shibapic" command
@client.command(pass_context=True)
async def shiba(ctx):
    embed5 = discord.Embed(title="Shiba", description="test")

    async with aiohttp.ClientSession() as cs:
        async with cs.get('https://www.reddit.com/r/shiba/new.json?sort=hot') as r:
            res = await r.json()
        embed5.set_image(res['data']['children'] [random.randint(0, 25)]['data']['url'])
    await ctx.send(embed=embed5)

Now im getting 2 errors:

  1. Too many positional arguments for method call
  2. Missing mandatory keyword argument 'url' in method call
modest maple
#
  1. set image requests a url not a load of spaces and stuffs in it
#

res['data']['children'] [random.randint(0, 25)]['data']['url'] that entire line is invalid

barren heath
#

oh ok

#

how to fix that .-.

modest maple
#

well first off

#

the " " space will break it as its not actually doing anything

#

second off

#

it wants a string a argument url=

barren heath
#

ok...

slender thistle
#

that space is gonna break it?

earnest phoenix
#

Is it possible to make a list, and if a specific word/number is found in that list sent into a command to respond with something?
(I know it is but I have about 1000 words and It would be useful as a JSON type of list so I don't screw my code)

modest maple
#

yes

#

what lib

#

/ programming language

earnest phoenix
#

javascript

modest maple
#

search up checking if an item is in an array in js

earnest phoenix
#

mostly are based on normal censor-like actions

#

idk if i'll find something useful

modest maple
#

well tbf yh thats what u gotta do

#

in python its just item in List

#

idk about js

#

but the same principle

earnest phoenix
#

Well when you have about 1000 words isnt that easy

#

lol

modest maple
#

how

modest maple
earnest phoenix
#

Yes, that's what basic js censor command uses

#

I want to make a .json list

#

and check from that list

modest maple
#

why a json list

#

a json is just essentially a dictionary

#

youre just comparing a key, if the content has an array its the same principle

#

as its still an array

modest maple
#

yes

slender thistle
#

Unless you make { 1: x, 2: y} where the values are the words

modest maple
#

not a well formed url

earnest phoenix
#

whats does that mean

modest maple
#

means ur url is wrong

earnest phoenix
#

"redirect_uri": "https://discordapp.com/api/oauth2/authorize?client_id=660198591264194581&permissions=8&scope=bot"

are Your Sure about that?
@modest maple

slender thistle
#

Why would redirect_uri be undefined there

modest maple
#

gives you

#

redirect_uri    
0    "Not a well formed URL."````
earnest phoenix
#

give me a "Well Formed URL"

modest maple
#

no?

earnest phoenix
#

Why

modest maple
#

a bad formed url means

#

you have screwed up the layout of the url

#

aka

#

youre making an invalid request

earnest phoenix
#

Wtf

slender thistle
#

Fix redirect_uri

#

ez

earnest phoenix
#

how xD

slender thistle
#

It's literally undefined

modest maple
#

xD

#

i noticed that

#

uri

slender thistle
#

Make it any well formed URL

modest maple
earnest phoenix
#

Wym

modest maple
#

why does your bot need to know my guild list?

earnest phoenix
#

Dashboard

modest maple
#

alright

earnest phoenix
#

I don't check anything

#

With Not Well Formed URL

modest maple
#

have u realised your mistake in that url yet?

earnest phoenix
#

No xD

modest maple
#

read the url out loud

#

hint

#

its a spelling mistake

slender thistle
#

No

earnest phoenix
#

.._url?

slender thistle
#

Chill

#

It's uri

earnest phoenix
#

But whats the Error

modest maple
#

spelling

#

of

#

url

#

is

#

wrong

earnest phoenix
#

Uri

#

Is

#

Right

slender thistle
#

Mind not

modest maple
#

i changed it to url

slender thistle
#

URI is legit

modest maple
#

it worked

slender thistle
#

Google it up ty

modest maple
topaz fjord
#

or like

modest maple
topaz fjord
#

The redirect_uri is undefined

earnest phoenix
#

How would IT be defined?

topaz fjord
#

I'm pretty sure you can't redirect to undefined

modest maple
#

you need url if its undefined

#

not uri

slender thistle
modest maple
#

uri is correct but for redirects

topaz fjord
#

you can literally just out the uri to top.gg if you want it to go back

modest maple
#

hence why

#

url

#

works

#

but uri

#

isnt

slender thistle
#

The param name is ok, the value isn't

thorn vortex
#

hi

earnest phoenix
#

@slender thistle when the value isn't right, HOW WOULD IT BE RIGHT?

slender thistle
#

Well is undefined an actual URL?

modest maple
#

idk why this is still going on

earnest phoenix
#

No @slender thistle

slender thistle
#

So

modest maple
#

if you dont have a redirect url

#

just change uri

#

to url

earnest phoenix
#

i did.

slender thistle
#

you what

#

Why would you change it

modest maple
#

good point

earnest phoenix
#

redirect_uri =/= redirect_url

#

redirect_url is not a recognized parameter

slender thistle
earnest phoenix
#

hence why it literally doesn't matter if it's there of it isn't there

slender thistle
#

redirect_uri param name was ok from the beginning, the value they gave that param is "undefined" instead of an actual URL

earnest phoenix
#

Hey, in a list e.g

Name, List, Ip, Word, Apple

How can I make it so its

'Name', 'List', 'Ip', 'Word', 'Apple'

slender thistle
#

... what?

modest maple
#

what

#

its not EDN

#

it uses 'text' to make it a string

earnest phoenix
#

fix what

#

24 hours

#

use getter methods

#

getDay() getHours() getMinutes() ... on a Date object

#

if you're using js that is

#

I use client.uptime for bot uptime and Math for seconds, minutes, hours and days

#

Wait

#

Got the solution

#
if (hours === 24) hours = 0```
#

is hours not a number?

#

Hours is a number here

sudden geyser
#

^ and what if it goes to 25+ hours

earnest phoenix
#

well your comparing a number to a string

#

@sudden geyser it will loop back to 1 hour

sudden geyser
#

not sure

earnest phoenix
#

client.uptime returns the time that your client has logged in right? so you could use npm, pretty-ms which can format ms

#

also you didn't see what i said, you were comparing a number to a string

#

and hours is not a string

#

oh nvm you edited the code

#

ok..

icy osprey
#

I had a bug which made user count increasing weirdly yesterday for some reason it'sjust gone

#

I did nothing but it's gone

earnest phoenix
#

Cache ?

#

idk why but my bot restarted

snow urchin
#
message.guild.members.forEach(m => {
let db = require("quick.db")
let r = message.guild.roles.find(ro => ro.id === "620986482936512524")
if(!m.roles.has(r)) return;
db.push("bounce.verified", {id: m.user.id, username: m.user.username})
message.channel.send(m.user.username)
})

why did this not do anything? It gave no errors

sudden geyser
#

you're checking if a role object is the key in the roles map

#

You need to use r.id in where you're checking if the member has the role.

snow urchin
#

Ah! Thanks!

earnest phoenix
#

i need r34 apis

#

is this legal?

#

i want r34 api for my bot

#

wa

#

t

snow urchin
#

this is in event for member joining guild:

  let ro = member.guild.roles.find(r => r.id === "620986482936512524")

why do I get cannot read property id of underfined

sudden geyser
#

check if the role exists

snow urchin
#

it does

earnest phoenix
#

@earnest phoenix in NSFW channels yes

snow urchin
#

I just checked, it does exist, this is the id when copied 620986482936512524

#

@sudden geyser

sudden geyser
#

hm, are you sure it's coming from that line? the role would never be undefined

snow urchin
#

it said line 21, and that was on line 21

#

maybe it was the line above

      if(member.user.id.includes(p.id)) {
#

it would be the first id

sudden geyser
#

what is member and p defined as

snow urchin
#
client.on("guildMemberAdd",async member => {

    if (member.guild.id === "551070196958363648") {
      let db = require("quick.db");
      
    let vv = await db.fetch("bounce.verified")
    vv.forEach(p => {
      let obj = JSON.parse(p)
      if(member.id.includes(obj.id)) {
        let ro = member.guild.roles.find(r => r.id === "620986482936512524")
        member.addRole(ro)
      }
  })
})
#
db.fetch("bounce.verified")[0]

Output (Object):

{ id: '589543644378431509', username: 'kakakakaka' }
mossy vine
#

cool

snow urchin
#

@sudden geyser That would be what p is defined as

sudden geyser
#

Hmm, I don't know myself. I'd assume it'd be obj, but it'd not return undefined. Though, is p already an object or are you parsing it again for some reason

snow urchin
#

no, its not, I honestly have no idea what is wrong, and the thing is, the console is saying its the first id

#

Ok I seemed to change something good, I am getting a new error

      let obj = JSON.parse(p)

unexpected o in position 1

#

@sudden geyser

sudden geyser
#

yeah, because p may already be an object. I don't think you need to parse it

snow urchin
#

alright, I will check

#

Ah yes, it has worked! Thanks for your support!

brisk meadow
#

why my bots being offline

#

when I sent verify request

modest maple
#

how df should we know

brisk meadow
#

it make me ad

#

mad*

#

fucking

modest maple
earnest phoenix
#

How do i make this if(command2 !== "check") return; work only if it's !check + something (e.g !check google.com -> Google.com checked not !check -> checked)

#

If it's only !check alone, to not trigger.

sudden geyser
#

check how many args were passed/if there's anything after the command name in the content

lofty hamlet
#

Hi i have problem with my vote system

#

With my shad system

#

My code :

#
    try {
        fetch("LINK WEBHOOKS", {
            method: 'post',
            body: JSON.stringify({
                embeds: [{
                    title: `${bot.users.get(vote.user).username}#${bot.users.get(vote.user).discriminator} (${bot.users.get(vote.user).id}) vote for Akimitsu !`,
                    description: `It can now collect rewards in our games: **?vote ** (Pokemon Part) | **?claim** (RPG Part)\n\nIl peut maintenant récupérer des récompenses dans nos jeux : **?vote** (Partie Pokemon) | **?claim** (Partie RPG)\n\nShard : ${bot.shard.id}`,
                    thumbnail: {
                        url: bot.users.get(vote.user).displayAvatarURL,
                    }
                }]
            }),
            headers: { 'Content-Type': 'application/json' },
        });
        db.set(`hasvote8_${vote.user}`, true)
        db.set(`hasvote9_${vote.user}`, true)
        if (db.get(`MV5_${vote.user}.pseudo`) == null) {
            db.set(`MV5_${vote.user}`, { pseudo: `${bot.users.get(vote.user).username}`, nombre: 0 })
            db.add(`MV5_${vote.user}.nombre`, 1)
        } else {
            db.add(`MV5_${vote.user}.nombre`, 1)
        }
    } catch (e) {}
})

if (bot.shard.id == 1) {
    server.listen(5000, () => {
        console.log("--> DBL opérationnel !")
    });
}```
#

He is in the index.js file and he work just on one shard

modest maple
lofty hamlet
#

On the shard : 1

earnest phoenix
#

ty @sudden geyser

royal herald
#

guys you can help me?

#

pls help

modest maple
#

right

#

firstly

#

give the full error

#

send being undefined

#

is a thing yes

#

but

#

how df do we know whats going wrong unless u send the code and full error

royal herald
#

module.exports = member => {
let guild = member.guild;
member.send('niye gittin?');
guild.defaultChannel.sendMessage(${member.user.username} gitti.);
};

rigid stone
#

Kann mir wehr helfen bitte

royal herald
#

?

rigid stone
#

Bitte 🙏🏻

royal herald
#

wht

modest maple
#

ignoring william

rigid stone
#

Why

modest maple
#

you do know

#

you cant send a message to a guild object right?

rigid stone
#

😕

modest maple
#

you're doing member.guild

royal herald
#

yes

modest maple
#

so assuming its assigning guild as a object

royal herald
#

but it was working normally in 5 mins

modest maple
#

you cant send a message to a guild object

#

what is the command supposed todo

royal herald
#

thats a not command

rigid stone
#

if no dan i'm sorry i need help with a bot you can help me further

royal herald
#

thats gulidmemberremove

modest maple
#

member.send('niye gittin?');

#

youre trying to send a message

#

to what

#

exactly

#

cuz atm ur tryna send it to a guild object not a channel or user

#

wait

#

nvm

#

i was reading the code wrong

royal herald
#

ok

#

umm

#

what is error?

#

it started to happen immediately

modest maple
#

basically saying the property member cant do .send as its undefined

royal herald
#

what can i do

modest maple
#

so some how member is not being defined properly when the command is getting called

royal herald
#

ok,umm

#

what i can do for fix it?

modest maple
#

trying logging what member is

#

if you get an error see what it it thinks member is

#

and trouble shoot ig

#

on why its not being defined

royal herald
#

um dude

#

Can you write properly? strange things in translation

#

@modest maple

#

or edit the code directly

modest maple
#

console.log member

#

check what member is

#

if error

#

look for what might be causing member to be unassigned

royal herald
#

ok

#

thx u

#

@modest maple thx

zealous veldt
#

Anybody know if JSDoc has something for @param'ing arrays and documenting what each element (by position) should be? eg ```js
/**

  • @param {Array} arrayParam
  • @param {String} arrayParam[0] First element should be string
    */
earnest phoenix
#

Does anyone know what this error means?

(node:9524) UnhandledPromiseRejectionWarning: Error: getaddrinfo ENOTFOUND discordapp.com discordapp.com:443
  at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:67:26)
sudden geyser
#

it means your internet died

west raptor
#

internet issue

earnest phoenix
#

nice

sudden geyser
#

I don't think you can document each element of an array, but you can document what the array may hold

earnest phoenix
#

thanks

west raptor
#

@zealous veldt I don't see why you would want it like that though, why have the first element a string

zealous veldt
#

It's for a command class, where part of the constructor requires an array of aliases, the first of which is the command's name

west raptor
#

oh so it is an array of strings all together?

zealous veldt
#

yeah

#

I just want to document that the first should be the name

west raptor
#

hmm

#

I'm not sure

#

I've never used jsdoc

zealous veldt
#

I could just say that in the @param for the array

#

but that doesn't feel like the best way to do it

quartz kindle
surreal sage
#

can i do string[string2 + string 3]

#

or string[string2][string3]

zealous veldt
#

Hmm

#

@quartz kindle I'll look into that, thanks

quartz kindle
#

@surreal sage thats two completely different things

#

you can do both of them, but they mean different things

#

lets say string2 = "lol"; string3 = "xd"

surreal sage
#

It becomes lolxd ?

quartz kindle
#

string[string2 + string3] = string.lolxd
string[string2][string3] = string.lol.xd

surreal sage
#

i needed the first

lapis merlin
#

,-,

sudden geyser
#

A user does not have a .roles property. You're looking for a guild member.

lapis merlin
#

hmm

earnest phoenix
#

are you using discord.js?

mossy vine
#

message.author.guild.member.roles

#

holy

earnest phoenix
dusky marsh
#

Yeesh

earnest phoenix
#

also message.author doesn't have a .guild property

earnest phoenix
#

i love when this happens

#

since js isn't a typed language you have id- i mean people making up their own properties

mossy vine
#

im not gonna act like ive never done that mmLol

opaque eagle
#

message.author.guild.channels.get(message.channel.id).messages.get(message.id).react("😂")

#

that's what im talking about

summer torrent
#

message.author.guild ??

opaque eagle
#

read above

lofty hamlet
#

How i can make if, if the discord with id XXXX is in the shard ?

sudden geyser
#

this.client.guilds.get(message.channel.guild.id).channels.get(message.channel.id).messages.get(message.id).delete()

@lofty hamlet you mean find what shard a user is in?

radiant jay
knotty steeple
#

wat

empty owl
#

hey

#

im writing like A LOT of code rn

#

most of it same

#

so rn i have a bunch of let values of db.fetch(board_${a})

#

a is basically oneOne - fiveFive

#

i just have like a lot of lets

#

then I want if oneOne-fiveFive === somthing, oneOne-fiveFive = 1

#

the value corresponds

#

is there an easier

#

way

#

what lib

errant quarry
#

eris

empty owl
#

idk

sudden geyser
#

ye that's a good way to get the total

vital lark
#

first

#

why global

#

second yes that is a good way

royal herald
vital lark
#

invalid discord tokwn

royal herald
#

txh

#

@vital lark I wonder why errors?

vital lark
#

send message is deprecated

#

use send instead

royal herald
#

are you sereus?

sudden geyser
#

depends what version you're on, but you should use .send instead

#

the value before .sendMessage is undefined

royal herald
#

I've been trying for a long time.

#

Was it just thim?

wicked badger
#

For Discord.js, I'm trying to get a cached version of client.users.size cause it doesn't display an accurate count. I added this line near the top of my code: let client = new Discord.Client({ fetchAllMember: true }) to get client.users.size to display correctly. It still doesn't work for me, it displays the same number as client.users.size does normally. Anyone have any fixes? (Sorry if I'm not being clear).

sudden geyser
#

I think it's fetchAllMembers (I'd have to check the docs). A much more efficient way of getting the total count is by iterating through all the guilds your bot's in and adding the <Guild>.memberCount together.

wicked badger
#

Oh, I'll try that. Thank you!

mild jolt
#

hey im trying to add reddit to my bot in python. How can i do it?

#

i have most of the praw code but it's cause errors not letting my bot work

#

is it your server

earnest phoenix
#

Yes

mild jolt
#

Copy the OAuth2 link and paste it. It will ask what server

earnest phoenix
#

Shall I add you to it and you do it?

mild jolt
#

i cant its your bot

earnest phoenix
#

Yes I will tell you what to add

#

And give you the role you need

quartz kindle
#

what is the actual problem? when you open the link you cant select your server?

mild jolt
#

I think thats his issue

earnest phoenix
#

@quartz kindle ye

quartz kindle
#

that means you're logged in in the wrong account

#

the app account and website account are not linked, you need to make sure you are logged in with the correct account in the website

#

so logout and login again from the discord website

pliant siren
#

Hi guys

#

Who know how to create application.conf

quartz kindle
#

what is that for? what program/server/framework/etc uses that file?

pliant siren
#

Discord bot

#

:p

quartz kindle
#

discord bots dont have a file like that

#

unless you're using a framework or library that uses it

#

where did you read/watch/hear that you need to create that file?

pliant siren
#

Jagrosh Vortex bot need this file

#

@quartz kindle ```java
Caused by: java.io.FileNotFoundException: application.conf (No such file or directory)

modest maple
#

thatttt

#

that is a very diffrent thing to a regular config

#

that isnt for a bot thats for java

pliant siren
#
at com.typesafe.config.impl.Parseable$ParseableFile.reader(Parseable.java:638)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.open0(Native Method)
quartz kindle
#
I wouldn't recommend it. Self-hosting this bot (running a copy yourself) is not supported, and no help will be provided for editing nor compiling the code in this repository. The source code is provided here for transparency about how the bot's primary features work. If you decide to edit, compile, or use this code in any way, please respect the license```
#

there are no instructions and no help about it

pliant siren
#

How to create this file?

quartz kindle
#

you have to open the source code and see how the application.conf file is used

#

you can create it with any text editor but you have to open the source code to see where this file should be placed and what it should contain

pliant siren
earnest phoenix
#

@quartz kindle I have still won't work I'm on mobile BTW

quartz kindle
#

@pliant siren supposedly in the same folder as the vortex.java file

earnest phoenix
#

Big oof for me

#

<@&265158261945270273>

pliant siren
vital lark
#

why

pliant siren
#

I found only it

vital lark
#

did you ping the web admins

earnest phoenix
#

So I can ask them for help

quartz kindle
#

@earnest phoenix dont ping all mods

earnest phoenix
#

Ok

vital lark
copper cradle
#

why did u fucking ping website administrators

modest maple
#

dont ping the website admins either

#

xD

pliant siren
quartz kindle
#

logout from there

#

and login again

earnest phoenix
#

@modest maple either? I didn't ping two types SMH

quartz kindle
#

then try to open the bot invite link in chrome

#

or safari if iphone w/e

pliant siren
#

@quartz kindle you see my picture?

quartz kindle
#

@pliant siren there are no instructions and the bot creator does not provide help or support for it. you need to study the code yourself and figure it out. im not going to do it for you

#

for example, the config file asks for database username and password

#

for which database?

#

there is a lot of things you need to figure out

#

its not a simple thing

earnest phoenix
#

Thank you @quartz kindle

#

It worked

quartz kindle
#

👍

earnest phoenix
modest maple
#

what

earnest phoenix
#

I'm setting up my server but Tim helped me do this

#

how can i let my bot count down to a specific date?

modest maple
#

ermm

#

just check if date == date you want

surreal sage
#
    if (command === "addbadge") { //Add Badge
        const bannedbadges = require("./nobadge.json")
        let user = message.mentions.users.first()
        if(!user) return message.reply("Hey! You got to specify an user!");
        let badgea = args[1]
        if(!badgea) return message.reply("Hey! You got to specify an badge!");
        if(badgea.includes(bannedbadges.badges)) return message.reply("That Badge isnt allowed!");
        let uppercaseBadge = badgea.toUpperCase()
        let finalBadge = `[${uppercaseBadge}]`
        let userdb = JSON.parse(fs.readFileSync("./database.json", "utf8"));
        let firstBadges = userdb[message.author.id + message.guild.id].inca
        db[message.author.id + message.guild.id] = {
            inca: `${firstBadges}, ${finalBadge}`
        }
        fs.writeFileSync("./database.json", JSON.stringify(db))
        message.reply("I've sent `" + user.tag + "` **" + uppercaseBadge + "`")
        user.send(`Hey! You got **${uppercaseBadge}** in *${message.guild.name}*!`)
    }``` it says "inca" is unedifined
#
    let db = JSON.parse(fs.readFileSync("./database.json", "utf8"));
    if(!db[message.author.id + message.guild.id]) {
        db[message.author.id + message.guild.id] = {
            inca: '[USER]'
        }
    }```
#

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ is on top of the command

vital lark
#

u sure it exists in the database

surreal sage
#

if(!db well

#

idk

vital lark
#

like when you get the instance, it should be { inca: '[USER]' }

#

debug your code every step and find what the problem is

surreal sage
#

how do i

vital lark
#

i would do is console log db and see what it returns

#

and then console log the value ur trying to get

surreal sage
#

well

#

i think it gets it good

#

but at start it does not add the user

#

hello?

#

i have it

#

didnt log

#

i added fs.writefile

#

How to remove something from a json db?

#

like it includes hello, world but i want it to remove hello,

knotty steeple
#

dont use json

#

simple

surreal sage
#

dbl uses json confirmed

knotty steeple
#

what

#

pls use a proper db

knotty steeple
#

are u being serious rn

vital lark
#

that was a joke

knotty steeple
#

exactly

surreal sage
#

oh

copper cradle
surreal sage
#

if you dont want to help me il figure it out by my self

vital lark
#

i mean, there is this magical place called google

surreal sage
#

ik

knotty steeple
#

hey

#

good luck with using json as a db

copper cradle
#

that's the spirit SILENCE

mossy vine
#

would it make sense for me to prepare for sharding if my bot is barely in 500 servers and is growing very slowly?

quartz kindle
#

mine is at 2100 and i still didnt start working on sharding it lol

#

but yeah, the sooner you make it future proof, the better i guess

#

discord recommends sharding at 1500

knotty steeple
#

ok

#

it says that node isnt installed on my pc

#

but i literally just installed it

mossy vine
#

do you have the executable in /bin or /usr/bin or wherever its supposed to be

knotty steeple
#

yes

mossy vine
#

restart ur terminal

knotty steeple
#

already did

mossy vine
#

can you run which node

knotty steeple
#

node not found

mossy vine
#

is it actually in /usr/bin or /bin

knotty steeple
#

the installer does that

mossy vine
#

but can you find the executable there

knotty steeple
#

i dont see it

mild jolt
#

Oh first time coding?

knotty steeple
#

yea not close

versed vapor
#

how do I change the bot's status

quartz kindle
#

@knotty steeple if installing node on linux, install it through nvm (node version manager)

knotty steeple
#

im on macos

quartz kindle
#

ah

knotty steeple
#

i just used the installer on the website

quartz kindle
#

i dont use osx so idk

#

but nvm works in osx too

mossy vine
#

oh youre on osx

#

i have no idea then

knotty steeple
#

wtf

#

i dont even have homebrew now

#

this is what happens when i update

versed vapor
#

how do I change the bot's status?

broken jay
#

@versed vapor what language?

versed vapor
#

python

fluid basin
#

@knotty steeple wait you're not using brew?

knotty steeple
#

i updated macos and now i dont have most of my terminal stuff

fluid basin
#

well you should install brew, most packages are there that you will need imo

#

also never installed node from official installer so idk

#

but it does work fine on brew

earnest phoenix
#

where can I learn banned codes?

earnest phoenix
#

uh

#

banned codes?

west raptor
#

what

earnest phoenix
#

Code for a ban command(maybe?)

split hazel
#

Does Discord Rich Presence support Android? Browser or app/command line

earnest phoenix
#

what

#

do you mean the other way around?

#

@earnest phoenix Code it yourself.

#

that's

#

not what I said

#

I was trying to figure out what "banned codes" mean

modest maple
#

he wasnt asking for ban command code

shy turret
#
<form action="/?" + document.getElementById("text").value>
<input type="submit" value="Submit" />
</form>

this isn't 100% related to discord bots, but how would you do something like this? I'm trying to make a website

zenith orchid
#

What are you trying to do?

shy turret
#

nvm i found out

earnest phoenix
#

I want security code

mossy vine
#

72393

modest maple
#

what

earnest phoenix
#

need security codes

modest maple
#

FOR WHAT

mossy vine
#

92383

#

12712

knotty steeple
#

69420

earnest phoenix
#

Give the man security codes!

modest maple
restive furnace
#

yees, dis is #development not spampost/non-related, if you want then go #memes-and-media (dont spam but you can talk there other than discord related things.

uncut edge
#

How hard is it to make the prefix custom?

restive furnace
#

what lang

uncut edge
#

me bot is perfect and i am afraid to mess it up tbh

#

DJS

restive furnace
#

k its super easy

earnest phoenix
#

integrate a database system and pull the prefix out of the database when you're handling commands

#

for better performance have in memory cache, like a Map

uncut edge
#

hmm

#

so every server id has its own prefix

#

?

earnest phoenix
#

yes

#

exactly

uncut edge
#

gotcha

knotty steeple
#

i remember trying to make custom prefixes

#

all i can say is that it was probably bad

restive furnace
#

depends what language

west raptor
#

I just store a guild with a bunch of settings with prefix being one of them and just check on message ```rs
c.dynamic_prefix(|_, msg: &Message| {
let guild: crate::db::model::Guild = crate::db::get_guild(msg.guild_id.unwrap().0 as i64);

            Some(guild.prefix)
        });```
#

speaking of this, are ids u32 or u64

#

or which would be the best to store it as

mossy vine
#

uh arent they strings by default

#

or am i dumb

west raptor
#

not in rust

mossy vine
#

???

west raptor
#

looks like they u64 though

knotty steeple
#

rust problems™️

west raptor
#

error: literal out of range for `u32` --> src/main.rs:2:21 | 2 | println!("uwu {}", 257521982021566464 as u32); | ^^^^^^^^^^^^^^^^^^ | = note: `#[deny(overflowing_literals)]` on by default

knotty steeple
#

they are then

west raptor
#

@mossy vine anyways, no they're not in rust

uncut edge
#

i am too scared to mess up my bot so i am just gonna start over

west raptor
#

here's the definition for GuildId ```rs
pub struct GuildId(pub u64);

mossy vine
#

whats u64

west raptor
#

unsigned 64bit integer

mossy vine
#

doesnt the discord api send them as snowflakes

#

aka strings

west raptor
#

iirc yes but serenity interupts them as integers

#

because rust can handle it

knotty steeple
#

they probably are u64 tho

mossy vine
#

^

knotty steeple
#

lul i wanna try rust but it seems to 200iq

west raptor
#

yes i know we just figured that out sam :>

knotty steeple
#

wew

uncut edge
#

question

#

how do i make the embed color look like the role color that the bot has

#

?

west raptor
#

d.js?

uncut edge
#

yk what i mean ?

#

yes sir

west raptor
#

ma'am* let me find the docs rq

uncut edge
#

Whoops

#

sorry

west raptor
#

you can get the hex color from the role and use it as the embed color https://discord.js.org/#/docs/main/stable/class/Role?scrollTo=hexColor

uncut edge
#

ty ty ty

late hill
opaque eagle
#

How would I go about debugging this... (node:47603) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 [ManateeClient undefined] listeners added to [ManateeClient]. Use emitter.setMaxListeners() to increase limit

knotty steeple
#

usually that error just means u have too much emitters

opaque eagle
#

I only have 15 events

knotty steeple
#

exactly

#

thats where it is

opaque eagle
#

but it's worked fine for a long time

#

i normally see that error when i have lots of listeners for the same event

knotty steeple
#

nah its just listeners in general

sudden geyser
#

Maybe you just have a lot of listeners, or maybe you have a lot of the same listener (e.g. Message collector). You can see all the listeners under <ManateeClient>._events

knotty steeple
#

i guess

opaque eagle
#

ok

sudden geyser
#

that don't look right.

opaque eagle
knotty steeple
#

so just do what it says then

#

Use emitter.setMaxListeners() to increase limit

sudden geyser
#

yeah, but why is it all undefined and the same

knotty steeple
opaque eagle
#

well they're anonymous

#

no name

onyx patio
#

Hi I've never tried .net core before, is discord.net will be working on windows and linux? thx

opaque eagle
#

could it be because of singletons

#

i feel like they often cause memory leaks for some reason

knotty steeple
#

@onyx patio linux

#

meh

#

windows is the os for c# or .net stuff

onyx patio
#

and?

#

is .net core bad for linux?

earnest phoenix
#

Normally yes

#

lmao what

#

no

#

.net core is built to be crossplatform

#

stop talking nonsense

knotty steeple
#

i wouldnt on linux

onyx patio
#

so what? js?

earnest phoenix
#

.net core is built to bring .net languages to other platforms

#

(c#, vb, f#...)

knotty steeple
#

imagine using f#

earnest phoenix
#

yes

#

we using quantum sharp over here

onyx patio
#

...

earnest phoenix
#

in all, .net core has no trouble running on platforms that aren't windows

#

i ran my bots on linux and am running 2 asp.net core sites which are performing really good

#

m

#

!help

#

=help

#

+help

dusky marsh
earnest phoenix
#

.help

modest maple
#

stop spamming single prefixes and go to #commands altho single prefixes are muted

merry holly
#

🐍

modest maple
#

no

west raptor
#

@merry holly no shitposting here

frail ocean
#

@earnest phoenix ok so, if you want if a value is greater than on equal to or what?

tidal relic
#

He's comparing a string to another string

#

Which is why >= isn't working

feral gorge
#

if(curlvl >= 1000) curlvl = 'MAX'

#

There

frail ocean
#

^

earnest phoenix
#

the types are different though apparently

tidal relic
#

You could parse the "curlvl" as an int or something and check it that way

topaz fjord
#

Wait wtf

#

you're comparing a string to an int

#

seems legit

feral gorge
#

It's a variable

tidal relic
#

Which is why the types are different

feral gorge
#

It can be any

earnest phoenix
#

yeah, how do i not do that? >== isnt a real thing

feral gorge
#

>= is what you use for equal or greater

#

=== is exact, == is equal, <= equal or less than, and ofc= assign

earnest phoenix
#

yeah, but how do i do that, if they're different types? i tried that but it doesn't work

tidal relic
#

Parse the string as an integer

feral gorge
#

If curlvl is a string at the moment of comparison, it need to be converted to integer

topaz fjord
#

what type is curlvl in the if statement

earnest phoenix
#

how do i parse it?

feral gorge
#

parseInt(curlvl)

sudden geyser
#

and the radius!

topaz fjord
#

No need

#

There's a default if you don't pass it

sudden geyser
#

the default is unreliable

feral gorge
#

That assumes curlvl is actually a valid number represented as a string

tidal relic
#

I mean, I would assume that if it can't be parsed, it's already equal to 'MAX'

topaz fjord
#

it's not already equal to max

#

it gets set to max after the if statement

feral gorge
#

if(!isNaN(curlvl) && parseInt(curlvl) >= 1000)

tidal relic
#

Yes

topaz fjord
#

It's something different before the if statement

earnest phoenix
#

ok and i also want to make it so afte reaching max level it'll stop adding xp and whatnot but everytime ive tried doing it with a while loop the level command juist stops working

restive furnace
#

why while loop???

feral gorge
#

I don't trust those fuckers madThoonk

earnest phoenix
#

i dont know how else to do it xD

topaz fjord
#

while loops are fine

restive furnace
#

you just could do whole thingy in if (!lvl.get("lvl") > = 1000)

#

while loops use more ram than that ^

earnest phoenix
#

lemme just send the code quickly, that'll probably help

topaz fjord
#

What do you want to do

#

You want them to stop leveling after a certain point?

earnest phoenix
#

yeah

topaz fjord
#

About the second if statement, add a check to make sure that the level is below 1000

restive furnace
#

add vefore xp[msg.author.id].xp++; if (xp[message.author.id].level >= 1000) return

topaz fjord
#

smh spoon-feed

earnest phoenix
#

so the if before the embed

topaz fjord
#

Yes

restive furnace
#

or make while loop to make your ram usage high :)

feral gorge
#

Am I having some sort of brainlag, or are you moving the goal further away every time? wut

topaz fjord
#

They're not

earnest phoenix
#

Ok i think that all works now then 😁

#

Thank you guys

small prairie
#

<@&304313580025544704>

#

<@&304313580025544704>

west raptor
#

not here

royal herald
#

guys how to make a random thubnail?

modest maple
#

wdym

royal herald
#

i I did it now but it gives an error

modest maple
#

okay

#

error and code?

royal herald
#

wait

#

can ypu wait bro

#

um i cant ss error

#

bro here code

#

@modest maple

#

its a pokemon command

#

this random thub.

modest maple
#

whats the error

royal herald
#

No error, but does not respond to the command

modest maple
#

well thats very diffrent from getting an error with a random thumbnail

#

if its not triggering on the command it has nothing todo with the thumbnail

royal herald
#

yes

sudden geyser
#

you're passing a string

#

remove the quotes so its a normal variable accessing a prop

#

also you said there was an error but you're saying there's no error

modest maple
#

i mean it is still an error but not a logged error

royal herald
#

this is a little error*

#

yes

sudden geyser
#

so just a logical error?

royal herald
#

yes

#

whut?

#

@sudden geyser something strange appeared in the translation. can you say it more smoothly?

modest maple
#

its called a semantic error

#

when you dont crash

royal herald
#

no no

modest maple
#

but dont get the expected result

royal herald
#

"you're passing a string
remove the quotes so its a normal variable accessing a prop
"

#

this

sudden geyser
#

You're passing "poke[Math.floor(Math.random()" as the thumbnail, rather than the actual thumbnail (e.g. https://example.com/...). You need to pass it like accessing the element in the array. Like poke[index] where index is the number you got from the random guess. Either way, it'll be a syntax error if you remove the quotes as that's not proper syntax.

modest maple
#

yh

royal herald
#

thx @sudden geyser

surreal sage
modest maple
#

no emoji spam tnx

uncut edge
#

What is so special about lavalink?

modest maple
#

not much just basically the go to for music systems

uncut edge
#

Am i able to overwrite discord sound quality ?

#

the bit rate ?

#

how is the music quality?

modest maple
#
  1. you cant override the discord sound quality on a VC
  2. quality is G
uncut edge
#

Hmmm

twilit rapids
#

I see that you've joined the voice chat my bot is playing in rn, my bot uses lavalink

uncut edge
#

Ye

twilit rapids
#

But I did modify a great portion of LL and I'm using a custom build

uncut edge
#

but what if the server is not boosted ?

#

O

twilit rapids
#

Bitrates don't matter for bots

uncut edge
#

Gotcha

earnest phoenix
#

lavalink is bloated trash

#

if you get any chance to use lavaplayer, use it

twilit rapids
#

What makes you say that LL is trash

earnest phoenix
#

high ram consumption, it's a webserver with really bad GC, and the error handling is really bad

twilit rapids
#

What is high ram consumption in your option?

earnest phoenix
#

it hit 600mbs for a few guilds when i was experimenting with it

#

10-20 guilds

twilit rapids
#

Because 728MB for 6 connections and 25 active players is not high

earnest phoenix
#

it really is considering that you can go much lower with alternatives

#

doing audio processing natively, i didn't exceed 300mbs on my entire main bot process

#

that is audio and every other trash the bot had

twilit rapids
#

But did you have all the features that LL has

earnest phoenix
#

yes

#

i implemented lavalink-like types

twilit rapids
#

So, all the supported platforms

#

Https linkes and custom files

earnest phoenix
#

yes