😰 😰 😰 wew this error has resurfaced again https://i.imgur.com/RXux4lT.png, anyone have any advice on fixing it? It's not triggered by anything specific that I can tell, eg. commands don't cause it to happen
#development
1 messages · Page 615 of 1
Something happened
you're not wrong
ClientManager.js doesnt even exist in master
lmfao what
your error
const timeout = this.client.setTimeout(() => reject(new Error(Constants.Errors.TOOK_TOO_LONG)), 1000 * 300);
comes from that
yeah
Ye
I know
which isnt even in master
It's annoying though because it doesn't tell what actually took too long
Update to master 👌
yikes how much will that break?
Yo which method to create a channel?
]]moreinfo
If you want people to be able to assist you, please provide more information, such as what library and language you're using, the code in question and what you are trying to do and/or what is causing the error.
oh ok discord.js lol
trying to make a -new command thing like ticket bot
but it’s a private bot
yikes @amber fractal
still getting it lmao
what's the command for updating to master again? im having a 0 iq moment
I think the update is unnecessary in prefix update
@zealous veldt I think it's npm install discordjs/discord.js
I'm guessing that it's still there, just moved, but I havent had that issue on master
im trying to make it so only one person and staff can see the channel
with a bot?
yes
on what lib?
discord.js
oh
tarpergon
let subject = args.join(" ") ? args.join(' ') : 'none';
let ticketlist = client.ticket.get(message.author.id);
if (!ticketlist) {
let construct = {
id: message.author.id,
username: message.author.username,
userdisc: message.author.discriminator,
subject: subject
};
client.ticket.set(message.author.id, construct)
return message.guild.createChannel(`${message.author.username}-${message.author.discriminator}`,'Tickets','text', [{
type: 'user',
id: message.author.id,
}])
return message.channel.send(`You have created a ticket in #${message.author.username}-${message.author.discriminator}`)
} else {
message.channel.send('You already have a ticket open!')
}```
I didnt read
Give me a sec
the inconsistency of the formatting and semicolon placement concerns me
lmao
I usually create the channel first then overwrite, I just think it's easier
Make the channel, save it to a variable then use overwritePermissions
that's basic js tho
bro
createChannel returns a Promise channel
do I make a empty var
you save it like any other variable
if you want to
if you use the guild id and deny Discord.Permissions.ALL it will not be allowed to anyone but admins
then just give perms to the author with overwritePermissions
I gtg tho
no
mods only
hi
channel.overwritePermissions(@everyone, {
VIEW_CHANNEL: false
})
channel.overwritePermissions(message.author,{
VIEW_CHANNEL: false,
SEND_MESSAGES: true
})
let staff = message.guild.roles.find(val => val.name === 'Staff');
channel.overwritePermissions(staff, {
VIEW_CHANNEL: true,
SEND_MESSAGES: true
})```
I cant figure out how to disable read for everyone
You probably can't just put @everyone
Try using the id of the everyone role?
Which would be the id of the guild
also huh
You're giving the author send but not view

okay so this might a really dumb question but its my first time dealing with sharing and im just referring to the docs
const Discord = require('discord.js')
const manager = new Discord.ShardingManager(`${__dirname}/src/main.js`)
manager.on('launch', shard => {
console.log(`${shard.id} is online!`)
})```
running it just exits with no output
running src/main.js by itself works
You on stable or master?
should be stable
yeah, stable
oh, i should also add manager.spawn()
and now its complaining about tokens 
and now im getting 401 
okay there we go
its working now
When will the bot be active
what bot
we are not a specific bot server you should join their support server for that
thank you
np
/Users/sinistrecyborg/Projects/Fourier/dist/events/ready.js:4
class default_1 extends __1.Event {
^
TypeError: Class extends value undefined is not a constructor or null```
Idek what code to provide for that error
whatever is in ready.js at line 4
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const __1 = require("..");
class default_1 extends __1.Event {
constructor(...args) {
super(...args);
}
exec() {
console.log(`Logged in, serving ${this.client.guilds.size} guild(s).`);
}
}
exports.default = default_1;
//# sourceMappingURL=ready.js.map```
This is what it points to js "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const FourierClient_1 = __importDefault(require("./structures/FourierClient")); exports.FourierClient = FourierClient_1.default; new FourierClient_1.default().connect(); var Command_1 = require("./structures/Command"); exports.Command = Command_1.Command; var Event_1 = require("./structures/Event"); exports.Event = Event_1.Event; //# sourceMappingURL=index.js.map
Im not sure, but I have to go, if it isnt solved by the time I come back I'll try to help
sorry
k
In the last place where I asked this they said my node version was breaking or smth
@zealous veldt the popular vps thing pinned the 2.49 eur by host my servers is only 20GB disk not 50?
https://oh-mah.ga/9A6swXBH.png confused...
hmm
ohhh thats the openvz
openvz is trash
plz suggest the kvm one
kvm is the https://www.hostmyservers.fr/kvm-nvme
spent way to much time battling providers to get decent open vz
the issue is they over sell it af
vs kvm they rarely do
kvm is also same system vlutr uses which never hear issues about
managed to crash a openvz provider last month they were down for the whole weekend cause i forked my vm but due to how it runs it brought down the entire service
was 11/10 support
the machine also randomly lost its ethonet adapter and your unable to make swap on openvz
had lot of pain if cant tell
Anyone know if theres a tutorial on a command that lets me save information on a word.. so lets say i do like *save sabres (blahbllah blah) then id do like *find sabres and the bot would reply (blablablabalab)
there isnt a tutorial for every single use case ever
do research on databases; its what youre supposed to use reading from your message
alright cool thanx
recommend any database?
are you running a dedicated mongo server?
That happens due to the password / user being incorrect iirc
@earnest phoenix
its localhost
No password or username?
None
There may be something else sharing the same port then
It only works
if i type
a code
In mongodb file
But since its hosting
Theres no way to do tha
Wdym by 'a code'?
mongod.exe --dbpath c:\data\db
If i run this code
in the mongodb file
it works
But only works if i let the cmd window open
Oh
Thats when i was self hosting
But i hosted in heroku now
So i don't know how to resolve this
So since your running it using a Windows CMD it will close the actual server when you close it
Can heroku even run mongo?
^
I dont think it can
Heroku can
if you want a free mongo DB host I would recommend mlabs personally
I'm not familiar with how Heroku works, is it simply a Linux VM?
ie Ubuntu, Fedora, Debian
If so, you can just search "Install mongodb linux". If you don't want to self host and don't need more than 200mb of data stored I recommend mlabs free
Gonna try mLabs
nah heroku doesnt really give you a console
its like a command line
it never worked for me
you have a logs and a command line*
hey, I'm new to the Discord Bot scene and have recently made my first bot, however I'm having issues keeping it online. Im hosting the bot through Heroku, and set it up via the CLI, and it seems to go offline shortly after I turn off my laptop. If you could give me some assistance, solutions, etc., that would be heavily appreciated. If I don't respond soon I've probably gone to sleep
Dont host on heroku is the sure fix to this problem
Paying for a vps (pretty cheap) is infinitely better than any free service.
umm
]]vps @earnest phoenix
A VPS or virtual private server is a virtualized server instance run in the cloud. It acts like a normal server, allowing you to remotely login and manage it just like a physical server or computer. If you're looking for a way to keep your bot online 24/7 a VPS is a great option. Having trouble choosing a VPS provider or don't know where to start? Click here for a list of common and affordable VPS providers.
I have a problem it's not showing the pictures for my meme command it's just saying Generating... and it does not load the image
const Discord = require("discord.js")
const botconfig = require("../botconfig.json");
const colors = require("../colors.json");
const superagent = require("superagent")
module.exports.run = async (bot, message, args) => {
let msg = await message.channel.send("Generating...")
let {body} = await superagent
.get(`https://api-to.get-a.life/meme`)
//console.log(body.file)
if(!{body}) return message.channel.send("Try again...")
let mEmbed = new Discord.RichEmbed()
.setColor(colors.white)
.setAuthor(`Meme`, message.guild.iconURL)
.setImage(body.url)
.setTimestamp()
.setFooter(`Requested by ${message.author.username}`, message.author.displayAvatarURL)
message.channel.send({embed: mEmbed})
msg.delete();
}
module.exports.config = {
name: "meme",
aliases: []
}
can anyone help
confirm what is body contents
Cannot read property 'id' of undefined what does this mean i forgot
msg.author.id is wrong?
Apparently author is undefined /shrug
what are the chances of people using a url u made for fun rather than the og/real url
people use fake urls all the time, so...
const quiz = [
{ q: "Quel est la couleur du ciel ?", a: ["pas de couleur", "invisible"] },
{ q: "Nommez une boisson pétillante.", a: ["pepsi", "coke", "rc", "7up", "sprite", "mountain dew"] },
{ q: "Nommez une langue de programmation .", a: ["actionscript", "coffeescript", "c", "c++", "basic", "python", "perl", "javascript", "dotnet", "lua", "crystal", "go", "d", "php", "ruby", "rust", "dart", "java", "javascript"] },
{ q: "Qui m’a créé?", a: ["VinxVinx"] },
{ q: "Sur quel langue de programmation suis-je codé ?",a: ["Javascript",] },
{ q: "Nommez la septième planète du systeme solaire.", a: ["Uranus"] },
{ q: "Nommez la plus grande île du monde.", a: ["Greenland",] },
{ q: "Quelle est la plus longue rivière du monde?", a: ["amazonie"] },
{ q: "Nommez le plus grand océan du monde.", a: ["pacifique"] },
{ q: "Nommez l’une des trois couleurs primaires.", a: ["bleu", "rouge", "jaune"] },
{ q: "Combien de couleurs y a-t-il dans un arc-en-ciel?", a: ["7"] },
{ q: "Combien de places y a-t-il sur un échiquier?", a: ["64"] },
{ q: "How many degrees are found in a circle?", a: ["360"] },
{ q: "Combien de points une boussole a-t-elle?", a: ["32"] },
{ q: "Combien de cordes un violoncelle a-t-il?", a: ["4"] },
{ q: "Combien de symphonies Beethoven à t-il composé ?", a: ["9"] },
{ q: "Quel est le langage le plus basique que Microsoft a fait?", a: ["Visual Basic"] },
{ q: "'Que signifie l'abréviation OS de l’ordinateur (an anglais) ? ", a: ["Operating System"] }
];
const options = {
max: 1,
time: 30050,
errors: ["time"],
};
I coded this command quiz, but when the bot launches a question, for example, the first question, we have to answer by one question: either pas de couleur or invisible, but the bot, when one puts for example pas de couleur He says it is necessary and that the answer is pas de couleur, invisble both at the same time.. How do I fix the worries?
scroll up a bit to actually find the error
because command is not defined
but i defined
then you wouldnt get the error
```if (message.content.toUpperCase() === ${prefix}bigtext) {
message.delete(100)
if (!args.join(' ')) {
message.channel.send('Specify a text please!')
return;
} else if (args.join(' ').length > "20") {
message.channel.send('Sorry but the limit is 20 characters!')
return;
}
figlet(args.join(' '), function (err, data) {
if (err) {
console.log(err)
message.channel.send(`Sorry ${message.author} ! ERROR : ${err}`)
}
message.channel.send(`\`\`\`${data}\`\`\``)
})
}```
its my code
js wont lie
there is nothing in there about command wtf
if it says command is not defined it is not defined and theres no command there
btw there is no command in my hole code
then read stacktrace
holy fucking shit
yup i know
code :
const quiz = [
{ q: "Quel est la couleur du ciel ?", a: ["pas de couleur", "invisible"] },
{ q: "Nommez une boisson pétillante.", a: ["pepsi", "coke", "rc", "7up", "sprite", "mountain dew"] },
{ q: "Nommez une langue de programmation .", a: ["actionscript", "coffeescript", "c", "c++", "basic", "python", "perl", "javascript", "dotnet", "lua", "crystal", "go", "d", "php", "ruby", "rust", "dart", "java", "javascript"] },
{ q: "Qui m’a créé?", a: ["VinxVinx"] },
{ q: "Sur quel langue de programmation suis-je codé ?",a: ["Javascript",] },
{ q: "Nommez la septième planète du systeme solaire.", a: ["Uranus"] },
{ q: "Nommez la plus grande île du monde.", a: ["Greenland",] },
{ q: "Quelle est la plus longue rivière du monde?", a: ["amazonie"] },
{ q: "Nommez le plus grand océan du monde.", a: ["pacifique"] },
{ q: "Nommez l’une des trois couleurs primaires.", a: ["bleu", "rouge", "jaune"] },
{ q: "Combien de couleurs y a-t-il dans un arc-en-ciel?", a: ["7"] },
{ q: "Combien de places y a-t-il sur un échiquier?", a: ["64"] },
{ q: "How many degrees are found in a circle?", a: ["360"] },
{ q: "Combien de points une boussole a-t-elle?", a: ["32"] },
{ q: "Combien de cordes un violoncelle a-t-il?", a: ["4"] },
{ q: "Combien de symphonies Beethoven à t-il composé ?", a: ["9"] },
{ q: "Quel est le langage le plus basique que Microsoft a fait?", a: ["Visual Basic"] },
{ q: "'Que signifie l'abréviation OS de l’ordinateur (an anglais) ? ", a: ["Operating System"] }
];
const options = {
max: 1,
time: 30050,
errors: ["time"],
};
module.exports.run = async (bot, message, args) => {
const item = quiz[Math.floor(Math.random() * quiz.length)];
await message.channel.send(item.q);
try {
const collected = await message.channel.awaitMessages(answer => item.a.includes(answer.content.toLowerCase()), options);
const winnerMessage = collected.first();
return message.channel.send({embed: new Discord.RichEmbed()
.setAuthor(`Gagnants : ${winnerMessage.author.tag}`, winnerMessage.author.displayAvatarURL)
.setTitle(`Réponses correcte : \`${winnerMessage.content}\``)
.setFooter(`Questions : ${item.q}`)
.setColor(message.guild.me.displayHexColor)
})
} catch (_) {
return message.channel.send({embed: new Discord.RichEmbed()
.setAuthor('Personne n’a eu la réponse à temps!')
.setTitle(`Réponse(s) correcte(s): \`${item.a}\``)
.setFooter(`Questions : ${item.q}`)
})
}
}
module.exports.help = {
name: "quiz"
}```
@lament meteor
item.a if in a string automaticly joins itself with a , as it was originally an array
is there a way to avoid one line json while writing
fs.writeFile("./config.json", JSON.stringify(configs),(err) => {
if(err) console.log(err); return;
});```
@queen bone That third argument specifies the length of each tabjs JSON.stringify({}, null, 4);
that worked flawlessly ... thank you
Hey! I need help with JavaScript!
How can you make your bot makes an picture with name who just joined the server?
Like just the avatar, or do u want it to manipulate the avatar in some way? @earnest phoenix
Yeah
jesus thats ugly
Yeah, that'd be node-canvas
A guide made by the community of discord.js for its users.
Okey, thanks!
also i'd suggest not using images in cases where you don't have to
And yes, that's ugly af
i personally use images only when discord's formatting is not cutting it
Same
I just wanna make another thing
just be mindful of how you use it and you will be fine
as I said, when that get spammed, good luck on your cpu & ram
And, if for some reason you can't use node-canvas, there are APIs that can render the image on their backend for ya
and make sure to pick an api that is not blocking node.js event loop if possible
Like this for example: https://api.anidiots.guide
or else you would be in a really bad time
^
try {
await message.author.send(`Commands: \n\n${client.commands.map(cmd => `\`${cmd.help.name}\``).join(", ")}`);
message.channel.send("Check ur dms");
} catch (e) {
throw e;
}
}```
commands is undefined tf y
You can do the commande unban for me , me DM
Do someone knows, where i could host my bot free( not glitch because the bot goes to fast offline)?
No free decent hosts
all free hosts is bad
sponsorships is where you can get decent host but finding one would be hard
cheap hosting tho is a better option
Do someone knows, where i could host my bot free/cheap?
Last pinned message here
Thanks
@quiet topaz My bot uses glitch 24/7 lol
it hasnt gone down in over like a month lmfao
probably because it's lowguild lowuse
found out why my bot was offline
turns out I'm stupid and was using the web Dyno instead of the worker dyno
Hello I would like to know how it is done to install the module Colorama in Python please
thx
@earnest phoenix https://stackoverflow.com/questions/54838447/how-to-fix-discord-js-commando-bot-responding-to-unknown-commands
luke, where's your bot? 👀
new bot app. Im waiting in line
How do i get the bot developer role?
so you killed your own bot
ye
nice
bot murderer, can you even live with this feeling?
@modest monolith by submitting your bot on discordbots.org
@ruby dust yes
ok i have to wait then thanks
@modest monolith read #502193464054644737
hey
Im assuming you mean https://uo.com
there is some information about player who tames the animals
the game shares the information through web-site
yea
but i want it from my discord
Are you willing to pay
doesn't look like an english game either
Its not
how much pay are we talking about ? i'm not familiar with the community
uhm also i dont think i can pay. because im From Turkey and paypal is forbid here
cant access it
@ruby dust its an English game but Turkish server
@delicate zephyr is there any chance to give me guide tip for the case?
Well, the likely hood of what you would need to do
is:
1. Make a basic bot in something like JS (JavaScript is pretty easy)
2. Make something to scrape the site to gather the stats
3. use that to post the stats
I see. thank you for the tip ❤ . and sorry if i steal ur time
Yo guys, my bot got declined bc my token is publicly available, which is not true.
@modern sable ^^
bot id? @sullen plume
@modern sable Client Id: 570984614068486176
Why doesnt it send the message and give the $50
if not user:
user = ctx.author
else:
if user.bot:
embed = discord.Embed(color=0xff8080)
embed.add_field(name="Error", value="Bots cannot have any currency")
await ctx.send(embed=embed)
return
if usercurr == 0:
amountt = 50
await Mongo2.addbalance(ctx.message.author.id, amountt)
embed = discord.Embed(color=0x0080ff)
embed.add_field(name='Bank', value='Looks like you used all your money, the bank decided to give you $50')
await ctx.send(embed=embed)
return False```
discord.py ^^
and if the if usercurr thing is under the if not user, it will just give me $50 and sends the message when i do -balance @ username
what do you do to put: number of commands example of what i mean
i am actually stupid lmao
.addField("Commands", "{Number}", true)
Mongo2 is just the what i named the file for mongodb @slender thistle
Is the command recognized by the bot?
yes
usercurr = await Mongo2.getbalance(ctx.message.author.id)
You are ALWAYS getting the message author's balance
yea
ik
This works almost
if not user:
user = ctx.author
if usercurr == 0:
amountt = 50
await Mongo2.addbalance(ctx.message.author.id, amountt)
embed = discord.Embed(color=0x0080ff)
embed.add_field(name='Bank', value='Looks like you used all your money, the bank decided to give you $50')
await ctx.send(embed=embed)
return False
else:
if user.bot:
embed = discord.Embed(color=0xff8080)
embed.add_field(name="Error", value="Bots cannot have any currency")
await ctx.send(embed=embed)
return```
Yea that worked
if not user:
user = ctx.author
else:
Well, if you don't specify a user, it's just the else branch being executed
It is always what i doesnt think the error is that is the error
I need some help wish some code and an Error
Error>>> Invalid regular expression. (E016)jshint(E016)
else if (musicbot.commands.has(command) || musicbot.aliases.has(command)) {
if (msg.channel.permissionsFor(msg.guild.me)
.has('EMBED_LINKS')) {
const embed = new Discord.RichEmbed();
command = musicbot.commands.get(command) || musicbot.aliases.get(command);
if (command.exclude) return msg.channel.send(musicbot.note('fail', `${suffix} is not a valid command!`));
embed.setAuthor(command.name, msg.client.user.avatarURL);
embed.setDescription(command.help);
if (command.alt.length > 0) embed.addField(`Aliases`, command.alt.join(", "), musicbot.inlineEmbeds);
if (command.usage && typeof command.usage == "string") embed.addField(`Usage`, command.usage.replace(/{{prefix}})/g, musicbot.botPrefix), musicbot.inlineEmbeds);
embed.setColor(musicbot.embedColor);
msg.channel.send({
embed
});
} else {
command = musicbot.commands.get(command) || musicbot.aliases.get(command);
if (command.exclude) return msg.channel.send(musicbot.note('fail', `${suffix} is not a valid command!`));
var cmdhelp = `= ${command.name} =\n`;
cmdhelp = cmdhelp + `\n${command.help}`;
if (command.usage !== null) cmdhelp = cmdhelp + `\nUsage: ${command.usage.replace(/{{prefix}})/g, musicbot.botPrefix)}`;
if (command.alt.length > 0) cmdhelp = cmdhelp + `\nAliases: ${command.alt.join(", ")}`;
msg.channel.send(cmdhelp, {
code: 'asciidoc'
});
};
} else {
msg.channel.send(musicbot.note('fail', `${suffix} is not a valid command!`));
};
};
red squigles indicate what is causing the errors
/{{prefix}}/g
Ok
is there anyone who can make me a bot that for web scrapping specific information
You mean some paid API access that somebody else would purchase..?
@muted latch i changed the topic.
ok...
What language are you using? @daring nymph
i'm just dont know anything but if anyone can do the specific bot for me. i'm willing to pay
Ohh I didn't notice that you wanted someone to make it for u lol
I thought u were making a bot and wondered how to web scrape
i tried to make a bot like 2 days long
but its really hard for a newbie
like impossible 😄
What language?
SC, he doesnt want to make a bot
oh
he just wants to pay
oh
he said it like twice lmfao
oh
oh
😄
]]mutedbot
Your bot was likely muted because it broke one of the "bot rules" listed in #rules-and-info.
To find out why your bot was muted and by who, use the search feature in #mod-logs:
stop spamming mentions you are annoying
Ist hier ein Deutscher Developer?
Can someone tell me if there is a good way to recreate the /nick command built in to discord? This is my current code:
if (message.member.hasPermission("MANAGE_NICKNAMES")) {
let newName = args[1];
let tochange = args[0];
message.guild.members.get(tochange.id).setNickname(newName);
}
else {
message.reply(`You don't have permission to use that!`);
}
}```
.setNickname has worked previously for me
And this is my error:
@red mountain can you not spam mentions okay?
lets move this to dms because this doesn't belong in #development
Anyone wanna help me?
args[0] probably isn't a user object
I've been looking for a solution to prevent my evals from returning js [object Object] messages, though I haven't been able to find anything that has actually worked. .toString thus far has not been successful. In case you couldn't tell, I'm using NodeJS. Please ping me with responses
not a js expert but i remember someone saying to run the eval in async context
@tough bluff how are you using the command
oh
You're mentioning them by looking at your logs
Use message.mentions
uhh
To get the member from that
oh ok
message.mentions.members[0] should work
and you can just call .setNickname() on that
But like
You should add a check to make sure that someone was actually mentioned
Who can help me for my discord bot. I can't do an overwatch stats command.
Who can help me
]]moreinfo
If you want people to be able to assist you, please provide more information, such as what library and language you're using, the code in question and what you are trying to do and/or what is causing the error.
Hello, i would like to create an overwatch stats command on my discord bot (discord.js/javascript). I don't know how to do this.
Who can help me ?
Thank you for your help
A free Overwatch API
@dry oracle Use that API ^ and then use a node module for HTTPS requests
Use variables from what the person using the command enters in to fill out the URL
How ? I don't understand 😅
research it
I search but i don't find
i need help with node-fetch
getting the json returns undefined
Show code @buoyant wagon
]]moreinfo
If you want people to be able to assist you, please provide more information, such as what library and language you're using, the code in question and what you are trying to do and/or what is causing the error.
const { body } = await nfetch(`searchlink`).then(response => response = response.json());
@buoyant wagon That's becuz that function in the then() doesn't return anything... Do this instead: js const body = await fetch().then(res => res.json());
thx it works
Can anyone help me about how can i auto update google spreadsheets??
This channel is for bot development
okay sorry 😦
Imo, it doesn't have to be about solely bot development though...
Like would I get banned if I ask a question about tensorflow or smth? No (or at least I hope not)
Yo, to get ping, there a recommended module? It'd be for a simple ping/pong command
So far google isn't really showing me what I'm looking for
What language, what lib?
So like the time it takes round-trip or the heartbeat ping?
Pretty much
Which one...
From time command is sent to response given
I thought that was the case, but google was like "install this api" and I'm like wtf dude
Send a message and store it in a variable (await it)... after it's sent, subtract the timestamp of that message minus the timestamp of the trigger message that the user sent
This example is for Eris, but same deal:
https://github.com/SinistreCyborg/Astrid/blob/master/commands/ping.js#L14-L15
Yeah, that'll do xD
don't compare message timestamps
start = currentTime()
sendMessage("Pinging...").then(m => m.edit((currentTime() - start) + " ms")```
Why not though... comparing timestamps only takes into account the latency between the client and the server, and ignores any delays that may happen during code execution for whatever reason
because clock drift is a thing
comparing timestamps could yield even negative ping
all you need is different servers with different times generating the snowflakes for the messages
ayy how can i get emoji id so i can use it for bot
channel = ('577224910833844236')
await bot.send_message(user, "Congrats! You have gone through verification sucessfully! Here is an invite to the server.")
await bot.create_invite(destination = channel, xkcd = True, max_age = 1, max_uses = 1, reason = "Test")
But I get an error and it says discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'str' object has no attribute 'id' Can someone help
message.channel
user = ctx.message.author
channel = ('577224910833844236')
await bot.send_message(user, "Congrats! You have gone through verification sucessfully! Here is an invite to the server.")
await bot.create_invite(destination = message.channel, xkcd = True, max_age = 1, max_uses = 1, reason = "Test")
@proven surge
Try that
ok
'id'.send()
Does that make sense to you
now is says message is not defined
Wait put ctx.
ctx.message
ah i see
I just use message.channel normally
More like you don't use commands extension, it seems
Even async has ctx and commands extension
thanks
Np ig
i knew it was somthing minor i just couldnt put my finger on it
@buoyant wagon so the problem is i cant send the emoji because i dont ahve nitro
so yea
i need the emoji id to make the bot send it tho
btw just leave it my other good frined taught me to do it
btw how do u use new terminal that windows just added
no
no?
No.
Number Invalid
Not a Number
^
So no latency
It would still show a number
ayy
hi so i wanted to know my else works but my first thingy doesnt
var kickChannel = message.guild.channels.find("name", settings.modLogChannel);
} else {
if (!kickChannel) return message.channel.send(kembed);
}
kickChannel.send(kembed)
.catch(error => message.reply(`Couldn't kick because of: ${error}`));```
message.guild.channels.find(ch => ch.name === settings.modLogChannel);
wait what
can anyone help me with what this error means
(node:3279) UnhandledPromiseRejectionWarning: DiscordAPIError: Missing Permissions
at item.request.gen.end (/home/tyler/Desktop/cats-o-mighty/node_modules/discord.js/src/client/rest/RequestHandlers/Sequential.js:79:15)
at then (/home/tyler/Desktop/cats-o-mighty/node_modules/snekfetch/src/index.js:215:21)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
(node:3279) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:3279) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
DiscordAPIError: Missing Permissions
what would that exactly mean?
wait would that mean the bot is trying to do something but doesn't have that permission to do it?
yea
ahh okay thanks
np
umm how can i run two scripts from one start liek "start": "node index.js && app.js"?
time to code fdhasjkfhdsalkjfhdsakjhfub4eowuyifbedaub37289y4t873128dubaivubdsaoiuybfge7ahr9f83h8r32 = 1 298362817hbfydsabug8761g72g
I just made fortnite 😎
lmao that looks like combo of pubg and fornite
umm how can i run two scripts from one start liek
"start": "node index.js && app.js"
?
help
Just start one script that will initiate both of them individually
cant do that
@hearty lake Stop shitposting, last warning
you cant edit the attachments the message has
if the message doesn´t has any attachment, it wil nor be edited?
oh
F
how ever i found another way
send anther message and delete the previus one
😇
or use embeds 
Is also an option
Okay, I give up: how tf do you get the bot's avatarURL?
client.user.avatarURL?
What happens when u try that
Client isnt defined
And if I try discord.user.avatarURL I get "discord is not defined" despite the fact that it very clearly is since n++ is tryna fuccen autocomplete to discord
hrm...
Whoops, that was the wrong area lmao
Anyway
Technically, I have self defined as the bot
But even that's saying it's undefined
I try to follow this instruction https://medium.com/davao-js/2019-tutorial-creating-your-first-simple-discord-bot-47fc836a170b , but the problem I found is I can't create the Discord server, why ? What are the things I missed?
Wait are you using a tutorial about creating a bot to create a Discord server?
@umbral glacier according to the API documentation, only bots with less than 10 guilds can access the server creation endpoint
Correct
Thanks, now is solved.
Issue is I don't know the term of discord server. So I did find at the developer section. But it needed to create on chatting console
Help
You forgot to null check
@earnest phoenix error on line 917
Send the line 917 here
Line 1026 too
@earnest phoenix
does anyone know if it's possible to run separate shards of the same bot on different computers
i think it is but i didn't see anything about it also that was a reason that why i wanted to shut down my bot rip i didn't want multiple machines
hey eggsy
hey you
do you know the solution to my problem
wait what hwy did you want to shut down your bot?
can you help me
what do u need
can you look up there
I think you can spawn specific shards, but I also don't think it's ideal
Wait Im behind
Mobile scrolling be like that
@earnest phoenix u gotta show your code
@amber fractal so like you just specify a shard to spawn when you run it on a different machine?
i'm gonna need to see more than that lol
ya
you can run separate shards
on sharding manager you can specify specific shards to spawn on that sharding manager
but the hard part of that is getting your data accross
either an rest api or websocket between the bot is needed
@worldly rain I threw
@sinful lotus what data would i need to pass between shards
i don't think anyhting in my bot needs to pass data between shards
depends on what you need
idk what your bot does
but if it doesnt need to get data across between pc
then its fine
ok so the discord bot will handle the distribution of guilds to shards for me then, right?
yes
welp that's a lot less complicated that i thought it would be
you just need to specify the shards to run on that sharding manager @worldly rain
pc 1 shard id 0 1 2 3 4
pc 2 shard id 5 6 7 8 9
wait, so i'd have to hard code it for each pc?
Hello 👋
I coding !javascript code but ı don't know addRole embed. How ı use?
Please answer me. 😃
@worldly rain yes
but probably you need a better sharder
oh nvm
I was looking on stable docs
we're talking about the discord.js api here, right?
yes ^
for example 10 shards
totalShards = 10 shards
shardList will be 0 to 4 on first pc
5 to 9 in second pc
totalShards would be the same on both pc
you can use auto but you wont know how many shards are spawned until the bot is online
and you need to know exactly how many shards you have so you can divide it on shardList
man that sucks, there's no way to spawn them automatically
well because you are hosting it on 2 diff pc
if you want some sort of auto you can use some js to calculate it but totalShards must be hardcoded
hi!
ok, well that also means that if you theoretically wanted to add another pc or more shards, you'd have to restart the bot completely and manually change all the shard params
that's if i'm understand you correctly
fyi that won't synchronize the identify ratelimit
so you might get OP9'd a lot on startup/reconnects
probably you may need to modify it
also global rl isn't sychronized either
or do a cluster system on your servers idk how that works
uhh what's an identify ratelimite
i need help with developing my bot
how much you can login
IDENTIFY is a command you send when connecting
called Google Chrome
its limited to 1000 per day
as in 1 for each shard?
on all shards
and everytime you reconnect
if you send another before the 5s, the connection is closed
if you resume, then you dont need it
basically if you have 45 shards, that 45 shards shares 1000 identifies
so you'd only be allowed to restart your bot 1000/45 times right?
reconnect but resumed dont count but if it reconnects but it cant resume, that 1000 identifies is exhausted
first connection -> has identify
reconnected but resumed -> no identify
reconnected but resume failed -> needs identify
hello
@opal stag okay youre making your bot. what do you need help with?
just post your question
probably you can use this to host bots in separate containers but im not sure about it
since I never used that yet lmao
i need helpwith some commands
wait can i resume fail while the process is still running or will it try again with no identify need
needed*
like help
d.js handles those
if you don't synchronize the identify ratelimit, you will eventually connect
what are the commands you would like help with?
you dont need to deal with those
but it may take longer
when d.js detects you had exceeded 1000 ident
oh
it will wait untill it can connect you again
to have multiple processes i just had a central thing controlling who gets to connect when
#ripmylaptop
could use a redis key as a lock
with auto expire
when it expires you set it again and connect
on connection success you delete it if you still own it (could just be value == yourshardid)
uhh im not following
well basically you just need to have a system
that syncs the ident ratelimits on your diff shards
probably you need to fork d.js
and do what on the fork?
fix it so the ratelimits are synced across your bot
no matter where the server is
so probably do what natan says and use redis as cache
wait u mean fork the library right?
ok forgive me for being dumb, but why am i syncing the ratelimits again?
because if you dont your bot wont know if it can still login
and go throw errors
imagine if ident # is diff on pc 1 and pc 2, and ident is already 0 but pc 2 thought ident is still not 0
ohhhh ok so i just need to cache how many i have left so i don't try to connect when i can't
ok nother dumb q, what situation was natan talking about when he said i might op9 on my connections
he meant when i need to add pcs or shards right?
wait nvm i think i get it
nop nvm i don't get it lmao
oh so what are you supposed to do instead if you're at your ratelimit?
let d.js handle it
tell me if this is right :: you sync the rate limit because if you don't and you try to connect your bot instance crashes
if d.js knows you are in your limit then it should do the waiting for you
it will probably throw errors or something
d.js normal action for it is setTimeout until the timer ends
OHHHHHHHHHHHHHHHHHHH
so you sync the rate limit so that between both computers you don't try to connect when you're at your rate limit, so that you don't get errors by trying to connect because d.js can't see the rate limit of the other computer
yes
where tf in the documentation is this written lmao
but anyways
@sinful lotus @inner jewel thank you for the explanation
discord docs
would it really take that much more time if you don't sync the rl
it depends
d.js is not designed to be used like that tbh at first place
if you get lucky, it wont take more time
or at least they plan to on what I saw on sharding manager but its very basic
but it will need to keep retrying until it succeeds
but that would hit ratelimits
60/minute
dbl?
for dbl?
my current design is a central api that handle those
so only 1 process is sending to dbl
yknow what don't answer that question lol
lets pretend i didn't say that
ok welp, thank you guys again
Hey how do i make the data not save in url from action
@fiery stream can you explain what you mean a little better?
What would be the simplest way to make command cooldown across all the shards without using database? [discord.js]
There is no way that will be less work than using a db. Especially if you have shards spread across multiple hosts. If they are all on the same host (and same process) you could try using a synchronized static class to keep track of last used command times for a given userID. I am not a js guy though so I would not know how to implement that in js syntax.
Like they said, the easiest way would be to have your shards connect to the db or there'd be no way to communicate between the shards without broadcastEval. OR, you can use internal sharding on discord.js master
Yeah, to go across servers you would need some sore of DB/datastore, I guess you could use something like a nats messaging queue as well but that would make zero sense since databases exist for this exact usecase
@steel cloak so u know if we search something it saves data in url something like ?user=data
So i want to hide that data
For normal user
Hello, I come to you to ask for help about node-opus on my vps. When I start a music it stops without even giving me errors on the bot. The only warnings I received was when I downloaded node-opus:
https://cdn.discordapp.com/attachments/536957353761832968/577530762539171851/unknown.png
https://cdn.discordapp.com/attachments/536957353761832968/577530399115182109/unknown.png
how can i close the window after login can some1 help me?
Oh shit run
@earnest phoenix authorize and then you can close
code :
module.exports.run = async (bot, message, args) => {
if(message.author.bot) return;
let qEmbed = new Discord.RichEmbed()
.setTitle("Panneau d'aide")
.setDescription("Où voulez-vous que la page d'aide senvoie ?")
.addField("
salon
","Envoie la page d'aide dans le salon")
.addField("
mp
", "Envoie la page d'aide en message privé")
message.reply(qEmbed)
let hEmbed = new Discord.RichEmbed()
.setTitle("** 📌 Listes des commandes :**")
.setColor('RANDOM')
.addField("💻 • **__Modération :__ **", "`ban`, `unban`, `kick`, `mute`, `tempmute`, `warn`, `addrole`, `removerole`")
.addField("🚨 • **__Configuration :__**", "`setprefix`")
.addField("💼 • **__Utile aux staff__**", "`sondage`, `purge`, `annonce`, `createchan`")
.addField("⏳ • **__Sécurité & plaintes__**", "`hverify`, `hreport`")
.addField("🎉 • **__Fun :__**", "`say`, `avatar`, `ascii`, `meme`, `blague`, `kiss`, `frappe`, `calin`, `tapote`, `cat`, `coinflip`")
.addField("💰 • **__Economie :__**","En cours de développement")
.addField("👥 • **__Utiles :__**","`serverinfo`, `userinfo`, `botinfo`, `calc`, `password`, `roll`, `google`, `ping`, `partners`, `'about`")```
if(response === 'salon') {
message.channel.send(hEmbed)
}
if(response === 'mp') {
message.author.send(hEmbed).catch((err) => {
if(err) {
return message.channel.send(`Veuillez activer vos mp`);
}
})
}
}
module.exports.help = {
name:"help"
}```
Worries :
When I make the command help and then he asks me where I want it to be, I reply by salon, nothing happens, same for dm
and there is no error displayed in the console
librairy ?
Javascript
discord js/nodejs
@earnest phoenix no no, i'm trying make code after the use logs in it will close the window
@earnest phoenix make a loop that checks whether the url is my_redirect_uri.com/?code=..., once successful you can close it
then who can help me
so?
No one seems to be able to help you, but with perseverance you will succeed.
Why doesn't a package that's installed as a peer dependency show up in your node_modules folder?
A week I persevered
What's the problem? @earnest phoenix
code :
module.exports.run = async (bot, message, args) => {
if(message.author.bot) return;
let qEmbed = new Discord.RichEmbed()
.setTitle("Panneau d'aide")
.setDescription("Où voulez-vous que la page d'aide senvoie ?")
.addField("
salon
","Envoie la page d'aide dans le salon")
.addField("
mp
", "Envoie la page d'aide en message privé")
message.reply(qEmbed)
let hEmbed = new Discord.RichEmbed()
.setTitle("** 📌 Listes des commandes :**")
.setColor('RANDOM')
.addField("💻 • **__Modération :__ **", "`ban`, `unban`, `kick`, `mute`, `tempmute`, `warn`, `addrole`, `removerole`")
.addField("🚨 • **__Configuration :__**", "`setprefix`")
.addField("💼 • **__Utile aux staff__**", "`sondage`, `purge`, `annonce`, `createchan`")
.addField("⏳ • **__Sécurité & plaintes__**", "`hverify`, `hreport`")
.addField("🎉 • **__Fun :__**", "`say`, `avatar`, `ascii`, `meme`, `blague`, `kiss`, `frappe`, `calin`, `tapote`, `cat`, `coinflip`")
.addField("💰 • **__Economie :__**","En cours de développement")
.addField("👥 • **__Utiles :__**","`serverinfo`, `userinfo`, `botinfo`, `calc`, `password`, `roll`, `google`, `ping`, `partners`, `'about`")
if(response === 'salon') {
message.channel.send(hEmbed)
}
if(response === 'mp') {
message.author.send(hEmbed).catch((err) => {
if(err) {
return message.channel.send(`Veuillez activer vos mp`);
}
})
}
}
module.exports.help = {
name:"help"
}```
Worries :
When I make the command help and then he asks me where I want it to be, I reply by salon, nothing happens, same for dm
and there is no error displayed in the console
console.log response
Yeah... console.log(response) so we can see what it is....
Put it there and then try out the help command again... then we can see what's going onjs var response = args.join(" ").slice(22); console.log(response); if(response === 'salon') { // etc }
Yeah, but you defined it as args.join(" ").slice(22);... that itself could be undefined
console.log(args) now
Oh yes, I had forgotten a letter
When I made the command help, in the console his just jumped a line but its not put anything
@opaque eagle
What did u console.log? args or response
response
why ?
and this ?
var response = message.content.toLowerCase();
if(response === 'salon') {
message.channel.send(hEmbed);
}
if(response === 'mp') {
message.author.send(hEmbed).catch((err) => {
if(err) {
return message.channel.send(`Veuillez activer vos mp`);
}
})
}
}
@opaque eagle
console.log args
ok
But, what I want is that when I make the command t/help The bot asks where is it going to send the help page. Then we have to answer just by salon or mp @opaque eagle
- Stop pinging me for each reply
- Console log args like I asked
but args. join is in the command, same line of the genre:
t/help mp
mp is args
AND
t/help
The bot responds
salon
The bot sends the help page in the channel
@fiery stream sorry for the late response I'm in school lol. but you can use base64 convert the data then send that in the url
Me school too
oh lol. but yeah you can use base64 for to 'hide' the data. expect for the string "password" you'll get "cGFzc3dvcmQ=" which then you can use base64 again to 'decrypt' the data. I'm not sure if you can use html to do this but you can use php
Is it so hard to follow simple directions?
Will the world come to an end if you console.log(args)?
Ok !
shivaco remember the issue about pymongo's update_one func not working ?
Indeed I do
Mind if I DM you the code ?
Proceed
The color still doesn't change...css li a { color: #341314; }
maybe add !important
ok
is there a way to test with the dblapi.js without actually posting the data to the site?
ultimate hoister
Im trying to get a bot to create a invite for the server its in like a command like !serverlink and what ever server you sent the command it creates a invite.
If its to a server you are not in they need to consent
if its in a server you are in then idfk
yes
what lib
If I'm writing a package that needs to write and read files/folders from where the package is imported... should I use process.cwd() or __dirname to get the project's directory?
@earnest phoenix what library
discord.js
I don't use discord.js, or js, and it took me 5 seconds to find it
...
if you have a question read the documentation. and if you still can't find it then come here
hey so i'm trying to make a quote command (js) where it goes like this
addquote (username) foo
and the quote is stored like
"username": ["foo"," bar"]
and when doing
getquote (username)
it will randomly select either foo or bar as an output
now i was gonna do this in JSON but i have no idea how to write things to a JSON
the other stuff like randomizing i can do but can anyone help me with the writing of a command to the file?
if anyone can help out feel free to ping me with a response
thanks in advance
Don't use JSON as a database.
I tried that....
let's just say I use a database now lmao
i did forget to mention i was lookin at mongoDB as well
i need something free since i refuse to spend a penny on this bot
Lol
but i can do that on my own
Free bots wont last long
mine has lasted a while so far
Unless you pay the bills to keep it running on ur pc xd
since like november
still chuggin
its on uhh
heroku
Ew
Heroku doesnt even support local databases
Where are you planning to host mongo at
Ur pc?
im probably gonna end up running everything off of my rasberry pi at some point
Mongo on a pi, i think its fine
Dont run a discord bot on it tho
its not gonna be a music bot or anything crazy
i think ill stick with heroku for the bot and have the db on the pi
No but still
Bots on a pi arent really a good thing
yea
I learned it after running my bot on my pi for a year and a half
i don't have a job and even if i did i'm not putting money into it lol
if i were making money off of the bot that would be a diff story lol
Ye but i mean 3$/month is good enough for a vps
I dont make money off my bot yet i spend 15$/month on discord nitro, my bot host and other stuff lol
have you considered sacrificing nitro for your bot? since that's exactly what I do
and you said $15/month, that's more than their highest plan
Why sacrifice expenses if your income is around 120$/month as a 15 year old?
@ruby dust discord RELATED yes
Bots are discord related too
my income is 0 a month lol
granted, i could leech off of my parents even more for a vps but i really would rather find free alternatives
heroku has caused no problems for me thus far
heroku could be a good alternative if it's some sort of a private bot with basic functionality
Ye
that’s what it is right now
Else just spend 3$/month on a cheap vps lol
Run the db with it
if you have any sort of database to maintain then you can forget about heroku right now before you start regretting it
Run other stuff too
Boom done
that’s prob my best bet tbh
is mongodb fairly easy to get the hang of? i’ve had no time to look into it
I'd personally recommend sqlite, but idk
Sqlite is local tho
Mongo is a db that can be accessed over the internet with the right config
Protected ofc
i’m always going places so mongo sounds ideal
I use rethink tho
It also has a nice dashboard you can setup
@earnest phoenix like how to update the website api with how many servers the bot is in?
DBL is biased toward JS... why can't cert devs code their page in scratch or brainfuck
jkjk
because js is pretty much the only programming language of the web
What about Web Assembly lol
pls
I need help
]]moreinfo
If you want people to be able to assist you, please provide more information, such as what library and language you're using, the code in question and what you are trying to do and/or what is causing the error.
let yen = require("../yen.json");
const fs = require("fs");
exports.run = async (client, message, args) => {
if (!message.guild.member(client.user).hasPermission("SEND_MESSAGES")) return message.author.send('I don\'t have permission to Send Messages. Please enable send messages for my role!');
let syen = yen[message.author.id].coins;
if(syen < 100) return message.reply("Not enough yen!");
yen[message.author.id] = {
yen: yen - (100)
};
let slots = ["🍎", "🍌", "🍒", "🍓", "🍈", "🍆"];
let result1 = Math.floor((Math.random() * slots.length));
let result2 = Math.floor((Math.random() * slots.length));
let result3 = Math.floor((Math.random() * slots.length));
let name = message.author.displayName;
let aicon = message.author.displayAvatarURL;
if (slots[result1] === slots[result2] && slots[result3]) {
let wEmbed = new Discord.RichEmbed()
.setFooter("You Won!", aicon)
.setTitle(':slot_machine:Slots:slot_machine:')
.addField('• Result:', slots[result1] + slots[result2] + slots[result3], true)
.setColor("#f4e842");
message.channel.send(wEmbed);
yen[message.author.id] = {
yen: yen + (200)
};
} else {
let embed = new Discord.RichEmbed()
.setFooter('You Lost!', aicon)
.setTitle(':slot_machine:Slots:slot_machine:')
.addField('• Result:', slots[result1] + slots[result2] + slots[result3], true)
.setColor("#f4e842");
message.channel.send(embed);
}
}
fs.writeFile("./yen.json", JSON.stringify(yen), (err) => {
if (err) console.log(err)
});
exports.help = {
name: 'slots'
}```
Whenever I use the above code for slots, my money values become undefined or NaN
ayyy
doesanyone know why i get unknown here https://hastebin.com/iluzetadaq.json
thats dialogflow btw
what's dialogflow?
oh
**
demo**
@grizzled spruce what is the problem
Whenever I use the above code for slots, my money values become undefined or NaN
dayum people rude here no-one is trying help me
Oh so it’ll work if I remove the ()?
Ok
Ok ty
Np
i neeed more helpp
const superagent = require("superagent");
module.exports.run = async (bot, message, args) => {
const user = message.mentions.users.first() || message.author;
let {body} = await superagent
.get(`https://i.some-random-api.ml/LJ8oRDaf8Z.gif`);
const avatarEmbed = new Discord.RichEmbed()
.setColor(`#800080`)
.setTitle(`${message.author} hugs ${user.username}!`)
.setImage(body.link)
.setTimestamp(new Date())
.setFooter('© ₦anø#8550 | Kapow#4665 2019', bot.user.displayAvatarURL);
message.channel.send(avatarEmbed);
}
module.exports.help = {
name: "hug"
}
when i use this, it doesnt send the gif
tbh you can just use the link directly
^
instead of "requesting" it again
Send it without a embed
when i use the link directly it sends the same gif every time
because you are using the same link
^
why would it give you a different picture if you are using the same link for a gif?
Doing that is not only useless, but it will also give you the same gif
hi
Eval don't work after hosting on vps?
Yup
My eval not working after hosting
yen[message.author.id].coins - 100;
yeah, discord's taking a shit with api
In my code, I’m supposed to have to pay 100 for each slot played. But it’s only removing 12
Mean
yen[message.author.id].coins - 100;
In my code, I’m supposed to have to pay 100 for each slot played. But it’s only removing 12
Anyone help?
Use discord-money or discord-economy for this
Yup
lol thank god i am not doing it
ohhk
Anyone who can help me?
sure whats the prob
We don't understand what you mean
yen[message.author.id].coins - 100;
In my code, I’m supposed to have to pay 100 for each slot played. But it’s only removing 12
Anyone help?
Note the code I sent has -100 after the data that has my coins stored
whas yen suppose to be?
yen is Japanese currency lol
console.log the coins
ohh lol
Yup
I wanna see what is inside it
yea &^^^
Imma a dumb coder plz elaborate
Nano you working with daily think
?
?
You want daily command
Noooooo
Nonono
Take
I mean ik what it is
literally console.log then coins
OH
I cant debug something if idk what coins is
Im not a magical developer
Ik what you mean
Hmm
One second
TypeError: Cannot set property 'os' of undefined
read stacktrace
probably its because its like that thats why it isnt subtracting right
I exepected a whole number not a number with ; then a new number
probably 16.9 would work but I dont think 19 ; 9 would work
check how you save your c urrencies probably based on your logs
Hey
Or it might be because you use light theme
I don’t
I
@grizzled spruce
Can help me
?
@earnest phoenix what do you need help with
Mmm iam speak arabic @west spoke
Iam not Speak english
I can tell.
