#development
1 messages · Page 1727 of 1
since you'll need to install each lib as dep to check which type of client the user is providing
and if you go another router, you'll rely on the user to do it they way you need, which defeats the purpose of "quick and dirty, low effort package'
the idea in itself has too many major complications, one or two roadblocks is fine, as devs we deal with them
but there are SO MANY in what you want to do
not saying its impossible either, but you get the idea
just making sure you understand what it will entail and if you have the will to see it through
Yea I get you, thanks for the feedback and heads up. I’m not really a super experienced Discord bot dev in perticular. Feel like I have to dive into all the packages people use to interact with the Discord API. Didn’t know there were so many.
discord.js, eris.js, erala.js, discord-rose are the main ones i can get off my head
you'll need to check at least those
Yea and then you have a tonne of people building in Python
py is not my area unfortunately so i cant give input on that, though im fairly certain its mainly one lib there
Well gonna think about it for now and look into all the technicals tomorrow. Thank you for all your input, time and knowledge. @opal plank
np
@quartz kindle https://www.youtube.com/watch?v=WLwTlC1R2sY
Is JavaScript really that slow? Or is that just a leftover impression from the old days?
Patreon: https://www.patreon.com/simondevyt
Follow me on:
Twitter: https://twitter.com/iced_coffee_dev
Instagram: https://www.instagram.com/beer_and_code/
Github: https://github.com/simondevyoutube/
In this video we talk a bit about JavaScript vs C++, and...
Well it appears you are checking if they have less than 100 dollars but then are subtracting an amount between 1 and 1000, which could be larger than the balance
Like if they had 400 dollars and you subtracted 800
You need to run the bot code through the bot token
how can i make it so it only subtract under the amount they have?
Oh ok
const topgg = require('@top-gg/sdk');
const topapi = new topgg('token'); // TypeError: topgg is not a constructor
why is this not working? edit oh i see im an idiot
You can do the check of if money is more than 1000 make the earning a random between 1 and 1000 and if less than 1000 have the earnings be between 1 and the balance
Thats the way I would do it
pick a number between 25 and 75, divide by 100, multiply by the amount of money the person has, and that is the amount you steal
That's a good method lol
there. is no top-gg/sdk docs, i get a 404 error https://top.gg/api/docs#jslib the readthedocs works tho
hm tbh with you idk how to do the second part you said
yeah i got it
Bal = whatever the way u get the balance is
If bal < 1000:
earning = random.randrange(1,bal)
Else:
Earning = random.randrange(1,1000)
Bad capitalization sorry
And if you want them not robbable if they have less than 100 then do
if bal < 100:
Await ctx.send('some message')
Return
ok
There might be better ways to do that though
i have no clue what im going to have to chnage to add this......lol
i see what im suppose to change
but i dont know how
That should work
ok i will parse you for ever if thats works
should probably not spoonfeed
Oh ok sorry
helping is fine, but straight up posting pre-made code at that length is probably going a bit far
Ok thanks
sorry
its fine, its for your own good in all honesty, its better a thorough explanation so you understand what you are doing instead of just copy pasting it, in case you need something similar in the future you know how to solve it logically
it basically gets rid of dependency
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
its running on an API i did
its in c#
ok
yeah its RPC
RPC is deprecated, just letting you know
https://discord.com/developers/docs/rich-presence/how-to
The SDK that this documentation references, Discord-RPC, has been deprecated in favor of our new Discord GameSDK. Replacement functionality for the Rich Presence SDK can be found in the Activity Manager of that SDK. This documentation can be referenced for education but does not entirely reflect the new SDK.
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
which is what you're using
hm do you have to keep cmd open for the SDK? or is it the same for every one
not at all, its just using my client id
it runs as a background task
i think its using 3mb, its super light
2.7mb
3mb to round it up
its just a loop() every 15 seconds fetching the data from my api
hm i might have to find out how to do that bc i think mine is a ID aswell bc of this
client.login({ clientId : "My Clinet ID is here" }).catch(console.error);
i underlined think bc idk
ik
i see
auto result = discord::Core::Create(461618159171141643, DiscordCreateFlags_Default, &core);
discord::Activity activity{};
activity.SetState("Testing");
activity.SetDetails("Fruit Loops");```
I don't use _id anywhere in my code
the error emits from these: http://img.extreme-is.me/30aSAh274p1IoE1M
http://img.extreme-is.me/b4IOrBbJWQza9mD8 datadoc typings:
dafuq
console.log(giveawayC)
giveawayC.send(giveawayE)
you need to know what that is
get only accept id
are you SURE?
YES.
ABSOLUTELY SURE
the id is in config.

YES.
then your id is wrong
either its a wrong type or the id is wrong
those are 2 only explanation
I litilery copy pasted it.
or you arent caching channels
... what do u mean?
if the channel is not cached
guess what?
its not there lul
you can try fetch() first
to amke sure it attempts to get it
says its no function.
waht do u mean by type?
Fetch from channels not from giveawayC
giveawayC is the channel.
giveawC is GiveawayChannelLog.
Fetch the giveawayC, not from giveawayC
client.channels.fetch(id)
I have that.
Still say not a function?
client.channels.cache.fetch(giveawayC).send(giveawayE)
Not cache
i didn't think extreme was this bad but then i realized it's not him
Can someone help me with this, I made a kick command:
async def kick(self, context, member: discord.Member, reason: str=None):
embed = discord.Embed(
description=f"Kicked {member.name} from {context.guild.name}
successfully."
)
await member.kick(reason=reason)
await context.send(embed=embed)```
But it says, ```memeber``` has no attribute "kick"
Log giveawayC
@deep mantle soo i think there is a problem
you initialize giveawayC as the channel, you then go on to try to get the channel again, but using the giveawayC object
ya
object != string
is what they were trying to get at
oh
yes, but also, why get the channel again, you already have it in giveawayC
right, just do giveawayC.send
but...
@quaint wasp
giveawayC is someting else
the reference you store and the reference from cache would be the same data since Discord.js patches the data on an instance instead of overriding the instance

its not in server that the giveaway was amde at
but you explicitly set giveawayC to the giveawayChannelLog
@opal plank soo ik you didnt give this to me but you have any clue why its not even sending?
this is the new
@client.command(aliases=['rb'])
@cooldown(1, 20, BucketType.user)
async def rob(ctx, member: discord.Member):
await open_account(ctx.author)
await open_account(member)
bal = await update_bank(member)
if bal[0] < 100:
await ctx.send('It is useless to rob him :(')
return
if bal > 1000:
earning = random.randrange(1,1000)
else:
earning = random.randrange(1,bal)
await update_bank(ctx.author, earning)
await update_bank(member, -1 * earning)
await ctx.send(
f'{ctx.author.mention} You robbed {member} and got {earning} dollars')
this is the Old one this works the new one doesnt
@cooldown(1, 15, BucketType.user)
async def rob(ctx, member: discord.Member):
await open_account(ctx.author)
await open_account(member)
bal = await update_bank(member)
if bal[0] < 100:
await ctx.send('It is useless to rob him :(')
return
earning = random.randrange(0, 1000)
await update_bank(ctx.author, earning)
await update_bank(member, -1 * earning)
await ctx.send(
f'{ctx.author.mention} You robbed {member} and got {earning} dollars')
the advice i can give in python is very limited
so tis probably not the best to ask me
the methods are similar, and this is just mostly logic
you realize that you set giveawayC to the giveaway channel log channel object right?
Oof
but i would still not trust myself with that
maby... why object?
.get returns a channel object
yes..
but this time
it returned giveaway channel log
and that is the channel object
exactly, so just do giveawayC.send at the bottom there
ok...
how can i make a bot send errors python bc im trying to find out why my bot is gay
oh... lol
like my bot only wants to work if its going to put people under 0 money
but when i think its going to work
it doesnt
i don't know python particularly well but why are you using bal[0] in some places but bal in other
i used to watch vids to learn so i have no clue i was just trying to learn python at the time
so idk just trying to fix everything so maybe it can be good
fix that and it should be good to go
the bal[0]?
Wanna a tip? Rewrite the code
I got this,
execute(message, args) {
const commandName = args[0].toLowerCase();
```,
but it doesnt know what toLowerCase is.
I mean args.
ik 600 is not much but i dont want to tbh
well, either bal or bal[0], your balance can't be both
If that's old code from when you used to watch videos you might have very badly written or outdated code there
It's worth it in the end
Trust me
you know i never thought abt it that way
That coming from someone who've rewritten own 1m line code
Thrice
Rewrites tend to end up as way smaller codes
Also by rewriting you'll know exactly where everything is
And what they do
the only reason i dont want to rewrite which i probably will in a bit but idk where to start
Start by the concept
Like
Will you use a command handler? What structure will you use? Are you going to use databases? A centralized controller might be handy then. Etc etc
Put everything on paper
The create the foundation (controllers, interfaces, models, event handlers)
After that connect all the pieces and setup index file
c#
ok
Deustch
Java
I rewrote my bot because it feels so weird looking at 7k lines index.js which if I hadn't rewritten would prob go up to like 25k+
Lul
which one is easy to learn
I restructured them and made them dynamic with organized foldering
javascript
ok thats the one then
Ngl tho, if you become self aware that your file is getting too big then you're making a great progress
Noticing something is wrong is a great signal that your knowledge is getting more refined
Suddenly you're going full-modular with procedurally generated stuff
less = more MOST of the time
sometimes more = less though
Xd
That's what happened xd
[].forEach((a) => console.log(a));
for(let a of []) {
console.log(a);
}```
second is more performant for example
Yeah
I go for flexibility > efficiency
But I still try to make it as efficient as possible
what taught me about being an efficiency freak was my twitch project
those things stack
and QUICK
when you try to scale a project
Don't talk about twitch
shush
I tried making a gacha system for my bot
It used up an entire 1k lines+ in a single command file
wot
I have no idea how to make it more efficient
I'm a coding noob that just started coding as I started coding a discord bot last year
Well I mean it's a whole lotta work for the cpu as well
Nope
and could be smaller im gonna be honest
I increased the flexibility so far
What you see isn't what the computer sees
i can literally edit the db and it updates the bots with each entry
It's insanely flexible and easy to add new ones
same here
Sometimes a bigger code can be faster than a smaller code
i literally type one command and it pulls everything from the db with the new items
Hold on see if I still have it
i gave an example
right here
wtf
brakets arent even needed in all honesty
@neat harness
completely dynamic
also dynamically generated image
no matter how many entries, it'll always fit them
Erwin are you being a salesman again?
Mind you this is from back when I started coding like 2 months in
DETRITUS! TWITCH! MUSHOKU TENSEI! REDIS! POSTGRES!
aparently kuuhaku says i talk about it too much
fair
Ikr
gonna make another r/programming post?
Haven't touched it for 10 months
ehhhhh
const client = new Discord.Client();
const Discord = require('discord.js');
require('dotenv').config();
client.on('message', (msg) => {
if (msg.content === 'JS test') msg.reply('Hi');
});
client.login(process.env.BOT_TOKEN);
some are js, some are json, json db, multiple lines of declaration, the bottom doesnt use the keyword let anymore
like wtf

It's not even up to date with my current base system
This is my biggest work
you didn't define Discord
i need help
oh
Ahahhahaha
jason.db > json db
I need to rewrite it
no u dont
yes I do
It's mongodb
you need to delete it
true
mongo works even better
ill put that on my list
Json db is static

I use mongodb
The js files are models
I use both post and sq
The json files are char data
the high iq queries are just too big brain for me
3 confusing as fuck things
THREE THINGS
Agreed
3 things
lists 4
AND for?
Delete for fucking database
Oh
what would i define it to..........im trying to learn JavaScript dont bully me
you defined it on the 3rd line, just move it up
const Discord = require('discord.js');
sql resembles english more than most JS code does tbh
Mongo is virgin, SQL IS CHAD
SELECT * FROM TABLE WHERE THING = THING AND THING = FOO ORDER BY SOMETHINGELSE LIMIT 2
its literally human redable
Oh didn't see that
Mongo uses small and discrete caps, no impact
That's not fair
I can't fking read that
thats literally what you use
I don't understand
SQL USES FULLCAPS WHUCH ARE LOUD AND RECOGNIZABLE ANYWHERE
SELECT * FROM WEEB WHERE NAME = ERWIN AND SALESMAN = TRUE LIMIT 1
read it as is
see? you got it
that hard
yes
I am the person that gets 2/100 in math
INSERT INTO TABLE (ID, NAME, PROFESSION) VALUES(123, LERWIN, WEEB)
boom
now you know inserts
I can't code until last year where I got interested into discord bot and instantly capable of coding one
I don't understand
is it like this for ever command
after table it expects the colums its suppose to fill
it @ me
id, name and profession are the columns
thats it
the 3 querries (select, insert, update) is literally all u need
Very useful information cause I only learned mongodb 1 month in
And stuck with it for another year
correct
sql kinda fucky wucky tho
its human redable
barely
coming from js you should like human redable things
@opal plank Teach rich presense
there are a few bs things that even i dont like
ive never been so insulted by something so true
https://discord.com/developers/docs/game-sdk/sdk-starter-guide good luck have fun, i use the c# example
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
I prefer const var let get etc
actually it's called sdk 🤓
Oh god
you know whats the !== operator?
not equals strict
I mean
this is the sql
wait wait wait
<>
wait wait wait
this means not equal
<> is literally equals
Lmao
hence why i said theres even some shit i personally dislike
at all
< not the same as > I think 🤔
what in the world
Sanity questionable
dont get me wrong, the stuff im teaching u is basic shit to get by
you can have some really amazing querries
Not mathematically but logically
let me see if i can find here some of mine
Postgre has !=
hey in java is it possible to let commands or client.on what ever its called how would i make it only work for one person
const Discord = require('discord.js');
require('dotenv').config();
const client = new Discord.Client();
client.on('message', (msg) => {
if (msg.content === 'JS test') msg.reply('Hi');
if (msg.content === '!mod') {
msg.member.roles.add('837501198297989171');
msg.react('?');
msg.reply('You are a MOD now');
}
});
client.login(process.env.BOT_TOKEN);
trying to learn
my query: http://img.terano.dev/it-3k4su
Turns out it wasn't tuna
fuck where is it at
Do you need verification for what
ik but the proper is <>
you do not
thats if you want to verify your game with discord
so you get the nifty badge after ur game
is it possible?
Yes but like, postgre has so many QoL features that would be a waste not to use
I take codes from people and integrate it with other people's code with some js logic to make a brand new code for different purposes
I most definitely do not know what the f I'm doing
you know what i mean
write a javascript to java translator and your tuna will revive from its rotten grave
Pst... Spoonfeed
If only I knew how to write compilers...
compile js to java
fuck i lost the querry
I'd gladly make a js > java transpiler
way better that way
it was legit a 40 line query
You need to check if the msg.author.id is the same as the target ID
T.T
14ROVI has some cool queries
I want to write a full-fledged compiler before I die
im new to JavaScript how would i do that or is there a doc i can read to learn
What are you? 90?
to the 4th power
fuck i lost the big ass query i had
whatever
You can use plain old if conditions.
if (msg.author.id === something) {...}```
like Scratch 
Javascript is logic script

javascript is not logic script
functional with a dash of object oriented with a dash of hot sauce
JS is like a honey badger, it may be bleeding, withtou its teeths, without 2 legs, but it will continue limping without complaining
thats why ts is good

Ts
it doesnt swallow the errors for u
TS
Did you know? If you cut someone's arm off and offer a chocolate you get back 10% more chocolate
TS?
__pycache__
// @ts-ignore
transport stream
Because 1 / 0.9 is 1.1
Oooo
I had weird thoughts
lmao
MPEG transport stream (MPEG-TS, MTS) or simply transport stream (TS) is a standard digital container format for transmission and storage of audio, video, and Program and System Information Protocol (PSIP) data. It is used in broadcast systems such as DVB, ATSC and IPTV.
Transport stream specifies a container format encapsulating packetized eleme...
i shit you not
what?
I saw
THAT many errors
no thanks, i dont wanna see your Horny moms in your area ads
wot
too bad
this right?
if (msg.content === '!mod', msg.author.id === 517020964261855232) {
msg.member.roles.add('837501198297989171');
noop
I made my github name ts-nocheck
F
you deserve a painful death
just saying
I know
The comma doesn't make sense in this context. Replace it for a logical and operator (&&)
I will die a painful death
theres a special place in hell for people like you

@soft glade https://javascript.info/ifelse may benefit you as well
ok
chaining ? : is the most shitty thing ive ever done tbh
worse than the github account name
i love it
would be better if we ditched ternary operator and make if an expression
function returnType(staff) {
return staff === undefined ? "staff is undefined" : staff === null ? "staff is null" : typeof staff === "number" ? "staff is a number" : typeof staff === "object" ? "staff is an object" : typeof staff === "string" ? "staff is a tring" : "staff is unkown" }```
i could've sworn i made it worse before
http://img.terano.dev/bC0Pud6I not really chaining but I did this, made it readable
too readable ik
--yolo it is
http://img.terano.dev/cyRvIx9j ternary operators and whatever the fuck these strings are called
lemme check one sec
let linkContent = ((client.channels.cache.get(args[5]) ? client.channels.cache.get(args[5]) : await client.channels.fetch(args[5])) as Discord.TextChannel).messages[this.cache.get(args[6]) ? this.cache.get(args[6]) : this.messages.fetch(args[6])]```
yikes
why do you get() erwin
shush
no just fetch
the idea of this is being cursed
oh ok
just do something like this http://img.terano.dev/D1S7yji_
also this
try { ''.forEach('forcing error') } catch (err) {
if (!err) return;
else if (err !== 'err') return;
async function Handler_ERRoR(err) {
if (err) return err;
}
if (Handler_ERRoR(err).catch((err) => ())) try {
throw new Error && () => { err }
} catch (err) {
if (err) return;
}
}
}```

nope
youre insane
foreach on a string
passing a string as a function
and then not handling the error

because thats a constant
and error will never be 'err'
http://img.terano.dev/lATEmqZe lmao I forgot about this
fun times
erwin

I fixed my shit function
and i usually pick the cursed ones
/**
* Format the time broski
* @param time how long in milliseconds
* @example
* formatTime(12308920)
* // "3 hours, 25 minutes and 8 seconds"
*/
export function formatTime (time: number): string {
let hours = 0
let minutes = 0
let seconds = 0
// Hours
while (time > 3600000) {
hours++
time = time - 3600000
}
// Minutes
while (time > 60000) {
minutes++
time = time - 60000
}
// Seconds
while (time > 1000) {
seconds++
time = time - 1000
}
const h = `${hours === 0 ? '' : `${hours} hour${hours > 1 ? 's' : ''}${minutes === 0 ? ' and' : ','} `}`
const m = `${minutes === 0 ? '' : `${minutes} minute${minutes > 1 ? 's' : ''}${hours === 0 ? ' and' : ', and'} `}`
const s = `${seconds > 1 ? seconds : 1} second${seconds > 1 ? 's' : ''}`
return h + m + s
}```
your reactions are great
thank you
I accidentally copied and pasted the wrong function
there you go
looks equally as shit
later
damn wanna see mine
5 mil on the bank
yes
rn
fucking
its forever saved
shit
very juicy bot
looks like mine
let me fetch ti, 1 sec
/**
* Format the time broski
* @param time how long in milliseconds
*/
export function formatTime (time: number): string {
let hours = 0
var minutes = 0
var seconds = 0
// Hours
while (time > 3600000) {
hours++
for (let i = 0; i < 3600000; i++) {
time--
}
}
// Minutes
while (time > 60000) {
minutes++
for (let i = 0; i < 60000; i++) {
time--
}
}
// Seconds
while (time > 1000) {
seconds++
for (var i = 0; i < 1000; i++) {
time--
}
}
return `${hours === 0 ? '' : `${hours} hour${hours > 1 ? 's' : ''}${minutes === 0 ? ' and' : ','} `}${minutes === 0 ? '' : `${minutes} minute${minutes > 1 ? 's' : ''}${hours === 0 ? ' and' : ', and'} `}${seconds > 1 ? seconds : 1} second${seconds > 1 ? 's' : ''}`
}```
fixed
Not cursed enough
no?
blur?
The best code is code that documents itself.
yes blur
why blur?
Blursed code
cuz i was making this bot when nobody else had a genshin bot
the name would've given it away
and i wanted to keep the upper hand

most ideas are copied from here
Nono, not like that
cough cough like my presence
It's called "higher ground"
oxford comma for life
yes
I honestly only use it because you can group things differently
lemme think of an example
not watching it

ex. I like coding, pineapples and pizzas, and sleeping
see
thats why you need the oxford comma
yes
actually
@delicate zephyr OI
Can't JS's Date object help parse date components instead of writing your own (years, months, days, hours, minutes, etc.)
idfk
actually insanely good idea
please share
will do
how hard is it to make sharex add a rickroll bit to gifs in the end?:
toe every gif
with ffmpeg
so when you share gifs it always ends with a rickrocll
not hard at all

no fuckoff, i said it first
perform actions -> cmd
idk ffmpeg lmao
no thanks
M?
masochist
oh
ffmpeg shouldnt be that hard
can you do that?
One message removed from a suspended account.
no
rip
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
i was replying to million
One message removed from a suspended account.
One message removed from a suspended account.
Hello!
const regex = new RegExp(':[^:\s]*(?:::[^:\s]*)*:');
console.log(message.content)
if(regex.test(message.content)) return;
``` this is my code. I am using TMI to send messages to a twitch channel but even when my discord emoji matches the regex it doesnt listen to my if statement here. any ideas? I tried .test and .match
This is the full code
TMI is a Twitch lib tho
im using it to send discord messages to a discord channel
and discord messages to the twitch channel
i dont think you can, nor should you
well im doing it
oh, you doing the same thing i did lmao
its real simple
i made a bot that does exactly that
it finally loaded http://img.terano.dev/wWNWDLF6
Lol
lol, anyways do you know why the regex is notlisting to my if statement
i dont have too much experience in regex
I wonder what the time complexity of this is
I think its O(n)
that wont catch animated emotes
was about to say that
i usually prefer using capture groups and exclusion lists tho
Neither will the one you're using
but it shouldnt affect mcuh
yes it does
Oh?

wait the point is using animated emotes?
thats the default emoji regex
Custom emotes are not :name:
english please
?
give me a sec to test it
this is the recommended regex for emotes
context is given with the actual full thing
not what you write
you write :mmulu:
it still sends it
no its not
i did
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
he wasnt trying to use 3
One message removed from a suspended account.
i dont see why your saying anything why would he use a whole extra line just for :wobble: or whatever
ill console log my if statement
/<a?:(\w+):(\d+)>/g.test('')
literally just that
try it yourself
you dont realise what you did didnt you?
const regex = new RegExp('/^<a?:(\w+):(\d+)>$/');
console.log(regex.test(message.content))
look closely at my example
and urs
you blindly copied the regex
that includes the start and finish of a string
thats what $/ is for
aaah my bad
sorry I just never used regex. I should take my time and properly learn it next time.
ill quickly test ur example out
its fine, just let me know you're new to regex and i'll give you an extra hand
well, NOW you said it lul
no problemo
also
@earnest phoenix before you leave
let me ask you a very serious question

is that bot/app u making for a few servers or you planning on scaling?
its only for 1
then go right ahead
and its open sourced so if someone wants it they can just download it
perfect
Recruiting? 
i just like to enforce that twitch bots shouldnt be using the same discord mindset. Twitch does NOT scale
using TMI wouldnt be scaleable and my system wouldnt work either way
lol
its a pain
im not too into using vanilla APIS
its in 52k twitch streams on the main lib i thnk
too much of a pain to make a wrapper for
i went full on
kubernetes doesn properly handle it either
you're 100% stuck with making your own wrapper
lol. right now im trying to make my own API and wrapper so I can learn
then by all means feel free to ask if you got any question, i might be one of the few here to ever touch twitch api
lol, I added you if i need future help

you play Genshin impact?
yup
also, this might be the same thing you are working on, but on scale btw
letme get a quick snippet
lol I use to play it before I got a uipgrade. I might get back into it. We should play sometime
I am high enough level to mutiplayer i believe
custom currency per chat/stream + currency carries over
also crosschat
which is what you'r currently doing
wait a minute
though this is focused for scaling
selfbot????
that seems alot smoother then mine
selfbot?
he is using the API
kinda, yeah
yea ik
twitch doesnt detect bots like discord
^
its only discord that makes the distinction
Erwin how did you deal with the sharded message event?
i believe you need to apply for the bot badge
and blood
microservices?
i dont have the bot badge, just the verified icon

might wanna check 2 things if you want ideas @earnest phoenix
botghost(which was my only competitior) and Leviathan (which is my bot)
botghost is selfhosted, leviathan is free for all, just subscribe and i'll join the stream
botghost for twitch?
ah
or something like that
nightbot
PhantomBot is an actively developed open source interactive Twitch bot with a vibrant community that provides entertainment and moderation for your channel, allowing you to focus on what matters the most to you - your game and your viewers.
afaik those are the only 2 discord/twitch/youtube bots
phantombot is 
should probably categorise them into multi-platform bots
actually thats smart
I wouldn't say so
let people host their own
afaik , it is, most small bots dont have the reach to compete nor do they do much in terms of interacting with both apis, mostly its just stream services to warn someone is streaming
i made a point to actually get better caching and bringing new things to the api community for twitch
managed to beat nightbot and streamlabs in terms of latency
But the last update was 7 months ago, not saying that's a bad thing but I see that as outdated mostly
twitch doesnt update as frequent as discord
Pogos
the service is fully up and running on the latest api endpoint
Anyways sometime we should play genshin
im down for that
i sent the links just below that
so
if i wanna make a seperate discord collection
bot.commands = new Discord.Collection();
bot.helpcommands = new Discord.Collection();```
do i just copy and change
I’ll copy the message link

until twitch releases a new twitch api versioning, i doubt i'll be touching that code
theres too many people using it for me to deprecate it
using what
its currently on helix iirc
we dont use numbers as api versioning
collections = collections + 1
you shouldnt be using a json db
at ALL
more collections
is that a json db?
doesn't look like it
actually
no
its fs.readFile
use require() instead
compltely my bad
already a tad too buzzed
most dbs represent animals, json.db is a wolverine
actually, you cant do that directly
it's furry
wasnt there a require method for folders/
only furry because everything else is molten lava devil













