#development

1 messages · Page 1011 of 1

hushed jungle
#

And then locate where it saves the package

#

Nvm it doesn't work

#

Is erlpack worth all this hassle?

#

I just wanted to use it since it was a recommended package of discord.js light lol

fierce delta
#

how to make an automatic channel synchronize bot permisiion .in js

charred sundial
#

Unexpected token c in JSON at position 0
at parse (<anonymous>)
 at Object.Module._extensions..json (internal/modules/cjs/loader.js:1172:22)
 at Module.load (internal/modules/cjs/loader.js:986:32)
 at Function.Module._load (internal/modules/cjs/loader.js:879:14)
 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
 at internal/main/run_main_module.js:17:47

for node main.js

quartz kindle
#

what erlpack does is that it sets the websocket connection to ETF format instead of json

#

ETF is a portable binary data file, it does the same job as json does, of carrying data between processes and over the network, but since its in binary format, its more efficient, for example it can represent numbers as actual numbers instead of converting them to text

#

however since discord.js primarily uses json data for everything, using ETF doesnt really give you a big advantage

#

it helps with bandwidth usage, but not much with cpu usage, possibly costs more cpu

hushed jungle
#

Then I will just leave it as is my bot is not that big anyway

#

Just want to make sure my bot doesn't eat all the ram

#

So I googled how to turn off discord.js cache and then I got discord.js light as a result which recommended a bunch of packages

#

All those other packages work fine

quartz kindle
#

thanks for using my lib :^)

hushed jungle
#

Yeah I noticed it on the github page that your picture was the same but could not really place where I saw it before

quartz kindle
#

hahah

hushed jungle
#

It's funny lol

#

It works well I did not have to make any chances to my code ❤️

quartz kindle
#

nice

hushed jungle
#

I was worried I would get compatibility issues

quartz kindle
#

yeah it depends on what each bot does, some bots will have compatibility issues and require workarounds

hushed jungle
#

Mine only uses server cache and that one is cached by default I saw in the docs

quartz kindle
#

yup

#

btw you need to go into the v2 branch for the current docs

#

the v3 branch is not released yet

hushed jungle
#

Oh that's useful to know

#

I just went to the first thing I saw lol

quartz kindle
#

xD

hushed jungle
#

How do you get those github buttons?

#

I see them everywhere I want them too 😦

quartz kindle
charred sundial
#

not to uh

#

butt in

hushed jungle
#

Nice time to give my readme a make over

charred sundial
#

yo tim any idea what went wrong for me?

#

followed the guide ;-;

quartz kindle
#

whats wrong?

charred sundial
#

Unexpected token c in JSON at position 0
at parse (<anonymous>)
 at Object.Module._extensions..json (internal/modules/cjs/loader.js:1172:22)
 at Module.load (internal/modules/cjs/loader.js:986:32)
 at Function.Module._load (internal/modules/cjs/loader.js:879:14)
 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
 at internal/main/run_main_module.js:17:47

for node main.js

quartz kindle
#

show your main.js file (without your discord token)

charred sundial
#

const Discord = require('discord.js');
const client = new Discord.Client();

client.once('ready', () => {
console.log('Ready!');
});

client.login('Token');

#

did I do the haha thing

#

'

#

"

quartz kindle
#

show your package.json file

charred sundial
#

{
"name": "asinglecelledbot",
"version": "1.0.0",
"description": "An interesting description",
"main": "main.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"author": "aSingleCelledOrganism",
"license": "UNLICENSED"
}

quartz kindle
#

did you run npm install discord.js? if not, do it now

charred sundial
#

done

#

try again?

quartz kindle
#

yes

charred sundial
#

mm same error

quartz kindle
#

are you on windows?

charred sundial
#

ye

quartz kindle
#

do this

charred sundial
#

I have

#

is the

#

oh

quartz kindle
#

is your main.js named anything else?

charred sundial
#

main.js.json

#

lmao

quartz kindle
#

lmao

charred sundial
#

I'm dead

#

but

#

what

#

I got the same error ;-;

#

internal/modules/cjs/loader.js:1175
throw err;
^

#

found this right above it

quartz kindle
#

did you rename the file?

#

what did you rename it to?

charred sundial
#

main.json

quartz kindle
#

its main.js

charred sundial
#

does it need to be main.js

#

k

#

it says the file might be unusable?

quartz kindle
#

json is for configuration and data, js is for actual code

#

ignore the warning

charred sundial
#

oop it worked

#

your so smart

#

god I'm actually clueless

quartz kindle
#

gotta start somewhere :3

charred sundial
#

true true. Thanks a lot ❤️

#

I'm sure I'll need help sooner then later

pure lion
#

What's error 416?

quartz kindle
#

where's that coming from?

pure lion
#

Wait brb

#

The input stream

quartz kindle
#

what stream?

pure lion
#

I believe music

#

Idk it's not my error someone from a different server needs help

quartz kindle
#

ah

pure lion
#

Error: input stream: Status code: 416
at ClientRequest.<anonymous> (C:\Users\Rin\Desktop\Shigeru\node_modules\miniget\dist\index.js:147:27)
at Object.onceWrapper (events.js:422:26)
at ClientRequest.emit (events.js:315:20)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:596:27)
at HTTPParser.parserOnHeadersComplete (_http_common.js:119:17)
at HTTPParser.execute (<anonymous>)
at TLSSocket.socketOnData (_http_client.js:469:22)
at TLSSocket.emit (events.js:315:20)
at addChunk (_stream_readable.js:295:12)
at readableAddChunk (_stream_readable.js:271:9)

quartz kindle
#

416 means "range not satisfiable" lol

#

its a lib thats using the miniget lib

#

something like a youtube api im guessing?

#

i've never used youtube apis and libs so idk

pure lion
#

Oh balls

#

Can you elaborate on "range not satasfyable"?

hasty lotus
#

would anyone know an opensource express discord bot dashboard that i could use for an example ?

pure lion
#

Oh god

#

This is tough

hasty lotus
#

what ?

pure lion
#

Learn full stack before even thinking about a dashboard

quartz kindle
#

The HyperText Transfer Protocol (HTTP) 416 Range Not Satisfiable error response code indicates that a server cannot serve the requested ranges. The most likely reason is that the document doesn't contain such ranges, or that the Range header value, though syntactically correct, doesn't make sense.

The 416 response message contains a Content-Range indicating an unsatisfied range (that is a '*') followed by a '/' and the current length of the resource. E.g. Content-Range: bytes */12777

Faced with this error, browsers usually either abort the operation (for example, a download will be considered as non-resumable) or ask for the whole document again.

pure lion
#

Sooooo rate limit?

quartz kindle
#

rate limit should be 429

pure lion
#

O

quartz kindle
#

this just looks like a broken stream lol

pure lion
#

Ohhhhhh

#

Okay thanks :)

wooden ember
#

any one know why my bot's status keeps disappearing

#
bot.on("ready", () => {
  console.log(`Logged in as ${bot.user.tag}!`); 
  bot.user.setActivity(`for heresy`,{ type: "WATCHING" });
  
});
``` this is the code
#

when it starts the status is there

#

but it just randomly disappears after like a day

quartz kindle
#

statuses may be lost when your bot disconnects and reconnects

#

if you dont need a dynamic status, such as a status that shows guild count or any kind of status that requires the ready event, add the status as a client option, its the best way to preserve it

wooden ember
#

I do have bad internet so that is probably it

pure lion
#

Also ratelimits exist for some cases

wooden ember
#

?

pure lion
#

But not this case

wooden ember
#

oof

#

how would I make it use a client option?

quartz kindle
#
new Discord.Client({
    presence: {
        activity: {
            type: "WATCHING",
            name: "huehuehue"
        }
    }
})
wooden ember
#

ah

#

thx

tulip ledge
#

Should i use array.push or array.splice to add items to the end of an array?

quartz kindle
#

splice is for removing items

tulip ledge
#

You can add items too

#

Using array.splice(index, 0, ‘item’)

wooden ember
#

could you just use && or is that for logic only

tulip ledge
#

So I should use push then

quartz kindle
#

sounds like a lot more work than using push

tulip ledge
#

And array.push(item) adds to the end?

quartz kindle
#

yes

tulip ledge
#

Alright time to rewrite some stuff lol

#

I just thought of push being a thing

#

Lol

wooden ember
#

ok so im confused its not showing a status at all now but it hasn't crashed

#

idk what to do

quartz kindle
#

show full code

wooden ember
#

the entire code or just the bit that does the status?

#
require('dotenv').config();
const Discord = require('discord.js');
const bot = new Discord.Client();

const TOKEN = process.env.BOT_TOKEN;

bot.login(TOKEN);


bot.on("ready", () => {
  console.log(`Logged in as ${bot.user.tag}!`); 
  
});

new Discord.Client({
    presence: {
        activity: {
            type: "WATCHING",
            name: "for heresy"
        }
    }
});
``` this good?
quartz kindle
#

.>

wooden ember
#

ah

#

nice

hushed jungle
#

What is doyens

#

Dotenv

#

Stupid phone

wooden ember
#

it is a file to store the token in

hushed jungle
#

Is it better than JSON?

wooden ember
#

and the name of the file ends in .env

#

uuuh

#

idk

hushed jungle
#

Wondering if it is worth switching to dotenv

wooden ember
#

I mean it works and ive had no problems with it

#

id do some reserch first if you are unsure as ive never used JSON

#

i was just following a "how to make a discord bot " tutorial and it said to use it

hushed jungle
#

I am reading up on dotenv now I had seen it before in examples so just curious

wooden ember
#

ah fair enough

earnest phoenix
#

Hello

wooden ember
#

oh wait I am using json lol

earnest phoenix
#

i have some question about creating bot

wooden ember
#

mm?

hushed jungle
#

That is your package and package-lock not your confit

#

Coming

#

Config

#

Again hate autocorrect

#

But it’s json yeah

wooden ember
#

same mine cant spell any more tho cuz its lernt all the words I type wrong

hushed jungle
#

Nice

wooden ember
#

also what do those files do...

#

I set th bot up ages ago but never did the actual coding until now and i cant remember what they are for

lyric mountain
#

They define ur project's libs

hushed jungle
#

Version control mostly

#

Dependencies

lyric mountain
#

I say "they" but it's actually only package.json

#

The other one is a simple lockfile

wooden ember
#

meaning?

lyric mountain
#

Literally a lock

wooden ember
#

im a noob

lyric mountain
#

To prevent two npm instances changing the same package.json file

wooden ember
#

ah ok

#

makes sence

quartz kindle
#

package-lock is also used to define the exact versions of dependencies used in a project

#

for example, if you publish your project with the package-lock, people will use it exactly as you use it with everything in the same version, if you dont include package-lock, people who use it will automatically get the latest versions of all dependencies and requirements

wooden ember
#

i see

quartz kindle
#

sometimes depending on the situation, you dont want people to be geting the latest versions, because you didnt test them beforehand

lyric mountain
#

TL;DR: it also locks the dependencies' version

hushed jungle
#

It would be quite a problem if your bot still uses Discord.js 11 but someone tries to run it on Discord.js 12

quartz kindle
#

major versions are protected by default

wooden ember
#

depends on how much was changed

quartz kindle
#

even without package-lock, npm will refuse to update a major version

hushed jungle
#

But 12 uses cache everywhere

#

😦

charred sundial
#

Can I make my bot go offline? and if so what commands would I add to make that happen

hushed jungle
#

Oof I thought I had a smart input to the conversation for the moment

#

Don’t mind me lol

lyric mountain
#

Shutdown the code

#

No running code = bot offline

charred sundial
#

oh wait if I close cmd

wooden ember
#

yeah

charred sundial
#

it doesn't respond

lyric mountain
#

Just ctrl + C

charred sundial
#

but it stills shows as online

#

interesting

wooden ember
#

it takes a while

lyric mountain
#

That's cache, it'll be offline soon

charred sundial
#

gotcha. Thanks

hushed jungle
#

Good to know npm refuses major versions updates though

wooden ember
#

there is a 30 second delay give or take

timber linden
#

ty for your help guys

#

i made a bot

#

YALL THOUGHt i coded it

#

sad

wooden ember
#

huh?

timber linden
#

well

hushed jungle
#

Okay

timber linden
#

if you cant get your bot online

#

to boot it onlline

#

but not i need help

#

so im rtrying to make a command called

#

!Whoasked

#

but when the image shows up

wooden ember
#

I have my bot hosted on a 12 y/o pc with linux using code I got off of stack overflow

timber linden
#

it doesnt show

hushed jungle
#

Nice configuration

wooden ember
#

indeed

hushed jungle
#

Better than glitch smug_12

timber linden
#

@wooden ember why does the imagine do the loading thing

wooden ember
#

?

timber linden
#

when i show the imagine

#

of who asked

#

it just loads

#

and it never loads

wooden ember
#

what immage

timber linden
#

a tenor gift

#

for who asked

wooden ember
#

what is that

timber linden
#

a bot command

earnest phoenix
#

we dont support bot makers

#

go complain to the developer

timber linden
#

its helping for development here

coarse hearth
#

where to find the line of code to delete a channel

earnest phoenix
#

but you aren't developing anything, @timber linden

timber linden
#

i juar uaws vorfhoar ro voor rhw vor onlinw

#

LMAO

#

that spelling

#

help me-

earnest phoenix
#

i do not speak harry potter spells

wooden ember
#

lol what

#

are you ok

timber linden
#

i used botghost to boot the bot online

hushed jungle
#

What is happening

timber linden
#

i meant to say that

#

my spaoelling

#

help me-

lyric mountain
#

Dude...

wooden ember
#

i juar uaws vorfhoar ro voor rhw vor onlinw
@timber linden are you having a stroke

lyric mountain
#

Botghost is a cheap bot maker. Period

earnest phoenix
#

botghost is a bot maker, we don't support those because you aren't developing anything

lyric mountain
#

You didn't "made it online", you literally used a bot maker to make a whole bot

earnest phoenix
#

if you have an issue with a bot maker go complain to the developer of said maker

timber linden
#

Listen to me.

#

im still learning how to develope

#

my server is in need of bot makers

#

im still learning discord.js from the guide

#

im editing my bot in 2 days or something soon

#

when im done learning how to make ots

sudden chasm
#

Alright, please come back then.

#

So if I pull channel.statistics.subscriberCount, what should I use to make it store in a local directory (plain .txt)?

hushed jungle
#

Could try json

#

Or a database depending on your needs

sudden chasm
#

using Eris atm

timber linden
#

hm

#

imma make my own language

marble geode
#

someone can help me?
(node:8220) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'channels' of undefined

solemn latch
#

@marble geode whats your code

cunning gorge
#

Is anyone familiar with the npm package canvas constructor and the path package that could help me resolve an issue of using a custom font? Please ping or DM me 🙂

solemn latch
#

whats your issue with your custom font?

cunning gorge
#

Well I am not sure what I need to do to add it

solemn latch
#

Canvas.registerFont("fontfile", { family: 'fontname' });

cunning gorge
#

Canvas.registerFont(resolve(join(__dirname, "./discord.otf")), "Discord");
Ah so you dont need to do this?

#

Does the fontfile need to be in your project file?

solemn latch
#

yeah

cunning gorge
#

ok, and the fontname is that the name of the file?

solemn latch
#

it can be whatever, its just the name when you use the font

#

offscreenCtx.font = "20px Pixel";

#

pixel being the name i set

cunning gorge
#

Oh I see

potent dust
#

what are the parameters for a embed on DSharp?

#

I only know like Title and Description so far

solemn latch
#

I spent a loong time finding my font, googling around @cunning gorge

cunning gorge
#

ah ok gotcha

solemn latch
#

i really liked this site

cunning gorge
#

awesome much appreciated!

potent dust
#

how to set Color on discord embed using DSharp ;-;

#

tried to use smth like xna framework Color.Red

#

but seems like doesnt work

solemn latch
#

did you try the docs?

delicate shore
#

someone pls help

cunning gorge
solemn latch
#

yeah

cunning gorge
#

ok thanks

delicate shore
#

my bot is not going on

#

it keeps sYING THIS

solemn latch
#

what language, what library

delicate shore
#

Discord.js v12

#

it's glitch

solemn latch
#

🤔

#

glitch isnt a great platform for bots rn

#

they banned all keep alive programs

delicate shore
#

no

#

the did not

#

for tthose who have glitch premium

solemn latch
#

they made it against TOS

cunning gorge
#

Oh yess the font thing worked

delicate shore
#

i have glitch premium

cunning gorge
#

thanks soo much woo

solemn latch
#

thats like $10 a month

delicate shore
#

yes

solemn latch
#

its overpriced

#

np saber

delicate shore
#

pls help

#

waht to do

solemn latch
#

you can get double the resources on a VPS

#

for cheaper

#

🤔

delicate shore
#

but

solemn latch
#

anyway, im not sure how to help with that issue, glitch doesnt like giving clear error messages for some reason

delicate shore
#

Oh

earnest phoenix
#

429 is too many requests

#

you hit the ratelimit

#

the daily limit on the gateway is like 1000 requests

#

how tf did you make 1k IDENTIFY requests

solemn latch
#

glitch has a query limit? lol

earnest phoenix
#

no

#

that's discord

solemn latch
#

ooo

earnest phoenix
#

although glitch started cracking down on projects using things like uptimer bots to keep their projects alive (e.g. discord bots)

#

which is just another sign for "get a proper host"

delicate shore
#

@earnest phoenix so now ?

#

How long do I have to wait

earnest phoenix
#

a day

delicate shore
#

I have glitch premium
And it says unlimited requests

earnest phoenix
#

glitch is unrelated to discord

#

you can manually make the request and see what the headers return

potent dust
#

How would I check if a parameter is missing on a command? So like if the command is made improperly it just doesnt do anything but send a message of how to use it

#

using DSharp btw

solemn latch
#

if the arg doesnt exist, its not properly formed

#

if the arg isnt the right type(not a number or something) its not properly formed

potent dust
#

for example, on my poll command i have the parameters string title, string description, TimeSpan duration, params DiscordEmoji[] eOptions, if at least one of those is missing I'd like to send a message like $"{parameter} is missing! To use the poll command do +poll <parameters...>"

earnest phoenix
#

the CommandErrored event should get raised

#

iirc

potent dust
#
public event AsyncEventHandler<CommandErrorEventArgs> CommandErrored
``` Found this on the docs but honestly? I have no idea on how to use it
earnest phoenix
#

subscribe to the event and see what the argument gives you

delicate shore
#

@earnest phoenix should I remix my project

earnest phoenix
#

remix?

delicate shore
#

Yes

#

That duplicates
Project and create a new copy. Of it except env

remix?
@earnest phoenix

earnest phoenix
#

i already told you that glitch is unrelated to discord

#

you got ratelimited from discord because you used up your 1k IDENTIFY daily limit

#

i don't even know how you managed to do that

delicate shore
#

@earnest phoenix is VPS a sol to it

earnest phoenix
#

jesus fucking christ can you read

#

you got ratelimited from discord because you used up your 1k IDENTIFY daily limit

delicate shore
#

ok

#

so you

#

said

#

@earnest phoenix how to solve it
like rythm and other bots?????

earnest phoenix
#

rythm doesn't hit the limit and they have their limit raised

potent dust
#

subscribe to the event and see what the argument gives you
Sir idk how this works ;-;

delicate shore
#

how to do that

potent dust
#

Im coding on C# for like 6 months but I just started making bots on DSharp

earnest phoenix
#

how to do that
have a bot in over 250k guilds

#

Im coding on C# for like 6 months but I just started making bots on DSharp
events are c# fundamentals

delicate shore
#

WHat is a guild?

#

a discord server?

earnest phoenix
#

yes

solemn latch
#

guild is developer speak for server

delicate shore
#

it is in 77

earnest phoenix
#

only 249 923 to go

solemn latch
#

discord only increases limits for massive bots

earnest phoenix
#

you can't do anything but to sit and wait out the ratelimit

delicate shore
#

ook

#

i remixed my project

#

and it fucking worked

earnest phoenix
#

the ratelimit probably passed by the time you did that

#

considering you hit it 10 minutes ago

drifting cairn
#

في احد عربي

earnest phoenix
#

english only

#

and especially using the latin script because pretty much nobody can read anything else

delicate shore
#

Oj

#

Hey @earnest phoenix can you suggest some good VPS

earnest phoenix
#

check the pins, good providers are pinned

winter basalt
#

check pins

solemn latch
#

galaxygate ;p

olive rune
#

Lol

marble geode
#

@solemn latch no that its now work ty

hazy sparrow
#
module.exports = {
    name: 'mute',
    description: "this is a moderation command. it mutes members.",
    execute(message){
        var person  = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[1]));
        if(!person) return  message.reply("I CANT FIND THE USER " + person)

        const  mainrole = message.guild.roles.cache.find(role => role.name === "Members");
        const role = message.guild.roles.cache.find(role => role.name === "Muted");
       

        if(!role) return message.reply("Couldn't find the mute role.")


        const time = args[2];
        if(!time){
            return message.reply("You didnt specify a time!");
        }

        person.roles.remove(Members)
        person.roles.add(Muted);


        message.channel.send(`@${person.user.tag} has now been muted for ${ms(ms(time))}`)

        setTimeout(function(){
           
            person.roles.add(mainrole.id)
            person.roles.remove(role.id);
            console.log(role.id)
            message.channel.send(`@${person.user.tag} has been unmuted.`)
        }, ms(time));
     }
 }
earnest phoenix
#
client.on('guildMemberAdd', member => {
  const channel = member.guild.channels.cache.find(ch => ch.name === '🖤︱chat'); // change this to the channel name you want to send the greeting to
  if (!channel) return;
  channel.send(`Welcome to **Equinox™** ${member} I hope you enjoy your stay here!`);
  channel.send(`Make sure to check out [#727922552466571304](/guild/264445053596991498/channel/727922552466571304/) and [#727922424062017566](/guild/264445053596991498/channel/727922424062017566/)!`);
});```
How can I make that an Embed?
solemn latch
#

@hazy sparrow you never define args

hazy sparrow
#

in the main file or mute.js

solemn latch
#

in mute

hazy sparrow
#

oh

solemn latch
earnest phoenix
#

Bruh

#

Ewww

winter basalt
#

?

#

why ew

solemn latch
#

note, dont help that guy :p doesn't like people helping him

winter basalt
#

seems like it

hazy sparrow
#

lmao

#

he was the first to ask for help :/

restive pebble
#

@earnest phoenix

#

lol

earnest phoenix
#

What @restive pebble ?

restive pebble
#

u were in djs

earnest phoenix
#
<html>
<title>Flantic</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway">
<style>
body,h1 {font-family: "Raleway", sans-serif}
body, html {height: 100%}
.bgimg {
  background-image: url('https://cdn.discordapp.com/attachments/716839263320145974/728104493144604742/forestbridge.jpg');
  min-height: 100%;
  background-position: center;
  background-size: cover;
}
</style>
<body>

<div class="bgimg w3-display-container w3-animate-opacity w3-text-white">
  <div class="w3-display-topleft w3-padding-large w3-xlarge">
    Flantic
  </div>
  <div class="w3-display-middle">
    <h1 class="w3-jumbo w3-animate-top">COMING SOON</h1>
    <hr class="w3-border-grey" style="margin:auto;width:40%">
  </div>
  <div class="w3-display-bottomleft w3-padding-large">
  </div>
</div>

</body>
</html>
#

hm?

#

@earnest phoenix What ya need help with?

#

?docs html

#

Rip

#

lol

#

and?

#

Oof.

#

hm

#

it should come like this but coming like that

#

Did you scale it?

#

l0l

#

nah

#

Along with insert the backround.

#

idk how to

#

lol

#

There

#

DMs @earnest phoenix

#

I will send you it.

#

alr

#

let me log into top.gg to get mine @earnest phoenix

#

You can use it.

#

alr

restive pebble
#

u sure thats a method

earnest phoenix
#

@restive pebble ?

restive pebble
#

it dosent load the image

earnest phoenix
#

yh

restive pebble
#

i suggest to use canvas

#

browsers are different

solemn latch
#

imagine tagging everyone

#

for a personal issue

earnest phoenix
#

what is canvas l0l

solemn latch
#

canvas is for making or editing images

prime trout
#

mm

winter basalt
earnest phoenix
#

poop

winter basalt
#

what

prime trout
#

ahh

#

ok

earnest phoenix
#

is good......

winter basalt
prime trout
#

look that link

#

.-.

earnest phoenix
#

can anyone give me an template for my bot description

olive rune
#

Did you click the link

solemn latch
#

its a link to help you

#

put you on the right path

olive rune
#

Xev just write about your commands

earnest phoenix
#

huh

winter basalt
#

you dont need actual html or css, writing normal desc is sufficient

earnest phoenix
#

i need a css or html template

solemn latch
#

you dont need any css or html

earnest phoenix
#

it looks good

solemn latch
#

you can use markup if you want

#

much easier

earnest phoenix
#

or any way i can add an image in it

solemn latch
#

you can also use markup to add images

earnest phoenix
#

how

solemn latch
#

mark down

#

whatever

#

🤔

earnest phoenix
#

When my console gets flooded with:

Discord API Error: Missing Permissions```
```CSS
Discord API Error: Missing Permissions```
```CSS
Discord API Error: Missing Permissions```
```CSS
Discord API Error: Missing Permissions```
#
  • 10,000 More
#

lol

solemn latch
#

your bot can get temp banned

#

for too many failed requests

earnest phoenix
#

how do i use it lmao

solemn latch
#

theres an entire thing at the bottom of the page

#

on using markdown

silver lintel
#

how to make a giveaway command in node.js?

earnest phoenix
#

the question's a bit too abstract

lusty quest
#

its not only a command, there is more running in the background (if its proper made)

silver lintel
#

oops, sorry, ill do a hastebin instead

lusty quest
#

there is missing some stuff i guess. also i think your aproach is not the best. if the bot restarts the giveaway is bricked

silver lintel
#

oof

lusty quest
#

i would make a command for just creating the Starting Giveaway embed and adding the reaction.

earnest phoenix
#

what superbrain said, you need to store the message id in some sort of a database

#

yeah

silver lintel
#

like an array or json?

solemn latch
#

Like a database

lusty quest
#

then get a timer running that checks like very 5 minutes if a giveaway is done or loads a timeout with the remaining time

#

if the timer ends select a winner from the array of users that reacted

silver lintel
#

ok thanks, ill work on it :))

earnest phoenix
#

i'd personally have a single timer/interval that just constantly checks whether a giveaway had expired

#

it saves me memory

lusty quest
#

^

restive pebble
#

i suggest u to use giveawaysmanager

silver lintel
#

what is a good free online hoster?

restive pebble
#

its easy

#

to use

earnest phoenix
#

what is a good free online hoster?
there aren't any

#

if you want hosting, pay for it

solemn latch
#

There are no good free online hosts

restive pebble
lusty quest
#

free hardware has always a drawback

solemn latch
#

^

#

Someone has to pay for the equipment, the maintenance, power, internet

#

For those free platforms

restive pebble
#

yes

silver lintel
#

then what is the best reliable hoster that isnt too costly?

restive pebble
#

and they earn from ur isp

solemn latch
#

Galaxygate is what I use. $3 a month is their cheapest plan

restive pebble
#

nvm

#

it dosent have always on

lusty quest
#

i use digitalocean and im fine with them

restive pebble
#

yeah

lusty quest
#

(5$/month)

restive pebble
#

i host vmware

silver lintel
#

my friend recommended me digital ocean

solemn latch
#

Do is great

#

Costs a bit more

lusty quest
#

currently i have 5 VPS there for my Ecosystem and im fine with it

solemn latch
#

No backups, limited bandwidth.
But it works

lusty quest
#

there are backups

solemn latch
#

Gotta pay for em

lusty quest
#

and 1TB bandwith is enought

#

1$/month

#

its nothing

solemn latch
#

Free on gg 🤔

lusty quest
#

other hoster want money per 10GB of storage

solemn latch
#

🤔

lusty quest
#

its possible that they inceased it (wasnt there for almost 8 years)

earnest phoenix
#

Is it possible to add a video to an embed?

restive pebble
#

@earnest phoenix no

#

gif and image only

silver lintel
#

im using 'discord-giveaway' but there isnt actually anything that sends the giveaway embed. or im just dumb

restive pebble
#

yes

#

u have to set it up

silver lintel
#
client.giveawaysManager.start(message.channel, {
    time: ms(args[0]),
    prize: args.slice(2).join(" "),
    winnerCount: parseInt(args[1]),
    messages: {
        giveaway: "@everyone\n\n🎉🎉 **GIVEAWAY** 🎉🎉",
        giveawayEnded: "@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉",
        timeRemaining: "Time remaining: **{duration}**!",
        inviteToParticipate: "React with 🎉 to participate!",
        winMessage: "Congratulations, {winners}! You won **{prize}**!",
        embedFooter: "Giveaways",
        noWinner: "Giveaway cancelled, no valid participations.",
        hostedBy: "Hosted by: {user}",
        winners: "winner(s)",
        endedAt: "Ended at",
        units: {
            seconds: "seconds",
            minutes: "minutes",
            hours: "hours",
            days: "days",
            pluralS: false // Not needed, because units end with a S so it will automatically removed if the unit value is lower than 2
        }
    }
});
#

this thing?

lusty quest
#

i think you miss a DB or did you use a external DB?

silver lintel
#

im using a json file

lusty quest
#

i think you need to define it in the manager

silver lintel
#
const manager = new GiveawaysManager(bot, {
    storage: "./giveaways.json",
    updateCountdownEvery: 10000,
    default: {
        botsCanWin: false,
        exemptPermissions: [ "MANAGE_MESSAGES", "ADMINISTRATOR" ],
        embedColor: "#FF0000",
        reaction: "🎉"
    }
});
lusty quest
#

if i see it correctly it should work. the manager itself sends the message

restive pebble
#

Yes

earnest phoenix
#

plss

lusty quest
#

the documents you send them where not usable

#

they need a picture of the front side and backside of your ID

#

if they cant read it it fails

restive pebble
#

this.client.GiveawayManager.start(channel, { time: ms(time), winnerCount: winners, prize: prize, hostedBy: message.author, messages: { giveaway: `${emoji} **Giveaway** ${emoji}`, giveawayEnded: `${emoji} **Giveaway Ended!** ${emoji}`, timeRemaining: "Time left: **{duration}**!", inviteToParticipate: "React with \"🎉\" to participate!", winMessage: ":ship_tada: Congrats, {winners} for winning **{prize}**!", embedFooter: `${this.client.user.tag}`, noWinner: "Nobody won because of the invalid participations!", hostedBy: "Hosted by: {user}", winners: "winner(s)", endedAt: "Ended at", units: { seconds: "seconds", minutes: "minutes", hours: "hours", days: "days" } } });

#

Like this

silver lintel
#

and where do i define that?

restive pebble
#

In ur command

#

I suggest u to take a look at a bot

silver lintel
#

thhanks so much

restive pebble
#

Actually this guy is a frnd of whom made the discord-giveaways

#

So I suggest this

earnest phoenix
#
(node:4) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'collection' of undefined
2020-07-02T06:47:19.114234+00:00 app[worker.1]:     at Client.<anonymous> (/app/Index.js:53:27)
2020-07-02T06:47:19.114234+00:00 app[worker.1]:     at Client.emit (events.js:315:20)
2020-07-02T06:47:19.114235+00:00 app[worker.1]:     at MessageCreateAction.handle (/app/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
2020-07-02T06:47:19.114235+00:00 app[worker.1]:     at Object.module.exports [as MESSAGE_CREATE] (/app/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
2020-07-02T06:47:19.114236+00:00 app[worker.1]:     at WebSocketManager.handlePacket (/app/node_modules/discord.js/src/client/websocket/WebSocketManager.js:386:31)
2020-07-02T06:47:19.114236+00:00 app[worker.1]:     at WebSocketShard.onPacket (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:436:22)
2020-07-02T06:47:19.114237+00:00 app[worker.1]:     at WebSocketShard.onMessage (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:293:10)
2020-07-02T06:47:19.114237+00:00 app[worker.1]:     at WebSocket.onMessage (/app/node_modules/discord.js/node_modules/ws/lib/event-target.js:125:16)
2020-07-02T06:47:19.114237+00:00 app[worker.1]:     at WebSocket.emit (events.js:315:20)
2020-07-02T06:47:19.114238+00:00 app[worker.1]:     at Receiver.receiverOnMessage (/app/node_modules/discord.js/node_modules/ws/lib/websocket.js:800:20)
2020-07-02T06:47:19.114296+00:00 app[worker.1]: (node:4) 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(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 141)
vale garden
#

hi

#

how do i

earnest phoenix
#

i need help

vale garden
#

define the username of a certain user

#

like message.author.username or bot.user.username

#

how do i define my name

#

only

pure lion
#

Uh

digital wagon
#

@earnest phoenix show code /app/Index.js:53:27

earnest phoenix
#

k

pure lion
#

Get your ID and make it a const

#

Global

vale garden
#

then

#

wat

earnest phoenix
#

const find = await bot.db.collection("Deku-DB").findOne({"g_id":message.guild.id});

pure lion
#

Search through client.users to find your ID

vale garden
#

wat

#

why

#

i can just copy my id

#

should i do

digital wagon
#

your property db is undefined, look where you defined it

vale garden
#
const owner = 394320584089010179
console.log(message.owner.username)
#

or something

restive pebble
#

No

vale garden
#

then what

earnest phoenix
#
bot.on("ready", async () => {
let mongoDB = await MongoClient.connect(`MY URL`).catch(console.error)
console.log("Connected to Mongo")
bot.db = await mongoDB.db("Deku-DB")
});
``` there is where i define it
restive pebble
#

client.users.cache.get(owner).username

vale garden
#

oh ok

#

thx

restive pebble
#

That will return for cached user

#

use fetch for uncached

#

MongoDB

earnest phoenix
#

@digital wagon

restive pebble
#

Don't ping

earnest phoenix
#

k

restive pebble
#

Just a tip

digital wagon
#

there is no error when connecting to the database ?

restive pebble
#

It can make someone feel annoying

earnest phoenix
#

no there sint aprat from that collection is undefined

#

omg

#

my spelling

restive pebble
#

U using MongoDB

earnest phoenix
#

yes

restive pebble
#

It works with heroku?

vale garden
#
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'username' of undefined
#

im getting this

#

error

restive pebble
#

send code

pale vessel
#

fetch owner?

restive pebble
#

Yes

#

If he is not cached

earnest phoenix
#

It works with heroku?
@restive pebble yes it does i think it should ppls said

restive pebble
#

Ok

vale garden
#
const owner = 394320584089010179
      .setFooter(`Bot developed by 
      ${message.client.users.cache.get(owner).username}`, "https://cdn0.iconfinder.com/data/icons/free-social-media-set/24/discord-512.png")
pale vessel
#

boeing what db are you using

vale garden
#

i skipped the whole code

restive pebble
#

Me

#

.json

vale garden
#

im only sending the important stuff

pale vessel
#

is it fast

restive pebble
#

And arrays

#

Yeah

#

But slower than quick.db

#

@vale garden

#

remove message

pale vessel
#

why did snowflake add me

restive pebble
#

Where

#

Oh frnd

#

Idk

pale vessel
#

he's cool though

restive pebble
#

Yes

pale vessel
#

hmm

#

oh

restive pebble
#

Ok

pale vessel
#

boomah

restive pebble
vale garden
#

waht

#

what

restive pebble
#
      .setFooter(`Bot developed by 
      ${client.users.cache.get(owner).username}`, "https://cdn0.iconfinder.com/data/icons/free-social-media-set/24/discord-512.png")```
vale garden
#

okok

#

ob

#

oh

#

when i do that it says client is not defined

digital wagon
#

const find = await bot.db.collection("Deku-DB").findOne({"g_id":message.guild.id});
@earnest phoenix is it in another event?

restive pebble
#

How u defined client

vale garden
#

i didnt lol

#

i use bot

restive pebble
#

Yes

#

So change to bot

earnest phoenix
#

@earnest phoenix is it in another event?
@digital wagon wdym

restive pebble
#

Flazepe u gone

digital wagon
restive pebble
#

Why use mongo lol

#

Use Sql

pale vessel
#

both are okay i guess

digital wagon
#

sql bruh mdr

restive pebble
#

Yes

earnest phoenix
#

im confused

#

here

restive pebble
#

W3schools

#

Is a solition

vale garden
#
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'username' of undefined
#

getting this again

pale vessel
#

fetch the owner

earnest phoenix
vale garden
#

wat

restive pebble
#

Wait

pale vessel
#

members#fetch(ownerID)

#

it's a promise

restive pebble
#
      .setFooter(`Bot developed by 
      ${bot.users.cache.get(owner).username}`, "https://cdn0.iconfinder.com/data/icons/free-social-media-set/24/discord-512.png")```
digital wagon
#

const find = await bot.db.collection("Deku-DB").findOne({"g_id":message.guild.id});
@earnest phoenix is that code there and run it in another event for your client ?

earnest phoenix
#

?

pale vessel
#

mongoose for the win @digital wagon xD

digital wagon
#

event

earnest phoenix
#

uhh?

#

should i put in message event?

vale garden
#
      .setFooter(`Bot developed by 
      ${bot.users.cache.get(owner).username}`, "https://cdn0.iconfinder.com/data/icons/free-social-media-set/24/discord-512.png")```

@restive pebble thats what i typed

pale vessel
#

you were missing quotes

restive pebble
#

Yes

pale vessel
#

IDs are strings because they can exceed the maximum safe integer

earnest phoenix
#

should i put in message event?
@digital wagon

lusty quest
#

i would store IDs as string in MongoDB if you use mongoose. if you use the offical client i would use 64-bit int

earnest phoenix
#

?

restive pebble
#

Sql

pale vessel
#

he has no idea

lusty quest
#

ohh sql

restive pebble
#

Who

#

Me

lusty quest
#

then use bigint

pale vessel
#

no, they use mongo

restive pebble
#

I use local db lol

pale vessel
#

what db

lusty quest
#

quickdb?

restive pebble
#

Self

#

.json

pale vessel
#

:o

lusty quest
#

ouch

restive pebble
#

database.json

#

And use fs

pale vessel
#

interesting

true cosmos
#

:d

earnest phoenix
#

jsons dont work with heroku

restive pebble
#

Becuz sometimes I make changes to sqlite dbs

digital wagon
#

this is the problem, if the event "ready" and execute first and the connection hasn't been made to the database yet, if another event executes and exploits the variable <client>.db then what's empty this could be the problem. xD

restive pebble
#

It says corrupted

#

Lol

earnest phoenix
#

this is the problem, if the event "ready" and execute first and the connection hasn't been made to the database yet, if another event executes and exploits the variable <client>.db then what's empty this could be the problem. xD
@digital wagon ?

digital wagon
#

BRUH

pale vessel
#

bruh

restive pebble
#

Bruh

lusty quest
#

you cant use sqlite with heroku since it overrites it every time you rebuild the bot

restive pebble
#

Learn js nd dbs

#

Please

pale vessel
#

he meant that you need to wait until the bot has established a connection to the database before you can do anything yet

earnest phoenix
#

how

#

can i

restive pebble
#

Await

earnest phoenix
#

?

restive pebble
#

Async

#

MangoDB

earnest phoenix
#

?

#

i tried

#

await

#

and async

#

didnt work

restive pebble
#

Ok

#

Read the docs

lusty quest
#

i have no issue for some reason

restive pebble
lusty quest
#

i think you make something wrong

restive pebble
#

MangoDB?

digital wagon
#

euh event 'ready' first > connection db slow > variable db still empty > other event trigger when db is empty > ERROR

pale vessel
#

MariaDB?

restive pebble
#

Lemme search

#

MangoDB

earnest phoenix
#

i think you make something wrong
@lusty quest ok soo what does ur code look like?

#

MongoDB

lusty quest
#

i load my db inside of my main file

pale vessel
#

same

earnest phoenix
#

i load my db inside of my main file
@lusty quest same

restive pebble
#

Is it mongo or mango

lusty quest
#

so it should load before every other file

earnest phoenix
#

mongo

lusty quest
#

mongo

pale vessel
#

manga

restive pebble
#

Oh

#

Lol

#

MongoDB free?

earnest phoenix
#

so it should load before every other file
@lusty quest ok ik that but what does ur code look like as of i may be 1000000% wrong

pale vessel
#

perhaps

earnest phoenix
#

MongoDB free?
@restive pebble oui

lusty quest
#

you can get a free Instance

restive pebble
#

Wut

#

Okk

lusty quest
#

google MongDB atlas

pale vessel
#

m0 cluster ay

restive pebble
digital wagon
#

@earnest phoenix attend fr ?

earnest phoenix
#

tf

#

fr?

#

huh

lusty quest
#

its fine for small to medium bots. but large bots maybe should use a larger system

digital wagon
#

yes

earnest phoenix
#

so can i see ur code in ms

#

dm

#

dms

#

pls

digital wagon
earnest phoenix
#

as of i may be wrong

#

wat a good async function for it?

#

eh

#

i tried ready

#

and nope

#

didnt work

pale vessel
#

if you only store prefixes, it's more than enough for a big bot

#

but yeah most big bots have more stuff to store

lusty quest
#

then its enought

pale vessel
#

especially economy data

lusty quest
#

but if you start with storing user profiles it will get annoying

pale vessel
#

mhmm

#

you can always self host whenever possible

lusty quest
#

thats true, ive build myself a cluster

digital wagon
#

@pale vessel I store the prefixes with mongodb

restive pebble
pale vessel
#

very nice pedro

digital wagon
#

it works great

restive pebble
#

Soe also try mongo then

#

KekDB

earnest phoenix
#

so uhh can somone HELP?

digital wagon
#

kek urgh

earnest phoenix
lusty quest
#

mongo is nice. i switched from mysql to Mongo

pale vessel
#

same

restive pebble
#

:kekw:

earnest phoenix
pale vessel
#

just did it today actually

restive pebble
pale vessel
#

it's relatively easy to use

lusty quest
#

now i have a DB cluster with Fallback

restive pebble
#

Kek

earnest phoenix
#

so can simine1 HeLp Me?

restive pebble
#

W

lusty quest
#

what is your issue @earnest phoenix

restive pebble
#

No lol

earnest phoenix
#

what is your issue @earnest phoenix
@lusty quest i need help with mongo

#

i need it in an async function

lusty quest
#

more infos?

earnest phoenix
#

but uhh i dont know which

lusty quest
#

what did you want to do?

earnest phoenix
#

connect to my database

lusty quest
#

just saying you need a async function doesnt help

#

how did you do it rn?

earnest phoenix
#

?

#

i did ready function and didnt work

#

i got errors

#

like uhh collection not defined

#

and uhh

#

yeah

#
  let mongoDB = await MongoClient.connect(`URL`).catch(console.error)
console.log("Connected to Mongo")
bot.db = await mongoDB.db("Deku-DB")
``` what would be a good async function here?
#

ok

digital wagon
#

@earnest phoenix euh db() ?

restive pebble
#

.fetch is promise right?

lusty quest
#

And my internet is lagging gg

earnest phoenix
#

@earnest phoenix euh db() ?
@digital wagon huh?

digital wagon
#

your url include db

earnest phoenix
#

cluster i think

#

cluster0

#

i have no clue

#

what im doing

#

#:/

digital wagon
earnest phoenix
#

?

lusty quest
#

what client did you use? mongoose or mongo?

delicate shore
#

why is error coming

delicate shore
#

here

restive pebble
#

#1

delicate shore
#

and what does this mean

restive pebble
lusty quest
#

@delicate shore read the error

delicate shore
#

Please help

#

I read it

#

but i am not getting it

lusty quest
#

4th line says you exaclty what is missing

restive pebble
#

100%lol

delicate shore
#

wot

#

Please help

#

e

restive pebble
#

Ok I'll help

lusty quest
#

did you understand what is there in the error?

restive pebble
#

Now describe

delicate shore
#

thnx

restive pebble
#

Send error

delicate shore
#

cannot finde module

#

node fetch

lusty quest
#

how to fix a missing module=

delicate shore
#

i made a reddit command

restive pebble
#

Install node fetch lol

digital wagon
delicate shore
#

npm install

#

but i use glitch

restive pebble
#

Install node fetch lol

delicate shore
#

how to do that

earnest phoenix
restive pebble
#

Go to package.json

lusty quest
#

glich dont support node-fetch iirc

restive pebble
#

Yes

delicate shore
#

oh

restive pebble
#

Supports

digital wagon
#

@earnest phoenix but function db ??

golden condor
#

@lusty quest yeah it does

restive pebble
#

U got to package.json

pale vessel
#

glitch supports pretty much most node modules

lusty quest
#

there was someone a while ago here who had the issue and where unable to install it

digital wagon
#

where did you see this?

pale vessel
#

even native ones

golden condor
#

It's heroku that doesn't support all things

restive pebble
#

Yeah

delicate shore
#

U got to package.json
@restive pebble ?

pale vessel
#

i was able to get puppeteer to work on glitch

earnest phoenix
#

@earnest phoenix but function db ??
@digital wagon what?

pale vessel
#

no problem whatsoever

restive pebble
#

U go to package.json

#

Click add package

delicate shore
#

and?

#

then?????
?
?
?
??

digital wagon
restive pebble
#

Enter name

delicate shore
#

of

restive pebble
#

Node fetch

delicate shore
#

/giphy /

#

/giphy /

#

/giphy /

#

oh

#

what is happening

restive pebble
#

And add package

delicate shore
#

why does it says / giphy

restive pebble
#

Idk

earnest phoenix
pale vessel
#

same pedro xD

earnest phoenix
#

im getiting collection undefined now

digital wagon
#

euh the docs dude xD read the docs

restive pebble
earnest phoenix
#

im getting collection undefined

digital wagon
restive pebble
lusty quest
#

the collection is undefined bcs your code is probably wrong

#

or you cant connect to the DB

delicate shore
#

@restive pebble there are 3

earnest phoenix
#

what is mongoose?

delicate shore
#

of them

restive pebble
#

All this money and pain made me heartless

delicate shore
#

node fetch or node fetch npm?

pale vessel
#

??

restive pebble
#

1rst

delicate shore
#

which i have to add

restive pebble
#

One

lusty quest
#

mongoose is a client for acessing mongodb

delicate shore
#

o

restive pebble
#

1st

#

All this money and pain made me heartless

earnest phoenix
#

mongoose is a client for acessing mongodb
@lusty quest ok can you help then?

restive pebble
#

Read the docs

pale vessel
#

and so is mongodb no?

restive pebble
#

Docs

lusty quest
#

mongodb is one too

restive pebble
#

Read

delicate shore
#

i ran enable npm

pale vessel
#

there's both mongodb and mongoose. mongoose utilizes models and schemas while mongodb is just barebones

restive pebble
#

docs

delicate shore
#

Read the docs
@restive pebble me?

restive pebble
#

No

earnest phoenix
#

im being confused from 100 eyes rn

delicate shore
#

okokokokokokokookokko

digital wagon
#

@earnest phoenix what package ?

delicate shore
#

ok

#

i am stopid

earnest phoenix
#

mongodb

digital wagon
#

mongodb or mongoose ?

earnest phoenix
#

i am

lusty quest
#

@earnest phoenix i litterally send you yesterday a entire YT series for making a Discord bot and there is even stuff about how to use mongoDB

earnest phoenix
#

yeah

#

but uhh

#

i couldnt understand it

delicate shore
#

@restive pebble another

#

error

pale vessel
#

then how are you going to understand us when there is a visual video that you don't understand lol

delicate shore
#

boeing?

restive pebble
#

Screenshot

delicate shore
#

Error: Cannot find module 'discord.js-commando'

#

^^^^

restive pebble
delicate shore
#

another

#

modul

restive pebble
#

Stop using glitch

delicate shore
#

package

#

ahh

lusty quest
#

add it to your package.json

restive pebble
digital wagon
#

@earnest phoenix don't include the name of the db in your url

restive pebble
#

Glitch has that error

earnest phoenix
#

@earnest phoenix don't include the name of the db in your url
@digital wagon k

restive pebble
#

It sometimes say someodules not found

kind sedge