#development

1 messages · Page 1240 of 1

sudden geyser
#

Yes, but there are better ways to do it.

#

You could use .reduce on the collection.

earnest phoenix
#

also avoid forEach whenever you can, super slow compared to native for looping

worn badge
#

forEach was the only way i knew to do this haha

#

so it returned 147524 members, which seems unreal...

earnest phoenix
#

is the bot in here

worn badge
#

oh

#

yes

#

it is

earnest phoenix
#

then it's accurate

worn badge
#

right, ty

#

would this also work? (found it online)
<client>.guilds.cache.reduce((a, g) => a + g.memberCount, 0)

sudden geyser
#

Try it and see, assuming it will.

hasty mulch
#

How do I change the topic of a channel with Python via ctx?

worn badge
#

would this also work? (found it online)
<client>.guilds.cache.reduce((a, g) => a + g.memberCount, 0)
it returned a really similar number, so I'm guessing it worked! ty

sudden geyser
#

Use <TextChannel>.edit() with a kwarg of topic equal to type str.

hasty mulch
#

ctx.TextChannel.edit()

#

?

sudden geyser
#

no

#

do you want to edit the channel the message was sent in (hence "ctx" -> "context")

hasty mulch
#

Uh-huh

sudden geyser
#

Then use ctx.channel to get the channel

hasty mulch
#

It works

#

Another question. How the hell do I overwrite the default help command?

clear arrow
#

how can i make my bot respond when its mentioned?

hasty mulch
#

On_mention

#

I believe

clear arrow
#

client.on('mention')?

hasty mulch
#

No

#

on_mention

#

70% sure that should work

sudden geyser
#

Are you using Discord.js

clear arrow
#

yes

sudden geyser
#

Listen to the message event and see if in the Message instance if you were mentioned via message.mentions.users.

#

.users will be a collection. Check with the .has method with the bot ID as the argument.

#

You could also use regexp.

clear arrow
#

if (message.mentions.users(client.id)) smth like that?

sudden geyser
#

no

clear arrow
#

if (message.mentions.has(client.user))

#

that works

#

but when i type smth like that _userinfo @dreamy jacinth name

#

it respond two times

pliant iron
#
npm ERR! code E404
npm ERR! 404 Not Found - PUT https://registry.npmjs.org/[HIDDEN]-alpha - Not found
npm ERR! 404
npm ERR! 404  '[HIDDEN]-alpha@0.0.1' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)

How do I put it in the npm registry?

sudden geyser
#

Using has on MessageMentions is what you probably don't want as it takes into consideration a lot of other factors, such as @ everyone and @ here pings

#

Use .users.has("bot id here") instead.

clear arrow
#

ok

#

TypeError: Cannot read property 'has' of undefined

midnight blaze
#

I want to learn more about probability. Anyone has an idea how I can use probability and javascript to learn probability?

thick gull
#

if mentions bot && does not begin with prefix

#

if you don’t want it to respond twice

#

or put a return if you want commands not to work in the bot

sudden geyser
#

The properties you access are in order in how the docs display them. message is the root, and .mentions is a MessageMentions instance. .users is a property on that instance which has the collection and .has is a method on that collection which you give your bot ID.

In short, using the docs and reading it in order will help you solve the problem. I assume you did message.users.has instead which is incorrect. You should use message.mentions and do the rest of what I originally told you. @clear arrow

clear arrow
#

if (message.mentions.users.has("id"))

#

its ok?

misty sigil
#

No

midnight blaze
#

@clear arrow wtf is that

clear arrow
#

idk it works

#

when i mention it

#

but not how i want

misty sigil
#

just do it the old school way

#

check if message content is <@dreamy jacinthID> or <@!botID>

clear arrow
#

yes but if i do that when for exemple i want to get bot's information _userinfo @dreamy jacinth it wil send the userinfo and the message

misty sigil
#

message.mentions.users.first()?

earnest phoenix
#

anyone know how to create a leaderboard using mongoose? d.js

midnight blaze
#

didnt you already asked that

clear arrow
#

that its spamming the command

midnight blaze
#

2 days ago?

faint prism
#

whoops

sudden geyser
#

big brain

faint prism
#

I started searching the #mod-logs if it was muted lol

misty sigil
#

5head

midnight blaze
#

can someone check this, what is wrong with this?

#

unexpected token at the last line

#

nvm I solved it

#

anyone here who could test an eval command with me in testing-1

#

?

warm marsh
#

Doing?

midnight blaze
#

@misty sigil do you have a little bit time?

misty sigil
#

aye

earnest phoenix
#

How do we get user id of the person who voted

misty sigil
#

with Webhook

#

I assume you already have one setup?

midnight blaze
#

@quartz kindle hey, if you are around, can I ask you something about % calculating?

opal plank
#

js?

midnight blaze
#

yes

opal plank
#

what about it?

midnight blaze
#

I created a class that creates a normal deck of cards

#

and now with that I am trying to calculate the probability

#

I am not sure if the numbers are correct

#

if you want you can see it in testing-1

drifting wedge
#

just a question

opal plank
#

what are the amount?

drifting wedge
#

with the get.tech domain github thing

midnight blaze
#

56 cards

opal plank
#

it should be just (cards)/(total)

midnight blaze
#

yeah

drifting wedge
#

how can i point it to a cpanel website?

midnight blaze
#

can you see it just for a second?

opal plank
#

sure

midnight blaze
#
  probability_twocards(card,card2){
    let probability=[]
    let probability2=[]
    deck.generate_deck()
    deck.schuffle();
    deck.deck.map(m => (m.value == card.toString(card))?probability.push(m).length:null);
    deck.deck.map(m => (m.value == card.toString(card2))?probability2.push(m).length:null);
    message.channel.send((probability.length/deck.deck.length)*(probability2.length-1/deck.deck.length-1));
  }

does this help? Or do you guys need more code?
It doesnt show the right probability 🤔

quartz kindle
#

why .toString(card)? why .push(m).length? Why .map()? Why null? Why is the method named "schuffle"?

#

So many questions

midnight blaze
#

:/ I guess, I have to include the whole code

#

by code, I mean, the whole class

quartz kindle
#

No need

#

Those questions are pretty standalone

#

Let me explain (brb opening laptop)

midnight blaze
#
  1. toString(card) just to make sure it is a string, I am not even sure if it is important, maybe it will work without it
    2.push(m).length, because I get a set of object, when I search for the card (2) "for example", I will get 4 objects in the array and that is simply the number then, I will use for my probability.
    3.map() I use to filter those cards, I need. I get throught all the object and I only push the ones that makes the condition true m.value == true
  2. shuffle is not important, you can ignore that, I have only used that to test something, but it shuffles the deck, bascially
quartz kindle
#
  1. toString's first argument is the base to make the claculation on
#

toString(card) is not only not required, it could even cause unintended side effects

midnight blaze
#

ok, good point

#

didnt think about this

quartz kindle
#
  1. push() returns the current length of the array, therefore .push().length is basically undfined
#

3 - .map() is used to transform an array and return a new array. you are not returning anything, therefore using .map is a waste

#

if you want to iterate over an array without returning anything, use .forEach or a for loop

#
  1. the correct word would be "shuffle" but you wrote "schuffle" with an extra C, hence why the question lul
midnight blaze
#

lol

#

true, sry

#

It is because I mixed it up with my native language

#

ok, thanks for your input. I think I should be able to work that out

quartz kindle
#

and the why null, that ternary is unnecessary, even more so when you dont really return anything

midnight blaze
#

How would you do it w/o a teneray, I mean, I need a condition in order to filter the cards I need 🤔

quartz kindle
#

.filter exists

earnest phoenix
#

wait who has a kill command

midnight blaze
#

hmm ok

opal plank
#

i technically do,but its to kill my own bots process

earnest phoenix
#

nvm imma play with my code

opal plank
#

emergency shutdown kinda thing

earnest phoenix
#

ok

#

@opal plank nice avitar

opal plank
#

thanks

thick gull
#

i just do

#

eval process.exit(-1)

opal plank
#

of course there are checks beforehand

#

but you get the gist

#

well good thing that i went to check it

#

this somehow passed my rewrite

rare gale
#

Hows everyones bots going?

opal plank
#

@rare gale normal,i guess? why?

midnight blaze
#
  probability_twocards(card,card2){
  
    let probability=[]
    let probability2=[]
    let card_1 = this.deck.forEach(m => m.filter(m => m.value == card));
    let card_2 = this.deck.forEach(m => m.filter(m => m.value == card2));
    probability.push(card_1);
    probability2.push(card_2);
    message.channel.send((probability.length/this.deck.length)*(probability2.length-1/this.deck.length-1));
}
#

@quartz kindle does this look better? 🤔 I get now a weird result: infinity

opal plank
#

infinity sounds about right

thick gull
#

does your bot just

#

stay in a VC

#

if it goes offline

opal plank
#

good question but i assume it gets off

#

just like a normal user when it goes off

thick gull
#

hm m ok

#

time to experiment™️

#

okay yeah it DCs

opal plank
#

imagine testing on production

thick gull
#

sh sh sh

opal plank
thick gull
#

testing on prod best idea

#

especially when your bot isnt even being used

opal plank
#

oh god

#

speaking of testing shit in production

#

i fucked up, yikes

#

now im a hypocrite

#

new achievement unlocked

#

i think a mod deleted it last time i posted that

#

prob not a good idea to put that there

thick gull
#

tru

faint prism
#

Yeah ||shiv is always watching||

thick gull
#

anyway, so undocumented shit is against discord ToS?

opal plank
#

technically yes

thick gull
#

mmmh

opal plank
#

i screwed up good time now

quartz kindle
#

@midnight blaze that looks even worse

#

lmao

opal plank
#

Crushed souls and dreams

midnight blaze
#

xD

ionic dawn
midnight blaze
#

maybe you laugh about me, but I managed to make it work 👀

quartz kindle
#

gj xD

charred geyser
#

when making bot dashboard

#

is it easier to html

#

then ejs

#

cause i need js for the discord stuff like getting guilds

opal plank
#

html supports js

#

<script> tags

charred geyser
#

i know but

#

i guess i can do that shrug

ionic dawn
#

script src

faint prism
ionic dawn
#

Why do you think thats "Corrupted" ?

#

mayb a file that isnt there anymore/was deleted/or is damaged

#

but that dsnt mean your pi is corrupted eyeshake

faint prism
#

It's been crashing every 30m or so

#

I def think it's corrupted

#

especially since the entire File system is Read-only except for the camera footage

charred geyser
#

if anyone has a lot of free time

#

im stumped

#

im trying to create a web dashboard for my bot

#

and i need assistance

ionic glade
#

Are you using nodejs?

charred geyser
#

yeah

#

im using js

#

i was kinda hoping somone would give me detailed help

#

i have tried so many things lol

ionic glade
charred geyser
#

yeah

#

thanks

#

i kinda got that

earnest phoenix
#

Just saw a message here

#

That say npm i python

#

It actually Exist

sudden geyser
indigo flax
#

anyone good at java?

thick gull
faint prism
#

anyone good at java?
@indigo flax I know C# and therefor know Java to some degree

#

But, what is your real question?

indigo flax
#

@faint prism so i have a code

#

and

#

idk how to start the bot

#

@faint prism so like

#

idk what command to run

#

to start it

faint prism
#

You can run via the main class or export to a JAR

indigo flax
#

how do i export to a jar

#

@faint prism ^^^

opal plank
indigo flax
#

@opal plank @faint prism sorry for the ping argh but I have no name!@8b80645a-b018-4d80-8596-04dceaaa7080:~$ java -jar giveawaytool.jar
Error: Invalid or corrupt jarfile giveawaytool.jar

valid frigate
#

i think youre looking to export an uber jar which contains all the dependencies your project requires

#

have you looked into the shadowjar plugin for gradle

faint prism
#

did you get any errors building the jar?

echo rivet
#

does anyone have the patience to guide me through how to make ffmpeg work
its making me an angery

faint prism
#

What language are you using

earnest phoenix
#

@echo rivet ffmpeg for what?

#

Cli? C#? C++?

faint prism
earnest phoenix
#

If it is C# or C++ you can use it api

#

Hi i have just done the slowmode command but i can't switch it off.

#

Code is here

const Discord = require("discord.js")
const ms = require("ms");



module.exports = {
    name: 'slowmode',
    description: "slowmode",
    run: async(client, message, args) => {
        if (!message.member.permissions.any(["ADMINISTRATOR", "MANAGE_CHANNELS"])) {
            return message.channel.send("Oopsie, you don't have any rights to do this.");
        }

        let channel = message.mentions.channels.first(),
            time = args.slice(1).join(" ");

        if (!channel) time = args.join(" "), channel = message.channel;
        // If the user doesn't includes the channel.

        if (message.flags[0] === "off") {
            channel.setRateLimitPerUser(0);
            return message.channel.send(`<#${channel.id}> slowmode has been deactivated.`);
        }

        if (!time) return message.channel.send("Please includes the time format.");

        let convert = ms(time); // This will results the milliseconds.
        let toSecond = Math.floor(convert / 1000); // This will convert the ms to s. (seconds)

        if (!toSecond || toSecond == undefined) return message.channel.send("Please insert the valid time format!");

        if (toSecond > 21600) return message.channel.send("Timer should be less than or equal to 6 hours.");
        else if (toSecond < 1) return message.channel.send("Timer should be more than or equal to 1 second.");

        await channel.setRateLimitPerUser(toSecond);
        return message.channel.send(`This channel: <#${channel.id}> has been slowing down for **${ms(ms(time), {long: true})}**.`);
    }
}
opal plank
#

@gusty inlet are you advertising or what?

faint prism
#

Hello, if I have a discord bot, can you add them to your servers for support, let those who add them throw their server ids from dm and let them activate the premium feature, special commands will be added soon.
@gusty inlet advert

opal plank
#

first half sounded like a question, the last part sounded like ad, and the whole thing didnt provide a single info we can use to help them

gusty inlet
#

sorry

earnest phoenix
#

Hm can anyone pls help

opal plank
#

i may be blind but why you requiring discord again?

earnest phoenix
#

hmm

#

I will remove it then

opal plank
#

you passing the parameter already, no need to re-require it unless you using it there

#

that wont fix ur issue though

earnest phoenix
#

ik

opal plank
#

also not checking type can be quite a bothersome later on

earnest phoenix
#

wdym

opal plank
#

time = args.slice(1).join(" ")

#

if (!time)

#

if i do 'ha ha' it may match

#

! just failson 0, null,undefined or empty string

#

unless ms() does that for you

#

also idk what parameter ms requires, but you're providing it a string

#

this bit

#

let convert = ms(time);

#

on the same example, if i input 'ha ha' it'll try ms('ha ha')

#

then as soon as you try this ts let toSecond = Math.floor(convert / 1000); it'll fail

#

you cant null/undefined/sring divided by number

earnest phoenix
#

Oh so do I remove that line?

opal plank
#

no, fix it

#

check type before doing that

earnest phoenix
#

?

opal plank
#

check channel type

#

(aka dm's)

#

some of the stuff you might try to load dont have properties

#

in this case i dont see much issue, but it may arise

earnest phoenix
#

Wait but it doesn't have errors when i run the code

opal plank
#

if (!message.member.permissions.any(["ADMINISTRATOR", "MANAGE_CHANNELS"]))

#

try running command in DM's

orchid pasture
#

lel

opal plank
#

you'll see what i mean

earnest phoenix
#

try running command in DM's
@opal plank how?

opal plank
#

member doesnt exist on DM's cuz its a channel,not a guild

#

dm the bot

#

run that command

orchid pasture
#

u so funny

opal plank
#

u so unhelpful

echo rivet
#

like, if i wanted a music bot to work, how do i do ffmpeg

orchid pasture
#

if the bot prevents dm at the front

#

before it execute

#

thats fine

opal plank
#

i havent been provided that info

#

hence why i pointed out

orchid pasture
#

lel

earnest phoenix
#

Anyone could explain how permissionOverwrites work?

opal plank
#

what i had to work with is that snippet

#

i messed up good time

opal plank
#

@faint prism yo mind giving me a hand?

#

im really on the fence about this

earnest phoenix
#

What cha trying to do

opal plank
#

trying to see if my cache is broken or not

#

that bit is fine

#

1.9mil viewers

#

but then you go on my bot

#

and im getting a REALLY big difference in numbers

#

so im really unsure if my bot has more reliable statistics than theirs

earnest phoenix
#

Try turn it off and on so it fetch everything again

opal plank
#

that doesnt need to happen

#

thats the whole point of refreshing cache every 30 mins

earnest phoenix
#

Probably something fuck up the code

opal plank
#

thats the thing,ive triple checked it

#

nothing seems off

#

needed someone thats proficient with Typescript or strong typed lang to give a peer on this

thick gull
#

seems like you aren’t taking current viewers or something idk

opal plank
#

the returned values are current viewers though

thick gull
#

¯_(ツ)_/¯

opal plank
#

and if they are offline that is also set to 0

#

so it cant be adding offline streams onto that count

thick gull
#

do twitch bots shard or something? Idk

opal plank
#

no

earnest phoenix
#

Judt relad cache everyrime a stream offline

opal plank
#

i do that already

#

and if offline streams were fucked i wouldnt be getting 390/2000

#

i'd be getting 2000/2000 or something similar if that were borked

#

so the streams are definetly being properly tagged as offline

#

and since it happens at the same time,viewer_count should also be setting to 0 and not adding onto the sum

#

see the issue now?

earnest phoenix
#

c?.viewer_count =0

opal plank
#

i couldnt find any bugs here, hence why i'd like someone proficient with Ts to take a look see if they can spot something

#

?

earnest phoenix
#

Wtf

opal plank
#

what?

earnest phoenix
#

It sypposed to work

opal plank
#

yeah, thats conditional chanining

earnest phoenix
#

Just fetch the channel ehen in loop

opal plank
#

i am doing that

#

i cant loop 2000 channels without wrecking the api

#

i need to cache them

earnest phoenix
#

Or just use tsitch stat api

opal plank
#

deleting offline channels also not a good idea

thick gull
#

just like lie about the stats smh

opal plank
#

you arent getting the point

thick gull
#

make a static number

opal plank
thick gull
#

solution 10/10

earnest phoenix
#

Make final value

opal plank
#

@earnest phoenix also for the record there isnt a stat api

#

wdym make final value?

earnest phoenix
#

Public static final

opal plank
#

what??

#

@earnest phoenix can you elaborate?

earnest phoenix
#

Idk whats wromg

opal plank
#

then why'd say this

Public static final

#

and the viewers update too

#

AAAAAAAAAAHHHH

#

the tracker website does say it has room for deviancy but still, we talking about 1 million here

faint prism
#

With a difference that large, I'd consider rereading their docs to ensure what exactly those numbers mean. Sometimes the numbers mean something different (like total viewers over the last hour vs right now)

opal plank
#

the twitch side is 100 fine

#

though the tracker site seems to be WAAAY too off @faint prism

#

and im storing them as id,theres no way i got duplicates either

#

it says now

#

then i refresh and its almost half of what i got

#

like wtf

faint prism
#

Are you using a library or an API directly

opal plank
#

thats way too much lee way

#

directly with api

#

and the cache is my doing too

faint prism
#

Are their docs not giving any insight?

opal plank
#

using axios as http lib to do the requests manually

#

not at all

faint prism
#

Might want to open chrome dev tools and figure out where that 1.9m number is coming from

opal plank
#

the formatting is fine, the responses are fine, the cache is fine, but thats way too much difference that im starting to doubt my code

#

wdym chrome/

#

?

faint prism
#

It's the same thing I did with @Awesome's gta map help

opal plank
#

oh

#

i see what you mean, holdup

#

in the tracker

#

im 100% sure its fetching from their lib

#

doubt they have it open source

#

api*

faint prism
#

Well, if it's client side and it's loading something from their API with some JavaScript code, you should be able to use that get request for your own number

#

If it's server side, you'll probably have to do some more digging

#

Ping me tomorrow and I might be able to help you out if you haven't figured it out

opal plank
#

yeah they dont ping the twitch api

#

its all handled internally on their end

#

twitch doesnt offer 'stats'

faint prism
#

Lol

earnest phoenix
#

Scrape

faint prism
#

Well scraping would be the only way to combat server side rendering.

#

And if you can't do that, hopefully it's client side rendered from an API request

opal plank
#

they claim to be tracking every stream with 5+ concurrent viewers

#

mine is pulling the top 2000 streams

#

and im getting higher values

#

either theirs is way off than they claim, or mine is

earnest phoenix
#

Or they api is shit

opal plank
#

either they are wrong or im wrong

#

twitch api as shit as it is,its somewhat stable

#

for this case at least

faint prism
#

Figure out where the number is coming from on that website

opal plank
#

like i said,its on their end

faint prism
#

I'll have to look later I'm in bed now.
Hmu tomorrow I'll look into their API

opal plank
#

aight

#

ty

earnest phoenix
#

What even is the difference between synchronous and asynchronous programming

opal plank
#

@earnest phoenix sync runs in sequence, async waits for a call before continuining the code to make sure the value is retrieved

earnest phoenix
#

Aliases exist

#

@opal plank ty for explaining, is it possible to have async in sync?

#

@naive elk uhhh what do you even need help with

#

@opal plank ty for explaining, is it possible to have async in sync?
@earnest phoenix yes

#

He want to implements command aliases

#

and vice versa

opal plank
#

callbacks

earnest phoenix
#

@earnest phoenix no not aliases

#

Store the last used command for that user

#

If it.couldnt find a command, then yeah

#

@earnest phoenix basically all unknow commands get redirected to the last used command
@naive elk check if the command is not a valid one and if it ain't get the second last message of the user and run the command from it

opal plank
#

if it cant find the command,dont run anything

earnest phoenix
#

@naive elk heres simpler one

#

no?

#

So

#

Eveytime someone run command

#

Store it into a list of data

#

and when command isnt valid then get the command in that data list

#

And run it

opal plank
#

its bad practice to do that btw

earnest phoenix
#

Yeah

opal plank
#

you shouldnt run commands on wrong commands

earnest phoenix
#

Why not just don't do anything when a command is wrong

opal plank
#

-askhfgajs shouldnt run -help

earnest phoenix
#

@opal plank ture

#

Not even unknown command messages

opal plank
#

if the user wants -help, they'lltype -help

#

dont do anything on wrong commands or you might catch false positivies

earnest phoenix
#

Yeah

opal plank
#

if the command exists, run it,else,do nothing

earnest phoenix
#

Talking about command

#

How do edit command work?

#

what

#

Where when you edit message to diff command

#

It edit the thing

#

Aka

opal plank
earnest phoenix
#

Oh waiy

#

messageEdit

opal plank
#

oh

#

listen to message edit

#

yeah

earnest phoenix
#

the event in discord.js

opal plank
#

listen to either message or message_edit events

earnest phoenix
#

And how do we get which message to edit?

#

bot.on("messageEdit");

#

No

opal plank
#

message edit should send both old and new message

earnest phoenix
#

No, i didnt mean that

#

And how do we get which message to edit?
@earnest phoenix the second parameter is a callback function

#

No

#

I mean

opal plank
earnest phoenix
#

inside the callback function the first argument is the message

#

here let me do it in flowchart or what ever

opal plank
#

hmmmm okay

earnest phoenix
#

The event detects when a message has been edited it does not edit a message directly

#

So

#
  1. run command

  2. Send embed -> msgtoedit

  3. edit the thing

  4. edit msgtoedit

  5. you

  6. bot
    ->define

#

wait

#

ik the docs for that

#

types

opal plank
#

you'd need to link them

#

so you know which message id lead to which output

earnest phoenix
#

seriously don't get anything do i

opal plank
#

once you got 2 different messages, you'd have trouble

#

imagine this code

earnest phoenix
#

Ah too much to make, skio

opal plank
#

i type -help
Bot sends embed
i edit message to -ping
bot edits the embed to -ping output

worthy glacier
#

how do i return a value from an async function to a global variable to be used in other operations

opal plank
#

global vars bad

worthy glacier
#

so far i only get undefined

opal plank
earnest phoenix
#

Global var bad

#

Global const good

#

;))))

opal plank
#

no,just globals in general bad practice

#

you'll clutter your work

#

pass the variable whenever its needed

earnest phoenix
#

i think i figured it out

opal plank
#

like d.js, it attaches client onto message for easy accessibility

worthy glacier
#

well then how do i have a function that can return mongodb field values outside of the function

#

im just trying to store custom prefixes

opal plank
#

and why do you need that?

#

const prefixes = await db.call();
//rest of code

worthy glacier
#

why not have customizable prefixes

opal plank
#

attach prefixes on client if you want it accessible somewhere

#

i never said db.call brings a string

#

it can be an array

#

an object

#

what if prefixes is a map/

#

map the guilds and set all prefixes to your default

#

then update the values when you do your database call

storm axle
#

How can I shard my boot with logs?

worthy glacier
#

how would that store the values for each server

opal plank
#

prefixes = new Map()
for(g of guilds) { prefix.set(guild.id, my prefix) }

for(prefix of db.call) {prefix.set(guild.id, custom prefix)}

#

¯_(ツ)_/¯

storm axle
#

How can I shard my boot with logs? @opal plank

opal plank
#

Dunno

worthy glacier
#

cause isnt map non persistent

earnest phoenix
#

ShardManager for DJS

opal plank
#

hence why you save your prefixes in database

#

thats why db.call is there in that snippet

#

databases are persistent

#

memory only lasts while your bot is online

#

the moment your bot process crashes it loses the memory

worthy glacier
#

yea

opal plank
#

or better yet, just map the guilds that have custom prefixes

#

dont even set the default prefix

worthy glacier
#

thats what i did but all inside mongo

#

server collection for server info including prefix

opal plank
#

so whats the issue?

worthy glacier
#

im having issues returning a value from the async findOne

opal plank
#

map it and attach to client

#

no

#

bad

worthy glacier
#

you cant just set const to a mongodb findOne

opal plank
#

bad

#

you doing calls on every message

#

map them on startup

#

and check from memory

worthy glacier
#

ok

earnest phoenix
#

Is a command that adds a role to mass members is allowed?

#

like it can add a role to 50 members.

worthy glacier
#

yes

silk chasm
#

can u tell me the code is of which language compiler??

#

static void UpdatePresence()
{
DiscordRichPresence discordPresence;
memset(&discordPresence, 0, sizeof(discordPresence));
discordPresence.state = "Playing Solo";
discordPresence.details = "Competitive";
discordPresence.startTimestamp = 1507665886;
discordPresence.endTimestamp = 1507665886;
discordPresence.largeImageText = "Numbani";
discordPresence.smallImageText = "Rogue - Level 100";
discordPresence.partyId = "ae488379-351d-4a4f-ad32-2b9b01c91657";
discordPresence.partySize = 1;
discordPresence.partyMax = 5;
discordPresence.joinSecret = "MTI4NzM0OjFpMmhuZToxMjMxMjM= ";
Discord_UpdatePresence(&discordPresence);
}

fluid basin
#

looks c to me

restive furnace
#

c or c++

robust arrow
#

Using mysql as database, how do I delete something from a table, specifying multiple columns?

drifting wedge
#

Can my dashboard be typescript and my bot be python?

earnest phoenix
#

I mean, why not? A dashboard just interacts with a DB on the backend, doesn't matter what language is writing to said DB

drifting wedge
#

I mean, why not? A dashboard just interacts with a DB on the backend, doesn't matter what language is writing to said DB
@earnest phoenix facts

#

Great lol

#

Also with mongo, how can I basicly like check a db (mongo) and see like if this is on or not

#

And if it’s not on just ignore a piece of code

#

Wait

misty sigil
#

just check if findOne

#

should work

drifting wedge
#

Can I do, if var = true does this?

#

should work
@misty sigil I mean I’d check the guild settings?

#

I’ll sleep tho

misty sigil
#

yea

#

if(await mongo.findOne(guild settings))ignore code

opal plank
#

reeee dont do that

#

use database for startup

#

keep something like redis or in memory

#

@drifting wedge

pale vessel
#

no

earnest phoenix
#

@tight plinth hey expert

tight plinth
#

yes

#

am in school

earnest phoenix
#

amm ok so, me and my friends have a bot in 630 guilds, the "message" event and any other event is emitted like after 5-7 seconds from where it was created (big delay) and when we are switching to Eris its working with no delay, is there a reason for that ?

tight plinth
#

so be fast plz

pale vessel
#

oh

earnest phoenix
#

amm ok so, me and my friends have a bot in 630 guilds, the "message" event and any other event is emitted like after 5-7 seconds from where it was created (big delay) and when we are switching to Eris its working with no delay, is there a reason for that ?
@earnest phoenix What was the first lib you were using

strong tundra
#

cause d.js bad

tight plinth
#

^

earnest phoenix
#

@earnest phoenix your answer

tight plinth
#

also use sharing k thx

earnest phoenix
#

Are you using shards

opal plank
#

we doing lawyer role play now?

valid frigate
#

d.js bad
this is only because of its aggressive caching

#

otherwise it is actually an ok library

misty sigil
#

use d.js-light

strong tundra
#

yeah i switched and i barely cache now

misty sigil
#

much better

earnest phoenix
#

it has beeen 2 weeks my bot dint get verified ☹️

misty sigil
#

customisable caching

strong tundra
#

my bot currently uses like 20mb ram

opal plank
#

i like agressive caching, no need to fetch barely anything

earnest phoenix
#

😶

opal plank
valid frigate
#

you may/may not need caching depend on what you do

misty sigil
#

discord.js light hot

opal plank
#

got 128gb of ram to waste anyway

valid frigate
#

remember that a lot of things in development are subjective to their specific use cases

misty sigil
#

you can choose to only cache a few things u need

strong tundra
#

i should try caching everything

#

see how much my ram raises

misty sigil
#

instead of everything being shovelled into your mouth

earnest phoenix
#

Just

2- Fetch whatever needed on usage of a command or whatever
3- Repeat```
valid frigate
#

even if the cache does get cleared you'll still see a memory leak

#

i know this from years of experience with both discord.js and eris

opal plank
#

i think i had an exporter on it

#

one sec

strong tundra
#

is javascript memory-safe

opal plank
#

and 101 other jokes you should tell yourself

strong tundra
#

lol

valid frigate
#

thats honestly a question that i dont have the answer to but generally speaking its hard

earnest phoenix
#

Is any programming language memory-safe

valid frigate
#

yes

earnest phoenix
#

L

valid frigate
#

all high level languages are

strong tundra
#

there are a few

valid frigate
earnest phoenix
#

@earnest phoenix 5 weeks to 1 year

#

werks

misty sigil
#

wtf is that troll emoji

opal plank
valid frigate
#

troll artistic

earnest phoenix
#

@earnest phoenix spongerino

opal plank
#

agressive caching, yummy

earnest phoenix
#

☹️

misty sigil
#

goddamn

earnest phoenix
#

Thats the fucking truth

misty sigil
#

125GB ram

earnest phoenix
#

It take time

misty sigil
#

can I have it

opal plank
valid frigate
#

i use a vps in brazil now

earnest phoenix
#

Just buy a nasa computer

opal plank
#

agressive caching good with this much ram

#

it saves on bandwitdh

earnest phoenix
#

Did you think a fucking human can fucking approve 10k bot in 1 second?

opal plank
#

commands are faster and more responsive

valid frigate
#

if we think about how it scales its not feasible

#

even with unlimited ram

strong tundra
#

come to brazil

earnest phoenix
#

Did you think a fucking human can fucking approve 10k bot in 1 second?
@earnest phoenix If you're not lazy, you can in 1 hour

pale vessel
valid frigate
strong tundra
#

yeah i only cache a few things

#

lemme go check

earnest phoenix
#

Go to Brazil, gain power and do

opal plank
#

@valid frigate you want scale?

#

ill give u scale

strong tundra
#

i could just not cache at all

misty sigil
#

I cache enough that my commands are responsive

strong tundra
#

that is an option

misty sigil
#

and my stuff works

#

without any fetching

valid frigate
#

how to disable memory leaks

opal plank
earnest phoenix
#

Djs,m

#

?

valid frigate
#

discordgo

opal plank
#

thats all being cached btw

#

hence why its currently using 8% of 125gb

valid frigate
#

i built my bot to be able to run on even vpses with extremely low memory

#

it needs like 5 mb max trollartistic

strong tundra
#

i cache all intents except guild presences, and dm and guild typing

pale vessel
earnest phoenix
#

hence why its currently using 8% of 125gb
@opal plank How many guilds with that much caching

strong tundra
#

and my bot runs at like 20mb

valid frigate
#

come to go we look like javascript but perform like rust (with gc)

opal plank
#

thats twitch,i dont have handy my d.js node exporter rn

valid frigate
opal plank
#

thats....

#

sec

#

lemme pull live results

#

2.9 mil users

strong tundra
#

i think my bot runs at around 7mb

#

or so

opal plank
#

2k streams

valid frigate
#

global variables

strong tundra
#

that's with no users in cache

valid frigate
#

as soon as you stop caching users you see that kind of behavior

strong tundra
#

yea

#

it's interesting

earnest phoenix
#

My bot with no users in cache

535MB rss in use

valid frigate
#

then youre doing something wrong

misty sigil
#

Whew

pale vessel
#

didn't you only clear cache collections?

misty sigil
#

mines 157MB

earnest phoenix
#

Only the user ones

pale vessel
#

that's..

strong tundra
#

lemme go check

#

im starting with all intents

opal plank
#

im using 442Mb but most of it its my fault,not dj.s

#

im caching things for twitch too on that

misty sigil
#

heh

valid frigate
#

the aggressiveness of caching in all js libraries is cringe

opal plank
#

total all bots are using 1.3Gb

valid frigate
#

let us expand the scope of this issue

earnest phoenix
#

Do y'all think this is a good three lines of code to waste two hours on
Basically this makes it so no matter what way you mention the user be it a ping, id, half the username the bot will be able to get it 80% of the time

args[0] is the command and args[1] is the username

if (args[1]) { var user = message.mentions.members.first() || message.guild.members.cache.filter(m => m.user.id == args[1]).first() || message.guild.members.cache.filter(m => m.user.username.startsWith(message.content.substring(`C-profile `.length))).first() || message.author; }

if (!args[1]) { var user = message.author; }

if (user.user) { user = user.user; }
valid frigate
#

first problem

#

var should be const

#

second problem

#

you put your prefix (case-sensitive) in the same string as the command

#

bro we are in 2020 we be usin let/const es6 style

misty sigil
#

no var

pale vessel
#

why those brackets

misty sigil
#

also

pale vessel
#

cringe

misty sigil
#

why the {

earnest phoenix
#

@earnest phoenix yall know that yall can use my utility which do 90% of your code?

pale vessel
#

combine those filters

strong tundra
#

this is why npm bad

valid frigate
pale vessel
#

into one

misty sigil
#

user.user

carmine summit
#
app.get('/', (req, res) => res.send(html));```
misty sigil
carmine summit
#

how to make work?

pale vessel
#

if only my homeworks are like these

#

so easy

earnest phoenix
#

why the {
@misty sigil "lexical declaration" in an if statement without {} throws an error

valid frigate
#

another problem i see with node's garbage collector is that it is not aggressive enough

#

no

#

one liners are valid

earnest phoenix
#

can't use let

misty sigil
#

don’t use let in if

strong tundra
#

i am compiling for dumb

misty sigil
#

aaa

silk chasm
#

this is the visualizer code....which is written in c so every bot is made by c only...

static void UpdatePresence()
{
    DiscordRichPresence discordPresence;
    memset(&discordPresence, 0, sizeof(discordPresence));
    discordPresence.state = "Playing Solo";
    discordPresence.details = "Competitive";
    discordPresence.startTimestamp = 1507665886;
    discordPresence.endTimestamp = 1507665886;
    discordPresence.largeImageText = "Numbani";
    discordPresence.smallImageText = "Rogue - Level 100";
    discordPresence.partyId = "ae488379-351d-4a4f-ad32-2b9b01c91657";
    discordPresence.partySize = 1;
    discordPresence.partyMax = 5;
    discordPresence.joinSecret = "MTI4NzM0OjFpMmhuZToxMjMxMjM= ";
    Discord_UpdatePresence(&discordPresence);
}```
earnest phoenix
#

if i use let it will stay inside the if statement and won't be available outside

valid frigate
#

dont use let in if
you can use let in if, its just that let is restricted to the current scope vs var

misty sigil
#

yea

earnest phoenix
#

do y'all think i am dumb enough to not know that yes i am dumb mmLol

valid frigate
opal plank
#

how bout declaring it outside?

valid frigate
misty sigil
earnest phoenix
#

how bout declaring it outside?
@opal plank how the hell

misty sigil
#

what

silk chasm
#

this is the visualizer code....which is written in c so every bot is made by c only...

static void UpdatePresence()
{
    DiscordRichPresence discordPresence;
    memset(&discordPresence, 0, sizeof(discordPresence));
    discordPresence.state = "Playing Solo";
    discordPresence.details = "Competitive";
    discordPresence.startTimestamp = 1507665886;
    discordPresence.endTimestamp = 1507665886;
    discordPresence.largeImageText = "Numbani";
    discordPresence.smallImageText = "Rogue - Level 100";
    discordPresence.partyId = "ae488379-351d-4a4f-ad32-2b9b01c91657";
    discordPresence.partySize = 1;
    discordPresence.partyMax = 5;
    discordPresence.joinSecret = "MTI4NzM0OjFpMmhuZToxMjMxMjM= ";
    Discord_UpdatePresence(&discordPresence);
}```

@silk chasm ?

misty sigil
#

just let thing; isn’t it

opal plank
#

let thing;
{thing = 1}
thing

strong tundra
#

currently my bot is at 44mb

earnest phoenix
#

f

strong tundra
#

gonna let it run for a bit

opal plank
#

is that a secret leak?

valid frigate
#

currently
now leave it running for one week and report back

opal plank
misty sigil
#

rich presence doesn’t have to be in C

valid frigate
#

no thats an example copy pasted from the discord api

opal plank
#

ah, i see

valid frigate
#

numbani is an overwatch map

strong tundra
#

sad

valid frigate
opal plank
#

aight,time to go sleep

valid frigate
#

your bot shouldnt be consuming ram at all rust doesnt have a gc

opal plank
strong tundra
#

oh it's currently at 257mb

#

huh

valid frigate
#

where is that number coming from wtf

earnest phoenix
#

Quicko updated code:

    let user;
    if (args[1]) { user = message.mentions.members.first() || message.guild.members.cache.filter(m => m.user.id == args[1]).first() || message.guild.members.cache.filter(m => m.user.username.toLowerCase().startsWith(message.content.substring(`C-profile `.length).toLowerCase())).first() || message.author; }
    if (!args[1]) { user = message.author; }    
    if (user.user) { user = user.user; }
valid frigate
#

global heap size?

carmine summit
#

app.get('/', (req, res) => res.send('Hello World!'));
how do i change hello world to index.html?

strong tundra
#

yeah i think 257 is global heap

#

the bot says 45mb

valid frigate
#

how are you reading it

strong tundra
#

heim

#

the 257 is from task manager

valid frigate
#

so yeah its global heap

strong tundra
valid frigate
earnest phoenix
#

just fixed some unnoticed errors in my code

#

message.mentions.members because the command is restricted to one server

#

m.user.username.toLowerCase() and message.content.substring("C-profile ".length).toLowerCase() so the command is in-case sensitive

#

yeah that's it

#

i feel like a god now

carmine summit
#

how do I put html in node.js using Express???

ionic shard
#

so im tryna print some bot stats but it is returning nothing

const client = new Client({ disableEveryone: true });
console.log(client.uptime);
console.log(client.guilds.cache.size);```
(console log is empty)
earnest phoenix
#

how do I put html in node.js using Express???
@carmine summit res.sendFile("path/to/file.html");

strong tundra
#

i use this to get current bot memory

valid frigate
#

or so ive seen

#

i was looking at the memory struct

carmine summit
#

TypeError: path must be absolute or specify root to res.sendFile

earnest phoenix
#

bruh

#

did you type the correct path

valid frigate
#

bro ive honestly been baffled at how this gathers memory information

carmine summit
#

yes

#

./index.html

earnest phoenix
#

is ./index.html a correct file path

strong tundra
#

ok yeah i do get rss

#

not virtual mem

earnest phoenix
#

how do we get ID of the user who voted

carmine summit
#

i dunno

earnest phoenix
strong tundra
#

i should probably get both and display both eh

carmine summit
#

i think

#

the file is located at the same folder as my index.js

earnest phoenix
#

anyone knows how topgg api works or any docs?

carmine summit
#

and its named ./index.html

earnest phoenix
#

and its named ./html
@carmine summit wow

silk chasm
#

If i have done my bot programming how do i apply that file to discord application??

carmine summit
#

typo

#

bruh

slender thistle
#

If i have done my bot programming how do i apply that file to discord application??
@silk chasm Code, use a function to log in under a certain token in the code

#

Get the token from your bot's application page, use it

silk chasm
#

ohk...thanks...

carmine summit
#

app.get('/', (req, res) => res.sendFile('./index.html'));

#

wats wrong?

slender thistle
#

Tried without ./ yet? :^)

carmine summit
#

tried it

#

doesnt work

#

res.sendFile(__dirname + '/index.html');

#

^this works

slender thistle
#

Imagine not allowing relative paths

strong tundra
#

does node not allow relative paths?

slender thistle
#

I assume it would, but I don't use node at all

strong tundra
#

yea

earnest phoenix
#

Edited even more and now it's almost accurate (accurate means completely correct iirc)

        let user;

        if (args[1]) { user = message.mentions.members.first() || message.guild.members.cache.filter(m => m.user.id == args[1]).first() || message.guild.members.cache.filter(m => m.user.username.toLowerCase().startsWith(message.content.substring(`C-${args[0]} `.length).toLowerCase())).first() || message.author; }
        if (!args[1]) { user = message.author; }
        if (user.user) { user = user.user; }
strong tundra
#

i know that you can import from relative paths

#

i do it all the time in react

earnest phoenix
#

someone have a Giveaway Script ?

strong tundra
#

but then again, react is compiled

earnest phoenix
#

someone have a Giveaway Script ?
@earnest phoenix spoonfeeding

#

we won't just give you code

#

we can help withs tuff

#

Edited even more and now it's almost accurate (accurate means completely correct iirc)

        let user;

        if (args[1]) { user = message.mentions.members.first() || message.guild.members.cache.filter(m => m.user.id == args[1]).first() || message.guild.members.cache.filter(m => m.user.username.toLowerCase().startsWith(message.content.substring(`C-${args[0]} `.length).toLowerCase())).first() || message.author; }
        if (!args[1]) { user = message.author; }
        if (user.user) { user = user.user; }

@earnest phoenix Why to use filter()?

#

You can use find()

#

what

#

that existed

#

WHAT

#

@earnest phoenix send docs pls

flint yew
#

hello anyone help with this "stack": "TypeError: Cannot read property 'author' of undefined that error

earnest phoenix
#

@flint yew show the code

flint yew
#

okay

earnest phoenix
#

@earnest phoenix go to Mozilla Developers Network

Array.prototype.find(...fn)```
#

bruh

flint yew
#

k

strong tundra
#

ok i gotta actually develop now

earnest phoenix
#

@earnest phoenix go to Mozilla Developers Network

Array.prototype.find(...fn)```

@earnest phoenix bruh it's a collection not an array

#

discord.js collection

#

Have you realized you can use find on a collection

#

yeah

#

Also filter

#

||kthnxbai||

flint yew
strong tundra
#

rss is at 60mb, vms is at 270mb

flint yew
#

@earnest phoenix u here?

earnest phoenix
#
async run(message, args) { 
const { text } = args; 
const m = args.message;``` why
#

Give him time to reas code bruh

flint yew
#

@earnest phoenix ?

earnest phoenix
#

Getting the message object from args

#
async run(message, args) {
        const { text } = args;
        const m = args.message;

        const msg = await message.channel.send(`🔄 | Reacting to **${m.author.username}**'s message...`)

        for (const c of text.toLowerCase()) {
            if (c in map) {
                try {
                    await m.react(map[c])
                } catch (err) {}
            }
        }

        return msg.edit(`✅ | Successfully reacted on **${m.author.username}**'s message with ${text}!`)
#

Isn't efficient and incorrect

#

error here

flint yew
#

yea

earnest phoenix
#

Yea as i said

#

one second

#

allow me to type

#
let m = message;```
flint yew
#

k

earnest phoenix
#

Literally

flint yew
#

what

earnest phoenix
#

WHY THE HELL const m = args.message;

flint yew
#

bcz

#

umm

earnest phoenix
#

YES

#

Scroll up, that's why i said

flint yew
#

okay

earnest phoenix
#

args is an array

#

@earnest phoenix If you’re going to try to help, be less of a dick

flint yew
#

@earnest phoenix "stack": "TypeError: Cannot read property 'toLowerCase' of undefined

#

new error

#

now

earnest phoenix
#

have you tried reading the error

flint yew
#

yes

#

xd

earnest phoenix
#

Show the error's full stack trace

#
        for (const c of text.toLowerCase()) {
            if (c in map) {
                try {
                    await m.react(map[c])
                } catch (err) {}
            }
        }

uhh const c?

slender thistle
#

text is undefined

earnest phoenix
#

@earnest phoenix do you even know js?

flint yew
#

"stack": "TypeError: Cannot read property 'toLowerCase' of undefined
at ReactCommand.run (C:\Users\...\YK303bot\src\commands\morefun\react.js:40:30)
at processTicksAndRejections (internal/process/task_queues.js:97:5)"

slender thistle
#

making it a constant isn't an issue

earnest phoenix
#

Extending text from args is invalid

#

@earnest phoenix do you even know js?
@earnest phoenix not a lot but i am willing to learn more instead of f around complaining about someone

#
const { text } = args;``` this doesn't make sense
slender thistle
#

is that the same as args.text

earnest phoenix
#

You cant destructure text from args

#

args is an array not an object

#

Since it doesnt exist

#

Whats diffrent from const and let amd var

#

Like

#

const and let are block scoped while var is not

#

We can ude all of them without problem

#

Const cant be reassinged, let can, and var is just messed up

#

Ah

flint yew
#

okay

slender thistle
#

const works in for-of, no?

earnest phoenix
#

Not sure tbh

#

I usually use let

#

is there a way to define a let variable that can only be used inside it's code block and like a const it's value cannot be changed

flint yew
#

soo how to fix that like guys i am stack

earnest phoenix
#
1- const is assigning constants and can't be modified and is block scoped
2- let is assigning variables that can be modified and is block scoped too
3- var assigns variables but it isn't block scoped``` @earnest phoenix
#

I wouldnt use var unless you’re working on client end js (browser js)

#

I hack my website user PCs using browser js mmLol
JavaScript is worse outside of file:// protocol

#

Very funny

#

soo how to fix that like guys i am stack
@flint yew Just
const { text } = args; to

const text = args.join(" ");```
#

Also I recommend reading about javascript arrays and javascript objects

flint yew
#

@earnest phoenix thanks

earnest phoenix
#

Arrays are basically objects with an ordered list i don't get it

#

Arrays are way different than objects, they just don't have a special type

#

In js basically

#

yeah

flint yew
#

async run(message, args) {
var output = ''
for (let c of args.text) {
if (c in map) {
c = map[c] + '\u200b'
}
output += c
} soo args.text also wrong yea?

earnest phoenix
#

can't use "dot notation" on arrays

#

uhh yeah

#

Just args

flint yew
#

that why getting that error

earnest phoenix
#

if you run run() without passing an args parameter'

flint yew
#

"stack": "TypeError: args.text is not iterable

earnest phoenix
#

f

slender thistle
#

args

#

Not args.text

earnest phoenix
#

Just args

flint yew
#

ahh

slender thistle
#

args is an array, you can iterate over those
args.text is UNDEFINED, because a property text does NOT exist in arrays

flint yew
#

ahh thanks

earnest phoenix
#

As you tried args.text

Array.prototype.text``` would always be undefined unless you overwrite it's prototype
slender thistle
#

Why is js such a pain in the ass with its undefined crap

flint yew
#

ye xd

earnest phoenix
#

Why is js such a pain in the ass with its undefined crap
@slender thistle Python is the same with NoneType or whatever that is

slender thistle
#

Not exactly per se

earnest phoenix
#

@slender thistle it isnt lol, people just need to not use non existing properties

slender thistle
#

It does error out when you try to access a non-existing property

earnest phoenix
#

What do u want it to do

flint yew
#

why message.say is not a function

slender thistle
#

Nothing really, I just want to be a bitch at JS for a second

#

message.reply

earnest phoenix
#

discord commando?

slender thistle
#

there's also message.channel.send

earnest phoenix
#

commando is different

flint yew
#
        const { sayMessage } = args;
        if (sayMessage == 'N////A') return message.say('Please specify something for me to say!');

        message.delete();
        return message.say(sayMessage).catch(console.error);```
slender thistle
#

This is probably one reason why I don't wish to use JS for anything that's not frontend

flint yew
#

even when change .say

opal plank
#

do you have the smallest hint of idea how many times ive typed message.say?

flint yew
#

?

earnest phoenix
#

discord commando?

opal plank
earnest phoenix
#

@flint yew

opal plank
#

other libs that i use has that method

slender thistle
#

kek

earnest phoenix
#

i use discord.js

opal plank
#

which confuses the fuck out of me when im doing multiple works

earnest phoenix
#

Ngl i wish people who didnt know js or djs would be yeeted from here

#

Its annoying when people wont listen to: “go learn js”

flint yew
#

@earnest phoenix what'

earnest phoenix
#

I have no idea why would someone name the send function as say

Message.prototype.say()``` is kind of a non sense
#

Ikr

#

@flint yew I meant do you use commando

flint yew
#

yes

opal plank
#

say something

#

it makes sense4

earnest phoenix
#

Hmm, can you show your new code in hastebin

#

Hi eris gud right

slender thistle
#

channel.say would make some kind of sense imo

opal plank
#

indeed

#

message.say not so much

earnest phoenix
#

It's not tho, it's just message.say

slender thistle
#

as an alias, at least

opal plank
#

.reply is fine

flint yew
#

.reply