#javascript-typescript
1 messages · Page 81 of 1
J'ai tout pour le compteur
0
1
2
3
4
5
6
7
8
9```
Okay top sur ça et au niveau du json.players tu as bien ton array ?
Oui
[
{ votes: 2, playername: 'Luck' },
{ votes: 2, playername: 'Sarbatore' }
]
(x10 comme je l'ai log dans la boucle)
okay et tout bêtement tu peux log typeof json.players please
C'est un Object
okay donc ça c’est Good
Donc c’est bien dans la boucle tu peux log pseudo à chaque fois
Voir c’est le quel item qui plante
Sorry je suis sur téléphone donc la lisibilité du code que t’as envoyé est pas dingue donc je vais petit à petit
y en a un vide normal ?
C'est parce que quelqu'un n'a pas mis son pseudo donc je pense pas que ça impacte
Avant le point ?
var pseudo = json.players[compteur]?.playername;
^
SyntaxError: Unexpected token '.'```
Une erreur de Syntax au lancement du bot
snif t’es sûr qu’elle version de node
Sinon rajoute de ton côté des conditions pour vérifier que le players existe
Ce sera suffisant
if(json.players[compteur])
sur la dernière
Et dedans ton .playername et .votes
Je met la condition dans la boucle ?
oui comme ça il ira chercher le pseudo et vote que si le player existe
Merci ! La condition a tout changé, par contre tu saurais remplacer les pseudo non définis par : Inconnu par exemple ?
Sois tu met un else avec le inconnu sois tu l’enlèves et tu rajoutes ça (a voir si ce sera ok)
const pseudo = json.players[compteur].playername ?? ´Inconnu’
J'ai toujours une erreur de syntaxe avec les "?"
trop bizarre
c’est censé être inclus dans les nouvelles nodejs
Tu peux faire node -v please
J'ai la v12.18.3
du coup laisse tombe compatible à partir de la 13
Après tu peux upgrade
Ça devrait rien craindre
la dernière c'est la 16.5.0
et en vrai la LTS c'est la 14.17.3
donc on est loin d'être sur la dernière là haha
prend la LTS
Ah j'ai beaucoup de retard enfaite
si t'es sur windows je te conseille d'utiliser nvm-windows
Même sur macos ou Linux je conseille toujours d’utiliser nvm 
sinon y a un autre nvm sur linux mais il est un peu moins bon
ouais mais le nvm windows est vraiment mieux pour le coup
On fait comment pour choisir quelle version upgrade?
il est sur macos aussi je crois, juste pas compatible il me semble avec linux
si tu veux faire ça plus tard @uneven kayak tu peux juste else{} pour le moment mais pense quand même à upgrade
Perso je suis windows je prends la 14.17.3 ducoup ?
J'espère juste que je vais pas devoir modifier tout mes codes x)
yep voire la 16.5.0
non normalement c’est ok je pense
ça va être très long sinon
non l’écoute pas part sur la LTS
si tu veux vraiment être à la pointe
Je pars sur LTS alors x)
va y avoir combat 
ouais LTS en général c'est mieux, cela dit pour être honnête y a rarement des problèmes sur la current
Euh c'est normal ? ma version: 6.14.6
on recommande LTS parce que c'est mieux supporté sur les hébergeurs récents
t'es sûr que c'est pas celle de npm?
exact
;)
nan
nvm install <version> puis nvm use <version>
nvm et npm sont deux choses différentes
Yes et pense même à la mettre en default
Sinon tu vas devoir use à chaque fois
et tu peux être sûr que tu vas oublier les premières fois
un bon réflexe c'est de toujours vérifier sa version de node
Le therme nvm n'est pas reconnu chez moi
hum tu es sûr de l'avoir installé?
attends
nvm-setup.zip
hésite pas à vérifier la checksum aussi d'ailleurs
ça sert à quoi enfaite nvm ? je suis vraiment perdu
nvm -> installer différentes versions de node
npm -> installer des packages pour les projets
c'est un peu confus au début mais on s'y fait
respectivement, nvm et npm veulent dire Node Version Manager et Node Package Manager
Oh d'accord je vois
nvm ne fait pas vraiment partie du truc officiel de nodejs donc c'est pour ça que c'est pas installé par défaut
mais c'est un peu essentiel vu que l'alternative c'est de désinstaller et réinstaller à chaque fois node et npm
dans l'idée c'est ce que fait nvm, mais il le fait juste automatiquement
Il aurait pas pu tout faire avec npm au lieu de séparer tout ?
bah le truc c'est que c'est pas la même chose
node c'est le programme qui interprète le javascript comme du langage serveur
npm s'occupe d'installer des packages
et nvm ne fait même pas partie du truc de base
un des principes de base en logiciel c'est de se tenir à un rôle par logiciel
C'est vrai chacun a son utilité mais bon
si tu veux tout faire dessus tu finis par te retrouver avec 50000 applications qui sont beaucoup trop lourdes pour rien
C'est pas faux quand on y pense x)
après c'est vrai que pour les mises à jour c'est moins pratique (surtout sur windows) mais ça c'est un élément classique sur des programmes de ce type (t'as pareil avec python par exemple)
Pareil pour DiscordPy ?
bah pour le coup python c'est vraiment pareil parce que eux ils ont un autre gestionnaire de packages qui s'appelle pip
il est juste un peu moins bien fait que npm
un peu moins complet en tout cas
J'ai jamais essayé le py pour Discord, c'est pas trop tentant
bah pour le coup c'est une question de préférence vu que de manière générale l'api est la même
je conseille de rester sur du js parce que c'est là que le support est le meilleur
et puis discord.js est sans doute la meilleure librairie autour de l'api discord que ce soit du point de vue de la documentation ou de la rapidité de mise à jour
ils sont très proches des mises à jour de l'api en vrai
Sûrement oui
même si ces derniers temps ils ont pris un peu de temps pour leur v13 qui est toujours pas sortie sur le canal stable
Petite question au passage avec les "?" c'est possible de remplacer une string vide par autre chose ?
La V13 de python ?
genre const test = emptyStr ?? 'Hello world!' ?
nan de discord js
C'est ce que j'ai fais, la syntaxe est bonne mais ça me laisse une str vide
nan c'est pas bon c'est pour ça
Je suis perdu dans les version, avec node, npm franchement je réfléchis même plus
Je l'ai fait comme Enzo m'a indiqué
var pseudo = json.players[compteur].playername ?? 'Inconnu';
Mais ça me laisse une vide
je crois que si tu remplaces ?? par || ça fonctionne mais au pire tu peux faire une ternaire :
const value = possiblyEmpty ? possiblyEmpty : 'valeur si vide'
mais si les deux barres fonctionnent utilise plutôt ça c'est plus lisible
Bien vu ça fonctionne mieux merci
t'as fait const value = possiblyEmpty || 'valeur si vide' ?
Avec les "?", ça m'apprend en même temps comme je connaissais pas cette façon de faire
au début c'est un peu perturbant les ternaires mais en gros c'est tout bête :
const variable = condition ? valeurSiConditionVraie : valeurSiConditionFausse
donc pour traduire : on assigne à la variable une valeur qui dépend de si la condition est vraie ou fausse
c'est comme un if ... else
en beaucoup plus concis
C'est + opti qu'un if else alors ?
nan c'est pareil, c'est juste plus concis
ça prend moins de ligne c'est déjà ça
de manière générale en voyant des conditions tu t'attends à carrément une différence de comportement, donc utiliser autre chose ça permet de mieux s'y retrouver
la différence avec || ou ?? c'est que ces deux autres trucs testent quelque chose de différent, et assignent la valeur à droite si ce test passe
en gros || vérifie que la valeur semble fausse (donc égale à false, 0, null, undefined ou la chaîne vide) tandis que ?? vérifie que la valeur est null ou undefined seulement
les ternaires sont plus flexibles mais plus longues
Ok je note ça, ça peux m'être utile
tiens je te passe des liens :
??: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operatorcond ? ifTrue : ifFalse: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/Conditional_Operator||: je te renvoie juste à cette extrait de la doc
@timid loom question juste
ça s'appelle comment ceci
json.players[compteur]?.playername;
le
?.
c'est du optional chaining
c'est très pratique dans les conditions
tu peux l'utiliser dans plein de cas et c'est globalement pareil que ?? sauf que tu peux l'utiliser de façon plus précise
ta un exemple pour voir
ça raccourcit les conditions typiques du genre if (player && player.name) return player.name.toLowercase()
tu peux juste faire if (player?.name) return player.name.toLowercase()
voire vu qu'on est dans un cas assez pratique pour cet exemple : return player?.name?.toLowercase()
même si la seconde version part du principe que name peut être null
bref
c'est bien pour éviter les conditions à rallonge permettant d'empêcher les typiques cannot access property name of undefined
ouais voila
c'est vraiment pareil que ?? mais tu peux l'utiliser pour chaîner facilement
tu peux même en utiliser plusieurs
bah le truc
c que ?? c'est plus chiant
alors que la imagine
dans ton json
exemple
et en gros la valeur de l'expression finale sera null (je crois) si ça passe pas tous les opérateurs
if(json.name?.team)
ouais par exemple
en mode c'est pratique
pas de check avant a faire
si name = null bah ça fou pas une erreur
ça compte direct comme undefined
ouais, c'est vraiment un truc très pratique de la v14 de node
et globalement ça marche un peu partout sur les navigateurs récents
https://caniuse.com/mdn-javascript_operators_optional_chaining 90% c'est un bon score mine de rien
j'avoue
ouais bah globalement les dernières versions de nodejs sont pas mal mais ça arrive pas à la cheville des mises à jour v13 et v14 de node
flemme ça peut trop changer encore
haha normal c'est pull depuis git
jss
mais ça soule
mdr
y'a des truc
qui mange
pas de types
etc
des bug
etc
après c une version dev
donc logique
ils avaient pas le @next à mettre derrière la version?
jsp du tout
me souviens plus
y'a le @dev
ah ptet ça
bah c'est bien pour se préparer à la suite quoi mais c'est globalement inutilisable
bah si ?
@dire latch c faux
y'a les buttons
les menu
c pratique
maintenant des thread jsp quoi
j'ai pas testé
Ba tu met la v13
la v13 c la dev
Pas une version dév 🤔
nan elle est pas stable
ptn dur haha
les thread c'est ce qui va remplacer les réponses actuelles
c'est un bon ajout en vrai
mais quand il parle de thread
mais c'est sur l'api de discord ça
bah je pense oui
nan tkt je vois c'est quoi
jsuis sur la beta j'ai accès sur mon autre compte
mais en mode
quand j'ai vu thread j'ai pensais a du Java
je me suis dit thread api
MDMRMR
ça aurais bien
C'est quoi au juste ?
oula faire des threads ça aurait été spécial sur du discordjs mdr
frr imagine il boost l'api
il reduis la limiterate
c'est le même système de réponse que slack en gros @dire latch
cépafo
C'est quoi slack? 😅
discord pour les pros en gros
les boutons etc ça existe depuis une éternité sur slack
et ça arrive que mtn sur discord
ouais mais guilded pareil faut connaître
le dev de guilded c'est un dev de discord
qui c'est fait licencié
il a pris les sources de discord
est a crée guilded
Ah slack c'est une appli ?
je pensais que slack lui parlerait davantage
jsp du tout
ouais, à l'instar de microsoft teams par exemple
@timid loom tu t'occupe des validation dev ?
nan
j'aide parfois mais c'est zaros et enzo
ah bah logique en même temps
@timid loom connaissais pas pour le coups
Des codes de quoi ?
ouais enfin tu sais on a autre chose à faire de nos vies que prendre des codes de ce type
je suis fonda d'un serveur a 40k et 200 voc premier fr commu donc bon
les bot dessus sont les miens
et ça veut me payer 400 euro le code
donc je peu pas drop comme ça
je pense que ça ce comprend ?
meme tu capte ?
Ils font quoi tes codes ?
le code c'est comme un morceaux de sois meme
après je comprends perso je te conseille de faire un petit bot qui permet juste de montrer tes compétences et ça passe hein
@timid loom bah j'ai drop un code
Car bon, que tu as 20 membres ou 250k, sa change rien 😂
un truc open source pour soutenir la commu tkt
@dire latch bah en sois
j'ai buzz
avec donc bon
un botCoins
mais comment expliqué
c'est complexe
stuv y'a des video
presentation ?
nan mais si tu drop un truc qui fais juste des calls api on va pas te féliciter non plus hein 
je sais pas j'ai pas vu ce que tu nous a passé
Botcoins c'est facile un peu quoi 🤔
@timid loom c'était un vieux bot ticket relier a un site pour les historique
ouais voilà pas ouf non plus
@dire latch nan mais c pas un bot coins normal mdr
@timid loom je peut envoyé une video de presentation ?
0 pub juste qu'il check je delete après
envoie lui en mp
tin t'as carrément fait une vid de présentation mdrr
Envoi mes mp sont ouvert
pas de ouf nan
tu coco
on est 3 ici donc le peu de temps que je passe à m'intéresser à la commu c'est ici
Lysa ?
euhhhhhhhh
Lysa, Rosa ?
nan je connais un jeu qui s'appelle LISA mais c'est tout
@hazy mirage t'avais pas testé la v13 de discordjs toi ?
non pourquoi ?
ah je sais pas t'en parlais l'autre jour
je sais simplement qu'elle était prévue pour fin juin et qu'elle a été reportée avec toutes les maj de discord qui sont arrivées mi/fin juin
je me demandais comment tu l'avais utilisé en gros
tu prend juste la branche master 
sur la v13 ?
ah
il est spécial
j'ai eu peur mdr
Ya même la v14 @timid loom mdr
ah genre ça te fait une image
je préfère la version de rythm en vrai
c'est simple mais ça permet d'éviter le load de l'image du coup
c un panel c sa ?
ah ils ont changé depuis?
Le panel est bug nan ?
Non @keen narwhal avant yavais pas de panel
il me semblait que ça faisait genre un embed avec la barre de progression là
mais ça fait deja un moment
ah oui mais c connu
mtn y'a un panel
de gestion etc
c grave propre
ah oui ok
Leur panel buggé surtout
haha
Je met une musique, sur le panel, ya que dal
Pas moi
sinon le classique c'est groovy
Je préfère Rythm
groovy >> all
après perso je use plus de bot musique
j'ai mon bot qui gère les musique sur des selfbot
pratique pour écouté de la musique dans plusieur salon
Selfbot 🤔
Pas très bien ça
tu peut pas report
sans preuve et surtout
meme avec des preuves tu pourrais pas
car les report selfbot fonctionne que sur des preuves message
ah bah j'aurais juste link le msg en soi après osef hein je t'avoue
et preuve vocal ne sont pas valide
non mdr
ça aurais pas sauté
mais tkt
je m'en fiche aussi mdrr
Salut, j'ai suivi un tutoriel sur ytb et à un moment, le mec fais ça
Donc je recopie sauf que moi le code a cette couleur la
Je comprends donc que mon ${res.url} n'est pas interprété comme sur le tutoriel, et je ne comprends pas pourquoi
Le tutoriel date de décembre 2020 donc je ne sais pas si il y a eu de changement ces derniers temps 🤷♀️
Il faut mettre des ` et pas des ' si tu veux faire ça
oh
Merci x)
Bon du coup j'ai suivi le tutoriel et fait ça
Donc en gros y'a une image et un texte choisi au hasard dans le fetch
Mais la taille de l'image de fond fait qu'il y à des bordures blanches sur les cotés
alors à la place de 1600 et 1000 j'ai mis 100% et 100vh mais la l'image ne s'affiche plus
picsum.photos c'est un site qui permet d'avoir des images aléatoires de la taille que tu lui demande
si tu veux changer la taille tu dois le faire dans le css ou dans le tag lui même
la taille sur picsum.photos est forcément en pixels
ah mais du coup on peut pas faire en fonction de la taille de l'écran de l'utilisateur
Si
Tu fais en fonction du window.height et windows.width
Informations que tu récupères dynamiquement
Et tu match les résultats
window.height et width dans le fichier js ?
C'est en JS que tu vas gérer ça oui
Tu créer des variables dynamiques qui récupèrent ses informations en direct.
Ensuite tu les déclares pour width et height
Bonjour bonjour, il existe un module pour faire des graphiques pour les bots Discord ?
Ça fait pas les courbes, si ?
Super merci
Je pensais que ça aurait été compliqué à faire mais c'était très simple au final
gg 
je viens de dev une libs pour les connexion discord en vueJs
pour que ça sois plus rapide a faire mdr
c stylax
bravo
bravo 
salut j'ai fait une cmd de kick ```const config = require('../../config.json')
module.exports.run = (client, message, args) => {
if (!message.member.hasPermission('KICK_MEMBERS')) return message.channel.send('Vous n'avez pas la permission d'utiliser cette commande.')
const member = message.mentions.members.first()
const modo = message.author
if (!member) return message.channel.send('Veuillez mentionner le membre à exclure.')
if (member.id === message.guild.ownerID) return message.channel.send('Vous ne pouvez pas exclure le propriétaire du serveur.')
if (message.member.roles.highest.comparePositionTo(member.roles.highest) < 1 && message.author.id !== message.guild.ownerID) return message.channel.send('Vous ne pouvez pas exclure ce membre.')
if (!member.kickable) return message.channel.send('Le bot ne peut pas exclure ce membre.')
const reason = args.slice(1).join(' ') || 'Aucune raison fournie'
member.send("Vous avez été exclu de pour la raison : " + (reason)).catch(() => {
member.guild.channels.cache.get(config.logsbot).send('Je n'ai pas réussi a prévenir l'utilisateur de sa sanction, il a surement fermé ses mp ou bloqué le bot ')
})
member.kick(reason)
}
module.exports.help = {
name: 'ping',
description: 'Expulse un utilisateur du serveur.',
aliases: ['kick'],
usage: '.kick <user> [raison]',
permissions: true,
args: false
}``` mais quand je fais .kick @user raison j'ai rien, il n'est pas kick le bot reznvoie rien et rien dans la conspme
Normal, ta commande s’appelle « Ping » dans ton module.exports.help, et si ton command handler est fait comme je le pense, ça va coincer
Salut, j'essaye d'afficher une sidebar mais ça ne marche pas
Quand j'appuie sur le toggle-button le code javascript est sencé ajouter la class .active a la sidebar, mais il ne le fait pas
je suis con 😂je prends ma base de ma cmd ping que je copie colle
module.exports.run = (client, message, args) => {
if (!message.member.hasPermission('KICK_MEMBERS')) return message.channel.send('Vous n\'avez pas la permission d\'utiliser cette commande.')
const member = message.mentions.members.first()
const modo = message.author
if (!member) return message.channel.send('Veuillez mentionner le membre à exclure.')
if (member.id === message.guild.ownerID) return message.channel.send('Vous ne pouvez pas exclure le propriétaire du serveur.')
if (message.member.roles.highest.comparePositionTo(member.roles.highest) < 1 && message.author.id !== message.guild.ownerID) return message.channel.send('Vous ne pouvez pas exclure ce membre.')
if (!member.kickable) return message.channel.send('Le bot ne peut pas exclure ce membre.')
const reason = args.slice(1).join(' ') || 'Aucune raison fournie'
member.send("Vous avez été exclu de pour la raison : " + (reason)).catch(() => {
member.guild.channels.cache.get(config.logsbot).send('Je n\'ai pas réussi a prévenir l\'utilisateur de sa sanction, il a surement fermé ses mp ou bloqué le bot ')
})
member.kick(reason)
}
module.exports.help = {
name: 'kick',
description: 'Expulse un utilisateur du serveur.',
aliases: ['kick'],
usage: '.kick <user> [raison]',
permissions: true,
args: true
}``` ```Uncaught ReferenceError: channel is not defined```
j'ai cette erreur sur ma commande de kick
Essaie de faire un console.log de message
t'es sûr que c'est sur ta commande de kick?
ui
quelle ligne il te dit là parce que je vois pas
aucune
?
fais le en dehors du debugger
genre node index
regarde le terminal
ok
c'est où que ça plante ?
bah tu lance pas via le terminal?
non en faisant f5
ahh ok
essaie de le lancer via le terminal directement alors
en faisant node index.js (ou peu importe le nom de ton fichier)
mais ça kick pas
perso je pense pas que ça vient de ta commande
ça vient d'autre chose
de quoi
bah je sais pas trop, c'est bizarre que ça te fasse pas d'erreur
ui
tu peux faire un log quelque part dans ta commande pour vérifier qu'elle se lance bien?
ou ça
parce que dans ce cas c'est juste une condition qui passe pas
euh au début par exemple
genre juste avant la verification si le membre a les perms ?
oui par exemple
rassure moi ça te log bien le "connecté"
ui
ok
dans ce cas ouais c'est ptet les perms (mais si tu l'as mis au dessus de la condition ça devrait pas le faire) mais sinon ça serait plus lié à ton handler
je l'envoie ?
si tu veux
prsq il marche bien avec les autres commandes
genre toutes les commandes fonctionnent là?
ouais ok fin du coup toutes les commandes à part le kick
okk bah vas-y envoie on sait jamais
readdirSync(dir).forEach(dirs => {
const commands = readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith('.js'));
for (const file of commands) {
const getFileName = require(`${dir}/${dirs}/${file}`);
client.commands.set(getFileName.help.name, getFileName);
};
});
};
loadCommands();
et mon event message ```client.on('message', message => {
if(message.author.bot || !message.content.startsWith(config.prefix) || message.type !== 'DEFAULT') return;
const args = message.content.slice(config.prefix.length).split(/ + /);
const commandName = args.shift().toLowerCase();
const command = client.commands.get(commandName) || client.commands.find(cmd => cmd.help.aliases && cmd.help.aliases.includes(commandName));
if (!command) return;
if (command.help.permissions && !message.member.hasPermission('BAN_MEMBERS')) return channel.send('Vous n\'avez pas la permission d\'utiliser cette commande.')
if (command.help.args && !args.length) {
let noArgsReply = `Il faut des arguments pour cette commande, ${message.author} ! `;
if (command.help.usage) noArgsReply += `\nVoici comment utiliser la commande: \`${config.prefix}${command.help.name} ${command.help.usage}\``
return message.channel.send(noArgsReply);
}
command.run(client, message, args);
});
et t'es sûr qu'il est bien dans client.commands ?
ok nan j'ai trouvé
en gros là channel il vient de nulle part
c'est message.channel que tu veux mettre
ah
je suis betee
surtout que cette ligne sert à rien
@timid loom j'ai un autre erreur : sur cette ligne : client.commands.set(getFileName.help.name, getFileName); le set est undefined
define le
comment ?
le set ne peut pas être undefined
Montre l'erreur
C'est que c'est pas une collection
t'as déjà défini client.commands en new Collection() ?
ui
il faut que tu le fasse dans le ready par exemple
const commands = new Collection();
ouais ok
client
Oula nan
ah ok
mais tu l'as pas mis sur client
C'est quand il fait une commande qui n'est pas bien définis dans son fichier
set pas get
const client.commands = new Collection(); c'est bien ?
Non tu peux pas faire ça
pas de const
client.commands = new Collection()
t'as plus d'erreur là?
Clique sur [📝](#javascript-typescript message) pour accéder au message
```const config = require('../../config.json')
module.exports.run = (client, message, args) => {
if (!message.member.hasPermission('KICK_MEMBERS')) return message.channel.send('Vous n'avez pas la permission d'utiliser cette commande.')
const member = message.mentions.members.first()
const modo = message.author
if (!member) return message.channel.send('Veuillez mentionner le membre à exclure.')
if (member.id === message.guild.ownerID) return message.channel.send('Vous ne pouvez pas exclure le propriétaire du serveur.')
if (message.member.roles.highest.comparePositionTo(member.roles.highest) < 1 && message.author.id !== message.guild.ownerID) return message.channel.send('Vous ne pouvez pas exclure ce membre.')
if (!member.kickable) return message.channel.send('Le bot ne peut pas exclure ce membre.')
const reason = args.slice(1).join(' ') || 'Aucune raison fournie'
member.send("Vous avez été exclu de pour la raison : " + (reason)).catch(() => {
member.guild.channels.cache.get(config.logsbot).send('Je n'ai pas réussi a prévenir l'utilisateur de sa sanction, il a surement fermé ses mp ou bloqué le bot ')
})
member.kick(reason)
}
module.exports.help = {
name: 'kick',
description: 'Expulse un utilisateur du serveur.',
aliases: ['kick'],
usage: '.kick <user> [raison]',
permissions: true,
args: true
} Uncaught ReferenceError: channel is not defined```
le problème est pas là
nan
et le kick fonctionne toujours pas?
non
t'es sûr que c'est bien enregistré dans le bot? tu peux log client.commands?
elle est vide ta collection là
oui
ui
essaie de l'utiliser dans client.on('ready')
const config = require('./config.json')
const { readdirSync } = require('fs');
const { inflate } = require('zlib');
const client = new Client();
client.commands = new Collection();
console.log(client.commands)
const loadCommands = (dir = './commands/') => {
readdirSync(dir).forEach(dirs => {
const commands = readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith('.js'));
for (const file of commands) {
const getFileName = require(`${dir}/${dirs}/${file}`);
client.commands.set(getFileName.help.name, getFileName);
};
});
};
loadCommands();
client.on('message', message => {
if(message.author.bot || !message.content.startsWith(config.prefix) || message.type !== 'DEFAULT') return;
const args = message.content.slice(config.prefix.length).split(/ + /);
const commandName = args.shift().toLowerCase();
const command = client.commands.get(commandName) || client.commands.find(cmd => cmd.help.aliases && cmd.help.aliases.includes(commandName));
if (!command) return;
if (command.help.args && !args.length) {
let noArgsReply = `Il faut des arguments pour cette commande, ${message.author} ! `;
if (command.help.usage) noArgsReply += `\nVoici comment utiliser la commande: \`${config.prefix}${command.help.name} ${command.help.usage}\``
return message.channel.send(noArgsReply);
}
command.run(client, message, args);
});
client.on('ready', () => {
console.log(`Connecté à ${client.user.tag} !`);
});
client.login(config.token);```
et tu peux nous montrer l'arborescence de tes fichiers aussi?
ok
loadCommands(client)
wtf non
Si
perso je fait pareil
Ba c'est comme ça qu'on fais
ouais ok d'accord
index config.json package.json package-lock.json
commands assets node_modules
(dans commands) moderation utile fun (assets est vide) (node_modules bah ya tt les modules)
(dans moderation) kick.js (dans fun) dice.js (dans utile) ping.js
Essaye de faire la modification que je t'ai donné @keen narwhal
non mais tu dit n'importe quoi
ouais et une fois que t'auras essayé je te dis le vrai truc à faire deux sec
Ba nan
et pour mon handler pour etre honnete il vient de ytb
je connais vraiiiiiment pas en handler
Pour ça que mon bot fonctionne sans soucis 🤔
ah je sais en gros enlève le '/' après commands là
tu sais quand tu fais dir = './commands/'
c'est pas possible d'être borné à ce point
Car tu dis n'importe quoi ?
@dire latch c'est toi qui dit de la merde
Et pourquoi mon bot fonctionne alors si je dis nimp ? 🤔
regarde ce que tu dis en fait
là tu veux readdir sur un client
réfléchis deux secondes
Car tu as pas le même handler ?
Si tu le dis
Heureusement que c'est le bot qui est certifié et pas le dev 
Tu penses savoir ce que j'ai dans mon code donc bon
Tu dois avoir des super pouvoir 🤷♀️
nan mais s'il te plaît je t'en prie lis le code
Va si montre pour rire 🙂

Je viens de relire et à aucun moment ils disent ça, tu es entrain de dire que ton code est a l'identique le même que celui qui a le soucis
Alors que non car tu vois bien que en paramètre de sa fonction il attend une string et non le client
Donc dans ton cas ca marche avec client tant mieux mais c'est pas le sujet du tout, c'est toi qui dit "chez moi ca marche" oui mais y a plusieurs manière de faire les choses, pas une seule
et donc je fais comment ?
et là vous avez pas la même
je suis en train de run un test attends
merci 🙂
t'as dit que quand le code c'est ça ça marche pas c'est bien ça ?
j'ai enlevé le / après commands
je vais re tester j'ai deja oublie 

tu peux rajouter console.log(commands); en dessous de ton const commands là ?
commands is undefined
t'es sûr de toi? genre ici?
autant pour moi
Collection(0) [Map] {}
[ 'kick.js' ]
[ 'ping.js' ]
[ 'dice.js' ]
Connecté à Le bot du Phénix#1134 !
là c ma console
perso ça fonctionne, juste ton log de client.commands tu devrais le faire après la ligne loadCommands()
parce que là tu le mets juste après l'avoir créé donc fatalement il est vide à ce moment là
[ 'kick.js' ]
[ 'ping.js' ]
[ 'dice.js' ]
Collection(3) [Map] {
'kick' => {
run: [Function (anonymous)],
help: {
name: 'kick',
description: 'Expulse un utilisateur du serveur.',
aliases: [Array],
usage: '.kick <user> [raison]',
permissions: true,
args: true
}
},
'ping' => {
run: [Function (anonymous)],
help: {
name: 'ping',
description: 'Renvoie pong',
aliases: [Array],
usage: '.ping',
args: false
}
},
'dice' => {
run: [Function (anonymous)],
help: {
name: 'dice',
description: 'Cette commande permet de lancer 6 dés à la fois',
aliases: [Array],
usage: '.dice',
args: false
}
}
}
Connecté à Le bot du Phénix#1134 !
là c tt ma console
ok on dirait que ça marche bien
donc ta commande s'exécute toujours pas quand tu fais !kick là ?
non
ah si
ça marche quand je fais.kick
mais quand je mets .kick @user la personne n'est pas kick
ah oui pardon je mets juste tt le temps ! pas . perso
ok
alors ça on va voir aussi
on progresse au moins
ok c'est bon je sais pk
au niveau des args
ui
ta regex tu peux enlever un espace après
ici
enlève l'espace que tu as après le +
et j'ai retiré cette ligne du kick.js : if (!member) return message.channel.send('Veuillez mentionner le membre à exclure.') car j'ai déjà mis un trcu qui fait pareil dans l'index
yen a pas ya juste un /
nan mais bien sûr que si y en a un
je l'ai enlevé moi mais je peux te dire qu'il y était avant
ah ok
ici là
ui
le truc avec les / c'est une regex, et ça sert à détecter des patterns dans du texte
ah ok
donc là si tu rajoute un espace il s'attend à ce qu'il y ait au moins deux espaces
voilà bonne chance
comment ça ?
je t'invite à te renseigner sur les collections, les messages, et les regex
bah bonne chance pour ton bot si tu le continues
ah merci 🙂
member.guild.channels.cache.get(config.logsbot).send('Je n\'ai pas réussi a prévenir l\'utilisateur de sa sanction, il a surement fermé ses mp ou bloqué le bot ')
})``` @timid loom tu vas rire mais le send de member.guild.cache.get(config.logsbot).send est undefined 😅
bah pour le coup là l'erreur elle est claire, c'est member.guild.channels.cache.get(config.logsbot) qui est undefined
donc t'as juste à vérifier qu'il est bien défini avant de .send dessus
@timid loom c peut etre que je kick un bot xd
j'vais essayer de kick un dc
ah bah non
car vu qu'il peut pas dm le bot il active le catch
@timid loom je comprends pas pk send est undefined
car le member.guild.channels.cache.get(config.logsbot) est defini
manifestement non
mais comment je pourrais le definir ?
bah t'es sûr qu'il le trouve bien ? au pire tu fais juste une condition où tu vérifies que ça existe bien
c bon j'ai trouve un autre solution
bonsoir les gens js,
je suis dans l'optique de m'initier à un framework js.
Je suis partagé entre angular et react. L'un étant un vrai et l'autre encore qu'un bibliothèque (de ce que j'ai pu en lire).
Voici donc mes questions:
Est il vraiment interressant d apprendre comme premier framework js angular pour son côté fullstack alors qu'il est en perte de vitesse ?
A ce que j'ai compris React est pour le moment que oriente front. Est ce bien le cas ? Si oui, comment je fais pour le completer au niveau du back? Node js ?
merci par avance de vos réponses ^^
React est beaucoup plus coté + il est plus utiliser en prod ^^
Oui quitte à choisir entre les 2 pars sur React il est bcp plus utilise
Et tu trouveras bcp plus de complément de lib associé à react que à angular (comme Storybook etc)
Pour le back si tu veut rester sur du node fait du express.js
+1
super merci à vous deux !
si tu veut des composant react
et vous connaissez des bons cours fr comme anglais
The most popular front-end framework, rebuilt for React.
voila je pense que ça devrais être good
bah après les cours j'en connait pas trop
mais le best pour apprendre react c'est de faire des projets 😄
👀 merci pour tout x)
j'hésiterais pas ^^
apres si tu as mieux dis moi car cest juste que j'en ai entendu parle
bah express c'est good
😄
après en js je vois pas mieux
par contre si tu veut t'amuser je te conseille de faire du Go
😄
ok encore merci x)
^^
Tu vas avoir NestJS et adonis
apres si cest juste dun pt de vue technique je debute pas le dev donc que vaux t il mieux que j'ailles regarder
en vrai pour débuter express vu que c'est "unopinionated" c'est assez difficile de faire un truc correct avec
en tant que framework c'est vraiment complexe
c'est minimaliste ok mais bon avoir un truc plus dirigiste c'est mieux surtout quand on débute et sur un truc de ce type
j'ai de très bons retours sur nest et adonis je connais moins mais c'est mieux que rien
sinon chihiro en framework front t'as aussi vue mais angular commence vraiment à dater sur pas mal de points par rapport à react
ok ok encore merci des infos ^^
Vous me conseillez de commencer par apprendre quoi entre React & Vue ?
commence par les bases si tu les as pas
J'ai les bases du JS, maintenant c'est le framework 😄
ce que tu sens
React ou Vue en fonction de tes besoins
Après bon faut un peu plus que les bases car sinon tu vas juste bloquer mais si t’es bien calé ça devrait le faire
Perso je privilégie Angular, j'aime bien son fonctionnement
Ca revient au même, mais je trouve Angular plus intéressant
Hello quelqu'un sait cmt fix ça svp dès fois ça mentionne la personne et d'autres fois ça met leur id discord
tu peux pas, je crois
Ces personnes n'ont pas quitté le serveur ?
Ca dépend aussi de ta manière de faire pour les mentionner.
Salut ! j'essaye de faire une sidebar mais je n'y arrive pas, en faite je sais pas comment structurer mon code, ma sidebar est caché à -300px (donc hors du champ de vision) et lorsqu'e l'on clique sur un bouton le style de la sidebar est sencé se mettre à 0px, sauf que je sais absolument pas comment faire, j'ai fais ça mais ça ne marche pas
Yop, tu peux faire d'une manière différente, pour la cacher, mais ce n'est pas ton problème. Tu peux modifier le css via jquery si je ne dis pas de bêtise
sinon on peut faire avec function mais ça ne marche po
Ou travailler avec les classes
Oui justement les classes
Ou alors,
ça viens de discord ça c'est juste tu les a pas dans ton cache et donc tu vois pas leurs nom, t'y peux rien
Tu peux normalement via le DOM, get l'élément et accéder à sa propriété " style "
J'ai fais ça mais ça ne marche pas quand meme
Si, il peut resolve l'utilisateur
ça change rien c'est côté client.........................
@keen narwhal
Tu me redis.
c'est ce que j'ai fais
Non.
Tu as travaillé avec les classes
Je te parle d'accéder directement au style de l'élément
A moins que je me trompe
Nope.
Tout d'abord, pour être sur de ce que dis, console.log l'élément get suivi de .style
get ?
Et pour modifier un style, c'est style.<propriété> = ""
Pas besoin de toggle ou quoi que ce soit puisque toggle n'a rien à voir
y'a pas un toggle à mettre
oui mais si je clique une deuxième fois la sidebar va pas se retirer nn ?
Tu fais une condition ternaire
jsp ce que c'est x)
Dans tous les cas tu devras vérifier l'état de ton élément
Une condition classique alors
donc classList.style<... ?
Non
document.getElementById("id").style.<prop> = ""
Encore une fois, ce n'est pas la classe mais l'élément
à la limite si tu veux vraiment être sur d'avoir le nom affiché chez tout le monde: tu peux écrire:
"Bienvenue sur le Discord, @unborn knot (Space V#3084)"
dans un tutoriel, on faisait avec class
Que ça soit class ou élément ça revient au même
Ce sont 2 manières différentes de faire.
Oui, tu actives une classe sur un élément qui possède déjà cette propriété
Lequel sera pris en compte ?
Essaye left: 0 !important
non, mon code javascript ajoute la class ".active"
dans un let ?
Non plus, pas dans une variable
.
Au lieu de sideBar.classList machin
Comme ça ?
je met !important avec ?
oui
Code entier
javascript ?
Oui fin, ta constante sideBar et ta fonction
On va faire un test
function show() { console.log(1) }
Enlève ce qu'il y a dedans
Déjà pour voir si c'est pris en compte
Déjà, ça c'est un problème
bon je viens de me rendre compte du pb
C'est ?
j'ai trop honte mdr j'ai juste oublié de mettre la balise script à mon code html
2eme fois que ça m'arrive
Je te le promets
Bonne soirée à toi dans ce cas
Normal, il n'a pas de jambes
x)
Plus sérieusement
Le classList était une meilleure solution.
Ton élément n'a pas de classe
en sois pourquoi style.toggle ... est pas plus simple ?
Ce que je te propose c'est de créer une classe à cet élément et de travailler avec la classe
ça éviterait de faire un code CSS ultra long
Plutôt que l'ID
Angular c'est finito non ?
Non c'est débuto
@keen narwhal J'te fais un code rapide
Ok ?
ok
Je suis d'humeur ce soir
hehe
Je vais utiliser une condition ternaire
c'est quoi ?
Tu iras regarder sur MDN ce que c'est, mais tu vas vite comprendre, d'acc ?
MTN c'est plus du React Vue Svelte
J'ai commencer lundi, tout ce que je sais faire c'est changer la couleur d'une page web en appuyand sur un bouton donc bon x)
appuyant
Bon ok je vais pas te bourrer le crâne.
non t'en fais pas, tant qu'il y a des explications avec
function show() {
if (sideBar.style.left === "-300 px") {
sideBar.style.left = "0 !important";
} else {
sideBar.style.left = "-300px !important";
}
}```
ça sert à quoi de faire if 0 px else 0 px svp
attents mais c'est pas plus simple de faire un toggle ???
oui oui x)
de toggle une class oui complètement
Si tu toggle, faut bien remove
Bah il toggle
Tu devras faire une if else
C'est vrai ?
Donc c’est le principe
il va le remove tout seul
t’as juste à toggle ta class et il va gérer tout seul, donc pas besoin de condition
Hum
c'est la première chose que j'ai appris

Vous avez apprit en combien de temps js vous ?
20 minutes a peu près
Je l'ai toujours pas appris perso


le temps d’aller au chiotte
😭
C’est une question trop vaste car tu es toujours en apprentissage
que tu sois dans le métier ou non tu apprends des choses tous les jours quasi
oui enfin vous apprenez depuis combien de temps*
.
Euh je sais pas trop la comme ça
Mais euh j’ai commencé le js quand jquery c’était à la mode woula
Y'a belle lurette donc
c'est quoi jquery
Une lib de JS

Ca me fait rugir comme les Lion
moi je commence à peine
y'a des choses dont je n'arrive pas, 30 minutes à essayer de corriger un code qui fonctionne pas, je viens ici et je me rends compte que lorsque quelqu'un essaye de m'aider que j'avais en fait mal orthographier un truc ou j'ai oublier une ligne de code
Normal au début t’inquiete
bon et sinon mon pb au dessus est réglé, je continue mon épopée périlleuse




```const config = require('../../config.json')
