#development
1 messages · Page 1464 of 1
Aight so say I have a timestamp
1608258694140
ok
k
So I need to add 12 hours to that timestamp
And then check what the time difference is from now to that 1608258694140 + 12 hours.
So say that timestamp was 2 hours ago
And I check it now
I want it to say I can do something again in 10 hours
Heya, I'm working on a database for my bot and going through the tutorial, but Sequelize's format is kinda offputting to me. I used Django's ORM for a project before and find it much more clean - and how associations is set up in Sequelize kinda confuses me.
Is there any better recommendations out there?
can anyone help me ?
wtf
ye
what happend
i dont code in js
its an array not an object
it works for me tho
no it doesnt
clearly you dont know arrays
i think thats an array
here
The JavaScript Array class is a global object that is used in the construction of arrays; which are high-level, list-like objects.
i thinks its like this:
arrays are indexed with numbers, not with properties
oh
than it's an object right?
lma
sorry
it isnt
its an array
array.forEach()
you iterating through each item inside the array
and THEN inside each item you getting artist
<arrayname>[<index>]
YES
But that artist
has a lot of properties
I wanna et the name
oh let me say this one
then it doesnt have name in it
it does
"artists": [
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/5a2w2tgpLwv26BYJf2qYwu"
},
"href": "https://api.spotify.com/v1/artists/5a2w2tgpLwv26BYJf2qYwu",
"id": "5a2w2tgpLwv26BYJf2qYwu",
"name": "SOPHIE",
"type": "artist",
"uri": "spotify:artist:5a2w2tgpLwv26BYJf2qYwu"
}
],```
Sorry
if you dont know these you wont be getting far
dont be sorry, just learn from the docs i sent you
its okay not to know
we all start somewhere

imagine being a bot dev, couldnt be me
LOL so ironic ahahahhahahaha
노래봇 추가하는법알려주세요
imagine being a bot dev, a lib dev, a proficient dev, a hired dev and a API abuser
ah
oof
ik
Software engineer™️
nice
youtuber™️
now that hurts me and my 110 subs
12 year old that learned python in 7 months™️
wut
wait you 12 rn void?
are you 12
ye
@earnest phoenix
nooooooooooooooooooooooooooooooooo
to the void u go
I AM THE VOID
var s = require("spotify-url-info")
s.getTracks(`https://open.spotify.com/playlist/3Q4cPwMHY95ZHXtmcU2xvH`).then(songs => {
for (i = 0; i < songs.length; i++) {
let finalboi = songs[1].name + " " + " By" + " " + songs[i].artists[0].name
console.log(finalboi)
}
})
I feel like I am doing wrong
something
It just logs it one time
Saying - ""ELLE By SOPHIE""
@delicate shore stop using var
Ok
if I do artist[i].name it logs undefined
cannot read property name of undefined
cuz its not there
But the way is right?
erm no?
i dont know much abt js but why not format the string instead of using sub-strings
no idea what you guys are talking about but i will pretend i do
I get song name from spotify and search tme on yt
Ok i will come back after exam
bye
k
bye
Void just say you meant that you were 12 feet tall 🧠
ye
no u cant
yeah
Yeah what
houses cant jump
finished working on an audio recognition command
Fun fact: when I go to GitHub e explore I almost always see some repo for a discord selfbot
I am trying to embed a youtube video on my bots page but with this new layout its a huge boxand I cant re-size it to be the size of the actual video
how was it to show how much ram / memory the bot has?
Depends on what programming language you use
yo does learning html css js and node make me fool stak weeb dev
It does involve doing backend and frontend so technically yeah
yay im a weeb dev no i dont watch aneme i watch pookimon
br

Please keep this channel on topic 
awwwww ok
@oak cliff lol isn't chatting about anything pogeyramming related allowed here
@kindred surge This isn't the server to ask someone make a bot for you. Goto fiverr.
I'm writing ytdl-core@latest to make a music bot. Is there a way to bypass YouTube API quota excess?
nobody cares
ytdl doesn't use the official youtube api 🤔
So what do you use
What?
So we can't use our youtube channel names?
Ah... it's my little mistake
Wait but I've been using my YouTube channel name
use https://www.npmjs.com/package/ytdl-core for extracting video metadata
use https://www.npmjs.com/package/ytsr for scraping search results
Ok
i wasn't referring to you
Oh ok sorry
Is there any way to bypass it?
they're limits for a reason
you can't bypass them
use the packages i sent
however with this approach there's a risk of getting ip banned
which means you need to ip shuffle, i.e. proxy your requests if you're going large scale
or just give up on implementing music in the first place because a million other bots already do it well enough
Um... I want to implement a music bot. Is IP shuffle difficult...?
difficulty is subjective
Packages ytsr?
what
Does this mean ytsr now?
buy more quota
they have an application for that
By the way ytsr is broken for now
they give free quota extension but charge after 1million point usage daily
Please anyone suggest some features for my bot
How many dollars is 1 million?
what
100 points is how many dollars
see their quota page
here's a crazy idea
no u
don't use their official API if you're planning on doing a lot of requests
Can you give me a link?
their quotas are low
Music bots are good
and there's no point in making anymore lol

I bet they have the youtube external link in many songs
nobody will want to use your bot when there's already perfectly good solutions like ayana, rythm & groovy which can handle youtube streaming very well, because, well, they can afford to
smaller music bots are always going to be shit if you don't have the budget for it
aw
That's right, but I have a reason to pursue this. For my simple dream. Understanding and building code is fun. I have an extra amount to invest in my experience
😊
that entire message felt like live laugh love
Tbf if you're just doing it for fun and learning, then why not
Not that there is much to learn by making one
I would like to ask for an opinion on how to select multiple youtube apis through other acquaintances and replace one api key whenever the quota is full and recycle it again.
What do you think?
as if scraping is tos compliant lol
clearly you haven't read the tos
we can't run your code in our mind. Show errors
are you sure the error isn't getting swallowed
you don't await or call .catch()
also confirm that the event is firing and is getting past the if check
debug it 🤷♂️
brb
Can Anyone Help?
when i write a command in the bot it says this in the terminal
💬General Commands " is not a function at Client.<anonymous> (C:\Users\Hello\Documents\G5X.XYZ\index.js:31:2) at Client.emit (events.js:315:20) at MessageCreateAction.handle (C:\Users\Hello\Documents\G5X.XYZ\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14) at Object.module.exports [as MESSAGE_CREATE] (C:\Users\Hello\Documents\G5X.XYZ\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32) at WebSocketManager.handlePacket (C:\Users\Hello\Documents\G5X.XYZ\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31) at WebSocketShard.onPacket (C:\Users\Hello\Documents\G5X.XYZ\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22) at WebSocketShard.onMessage (C:\Users\Hello\Documents\G5X.XYZ\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10) at WebSocket.onMessage (C:\Users\Hello\Documents\G5X.XYZ\node_modules\ws\lib\event-target.js:132:16) at WebSocket.emit (events.js:315:20) at Receiver.receiverOnMessage (C:\Users\Hello\Documents\G5X.XYZ\node_modules\ws\lib\websocket.js:825:20
andd no code 
and here is the code
Hey 🙋🏻♂️
for anyone who wants to use slash commands, I've just made this to make a little bit easier for you https://www.npmjs.com/package/slashdiscord
ads above
I am just trying to help : (
ik
@acoustic slate ask it
a lot of people doesn't know to do api calls so I wanted to help out doing that stuff easier for them
we are bot devs
by having an approved bit in the site
a bit yes
you need to own an approved bit
How do I do that?
smh autocorrzct
kekw
ghfhvc
Sorry, I’m new
@acoustic slate #502193464054644737 :)
is it possible to create a channel directly in a category and not have to create it THEN use channel.setParent ?
in which library
discord.js v12
recently i have made a music bot:
How do you do that
exports.run = async (client, message, args) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - Sadly, you're not in a voice channel !`);
if (!args[0]) return message.channel.send(`${client.emotes.error} - Please indicate the title of a song (or a link)!`);
client.player.play(message, args.join(" "));
};
```as you see when using !play .... it will send this list and you would have to click a song. However, i want the song to automatically be chosen and played.
how would i do that?
module.exports = (client, message, query, tracks) => {
message.channel.send({
embed: {
color: 'RANDOM',
author: { name: `Here are your search results for ${query}` },
footer: { text: 'This bot has been hosted for your community needs!' },
timestamp: new Date(),
description: `${tracks.map((t, i) => `**${i + 1}** - ${t.title}`).join('\n')}`,
},
});
};```
just pick the first song out of the array lol
how if i may ask?
index it
The JavaScript Array class is a global object that is used in the construction of arrays; which are high-level, list-like objects.
second sample is indexing
that index would be out of array's bounds
1 - 0 = 1
witchery
let first = fruits[0], so i would have to use tracks.length[0]
what
Lmao
take a good look at what they have vs what you have
an array starts with 0?
yes
however you're not indexing an array
node_modules/discord.js/src/client/Client.js:42
} catch {
hellp
am i supposed to print that on a piece of paper and frame it, or?
hahahahhaha
Well, it caught
update node.js
let first = fruits[0]
// Apple
let last = fruits[fruits.length - 1]```these are both examples of indexing right?
correct
the former will get the first item in the array, the latter will get the last item
so i would have to use tracks[0]
correct
stfu
The pop() method removes the last element from an array and returns that element. This method changes the length of the array.
thanks
there's no reason to pop search results smh my head
Shaking my head my head?
lol
lets shake our heads
i'm a gemini after all
run node -v on console
Hi
oh ok
Can someone send me a github link for a working bot
what
Or something like that
There are hundreds of open source bots on github
Just search for discord bot using the search tool
https://github.com/NMW03/marvelbot my shitty bot
@summer torrent
and
@earnest phoenix so now know i have to use tracks[0] to get the first song in line, but i don't know where to put it tbh.
what do you mean
exports.run = async (client, message, args) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - Sadly, you're not in a voice channel !`);
if (!args[0]) return message.channel.send(`${client.emotes.error} - Please indicate the title of a song (or a link)!`);
client.player.play(message, args.join(" "));
}; ``` this is the play command
but i ofcourse cannot add client.player.play(tracks[0]) to it
@earnest phoenix
So if noQ is not defined, it will not push it into the array. If i'm wrong, please correct me.
args.push(`amount=${noQ}` || "");
Cannot load default config file
Error: Error parsing info: Unable to retrieve video metadata
wait
<style>
body {
background-image: url(https://wallpaperaccess.com/full/380911.jpg);
background-color:#464646;
}
</style>
thanks
np
do you by chance know how to change the color block text?
cry
yeah?
Hmmm
do you know the answer on this question?
Ytdl?
well play it how you would play it normally
🤔
just pass the track url
i have no idea how your infrastructure is set up
anyone help me?
yeah it's like really strange
i use !play ...
it ggives me a long list
and then i have to input a number
and it plays the song on that position
i- are you using a package that does everything for you
no
anyone help me
do you want to see the whole code?
you got filters for it
other elements white
at the bottom of your page
I hve seen a pkg that does exactly that
use hastebin. No one wants to download your file
what is error
you close your function after the first if
that really isn't helpful
you're using a package that handles most of audio for you 🤷♂️
find docs on that package
But wait what are u trying to do?
yeah still don't understand anyfucking shit
it is awaiting the response
how are we supposed to understand then lol
you have no control over the actual important part of the code
So I have a variable, it is either an array or a string. How can I make it that if its an array, it doesnt do anything. but if it is string, it will convert into an array
I know the solution to this, I just need a cleaner one.
what language?
yeah
if js I would use js if (strArr instanceof Array) str = strArr.join('join char')
if would be best if there is no if statement
The clearest solution would be that one
how can you do it without an if statement?
okay
well
str = strArr instanceof Array ? strArr.join('join char') : strArr```
no if statement but still does the same thing in the same time
well, you done the opposite of what I wanted to do
if array, return
if string, convert to array
simple as [str]
honestly I was told to learn more about it by Erwin
e
so I can't tell you
oops
but I can link you to the page
meant that for general
Spread syntax (...) allows an iterable such as an array expression or string to be expanded in places where zero or more arguments (for function calls) or elements (for array literals) are expected, or an object expression to be expanded in places where zero or more key-value pairs (for object literals) are expected.
Update ur ytdl version. Latest is 4.2.0 , and next time ask in ytdl support server for ytdl related stuff
basically takes an array and destructures it from what I can tell
but I think,
let first = ["a", "b"]
[...first, "c", "d"]
//["a", "b", "c", "d"]
but does it work on string
if first is a string, will it work?
OMG no way
it makes my life so much easier
can't you just use first not ...first?
how to see how many hours i have left in my heroku?
@carmine summit Now try with the string being "abc",..
yikes
???
thats a really good point
is that for strings or arrays?
i have a question. When my bot have a verified check?
concat is for merging arrays
when you verify your bot with discord
do you know what concat means?
no, but what I nkow that it merges arrays
lol
wait concat works well doesn't it
Can't you use push? What exactly are you doing again Cwickks
why did you ask if there was a way to check if it was a string or an array if you were essentially doing this
push only pushes strings, or produces a result of [[]]
what I want is a result of []
yes I know that I can push anything
but it results in an array in an array
.push(...array)
I want it to merge, not to stack
no way to tell if its an array or a string
... sucks
... is so great
^^
Then concat is the right function to use
I think so yes
ye
there server link
link for discord bot guides?
Is there any way to get the TopGG analytics charts on my bot's private website? (Something similar to the widget)
what's the site name?
Can I take a look?
I whink there is no other way
You already done it
No i m talking about the Charts of things like Votes and invites
not the widgets
the growth charts
you could use https://dblstatistics.com/
View the historical performance of up to 17501 bots listed on Discord Bot List (top.gg). Updates hourly.
But you would have to draw the charts yourself
@crimson vapor can u please tell me how to get those charts on my own website?
why does member.user.presence.game is not working? :(
Use chart.js for example
what is wrong?
Simple, clean and engaging HTML5 based JavaScript charts. Chart.js is an easy way to include animated, interactive graphs on your website for free.
Do you have member intents enabled?
you need em to get presence data
if you mean your bot's charts, maybe you can embed a widget from dblstatistics
get an api key and request api/bot/:id/widget/:type
View the historical performance of up to 17501 bots listed on Discord Bot List (top.gg). Updates hourly.
and you can use it as a widget
hi
@pale vessel turns out I accidentally uploaded 300mb worth of files to my git repo
you said that
ok thanks very much.
not 
t nologgers
status works, but game doens't
Any idea why?
wait can emojis be placed in links?
enable presence intent
right so im writing a lib in ts and i want to make native slash support
whats your gh name again?
/* eslint-disable */
import * as utils from "../utils";
import fetch from "node-fetch";
import Client from "../websocket";
import {inspect} from "util"
export interface OptionsProps {
name: string;
description: string;
type:
| number
| "SUB_COMMAND"
| "SUB_COMMAND_GROUP"
| "STRING"
| "INTEGER"
| "BOOLEAN"
| "USER"
| "CHANNEL"
| "ROLE";
required: boolean;
choices: Array<{ name: string; value: string }>;
}
export interface SlashConfig {
name: string;
description: string;
options: Array<OptionsProps>;
}
export default class SlashCommand {
applicationID: string;
config: SlashConfig;
constructor(client: Client, clientID: string, config: SlashConfig) {
const postUrl = utils.v8BaseURl + `/applications/${clientID}/commands`;
console.log(`${postUrl}`)
getSlash(client, postUrl, config);
}
}
async function getSlash(client: Client, postUrl: string, config: SlashConfig)/*: Promise<SlashCommand>*/ {
console.log(JSON.stringify(config));
let res = await fetch(postUrl, {
method: "POST",
headers: {
'Authorization': `Bot ${client.token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(config),
});
console.log(inspect(await res.json(), true, null, true));
// return res.json();
}
this is the code i have so far
i enabled it already
but it throws that a string didnt match regex
stop asking
are you using it in your code
pretty sure it's enabled since they got the status working
game doesn't
hm
check your code
did you disable displaying games in your settings
here, everything is on
can you show your code for that section
anyway so
how to see how many hours i have left in my heroku?
oh
lmao
any alternative?
lol
i use repl.it
oh
Step 2: buy a vps
PAY. FOR. YOUR. HOSTING.
I am not able to open pins.
presence has no property named game
name
most probably
Building a bot isn't about earning the badge, it about wasting your time and money.
no badge anyway
haha
@crimson vapor typescript pwease hep
users can have mutiple activities in their presence, so it's an array now
so thats why my activity thingy wasnt working
Wha?
idfk ts
This is my bot
am learning
it's exposed under presence
🙂
post to the api
Use inspect element in your browser and find the selector
That looks nice though imo
italics gang
Anybody can make the help like mee6 bot? i want to learn
@clever vector basic usage of args
no one wants to help you create a piece of trash
. . .
here's a general rule of the thumb:
if you want to make a bot like another one, don't
What is the difference in both these??
import * as XX from 'yy' and import XX from 'yy'
Its not trash
atleast its a command
You're defining *
Instead of XX
Iirc
I'm not Python
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
tldr import * imports everything from the module, import XX imports the default export
that's es6
Yeah, you're Cwickks
lol
Does that everything also include the default?
what the fuck was that
oh well guess ill keep not using it
croatian letter lmfao
so how the default will be accessed?
Like this: XX.default or XX.thatProperty?
if you import like *, you will have to access XX.default
thats why you can't name a variable default
Hmmm, that's where I got confused. Thanks bro
no problem
Also how do I import something and export it at the same time?
and for the defaults?
same
export { default } from './something'
you can also export it as not-default
export { default as somethingNotDefault } from './something'
Ok!
If I import the file.js in two different files, say aa.js and bb.js.
Does that file.js is being imported twice (and using double system resources) or the same file is referenced to both files (a and b)
Do I need to explain more? 😅
Aha i see why you feel disappointed.
Mee6 help cmd is almost easy, but ye i know you need help
kk
/* eslint-disable */
import * as utils from "../utils";
import fetch from "node-fetch";
import Client from "../websocket";
import {inspect} from "util"
export interface OptionsProps {
name: string;
description: string;
type:
| number
| "SUB_COMMAND"
| "SUB_COMMAND_GROUP"
| "STRING"
| "INTEGER"
| "BOOLEAN"
| "USER"
| "CHANNEL"
| "ROLE";
required: boolean;
choices: Array<{ name: string; value: string }>;
}
export interface SlashConfig {
name: string;
description: string;
options: Array<OptionsProps>;
}
export default class SlashCommand {
applicationID: string;
config: SlashConfig;
constructor(client: Client, clientID: string, config: SlashConfig) {
const postUrl = utils.v8BaseURl + `/applications/${clientID}/commands`;
console.log(`${postUrl}`)
getSlash(client, postUrl, config);
}
}
async function getSlash(client: Client, postUrl: string, config: SlashConfig)/*: Promise<SlashCommand>*/ {
const body = JSON.stringify(config)
let res = await fetch(postUrl, {
method: "POST",
headers: {
'Authorization': `Bot ${client.token}`,
'Content-Type': 'application/json'
},
body: body
});
console.log(inspect(await res.json(), true, null, true));
// return res.json();
}```h
uhh
invalid form bodey
but im following the docs
and posting with the right headers

When I add this code, it leaves a space on the page. How can I delete this space?
damn i haven't seen anyone use n++ since 2010
what part of the code do you mean
well i mean, you're adding content to the page
probably happens because of combined padding/margin
well as you can see its mostly because of the section's margin
i delete it from css?
font = ImageFont.truetype('./cogs/PTSansCaption-Bold.ttf', 37)``````OSError: cannot open resource PILLOW trying to open font
(python)
are you sure it exists
yes
i mean i tried even putting it in mail file
main*
like and it still didint
uhh i have an idea
gimme a min
excuse me, what's an infrastructure?
Are you hosting your bot on a server at home, or are you using a third-party VPS? If at home, what OS are you running? If on a VPS, who's your hosting provider? And, how do you secure access to that hosting?
np
for example, if i use SomethingHost (i don't), should I say that I host my bot on SomethingHost?
ok thank you!
im pretty sure you also have to say what language you use but, if they need more information they will send an email
does this want to ask me if i have another host rather than SomethingHost?
i think i just wrote about the database i use
nope still didnt work
if i want to mention making my own memes (change my mind, distort, ferbtv), how do i describe it properly?
This is what happens when you forget to localize command names
How do u get the lenght of a map?
@tired panther discord.js collections have that built in but you have to develop your own way to get that from a map
client.prefix = new Map()
I used this xD
i only use discord.js collections
how to fetch console.log() ?
its another question
what do you mean by this
some error are throwing out with console.log("") And I want to fetch them
incase anybody have a answer?? 🙂
@tired panther bruh console log can't throw errors u dumb
do you mean throw new Error("")?
you have a huge misconception, meister
require.cachr exists
yes for me
you should use throw as it actually errors
and stderr is for console.error
the same way stdin is different from stdout
they're pipes
when the process is run and the first file requires file.js for the first time in the code, the file data is saved in require.cache so any other files don't have to re read the file using fs
(the cache is deleted when the node process exits)
yea makes sense
oo
lmao
yes, it's not a sexually transmitted disease

you sure about that?
yes
stdin is ReadableStream right
unreadablestream
Thanks.
So now suppose, I import a package (AB), which have two sub-packages (a and b)
I'm importing the two sub-packages in two different files.
.
So if I do import the main package in both files, will it affect any performance/resource?
Nope
@rocky hearth yes
i think imports also have a cache like require?
oh
(we are talking about JS, right?)
yea
no were talking about evieisqtscript
Yeah so anything you require is cached, which means not only you can require the same thing 100x and not impact memory, it's also cached in the sense that values set within that module (local variables, etc) are "shared" between imports.
i thought that if he imported the main package twice it would take double space (since a + b is big and he's importing twice) than importing them individually
OMG CHAT DEAD NOBODY TALKED FOR FIVE SECONDS AAAA
what do you guys mean by "the main package" though
Then that means, if I know that I'm going to use the whole package (AB) throughout my project.
I need not to do import a from 'AB/a' or AB/b individually in different files.
Instead I could just import the whole main package
Oh so you mean something like import get from 'lodash/get' ?
you should just const global.requires = require('*')
or import { useState } from 'react'; ?
@rocky hearth tho if you only need a subpackage in the file why download the big main package with other stuff
(exactly why discord.js splits their stuff into main library and collection)
Yeah I know, but I also know that I'm going to use every sub-package throughout my project
🤯
this one
bad thing is it doesn't work for most packages with typescript
cuz you need typings for the file you're importing
@mellow kelp You seem to be know ts. Help me fix the red lines
you first have to extend those classes
since isLowerCase doesn't exist in String
right
so you can add something like enviroment.d.ts
interface String {
isLowerCase(): boolean;
// etc
}
but Thats what i hv did
@mellow kelp how could I add better error handling for https://github.com/Million900o/file-storage-node-handler
use try/catch
https://million.is-a.computer/files/5JIFYAQEg19ebru.png this function will return true for "aA".isUpperCase() by the way
or async/await so that the user can add .catch
nope
and I don't think I can use try/catch because there is no way for me to say im returning an error
I want the ts to know that these functions exist. But that error..... 😦
try moving interface String out of global
No LUCK!
hmm
interface String extends WHAT
String
no?
it works for me that way
hmm
imma try making botums in tahpscript
don't
i can change the file extension of my current js files to ts and be fine right
yes
for the most part yes
all good
unless you got untyped function params and stuff
I tried to remove the module keyword. and BOOOM!!
It works!
.
But not when I tried the same in the morning.
Thats so weird
and a tsconfig.json telling it to compile to es6 (what does repl support yet)
I have typed function params and stuff
k then
can github pages route names have _s
hmm
hmm
s
. 。 • ゚ 。 .
. . 。 。 .
. 。 ඞ 。 . • •
゚ @earnest phoenix was An Impostor. 。 .
' 0 Impostors remain 。
゚ . . , . .
puts on elytra and flies back to ship
SystemError: Elytra won't work due to lack of drag.
haha noobs forgot that elytras work in the end
kok
BoostingWarning: Boosting too much code913's speed.
What are you coding in maybe i can help
idk
Like when you do ```js, there is also for .htaccess, how?
im coding in python so i cant really help
.. that's unfortunate.
How do you add indents like
this
To messages bots send in python
I guess \n?
ok
k so
i have several questions
i wanna switch from heroku to repl.it
what were the advantages?
Do you pay for heroku? Do you plan to pay for replit?
no | probably yes
how i post a image with custom command?
static or image generation?
Yes, they have a free forever plan that gives you 600mb ram
But they require a credit card dont they
Yes
well i dont even have a credit card





