#development
1 messages · Page 1020 of 1
so instead of checking every single possible command, you get it directly from the list
I just realised
so I run/execute client.commands
for example
When I write a disable command for all my commands I'm gonna have to stack 100+ else ifs
:D
client.commands.get(command) will give you a command, if it exists, otherwise it will give you nothing
so you can do
cmd = client.commands.get(command)
if(cmd) { cmd.execute(...) }
and that replaces all if elses
so that wll execute them all?
whatever command people write, it checks if it exists in the list, if it does, execute it, else ignore it
the list being client.commands
yes
its arguments right? Since parameters are what the functions ask for and arguments are what you give right?
but then... how does the bot know the PREFIX+command
Or am I being stupid again
I have a feeling he just copied code without knowing what it does
Do prefix check first.
Then do command check
Then execute command
Or well, whats defined as cmd
Gg sold out of ryzens last night
That's
I was going to get a second tonight
Big
Tim .eval client.commands.get("help").enabled = false; does not set it to false
It just logs false
Any idea why?
It doesnt make sense
What doesnt
@tulip ledge is the help command an object?
so how does command know my prefix and command
I think you deleted your prefix checker line
wait
I think you deleted your prefix checker line
@solemn latch What do you mean?
@spare mirage the part with the prefix, where it returns if the prefix isn't at the beginning was fine. You can keep that at the start
Since the prefix will be the same no matter what
if .get() returns run and command
then you should do .get().command.enabled = false
ive never had that @solemn latch My cmmands always were msge.content.startsWith(BLABLBLABL) {}
Yeah
Thats all fine @spare mirage
It still is true
wait then what ever was my prefix checker
weird
^
You wrote it tho right?

So yoh should know what it does 🤔
@tulip ledge it should work...
yes
I shouldve known
client.on('message', message =>{
if(!message.content.startsWith(PREFIX) || message.author.bot) return;
const args = message.content.slice(PREFIX.length).split(/ +/);
const command = args.shift().toLowerCase();
const cmd = client.commands.get(command)
if(cmd) { cmd.execute(bot, message, args) }
```
weird
this will work then?
Try it 🤔
why are you mixing bot with client
lol
other than that, yes it should work
looks like it started with github copy/pasta
You never defined bot
@lusty quest uhh yes.. when I first started I used a github copy pasta
client.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
for(const file of commandFiles){
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
client.once('ready', () => {
console.log('Codelyon is online!');
});
client.on('message', message =>{
if(!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
if(command === 'ping'){
client.commands.get('ping').execute(message, args);
}
});
uhh
Define fs?
@spare mirage we're not gonna keep helping you like this
@tulip ledge might have something to do with the require cache
Oh I need to require
While bot isnt defined
He just copied some github stuff then rewrote it using a tutorial or something idk
@tulip ledge try this client.commands.set(command.name,{run:command.run,command:command.command}) or however your commands are structured
basically instead of using the required object directly, you extract and rebuild it
doesnt matter, as long as you rebuild the object
const cmd = bot.commands.get(command) cannot read property of get
Then I need to change the aliases aswell
Use client
Alright
or just do this client.commands.set(command.name,Object.assign({},command))
?
@spare mirage mixing client and bot again
I have no idea how that'd work
@spare mirage whenever in doubt if its bot or client, always use the same that you use for <>.on("message")
Learn basic js before asking questions
¯_(ツ)_/¯
didnt i told you a few days ago to learn some basics
Doing that now @lusty quest gets boring and annoyinh trying to learn for 5 hours
oh boy, justii... please
its fine to ask but it gets annoying if you ask the same basic questions over and over
i had always issues to learn stuff from just plain reading stuff, i can better memorize stuff if i do it myself. If i run into issues i usually google for a solution or try some stuff that maybe work
Why does this take so long?
Discord
^
Damn
I do
do u have HIGH bot ping?
Discord is slow about stuff like that
Especially when adding them in order
u can use .then right?
You send the request, wait for it to be added and discord to tell you it was added.
Then you send the next
Its just a naturally slow process
oof
maybe bots that run on py? you have a wait command there right?
ugh
Speed of reactions should depend on the language tho
It’s only doing the same thing in the end
it doesnt depend on the language, it depends on the library, and how the library process and send data (mostly).
discord.js
it looks like a discord issue tbh
It’s done it ever since I added it
it is
sometimes it can be super quick with reacting, other times it is just sluggish as hell
when did u add it?
hmmm

what does ur code look like for making it give these reactions?
It’s unnecessary for my use case
async await
your sending all of them at the same exact time. maybe the library is rate limiting them?
i dont think he cares about the order so async is not needed
Not really it tells you what the numbers respond to
i know if i send 5 messages at once, the library will rate limit me
also i have a command that adds mutiple reactions, its still sluggish but not as slow as you have it
It makes no sense because it’s not fast then wait then resume it’s just slow
try spacing them out a bit 🤔
the ratelimit for reactions is 1/0.25
so he would be hitting it
hmm i have the same speed for my command
and djs's built in ratelimiter would slow it down
i guess its API limitation then
Sad times
some libraries don't respect doubles and round it to 1/1
reactions on my bot are much faster
It might be 1/1
🤔
you tell me
you got litteraly told last time you asked what the issue is
you can't give us a glob of code and tell us "theres an error find it"
learn to do it yourself
we're here to assist you not to do it for you
stop being a help vampire
stop being a help vampire
atleast im not a please feed me code im hungry vampire
¯_(ツ)_/¯

well
you kinda are
🤔
also, i went to bed, with you asking questions, and woke up to you asking questions. since then every time i look here, its you asking questions
honestly, if you need that much help, hire a teacher
@tim 
@solemn latch I wasnt asking questionts that whole night xD
I kinda tried to make the command work for 5 hours
and it didnt work
sure, but nearly every waking hour for me, for the past almost 48 hours youve been in here
asking for help
is it weird that when you know a programming language, you think "why does this guy not know? it's so easy"?
my brain just thinks it's common sense, i'm well aware it's not
new to coding, and new to discord bots dont go well together
would u ask questions here?
when i started, i started with things like basic scripts
would u ask questions here?
@spare mirage not really, i'd google
google helped me learning programming languages, 100%
thats ur EXPERIENCE
when i started i didnt ask anyone any questions for months
without experience, you would google lmao
and started learning things i was capable of
i just refer w3schools, mdn, and some other sites like stack overflow to see how people solve their problems
it's not hard when you're used to it
official docs too, i guess
w3schools is kind of cringe
without experience, you would google lmao
Without experience? Im here without experience with a group of 7000+ experienced coders
mhmm
I bet u cold find more awnsers here
they sometimes don't provide all functionality
it's more like a lot of their guides are outdated
at least the most basic example is their introduction to javascript
but w3schools explains everything in layman's terms so if you don't get what you're reading, there's a big problem
^ thats why experinced coders dont like w3schools
i refer mdn since they're up to date with their versioning and stuff
so i can see which node versions i need for a certain function, etc.
they also tend to give every detail
@solemn latch sup
i was going to ask about pupetter
but i think im going to put it on my second server, and just serve the requests
i got grafana setup today, got a really nice dashboard with recent commands and stuff.
going to use puppetter to view stats via a command
is there a shorter way to do ``` if(bool !== true || bool !== false) { return "boolean expected"; }
typeof something === "boolean"
hmm ok thanks
if else? maybe
if else would make it longer
is general the emergency room?
thats me tryiung to code
that's when you have an issue and you couldn't find the answer on google
do you guys know how to make a /sudo bot like one of those counting bots
What is the sudo command supposed to do.
Okay, what library and language are you using (gamer ash)? You'd just need to mimic whenever a message is created but set different properties for whatever instance is passed.
@sudden geyser I dont think bots can sudo
so im having a bit of a security issue with something... i have a website and if u do mywebsite.com/users/userID u r logged into the users account without having to put the password or anything in.. any ideas how I can make them have to put a password in without directly going to users/userID? im using expressjs
they can if you can mimic it. at least I've done it before
for the sudo command?
yes
it's not that hard
seems like a dang lotta code though
no its not, learn nodejs
seems
like if you're using nodejs, one way is copying the message object, changing a few properties, then emitting a new message create
that's a different type of sudo (and not as easily doable by a bot)
else ur just running a say command @sudden geyser
Why?
please read
ye
T’es fr?
zapto is
Why comes by 🇩🇪 the \🇩🇪
Deutschland = Germany
shitpost somewhere else
whats the correct for 🇩🇪
yes
there u go
Only add ":-flag_de-:" to the code?
gj
What's the rate-limit of editing messages as a bot? like how many edits per what time unit is a bot allowed to make?
ping me on answer
5 every 5 seconds @bright meadow
@bright meadow nope
tyvm
H
Is it possible to change the display of the bot image on your voting page?
Looking to get this made into a circle, not a square and can't figure it out.
create a circle clipping mask and just put it over the entire design
depends on what software this is
Is it not possible to do it with html editing?
I see other bots have made alterations to their pages with stuff like it.
hi
so im having a bit of a security issue with something... i have a website and if u do mywebsite.com/users/userID u r logged into the users account without having to put the password or anything in.. any ideas how I can make them have to put a password in without directly going to users/userID?
im using expresjs btw
@digital ibex would this help?
https://scotch.io/tutorials/build-and-understand-a-simple-nodejs-website-with-user-authentication/amp
what
i've already built my website
and done the user auth thing, its just a security flaw im trying to fix
ohh wait you were talking about the bot page
@quick flame use border-radius: 50% on .bot-img img
sorry- quite new to this editing stuff, do I add this to the bot description?
so,
<style>.bot-img img border-radius: 50%</style>
theoretically, this should work? or am I tripping?
@valid frigate (sorry for the tag pal)
With css
i know but i dont know how
Google it
Is there any way to fetch messages of a member and get the amount of total messages sent by user?
From here
smells like API abuse
Not really, I'll just use it like this, !messageamount @granite pagoda
response: User has "x" messages.
add like +1 to a database everytime the user sends a message
the search endpoint is not available to bots
Hi
I made a website and the login & create account stuff already works fine - not the issue, but if u do to mywebsite.com/users/userID u are logged in an account which isn't urs without having to enter a password, same with discord, if I do https://discord.com/channels/server-id-im-not-in its just gonna load, whereas my one just logs u right in. I've looked into express-session but am still confused. can someone help me please. thanks :D
how do you check the amount of guils/ members in python
like how do you find out how many servers your bot is in
look into client.guilds (len(client.guilds))
read the documentation.
I dont have the link rn, but thats where u get the info from.
import discord
from discord.ext import commands
from pyfiglet import Figlet
class Utility(commands.Cog):
def __init__(self, client):
self.client = client
@commands.command()
async def pyg(self, ctx, font, *, text):
f = Figlet(font=font)
await ctx.send(f"```{f.renderText(text)}```")
@commands.command()
async def servlist(self, ctx):
guilds = await client.fetch_guilds(limit=150).flatten()
await ctx.send(f"I am in these guilds: {guilds}")
def setup(client):
client.add_cog(Utility(client))
``` why does it say client is not defined?
which database option i should use?
why do people use databases like mongo
is there a recommended one?
JSON isn't a database.
That's too much for only half a brain
Someone asks for a recommendation and then you sarcastically mock them, That's kinda rude.

jsons can easily get corrupted
The three options I gave are pretty much a choose-one
In a sarcastic manor.
If you're using heroku, forget about sqlite
if your using heroku forget about all file based databases
^
And since he doesn't use a db, that's not mocking him
That's like saying haha you can't ride a bike because you've no legs.
Same difference.
That's....actually extremely different

He doesn't use databases yet, so my mocking didn't target him at all
haha you cant ride a bike because youve got no legs is just making fun of the disabled person
Saying a legless person can't ride a bike is plain bullying
Also, they can
I've seen it already
Not using their legs.
no but laughing about it is mean
but just saying it is just saying it
shoving it in their faces is mean
why are we getting off topic
Back to topic, choose one
MongoDB -> JSON-like management
PostgreSQL -> Really fast for entities with lots of relationships with other entities
SQLite -> The lightest database you'll find out there, absurdly fast and can be used as a cache, but very few data types
so use SQLite
Just appended the drawback
Oh
i need someone to come rate my bot real quick dm me
No
😦
Wait 2-4 weeks and it'll be reviewed by one of the mods
Or you could find some friends and invite them to your server
hey guys Im having trouble with the youtube player api
you see, Im trying to get the duration of a video but It always returns undefined
Im using player.getDuration()
actually I think I fixed it....
bot is not showing anything in console, nor showing any error, nor coming online ._.
nothing logging for me also
yes
a bot does not take 20 mins to start, what is your code?
ok
at the end of the code you have client.login("token")})
which is correct and wrong
Your logging in inside an event
make it js }) client.login("token")
ok
An event that only can happen after logging in
worked
ty
also another question
how do i make a new embed inside a command handler?
have you tried reading the docs
its saying "Discord is not defined"
this one?
those are not official docs
More of a js issue than a docs issue
Things need to be defined where you are using them
If your in a module, it wont have acess to the discord var you defined in the main file, unless you pass it on, or re require it
so i have to do the const Discord = require discord thingy in the handler too?
You actually don't need the entirety of discord
You can just get the embed part
You can just get the embed part
@solemn latch how do i get just that part
const { MessageEmbed } = require('discord.js')
oh
ty
const embed = new MessageEmbed
or
const embed = new Discord.MessageEmbed
which is correct
both
ok ty
so as my bot has grown past over 13k servers and over 4.5m users, should i consider moving away from d.js to a more memory-efficient lib such as eris? i do see a lot of larger js-based bots are using eris and im assuming its mainly for the reason of efficient memory usage?
how to get a author's ID
@hazy sparrow message.author.id
ty
How do I get my bot to send this rainbow strip without it showing the link?
https://cdn.discordapp.com/attachments/728626486528966738/728626487837851789/rainbow.gif
download the gif
and then put it into your bot's folder
then have the bot send that file
ok will watch it
yea
ok ty
@hazy sparrow
?
have you studied abt Js?
ok
still 3 month left foor bot verification bro, learn first then code
you can still verify your bot after the deadline, it will be still needed to get past 100 guilds
are there any max limit for how many fields can be in a embed?
25
ah ok
response.forEach(async guild => {
var permissions = new Permissions(guild.permissions)
var eval = await ws.shard.broadcastEval(`this.guilds.cache.get("${guild.id}")`)
for(var i = 0; i < eval.length; i++) {
var r = response[i]
if(r === null) continue
eval = r
}
})
Can someone explain to me how the variable eval is the same guild every cycle of the loop? I have checked guild.id is different every cycle
why did you have a loop in a loop?
I am looping trough the guilds the user is in and looping trough the responses of my shards because only one shard has the actual guild
where is response defined?
Response IS defined
where?
nvm now i get it
I define it by using node fetch and .then
But how is eval the same guild on every cycle?
My bot is not even in that guild
its possible that it only cycles throu the first guild
then your issue is the cache in the eval
So every cycle the response of my shards should be different right?
How do I fix that?
i guess its a caching issue
i dont know, i never was on the point for sharding a bot and i havent had the headache attached to it
I dont need to shard I just decided to take the headache now, if I do it later it will be more work
maybe discord.js-light could help (a D.js client that got some modifications for better caching behavior)
or wait until someone with more knowledge is here
I think I will wait, moving to another library seems like something I should do as last solution
d.js-light is mostly regular d.js but with some smaller changes on the caching behavior
Is usage the same?
most of it
exept the cache usage
I see, it removes the stupid .cache
learn fully before making bot
@earnest phoenix was this really needed 😅
yeah
it doesnt remove the cache it just optimize is
Oh?
how was that needed?
it still caches but under rules you can define
the creator of the Lib is also here on the Discord
I noticed that
i guess he can answer your the questions better. if you see Tim he can help you
i found out about this lib yesterday and already implemented it into one bot, now i want to see how it performs
it should cut down on Ram usage of the bot
i dont have large CPU usage on my Bot(s) so i cant really tell if there is a improvement
Most the stuff that really ever affects cpu much, are not caused by the library
How do I add the avatarurl emoji in my embedds
(no i cant google this cus i dontn know what to google 🤷)
could you explain it further?
let e = new Discord.MessageEmbed()
.setFooter(`Added by ${msg.author.tag}, msg.author.displayAvatarURL()`)
¯_(ツ)_/¯

Its a question that 2 minutes looking at the docs woulda given the result
Its always good practice and wastes less time
:D command handler works
Okay cool now learn js please and thank you
ok that was kinda toxic
why is it showing the [object object}
const { MessageEmbed } = require('discord.js')
module.exports = {
name: 'server',
description: "this is to see the server name and server member count",
execute(message){
const newEmbed = new MessageEmbed()
.setTitle('Server Information')
.addField('Server name:', message.guild.name)
.addField('Server Count', message.guild.memberCount)
.addField('Server Owner', message.guild.owner)
.addField('Server Roles', message.guild.roles)
.setColor(0x592040)
message.channel.send(newEmbed)
}
}
Because message.guild.roles is an object
but i want it to display all the roles of the message.guild
@delicate shore docs
map them, roles.map(role => role); or roles.map(role => role.toString());
ok ty
@delicate shore docs
@spare mirage i followed it but
show me ur code
@hazy sparrow dm me real quick
ok
show me ur code
@spare mirage ok
f (command === "unban") {
let User = msg.mentions.first()
let Reason = args.slice(1).join(` `);
if (!User) return msg.reply(`Who are we unbanning?`);
if (!Reason) Reason = `Unbanned by ${msg.author.tag}`;
if (msg.member.hasPermission("BAN_MEMBERS"))
return msg.rely(
"Only people with permission to ban members can use this"
);
msg.guild.fetchBans().then(bans => {
if (bans.some(u => User.includes(u.username))) {
let user = bans.find(user => user.username === User);
msg.guild.unban(user.id, Reason);
} else if (bans.some(u => User.includes(u.id))) {
msg.guild.unban(User, Reason);
} else {
return msg.reply(`This person is not banned`);
}
});
}``` @spare mirage
message.guild.members.unban @delicate shore
n
no
when i write message
it saus unexpected token
message
so i write msg everywhere
idk why
Hi
need help
The "Only people with permission to ban members can use this" line, the one right above it says "msg.rely" not msg.reply, that may cause issues @delicate shore
Nvm it's fine
we already said that yesterday
you're also allowing people who don't have permissions to ban to execute the command, not the other way around
how
!message
if (!msg.member.hasPermission("BAN_MEMBERS"))
like this
i sent old code :/
await > .then imo
buzzy, don't spoonfeed
^^^^
Okay
await > .then imo
this tbh, you'll see await/async pattern more than promise pattern in enterprise environments
a
buzzy, don't spoonfeed
@earnest phoenix bruh
i sent u the old code
i mentioned
it
bruh bruh
brvh
cringe
cry is right though-
brvh
then
just trying to figure out smth before i go yeet myself at my pc
It's a good idea to keep notes of your ideas in an easily accessible place and then try them when you are on PC
Try it and seeeee when you're on your pcccccccc
It's a good idea to keep notes of your ideas in an easily accessible place and then try them when you are on PC
@slender thistle that's literally why I'm trying to figure out stuff before I yeet myself at my pc because my mom won't let me "play" on my pc rn
Glitch.com and repl.it both suck af
No
glitch is gay
No u
I've literally used it many times on phone and on PC when I didn't have a compiler/interpreter installed
it automatically installs required package
msg.user.mentions.first or what is it?
imagine skidding
ok
mentions.users@delicate shore
oh
Why did you change that I had it correct
message.mentions.users.first?
message can have other mentions also lol
Well do .members because you're unbanning and you need a member object
ok
also
you might want to parse the argument instead
if the command is a single arg and you expect a mention it's fine
Try it and see
but when you have multi-argument commands you should probably parse arguments instead of getting the first mention as that can be out of order
let User = msg.mentions.members.first```
@delicate shore function lol
Will this work?
let args = message.content.split(Prefix.length).slice(" ");
Also, wouldn't this also respond to prefixes of the same length?
¯\_(ツ)_/¯
let User = message.guild.member(message.mentions.users.first() || message.guild.members.cache.get(args[0]));
ahh
or find is better
error
scenario:
you have a mycoolcommand <user argument> <string argument>
problem:
someone can input mycoolcommand hey everyone look at @somemention !!, if you use message.mentions.users.first, it will grab @somemention and not what you expected as the first argument
Also, wouldn't this also respond to prefixes of the same length?
@slender thistle it returns if the message content does not start with the prefix
(hopefully they did that)
we know
😦
lol
I don't think guild.member is a function or a constructor? @calm saddle
it is
oh really
it is
yeah, converts a userresolvable to a member iirc
yes
cache.find/ cache.get
and i switch now to a different d.js libary
those u need nowdays
.get()
not 12v?
like map lol
bwai bai
hmmm
Hmmm²
Wow that escalated quickly
mmHmm
i never know you can ragequit from a help channel
myBrain()
i never know you can ragequit from a help channel
@lusty quest knew*
i never know you can ragequit from a help channel
Call center scammers: first time?
@delicate shore You are 12?
no
Uh oh
14.5
🙃
🙃
bruh
HM
i was born in 2005
lwl
We are chatting?
@slender thistle it is lib version 
so he 15 this year?
How do I make my own discord bot?
@earnest phoenix https://www.google.com
How do I make my own discord bot?
@earnest phoenix which language would you like to make it in (code)
so he 15 this year?
@calm saddle yep
idk am bad at maths
How do I make my own discord bot?
have you tried the channel that's literally named frequently asked questions
oh yay
Quite an interesting way to phrase that but alright
they deleted the message
what
never mind whatever
nah it was me
@earnest phoenix which language would you like to make it in (code)
@pure lion what code?
Well it's my first time coding
js py cpp
learn a programming language
ok
Yes do that first
sololearn or mdn
-faq 3 13 -c

brvh
I � Unicode
hey @delicate shore 
hey @delicate shore :hat:
@keen willow hi
DISCORD bot maker is good tho
message.author.send
dm @role
What is the upload limit for bots?
i just realized im 7 months in from coding d.js ; ^ ;
it dms everyone with role
yeh
Not sure
Lmfao
Loop
xd
in side tha role
peoples?
and use for loop
lol
dont use lol
wtf?
yo I've never used a loop before

get a proper vps
caution, don't be mad
but i do my websites in ||asp.net|| 
DID SOMEONE SAY G L I T C H!?
yo I've never used a loop before
@pure lionsame
for loops are best
brvh
lol
i use glitch
😦
dm everyone
I use server boi
in ur bot
😂😂😂
s!dm @restive pebble you good?
please
Get person as a <user> then send them a message lololololol
But yes read the docs before you go anywhere else
my bots muted here for some reason :(
docs sucks s
Msg is a message object, meaning it holds info about where the message was sent
@calm saddle common prefix
the prefix is .. :(
then request a mod to unmute it
hey
caution, don't be mad
but i do my bots in ||vb.net|| 
now i need to get to my next idea. how to remove stuff from a MongoDB collection that havent been updated for x time
what kinda method you using
idk if methods the right word
english hates me nowdays
caution, don't be mad
but i do my bots in ||vb.net|| :EO_eyes:
@keen willow
🚔
i do everything in .net 
i cook in .net
i work with c# all the time
i even made a realtime interpreter for a minecraft server so i can make c# plugins 
DID SOMEONE SAY G L I T C H!?
i need more brain cells to read that
progrmr
lmao
i need more brain cells to read that
@calm saddle probably
xDD
progrmr
@earnest phoenix well, it's faster than learning c#
how shall i get the command author's name and avatar in the embed?
Just deleted system32 and my pc is already speeding up thanks random YouTuber with no mic and notepad
it's not that different, it's just that keywords are mostly replaced with symbols
it's all the same in IL code after all 
Just deleted system32 and my pc is already speeding up thanks random YouTuber with no mic and notepad
@earnest phoenix indian?
https://discordapp.com/channels/264445053596991498/272764566411149314/728870296844763176
i can technically do it tho 
smh
SPA is the future
What is spa?
single page application
Interesting 
ok, so i'm working on a project, can someone send me a video in dm?
anything will do
what u working on
anything
What is the best coding language for a discord bot
there is none
such thing as a "best language for x" doesn't exist
you can do anything in everything
HTTP requests in Brainfuck?
it all comes down on how you use the language and tools available to you to implement it
possible @slender thistle 
i made a c# interpreter
What is brainfuck?
you can use brainfuckjs
Interesting name
a language that fucks with your brain

or use COW
I can milk it xD
i gift someone 1 year Nitro if he make a Working Bot in COW
😂
whats cowe
Cowe 😂
I can milk it xD
@regal raven im calling the cops-




