#javascript-typescript

1 messages · Page 87 of 1

ashen rapids
#

J'imagine que c'pour ça

hybrid berry
#

Le qr code te renvoies surement un identifiant

#

ou je ne sais quoi

#

qui ensuite avec une API récupère l'état de ta vaccination

#

donc si tu fais du "reverse engineering" sur l'appli

#

tu peux surement voir comment les données sont traités avec l'API

inner escarp
#

J'ai pas lu toute la conversation et le problème mais une chose est sûre : Ce n'est pas parce que tu peut acceder en lecture à un bdd que tu peut de 1) en lire tout le contenu et de 2) alterer ton contenu ou celui d'un autre

#

Par ailleurs vu que vous parlez de code QR ma question est la suivante : si il n'y a aucune bdd ou api derrière, comment pouvez-vous être sûr que le code qr que l'on vous présente n'est pas une contrefaçon ?

#

Parce que si le code qr se résume à : Nom + prénom, date de vaccination et nom du vaccin

#

Vous inquiétez pas qu'il y aura des petits margoulins qui vont vouloir écrire leur propre qr code pour ***** le système

hybrid berry
#

ptdr

#

nan mais c'est pas une api qui permet d'edit les pass

#

juste pour vérifier

#

elle est surement connecté au services du gouvernement

#

et te renvoies des donnés très restreints

inner escarp
#

Je me doute et de toute façon je ne suis pas français donc je n'ai aucun moyen / raison de me soucier de ce système

#

Surtout qu'ici on parle du gouvernement et pas d'une petite entreprise qui se soucie peu de sa cybersécurité donc vous inquiètez pas que c'est calculé ^^

keen narwhal
#

salut

#

vous avez la doc pour les buton de discord ?

#

pour faire une action genre crée un channel quand on clique sur le bouton

sharp grail
dire latch
sharp grail
#

tu es avec discordjs v13 ?

dire latch
#

Ya ça

sharp grail
#

si oui, va juste sur la doc de discord js, ou le guide

keen narwhal
dire latch
#

Dr @keen narwhal

sharp grail
#

useless

#

mdr

#

si c'est en v12 tu peux trouver un package comme discord-buttons

keen narwhal
#

Pas compris

ashen rapids
#

Tu peux pas utiliser les boutons si tu es pas en v13

keen narwhal
#

si.

#

on peux

#

je l'ai déjà fait avec mon ancien bot donc

ashen rapids
#

En utilisant l'api directement ?

#

Mais pourquoi tu dev en v12 ?

#

Surtout Discord va forcer à utiliser les slash command maintenant 😦

keen narwhal
#

Car j'ai peur de niquer mon bot en le passant en v13

#

avec toute les modif

ashen rapids
#

Si tu le fais pas maintenant, tu devras forcément l'update plus tard

keen narwhal
#

oui mais je suis pas prés pour le momement

#

moment*

ashen rapids
#

Tu vas vite t'emêler les pinceaux si tu restes en V12 et que tu essaies d'utiliser des nouvelles features de Discord comme les buttons

sharp grail
#

car sinon juste avec discord js v12.5.1 pas possible

sharp grail
keen narwhal
#

pas possible ;-;

keen narwhal
sharp grail
#

dis moi

#

t'as pas installé de packages en plus par hasard ?

#

pure hasard hein

keen narwhal
#

le texte c'est pour le test

sharp grail
#

ça serait possible de voir le code

keen narwhal
keen narwhal
sharp grail
dire latch
#

Les boutons, sa fonctionne en v12 @sharp grail

ashen rapids
#

Le package utilise l'API directement donc normal

slim anvil
sharp grail
#

avec un package supplémentaire c'est sur

dire latch
#

Non sans package

sharp grail
#

sinon discordjs v12 ne propose pas d'interagir avec les buttons

dire latch
#

Avec l'api de discord

ashen rapids
#

Oui bien sûr mais dans ce cas là tu peux même les utiliser en V11 avec l'API haha

sharp grail
#

logique, mais du coup, tu gères l'api comme ça ? le code doit être plus complexe

keen narwhal
sharp grail
keen narwhal
#

oui

slim anvil
#

C’est pas discordjs v12

keen narwhal
#

ben si

dire latch
#

Ba avec le code que discord propose on peut

keen narwhal
#

je suis en discord v12

sharp grail
#

...

keen narwhal
#

et sa fonctionne

slim anvil
ashen rapids
#

Je sais pas dans quoi tu t'embarques @keen narwhal mais bon courage 😂

keen narwhal
#

donc sa fonctionne :-:

sharp grail
#

c'est pas juste discord js v12

keen narwhal
#

j'avais pas compris

sharp grail
#

bah voilà x)

keen narwhal
#

x)

#

désoler

slim anvil
#

faut pas confondre discord et discordjs surtout

sharp grail
#

pas de soucis x)

keen narwhal
#

mtn je voudrais crée un channel avec le bouton mais je cherche une doc qui explique sa je trouve pas

sharp grail
sharp grail
keen narwhal
#

c'est sur XD

#

vous pouvez m'avancer sur le sujet ?

#

pour la crétion d'un salon en cliquant sur un bouton

#

création

ashen rapids
slim anvil
#

Regarde la doc

dire latch
#

👥DISCORD 🡆 https://discord.gg/gjbXnt5NxK

Lien de l'api 🡆 https://discord.com/api/v8/interactions/${interaction.id}/${interaction.token}/callback

🔥 Merci à ceux qui mettent le like

●▬▬▬▬▬▬▬▬▬●

✔️Abonne-toi gratuitement en cliquant ici ➔https://www.youtube.com/channel/UCmH1td7f73IEyYNNg5XDT9g?
🔔Active la cloche des notifications pour recevoi...

▶ Play video
slim anvil
#

T’as cet exemple là

#

c’est assez compréhensible

keen narwhal
#

okay merci les bgs 🙂

dire latch
#

On peut @slim anvil look ma vidéo

slim anvil
#

On peut quoi

dire latch
#

Ba les boutons en v12 sans package

slim anvil
#

oui mais évidemment je dis pas le contraire

#

Mais eux non plus

#

Mais du coup rien à voir avec discordjs 12

#

Tu passes juste par l’API

dire latch
#

Ok

slim anvil
#

Mais du coup ça reste un peu con d’aller taper sur l’api directement et en parallèle utiliser une lib qui le fait aussi

dire latch
#

🤷‍♀️

#

Après c'est mieux quand tu es tjr en v12 après

slim anvil
#

Oui c’est une solution de replis, après tant qu’à faire autant essayer de migrer petit à petit en v13

dire latch
#

Ouais mais flemme mdr

ashen rapids
#

Flemme mais ça vient demander de l'aide toutes les 2 minutes ici 😦

dire latch
#

J'ai demandé de l'aide ? Non donc bon, t'es remarque, tu peut te les gardés

#

Puis, c'est un salon pour s'entraider donc normal que sa demande de l'aide

white sedge
#

An error occurred while running the command: SyntaxError: Unexpected token o in JSON at position 1
You shouldn't ever receive an error like this.

async run(nbr_com) {
        nbr_util_calcul = (nbr_util_base + 1);
        nbr_com.send(JSON.parse({nbr_util : nbr_util_calcul}));

    }

Discord me renvoit une erreur depuis que g implanté ce bout de code qui devrait rajouter +1 dans nbr_util_calcul puis l'envoyer dans mon fichier json que voila (pour la variable help)

#

ou

#
{
    "hello":
    {
        "nbr_util":0    
    },
    "help": 
    {
        "nbr_util":0
    },
    "question": 
    {
        "nbr_util":0
    },
    "reply":
    {
        "nbr_util":0
    },
    "create-easteregg":
    {
        "nbr_util":0
    },
    "ban":
    {
        "nbr_util":0
    },
    "kick":
    {
        "nbr_util":0
    },
    "notes_version":
    {
        "nbr_util":0
    },
    "stats":
    {
        "nbr_util":0
    },
    "prochainemaj":
    {
        "nbr_util":0
    },
    "resume_maj":
    {
        "nbr_util":0
    },
    "logger":
    {
        "nbr_util":0
    }


}
#

je ne comprends pas trop trop json g beaucoup de mal avec cet outil

#

je doit mettre strigify au lieu de parse

timid loom
#

ui

pale void
timid loom
#

De la même manière qu'on peut vérifier la validité des billets, on peut vérifier la validité d'un code QR. Je serais incapable de vous dire comment ils le font mais bon vu la taille du code ils ont tous les moyens d'authentifier les codes de façon sûre. Évidemment comme toujours c'est falsifiable mais ça reste techniquement difficile à faire correctement.

#

Avec une encryption des données par clé prédéfinie déjà il est possible de vérifier facilement les données.
Ça fonctionne sur la même base que les signatures gpg à mon avis

pale void
dire latch
#

Pour l'absence de bdd

slim anvil
#

L’absence de bdd reste même logique

#

D’où le fait qu’il y ai autant de faux pass’sanitaire

#

Ça signifie pas besoin d’être renseigné via un dossier ou autre, tu peux juste créer de la fausse data

pale void
inner escarp
#

Et ça aussi tenderait à le prouver

slim anvil
#

bah en vrai première chose à faire pour tester, c'est d'utiliser une app pour lire les pass sanitaire en ce foutant en mode avion et puis on verra bien si on a un retour ou non

#

🤔

inner escarp
#

Oulah ça part en reverse engineering j'aime ça 😄

pale void
slim anvil
#

je ne te répondai pas forcément à toi, mais en général à la conversation du si ca passe par une API qui communique avec une base de données ou non

#

si ils veulent tester suffit qu'ils se mettent en hors ligne ou avion et ils verront bien

opal harness
#

Yo,
Comment je pourrais faire pour créer un channel textuel qui soit que accessible à "reaction.message.guild.id" et à deux role "861671951646982154" et "882561952424026112"

pale void
#

Hey,
Avec quelle librairie ?

queen ocean
pale void
#

Ui, sûrement, mais ça pourrait en être une autre

white sedge
#
nbr_util_calcul = (nbr_util_base + 1);
        JSON.stringify({nbr_util : nbr_util_calcul});

ce bout de code que j'ai mis dans une commande a pour but de rajouter +1 dans help en json mais rien ne ce passe pouvez vous m'aider
Le JSON

{
    "hello":
    {
        "nbr_util":1    
    },
    "help": 
    {
        "nbr_util":1  ICI LE PROGRAMME DOIT  ENVOYER LE NOMBRE QUE LE PROGRAMME A CALCULÉ DONC 2
    },
    "question": 
    {
        "nbr_util":1
    },
    "reply":
    {
        "nbr_util":1
    },
    "create-easteregg":
    {
        "nbr_util":1
    },
    "ban":
    {
        "nbr_util":1
    },
    "kick":
    {
        "nbr_util":1
    },
    "notes_version":
    {
        "nbr_util":1
    },
    "stats":
    {
        "nbr_util":1
    },
    "prochainemaj":
    {
        "nbr_util":1
    },
    "resume_maj":
    {
        "nbr_util":1
    },
    "logger":
    {
        "nbr_util":1
    }


}
pale void
#

@white sedge normal que rien ne se passe, tu ne réécris pas ton fichier JSON 😕

white sedge
#

ah euh

#

comment on fait alors
car meme en faisant des recherche g rien trouvé

#

pour reecrire dans json

ashen rapids
white sedge
#

ok merci

ashen rapids
#

Du coup ça m'a donné envie de me remettre sur mon application React Native !

Mais ça a l'air full bugué avec les nouvelles versions, Babel, React Vector icons, ... Avalanche de problèmes

white sedge
#

ah

white sedge
#

Depuis que j'ai mis a jour mon code grâce a @ashen rapids Merci à lui

 nbr_util_calcul = nbr_util_base + 1
        const help ={
            help:{
                nbr_util: nbr_util_calcul
            }
        }
        const data2 = JSON.stringify(help);
        fs.writeFile('nbr_util_com.json', data2,  (err) => {
            if (err) {
                throw err;
            }
            console.log("DB mise à jour.");
        });
        msg.say(nbr_util_calcul)
    }```
Le programme renvois toujours le nombre 11 en chaîne de caractère
#

j'ai fais plusieurs test qui donnent le meme resultat

ashen rapids
#

Quel est le soucis ? J'ai pas compris ?

inner escarp
#

Bah au pire tu fais un Number.parse() avant de réutiliser le nombre

white sedge
#

enfaite ça doit rajouter 1 a chaque fois que la commande est utilisée

#

mmh je vais test

ashen rapids
#

Oue, comme a dit Jeydolen, je pense que tu rajoutes 1 sur du string à chaque fois

white sedge
#

comme ça ? @inner escarp

Number.parseInt(nbr_util_base);
        nbr_util_calcul = nbr_util_base + 1
        const help ={
            help:{
                nbr_util: nbr_util_calcul
            }
        }
        const data2 = JSON.stringify(help);
        fs.writeFile('nbr_util_com.json', data2,  (err) => {
            if (err) {
                throw err;
            }
            console.log("JSON data is saved.");
            console.log(type(8))
        });
        msg.say(nbr_util_calcul)
    }
inner escarp
#

réecris ton nbr_util_base au tout début

#

Donc comme tu as fait sauf que :

#

tu change Number.parseInt(nbr_util_base);

#

par nbr_util_base = Number.parseInt(nbr_util_base);

white sedge
#

okay je vais test et je te dis ça

#

@inner escarp la technique marche mais que pour une seule fois

inner escarp
#

bizzare

#

On peut pas savoir grand chose par rapport à l'extrait de code que tu as envoyé pour le coup

#

Ce que tu peut essayer à la limite c'est de faire : nbr_util_base = Number.parseInt(nbr_util_base)++;
et de remplace tous les nbr_util_calcult par nbr_util_base

keen narwhal
#

Bonjour, je créer un bot discord mais quand je lance mon bot ça met :
require() of ES modules is not supported.

opal harness
#

Yo,
Pourquoi il me fait une error quand je fais ça :
message.author.roles.add('876084656485855232')

keen narwhal
#

Genre c'est un index normal

inner escarp
#

Remplace les require par des import

#

ou alors lance le via node js vu que c'est censé être un bot discord

inner escarp
keen narwhal
inner escarp
#

Ah peut être, je n'ai jamais utilisé ça

keen narwhal
#

Mais je sais même pas ce que c'est le module ES

inner escarp
#

Tu as du faire qqch du genre module.exports ....

keen narwhal
#

Non du tout

#

Ah c'est bon j'ai relancé ça marche

#

Bon temps mieux

dire latch
keen narwhal
#

Ah non j'ai rien dis

opal harness
#

C pour ça message.author

inner escarp
#

Tu as défini ton projet en tant que module

#

enleve le type : 'module'

dire latch
#

Tu l'as start comment ton .js ? @keen narwhal

inner escarp
#

pm2 il a dit

dire latch
#

Nan, mais comment

#

Pas avec quoi

#
let membre = message.guild.member(message.author);
membre.roles.add('876084656485855232');

Essaye ça @opal harness

inner escarp
#

Oups on parle pas de la même chose x)

dire latch
#

En gros

#

Avec pm2

#

Il faut aller dans le dossier puis faire pm2 start fichier.js

#

Et non faire pm2 start repertoire/fichier.js

inner escarp
#

Nan mais c'est pas ça le prob

dire latch
#

Sa peut venir de ça

inner escarp
#

Il a juste defini son projet en tant que module et par conséquent il doit utiliser des import

#

C'est tout

#

Il suffit de lire l'erreur de la console

surreal briar
opal harness
#

et au let du dessus que tu viens me donner ?

dire latch
#

A la place du .add, c'est .remove @opal harness

opal harness
#

Ok

keen narwhal
#

Toujours la même erreur

5|Manager  | Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/[DISCORD_BOT]/[MANAGER]/node_modules/node-fetch/src/index.js
5|Manager  | require() of ES modules is not supported.
5|Manager  | require() of /home/[DISCORD_BOT]/[MANAGER]/node_modules/node-fetch/src/index.js from /home/[DISCORD_BOT]/[MANAGER]/index.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
5|Manager  | Instead rename /home/[DISCORD_BOT]/[MANAGER]/node_modules/node-fetch/src/index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from /home/[DISCORD_BOT]/[MANAGER]/node_modules/node-fetch/package.json.
5|Manager  |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1089:13)
5|Manager  |     at Module.load (internal/modules/cjs/loader.js:937:32)
5|Manager  |     at Function.Module._load (internal/modules/cjs/loader.js:778:12)
5|Manager  |     at Module.require (internal/modules/cjs/loader.js:961:19)
5|Manager  |     at Module.Hook._require.Module.require (/usr/lib/node_modules/pm2/node_modules/require-in-the-middle/index.js:80:39)
5|Manager  |     at require (internal/modules/cjs/helpers.js:92:18)
5|Manager  |     at Object.<anonymous> (/home/[DISCORD_BOT]/[MANAGER]/index.js:5:15)
5|Manager  |     at Module._compile (internal/modules/cjs/loader.js:1072:14)
5|Manager  |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
5|Manager  |     at Module.load (internal/modules/cjs/loader.js:937:32) {
5|Manager  |   code: 'ERR_REQUIRE_ESM'

inner escarp
#

Bah tu as un problème alors parce que l'erreur vient toujours du même problème

#

Donc soit tu supprime le type : "module" dans le package.json comme dit dans l'erreur, ou alors tu change ta syntaxe require() par des import

inner escarp
# dire latch Et ce que j'ai dis ?

Ta solution est peut etre la bonne mais en général quand on cherche une solution à un problème on se base en premier sur l'erreur :/

dire latch
#

J'avais déjà eu une erreur en faisant ça, donc c'est peut être cet erreur qu'il a 🤷‍♀️

inner escarp
#

Peut etre qui sait ^^

keen narwhal
dire latch
#

?? @keen narwhal

#

Tu l'as start comment ton .js sinon ? @keen narwhal

keen narwhal
#

Comment ça ?

#

Avec node genre

dire latch
#

Ba tu l'as lancé comment ?

#

Tu as tapé quoi dans ta console pour le lancer

keen narwhal
#

node index.js

dire latch
#

Tu as dis que tu utilisais pm2 🤔

#

Jcomprends pas mdrr

keen narwhal
#

Non mais j'ai essayer avec les deux

inner escarp
#

Tu peut transmettre ton package.json ?

keen narwhal
#

Oui en privée ?

inner escarp
#

Il y a quelque chose de confidentiel dans ton package.json Thonk ?

dire latch
#

Tu peut l'envoyer ici

#

Ya rien de secret

keen narwhal
#

Oui mon adresse

#
{
  "name": "btrp-manager",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

dire latch
#

Ton adresse sur ton package.json ?

#

Il y a que ça sur ton package.json ? @keen narwhal

keen narwhal
#

Joke

dire latch
#

Ba voilà pourquoi sa fonctionne pas

#

Faut installé les modules

inner escarp
#

Il y a déjà des problèmes oui

dire latch
#

Supprime ton package.json

white sedge
#

@inner escarp ÇA MARCHE !
j'ai dus faire ça js nbr_util_base = Number.parseInt(nbr_util_base); nbr_util_base ++;
sinon ça me donnais une erreur

dire latch
#

Tu fais npm init -y

dire latch
#

Puis, tu installes les modules npm i discord.js ect

#

@keen narwhal

inner escarp
#

C'est bizzare quand même que tu ai cette erreur vu qu'il n'y a aucun type ni rien

sharp grail
dire latch
keen narwhal
#

Attendez

dire latch
#

En gros, sa laisse le fichier par défaut

sharp grail
#

ah ok, mais la partie dependencies ne s'ajoute pas toute seule si y en a pas ?

keen narwhal
#

Je crois que ça va marcher

dire latch
#

Ba tu installes pas tes modules en créant ton package.json @sharp grail mdr

sharp grail
#

Oui je sais, mais bon c'était ptet possible que le fichier s'update auto

dire latch
#

Pas si tu le créer

inner escarp
dire latch
#

@sharp grail sa te met ceci

keen narwhal
#

Ca marche !

#

Merci à tous

inner escarp
#

np

dire latch
sharp grail
dire latch
#

🙂

sharp grail
#

dans ce cas pourquoi ne pas juste avoir modifier le fichier package.json ?

dire latch
#

Car c'est plus rapide de le supprimer et de le recréer auto ?

sharp grail
#

pas forcément, dans ce cas c'était rajouter une ligne

dire latch
#

A part si tu connais tout ce qu'il faut mettre dedans, va si 🤷‍♀️

sharp grail
#

pas forcément le créer manuellement mais pour une ligne 🤔 bref

dire latch
#

Ba justement, si tu connais ce qu'il faut mettre dedans, good luck à toi hein

sharp grail
#

bah là c'était juste le truc basique

#

je te parle pas du package-lock, mais juste du package avec les infos basiques

#

donc bon

dire latch
#

Ba tu connais par coeur ce que contient ton package.json ?

sharp grail
dire latch
#

-__-

white sedge
#

comment on fait pour ecrire dans un json sans tout effacer ?

ashen rapids
#

Tu read le JSON dans ton fichier

#

Tu edit

#

Et tu write

white sedge
#

comme ça ? fs.write('./json/nbr_util_com.json', data2, (err) => {

#

@ashen rapids

#

mais ça me met cette erreur
@i, An error occurred while running the command: TypeError: The "fd" argument must be of type number. Received type string ('./json/nbr_util_com.json...)
You shouldn't ever receive an error like this.
Please contact Nom d’utilisateur#9999.

ashen rapids
#

Arrêtez de vous prendre la tête 😢

#

Vous avez le sang chaud des fois 😂

sharp grail
#

barf x)

ashen rapids
#

Je crois pas que ça vienne de ton fs.write

white sedge
#

ah

#

je donne mon code

dire latch
#

Yes

white sedge
dire latch
#

Dommage que je fais pas du json 😦 Je t'aurai aidé

white sedge
#

pas grave

ashen rapids
#

T'as pas une erreur dans la console directement ?

#

Je comprends pas pourquoi il demande un fd en number

white sedge
#

nan rien dans la console

dire latch
#

const resume = require('.//..//../json/notes_de_version.json'); sa fonctionne en mettant // ?

ashen rapids
#

T'es sûr que c'pas ta gestion d'erreur qui part un peu n'importe comment ?

white sedge
#

je pense pas

ashen rapids
#

Ou alors à un endroit tu try / catch

#

Et dans ton catch tu print pas l'erreur

#

Comment t'arrive à ça => @i, An error occurred while running the command

#

Dans ton code ?

#

C'bien un message que t'affiche à l'user directement sur Discord ?

spring dock
ashen rapids
#

En effet, j'ai mélangé les deux, je comprenais pas KappaRetard

white sedge
spring dock
#

bah ta d'autres choses à faire pour ça, moi je te donnais juste la raison de ton erreur

@i, An error occurred while running the command: TypeError: The "fd" argument must be of type number.

white sedge
#

Ok

opal harness
#

Pourquoi quand je mentionne un role via son id

send(`@foggy idol`)

Il me renvoie : @foggy idol

dire latch
#

Car c'est & et non ! @opal harness

bold sparrow
#

Pourquoi break après default ?

delicate yew
#

Salut

#

j'aurai besoin d'aide svp

queen ocean
delicate yew
# queen ocean ??

Enfaite j'essaye de faire une commande sauf que je ne sais pas trop comment la faire

#

@queen oceanPeut tu aller en voc comme ça je t'explique ?

queen ocean
#

Pas du tout la

delicate yew
#

je peux t'envoyer mon code

#

pour que tu puisses comprendre ?

#

ici

queen ocean
#

Explique ton problème complètement et une personne dispo te répondra 😉

delicate yew
#

Ah bah enfaite j'essaye de faire une commande shifumi et le truc c'est que je veux que le bot envoie en dm au deux personne qui joue un message et collecte les message, mais qu'il attende que les 2 autres ont choisis (pierre feuille ou ciseaux)

#

et qu'après ça défini un vainqueur en fonction de leurs choix

#

comme un shifumi

#
const Discord = require("discord.js");
const { PREFIX } = require("../config.js");
const message = require("../events/message.js");
const db = require("quick.db");
module.exports.run = async (client, message, args) => {

const joueur1 = message.author

const joueur2 = message.mentions.members.first() 

const argent = args[1]


if(!joueur2){
    message.channel.send(`Veuillez mentionner une personne avec qui jouer !`)
} else {
        if(joueur2.id === joueur1.id) {
            message.channel.send(`Vous ne pouvez pas jouer contre vous-même !`)
        }  else {
            if(!argent){
                message.channel.send(`Veuillez mettre le nombre d'argent à parier !`)
            } else {
                if(joueur2 || argent){
                    joueur2.send(`Choisis entre pierre feuille ou ciseaux !`)
                    joueur1.send(`Choisis entre pierre feuille ou ciseaux !`)

                }  
               }
              }
            }
           }


module.exports.help = {
    name: 'shifumi',
    }; ```
ashen rapids
#

Commence déjà par indenter ton code, tu t'y retrouveras mieux !

ashen rapids
#

Je t'expliquerai pas mieux que Wikipedia pour ça 😏

delicate yew
#

Ahhh

#

Ok ok je fais ça

ashen rapids
#

Il faut que tu stockes tes parties quelque part dans code.
Ca peut être une Collection qui liste les games qui sont en cours. Dans chaque game, tu as toutes les infos dont tu as besoin, soit l'ID des joueurs, la state, etc ..

delicate yew
#

nan je veux pas de stats

#

enfaite si tu préfère

outer raven
#

ctrl + k +f sur vs code

ashen rapids
#

Des states

outer raven
#

pour l'indentation auto

ashen rapids
#

Pas des stats

#

Un état quoi

#

Stocker l'état de ta game, genre c'est à qui le tour

delicate yew
#

Ahh oui

outer raven
delicate yew
#

@ashen rapidsen faite ce que j'aimerai

#

c'est pour la partie économie du bot

#

et en gros si on fait une partie donc +shifumi @ashen rapids 10

#

là j'ai parié 10 et le perdant perd 10

delicate yew
ashen rapids
delicate yew
#

mais le truc c'est que je sais pas du tout comment faire

#

tu n'aurai pas un indice avec quoi faire ça ?

ashen rapids
#

Je t'ai donné une manière de faire déjà

sharp grail
ashen rapids
#

C'est une manière de faire

#

Tu souhaites que ça se fasse en 1 round ou plusieurs ?

delicate yew
#

et le perdant perd la somme misé

ashen rapids
#

Ok donc effectivement, ya plus simple

delicate yew
#

enfin avant j'aimerai que le joueur mentionné accepte l'invitation au jeu mais ça je pense savoir faire

delicate yew
ashen rapids
#

Dans ce cas, une fois la commande effectuée :

  1. Tu check si les utilisateurs ont bien la monnaie pour éviter d'être dans le négatif en cas de défaite
  2. Tu lances la partie, en envoyant un message à chacun. Vérifie bien si ses MP sont ouverts ou non, sinon ça ne fonctionnera pas ...
  3. Tu stockes les réponses de chacun dans une Collection (par exemple)
  4. A chaque nouvelle réponse, tu check si la réponse de l'autre joueur a déjà été donnée. Si c'est le cas, tu réalises le pierre feuille ciseaux, tu donnes le score et tout ce que t'as besoin de faire
delicate yew
#

"Vérifie bien si ses MP sont ouverts ou non, sinon ça ne fonctionnera pas ..."comment on vérifie ça ?

#

"Tu stockes les réponses de chacun dans une Collection (par exemple)
4) A chaque nouvelle réponse, tu check si la réponse de l'autre joueur a déjà été donnée." c'est ça que je vois pas comment faire

ashen rapids
#

De cette manière, si t'as le 1er joueur qui dit ciseau aujourd'hui et l'autre qui dit pierre dans 3 jours, ça fonctionnera toujours (à moins que ton bot crash, dans quel cas, il faudrait stocker tes états dans une base de données)

delicate yew
#

et arriverai a faire

delicate yew
ashen rapids
ashen rapids
#

Dans ton catch, tu check l'erreur
Si ton bot arrive pas à envoyer un DM, tu pourras le gérer dans catch

ashen rapids
delicate yew
#

mercii beaucoup

#

et du coup

ashen rapids
#

Vraiment rapidement sans réfléchir plus que ça :

{
  player1: userId1,
  choicePlayer1: undefined,
  player2: userId2,
  choicePlayer2: "pierre"
}
#

Ca peut te donner une idée

#

Ou alors !

#

Je sais pas ce que ça vaut, j'ai jamais vraiment utilisé ça

delicate yew
#

@ashen rapids

delicate yew
ashen rapids
#

Pas besoin de me ping partout, un reply suffit haha

#

Je t'ai envoyé le lien du guide

delicate yew
#

ahhh désolé

ashen rapids
#

Qui explique le fonctionnement des collectors

sharp grail
#

je m'incruste juste, y a deux choix, await message ou createmessagecollector, l'un fonctionne avec les promesses et l'autre avec des events, donc tu peux utiliser ça facilement la doc est détaillé à ce sujet tu as des exemples avec 👀

ashen rapids
#

T'auras sûrement moins de code à faire avec les collectors, mais comme je te l'ai dit, j'ai jamais eu l'occasion d'utiliser ça encore

delicate yew
#

je vais essayer

ashen rapids
#

Mais venant de DiscordJS, ça devrait très bien fonctionner haha

delicate yew
#

avant d'executer le reste ?

delicate yew
ashen rapids
#

await permet d'attendre l'exécution d'une promesse

sharp grail
ashen rapids
#

Avant de passer à la suite

delicate yew
#

Ahhh

#

merci

sharp grail
#

channel.awaitMessages

delicate yew
#

je vais essayer

#

ça à l'air dur

sharp grail
#

non vraiment c'est simple la doc peut aussi t'aider ^^

delicate yew
#

const filter = m => m.content.includes('discord');

#

ça le discord

#

il sert à quoi ?

sharp grail
#

en gros, ça va être ton filtre pour que ça va renvoyer

#

m c'est le message

delicate yew
#

Ahh ok ok je dois le laisser comme ça?

sharp grail
#

non non

delicate yew
#

Ah

#

je dois mettre quoi ?

sharp grail
#

cependant, pourquoi tu n'utilises pas des réactions ?

delicate yew
#

c'est possible

#

ça serait mieux d'ailleurs

sharp grail
#

ah bah

ashen rapids
sharp grail
#

il existe deux méthodes comme pour les messages donc à toi de voir ce que tu préfères

delicate yew
#

les réactions ça à l'air plus simple

sharp grail
#

parfait alors 👀

delicate yew
#

pq filter est en gris ?

#

c'est normal

#

de base c'est bleu

#

j'crois

sharp grail
#

je comprends pas ta question x)

delicate yew
#

je sais pas filter

#

il est en gris

#

c'est bizzare

ashen rapids
#

Car tu le déclares mais tu l'utilises pas

delicate yew
#

Ahh

willow dome
#

bonjour j'ai fait une commande pp mais quand je mentionne un utilisateur il me met cette erreur dans le terminal comment je fait pour le résoudre

sharp grail
#

tu tentes d'envoyer un message vide

willow dome
#

comment sa ?

sharp grail
#

c'est écrit sur l'erreur 🤔

#

tu es en v12 ou en v13 ?

willow dome
#

v13 normalement

#

j'ai fait comme le tuto me disait et j'ai bien regarder son code

sharp grail
#

je ne vois aucune mention de l'options format: 'png', dans les options de displayAvatrURL

#

essaye de ne rien mettre ?

willow dome
#

la commande marche si je fait juste!pp

#

mais pas quand je mentionne

#

j'ai la meme erreur

sharp grail
#

ah oké

#

attends je check

#

essaye de mettre un await

willow dome
#

a la place de message ?

sharp grail
#

non non x)

#

tu sais comment marche async / await ?

willow dome
#

je connais pas le js je suis plutot python moi

#

pour du python le await remplace votre message.channel

sharp grail
#

oui mais là c'est différent, il me semble qu'il y aussi le async et la await en py mais

willow dome
#

oui

sharp grail
#

en gros, tes commandes marchent comment ?

willow dome
#

en python ?

sharp grail
#

non en js x)

willow dome
#

ah ya le code au dessus sur le screen

sharp grail
#

justement

#

y a pas tout

#

en gros

#

await est seuelment valide dans une fonction asynchrone

willow dome
sharp grail
#

ah voilà

#

en gros, devant ton (message), tu mets async
et dans ton const avatarList = await message.mentions

#

Plus récemment, les fonctions async et le mot-clé await ont été ajoutés au langage JavaScript avec l'édition intitulée ECMAScript 2017. Ces fonctionnalités agissent essentiellement comme du sucre syntaxique sur les promesses, rendant le code asynchrone plus facile à écrire et à lire par la suite. Elles font en sorte que le code asynchrone ressem...

willow dome
#

le le me comment mon async

sharp grail
#

client.on('messageCreate', async (message) =>

willow dome
#

ok je vient de le faire

#

j'ai tj lerreur

sharp grail
#

t'as mis await aussi ?

willow dome
#

oui

sharp grail
#

tente de console.log avatarList

willow dome
#

je le met ou ?

sharp grail
#

avant le message.channel.send

willow dome
#

je me juste sa ?

sharp grail
#

bah je pense que le problème vient de ce que ça renvoie sans doute

#

(logik)

slim anvil
#

Oui c’est sûrement envoyé avant que le map soit fait

#

Sois tu passes par un for sois tu en fais une promise et tu envoies quand c’est terminé

willow dome
#

je suis en train daprendre je connais pas tout sa et le gars il a pas derreur alors quond a le meme code

sharp grail
#

Yes, par contre, si quelqu'un mentionne plusieurs personnes dans son message, ça va renvoyer plusieurs avatar

willow dome
#

c'est le but

sharp grail
#

ah oké x)

willow dome
#

mais faut deja arriver a mentionner 🤣

slim anvil
#

Par contre avatarList ça va être un tableau de string

#

Je sais pas si tu peux envoyer un tableau directement donc à vérifier

willow dome
#

le gars fait sa et sa marche très bien

slim anvil
#

possible alors je te prévenais juste que .map renvoie un tableau

#

Si ça passe Good

willow dome
#

je pense pas

#

il doit pas avoir la meme version que moi

sharp grail
#

effectivement ça renvoie un array

#

c'est bien le problème

willow dome
#

donc on peut pas le regler ?

sharp grail
#

si si

#

je pense que tu peux utiliser reduce

willow dome
#

qui est ?

sharp grail
#

ça devrait jpense marcher

#

par contre simplement

#

fais attention à ce que ton message dépasse pas les 2000 caractères

delicate yew
#

@sharp grail

#
const Discord = require("discord.js");
const { PREFIX } = require("../config.js");
const message = require("../events/message.js");
const db = require("quick.db");
module.exports.run = async (client, message, args) => {

    const joueur1 = message.author

    const joueur2 = message.mentions.members.first()

    const argent = args[1]

    const shifumiembed = new Discord.MessageEmbed()
        .setColor("WHITE")
        .setDescription(`**Tu joues une partie de shifumi avec ${joueur2}`)
        .addField("\u200B", '✊ Pierre', true)
        .addField("\u200B", "🍃  Feuille", true)
        .addField("\u200B", "✂ Ciseaux", true)


    const shifumiembed2 = new Discord.MessageEmbed()
        .setColor("WHITE")
        .setDescription(`**Tu joues une partie de shifumi avec ${joueur1}`)
        .addField("\u200B", '✊ Pierre', true)
        .addField("\u200B", "🍃  Feuille", true)
        .addField("\u200B", "✂ Ciseaux", true)



    if (!joueur2) {
        message.channel.send(`Veuillez mentionner une personne avec qui jouer !`)
    } else {
        if (joueur2.id === joueur1.id) {
            message.channel.send(`Vous ne pouvez pas jouer contre vous-même !`)
        } else {
            if (!argent) {
                message.channel.send(`Veuillez mettre le nombre d'argent à parier !`)
            } else {
                if (joueur2 || argent) {
                    const m = await joueur1.send(shifumiembed);
                    m.react("✊").then(() => m.react("🍃") && m.react("✂"))

                    const filter = (reaction, joueur1) => {
                        return (
                            ["✊", "🍃", "✂"].includes(reaction.emoji.name) && user.id === message.author.id
                        );
                    };

                    m.awaitReactions(filter, {
                        max: 1,
                        //une seule reaction par message
                        time: 60000,
                        //60 seconde pour les faires
                        errors: ["time"],
                    }).then((collected) => {
                        const reaction = collected.first();
                    })





                    const m2 = await joueur2.send(shifumiembed2);
                    m2.react("✊").then(() => m2.react("🍃") && m2.react("✂"));
                    const filter2 = (reaction, joueur2) => {
                        return (
                            ["✊", "🍃", "✂"].includes(reaction.emoji.name) && user.id === message.joueur2
                        );
                    };
                    m2.awaitReactions(filter2, {
                        max: 1,
                        //une seule reaction par message
                        time: 60000,
                        //60 seconde pour les faires
                        errors: ["time"],
                    }).then((collected) => {
                        const reaction = collected.first()

                    })



                } else {

                }
            }
        }
    }
}


module.exports.help = {
    name: 'shifumi',
};```j'suis sur un bon début ?
sharp grail
#

pas mal, par contre une ptite question

#

v12 ou v13 ?

delicate yew
#

v12

sharp grail
#

ah ok

#

je comprends juste pas l'intérêt du return

delicate yew
#

mais sinon

#

ça passe ?

#

ça peut marcher ?

sharp grail
#

alors, au niveau de l'argent par contre, tu vérif pas si la personne a assez d'argent, et si la personne qui perd dit l'argent à l'autre, tu vérifies par l'argent de l'autre personne

#

et au lieu de mettre des else partout, tu peux juste mettre des return

delicate yew
#

Si si je vais le faire j'essaye de faire le plus galère avant

sharp grail
#

et if (joueur2 || argent) ?

delicate yew
#

ça continue le code

#

mais j'crois j'étais aps obligé de le mettre

sharp grail
#

là c'est pas ce que ça va faire, mais tu peux juste enlever car tu fais les vérifs avant 🤔

#

et ah par contre, je pense que tu te recevras une error si la personne a pas répondu au bout de 60 secondes, donc peut-être ajouter un catch

sharp grail
#

sinon good je pense

willow dome
#

j'en peut plus j'essaye de mettre fs mais sa veut pas il me met que des truc sont pas définis alors que ya pas longtemp je l'avais fait et sa marchait

sharp grail
#

const { fs } = require("fs"); ?

willow dome
#

nn enfaite j'avais mi un truc pour les intent mais maintenant il me dit que Discord n'est pas défini

dire latch
#

Code ?

#

Sa serais plus simple avec l'erreur

#

@willow dome

willow dome
#

const { Client, Intents } = require('discord.js');

const client = new Client({ intents: [Intents.FLAGS.GUILDS] });

#

j'avais mi sa

#

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);
}

#

j'ai rajouter sa

dire latch
#
const { Client, Intents, Collection } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });

client.commands = new 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);
}
willow dome
#

faut que je mettent sa ?

dire latch
#

Oui

willow dome
#

il me met const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
^

TypeError: Cannot read property 'readdirSync' of undefined

dire latch
#

Faut rajouté le module fs après

willow dome
#

c'est fait

dire latch
#

Ba c'est good normalement ?

willow dome
#

nn sa me met lerreur

#

ah je sais

#

j'ai pas derreur mais sa ne me met pas les commande

sharp grail
#

c'est normal

#

car l'intents Guild ne permet pas d'accéder aux messages des guilds

willow dome
#

donc ?

dire latch
#

Pourquoi tu met des intents si tu es en v12 aussi ? 🤔

desert riverBOT
willow dome
#

je suis en v13

dire latch
#

Ok

sharp grail
#

ajoute l'intent GUILD_MESSAGES

delicate yew
#

@sharp grail j'abandonne 😭

sharp grail
sharp grail
delicate yew
#
const Discord = require("discord.js");
const { PREFIX } = require("../config.js");
const message = require("../events/message.js");
const db = require("quick.db");
module.exports.run = async (client, message, args) => {
    const joueur1 = message.author;

    const joueur2 = message.mentions.members.first();

    const argent = args[1];

    const shifumiembed = new Discord.MessageEmbed()
        .setColor("WHITE")
        .setDescription(`**Tu joues une partie de shifumi avec ${joueur2}`)
        .addField("\u200B", "✊ Pierre", true)
        .addField("\u200B", "🍃  Feuille", true)
        .addField("\u200B", "✂ Ciseaux", true);

    const shifumiembed2 = new Discord.MessageEmbed()
        .setColor("WHITE")
        .setDescription(`**Tu joues une partie de shifumi avec ${joueur1}`)
        .addField("\u200B", "✊ Pierre", true)
        .addField("\u200B", "🍃  Feuille", true)
        .addField("\u200B", "✂ Ciseaux", true);

    if (!joueur2) {
        message.channel.send(`Veuillez mentionner une personne avec qui jouer !`);
    } else {
        if (joueur2.id === joueur1.id) {
            message.channel.send(`Vous ne pouvez pas jouer contre vous-même !`);
        } else {
            if (!argent) {
                message.channel.send(`Veuillez mettre le nombre d'argent à parier !`);
            } else {
                if (joueur2 || argent) {
                    const m = await joueur1.send(shifumiembed);
                    m.react("✊").then(() => m.react("🍃") && m.react("✂"));

                    const filter = (reaction, joueur1) => {
                        return (
                            ["✊", "🍃", "✂"].includes(reaction.emoji.name) &&
                            user.id === message.author.id
                        );
                    };

                    m.awaitReactions(filter, {
                        max: 1,
                        //une seule reaction par message
                        time: 60000,
                        //60 seconde pour les faires
                        errors: ["time"],
                    }).then((collected) => {
                        const reaction = collected.first();
                    });

                    const m2 = await joueur2.send(shifumiembed2);
                    m2.react("✊").then(() => m2.react("🍃") && m2.react("✂"));
                    const filter2 = (reaction, joueur2) => {
                        return (
                            ["✊", "🍃", "✂"].includes(reaction.emoji.name) &&
                            user.id === message.joueur2
                        );
                    };
                    m2.awaitReactions(filter2, {
                        max: 1,
                        //une seule reaction par message
                        time: 60000,
                        //60 seconde pour les faires
                        errors: ["time"],
                    }).then((collected) => {
                        const reaction = collected.first();
                    });
                } 
            }
        }
    }
};

module.exports.help = {
    name: "shifumi",
};

#

j'suis censé faire quoi après

#

j'me suis perdu

willow dome
sharp grail
willow dome
#

je suis crever sa fait 5h que je regle des pb 🤣

dire latch
#

@delicate yewTu devrais faire tes vérifs avant

willow dome
#

j'ai trouve

delicate yew
#

regarde tout en haut

dire latch
#

Au tout début du code oui @delicate yew

sharp grail
opal harness
#

Bonjour,
je voudrais savoir comment je peux faire comme un ```lua
for k, v ipairs () do
end

delicate yew
willow dome
#

sa marche tj pas je peut pas faire les commande 🤬

sharp grail
willow dome
#

lesquelle

sharp grail
# delicate yew ça je sais pas comment faire justement

soit tu enregistre la réponse dans une collection, avec un id unique comme l'id de l'utilisateur suivi du timestamp du message par exemple ou tu stockes ces réponses dans des varaibles, que tu peux déclarer avant pour pouvoir les utiliser dans les deux then

delicate yew
#

oula

sharp grail
#

tu sais comment marchent les collections de discord js ?

delicate yew
#

non

#

du tout

keen narwhal
#

les fils sont la pour sa

sharp grail
sharp grail
keen narwhal
#

nan car la perso je my retrouve pas

dire latch
willow dome
#

mon client ?

keen narwhal
#

quand plusieurs,personne demande de l'aide

dire latch
#

🤔

sharp grail
sharp grail
dire latch
#

Comment on faisais avant ?

#

Je ne comprends pas

willow dome
dire latch
#

Ton fichier principal @willow dome

willow dome
#

ah

delicate yew
#

@sharp grail mais là du coup il restes que " si joueur 1 fais pierre et joueur 2 feuille, joueur2 gagne " etc etc avec toutes les possibilitées ?

willow dome
sharp grail
willow dome
#

enfaite j'ai limpression que mon bort ne detecte pas les commandes dpuis quelle sont dans un fichier

delicate yew
slim anvil
#

Hop voilà ce sera + simple je pense vu qu’il y a quand même 2 conversations

dire latch
#

-__-

willow dome
#

mdrr

opal harness
#

Bonsoir,
Comment je peux Fetch tout les channels pour check lequel est dans ma base de donner pour ensuite exectuer une action sur tous les channels qui y sont ?

ashen rapids
#

Tu peux récupérer tous tes channels ici

#
  1. Tu fetch tes channels
  2. Tu loop dessus
  3. Tu check si c'est dans ta bdd
  4. Tu envoies un message
opal harness
ashen rapids
#

Donne ton erreur

#

Et non pas dispo voc

full scaffold
#

Salut salut,
J'ai un soucis avec mon bot discord et le système de reaction
En gros quand le bot démarre il check le message auquel on peut réagir existe, s'il existe on le fetch sinon on l'envoie.
Le problème étant qu'il détecte "mal" le message qui existe déjà

#

Le code

this.client.on('ready', () => {
            let lastVerifiedMsgId = this.client.guilds.cache.get(this.serverID).channels.cache.get(this.channelIDForValidation).messages.channel.lastMessageID;
        
            console.log(this.client.guilds.cache.get(this.serverID).channels.cache.get(this.channelIDForValidation).messages.channel.lastMessageId);
            console.log(lastVerifiedMsgId, lastVerifiedMsgId == null, this.channelIDForValidation);

            if (lastVerifiedMsgId == null) {
                this.sendEmbed();
            } else {
                this.client.guilds.cache.get(this.serverID).channels.cache.get(this.channelIDForValidation).messages.fetch(lastVerifiedMsgId, true, false).catch((error) => {

                    console.log(error);
                    console.log('-------');
                    console.log(error.code);

                    if (error.code == 10008) { // Le dernier message n'éxiste plus, il faut le re-créer
                        this.sendEmbed();
                    }
                });
            }
        });
#

Output

883282882922164264
undefined true 883007409449209896
#

En gros j'ai l'impression que quand j'assigne la variable "lastVerifiedMsgId", ça ne fonctionne pas du premier coup, mais la deuxième fois dans le console.log ça fonctionne

ashen rapids
#

Car ici :

this.client.guilds.cache.get(this.serverID).channels.cache.get(this.channelIDForValidation).messages.channel.lastMessageID;

Tu as mis : lastMessageID

#

Sauf que dans la nouvelle version (v13), c'est lastMessageId maintenant

#

Chose que tu as faite dans ton console.log

#

@full scaffold

full scaffold
#

Oh bruh

#

Je l'avais vu en plus

#

Merci en tout cas

timid loom
#

@full scaffold il faut faire des variables intermédiaires hein, le code est beaucoup moins lisible comme ça là

timid loom
#

là tu peux en faire sur la guild, et sur le channel déjà

full scaffold
#

Oui c'est ce que je comptais faire

pale void
#

@ashen rapids hey !
Voici ma réponse, tardive, à ta solution pour mon soucis avec React et mon module. Le soucis venait non pas de base45 mais cbor, qu'il fallait bien remplacer par cbor-js.
Mais ce module manque d'une fonction qui ne me permet pas de l'utiliser dans mon projet.

Je crois bien que c'est d'ailleurs ici qu'il va s'arrêter 😦

Quoiqu'il en soit, merci pour ta réponse qui était bel et bien la bonne !

opal harness
#

Bonjour,
J'ai un problème, quand je change plus de 2 fais le nom du channel celui-ci, je ne peux plus le faire ni supprimer le channel

dire latch
#

Code pour voir si tu as pas fais d'erreur ? @opal harness

opal harness
#

Att

dire latch
opal harness
#
bot.on('messageReactionRemove', (reaction, member)=> {
    if(member.bot) return;
    if(reaction.emoji.name == ":bookmark_tabs:"){
        if(bdd["ticket"]["claimby"][reaction.message.channel.id] = member.id){
            delete bdd["ticket"]["claimby"][reaction.message.channel.id] 
            Savebdd()
            const panelclaimoff = new Discord.MessageEmbed()
            .setColor('#FF8800')
            .setTitle(`Prise en Charge`)
            .setAuthor('ToDev Bot', 'https://i.imgur.com/GC5ihqZ.png')
            .setDescription(`:x: ***<@${member.id}> a décidé de ne plus prendre votre ticket !***`)
            .setTimestamp()
            .setFooter(`${member.id}`, 'https://i.imgur.com/GC5ihqZ.png');
            reaction.message.channel.send(panelclaimoff);
            reaction.message.channel.setName("UnClaim")
        }
    }
})
#

@dire latch

dire latch
#

Hmm

opal harness
dire latch
#

Jsp pour le coups

#

Peut être la réaction qui ne fonctionne plus ?

brave lintel
#

Tu utilise une bonne version ?

#

Sans confondre avec une autre version qui pourrait avoir une légère différence ?

#

@opal harness

opal harness
dire latch
#

Essaye de mettre l'émojis directement et non le nom @opal harness

#

\📑

opal harness
dire latch
#

Ok

brave lintel
dire latch
#

Mais pourquoi il devrait aller en v13 ? Il est en v12 -__-

oak turret
#

prends l'habitude de check une value avec === et non = ou ==, donc dans ton if remplace = par ===

#

et check avec un console.log voir si il passe dedans

brave lintel
#

La syntaxe n'est pas la même et si je ne me trompe pas, les noms des fonctions des embeds sont différents.

oak turret
brave lintel
brave lintel
oak turret
dire latch
#

Oula du tout @brave lintel

#

C'est impossible qu'une version impacte une autre

sharp grail
opal harness
sharp grail
#

Ah nan mais je sais pas, je disais ça juste pour peut-être, à vérifier

#

Mais en gros le soucis c'est quoi concrètement 🤔

dire latch
#

Met des console.log @sharp grail

#

Et voit ou sa ne passe plus

oak turret
#

mais déjà, ton "=" dans ton if c'est pas good, mets "===" pour check une value

sharp grail
dire latch
#

🙂

sharp grail
#

après manifestement son truc marche donc

sharp grail
oak turret
#

strange, fais les modifs, test et dis nous le résultat

white sedge
#

hi! comment je récupère l'id de l'utilisateur qui a utiliser une commande ? g rien trouvé sur le web

#
async run(msg, message, client, { question }) {
        //msg.say(`La question est: ${question}`);
        test = message.author.username
        IDutilisateur = message.author.id
        const ImportQuestion = {
            IDutilisateur:{
                Question : question
            }
        };
        msg.say(user.id)
        msg.say(test)
    }
``` ça me met soit author n'est pas déclaré  soit que id n'est pas décaré
#

je butte sur ça

ashen rapids
#

C'est un event ça ?

opal harness
oak turret
#

t'utilises commando non ?

sharp grail
opal harness
#

Quelqu'un de dispo pour regarder le problème avec moi ?

oak turret
white sedge
opal harness
opal harness
oak turret
# white sedge oui

donc à part message le reste te sert à rien, à part question si t'as bien mis ton args:[{}]

oak turret
# opal harness Pourquoi 3 ?

"=" c'est pour déclaré une variable à une valeur quelconque, "==" pour check des types, et "===" pour check des values

white sedge
#

ok

white sedge
#

que je metterais dans un json plus tard

oak turret
oak turret
dire latch
#

@white sedgeFaut que tu sois dans l'event message

oak turret
#

voir si il rentre dedans

oak turret
dire latch
#

Ah je connais pas commando

oak turret
#

Il est sous commando, donc pas besoin ^^

opal harness
oak turret
#

aucune erreur ?

opal harness
oak turret
#

tu le modifie plusieurs fois d'affilée ?

opal harness
white sedge
#

Aide Nom dutilistateur

oak turret
# opal harness Yes

alors ça doit être pour ça, laisse genre 1-2 secondes avant chaque modif

#

histoire de pas embrouiller l'api, sûrement un rateLimit quelque part faut check ça dans la doc

white sedge
#

c bon j'ai plus rien

sharp grail
slim anvil
#

alors non du tout

#

y a des bases à revoir les mecs harold

keen narwhal
#

Les gars, bonsoir, vous savez pourquoi mon bot n'envoi aucun mp avec ce code ?

#
if (!banMember.bannable) return message.channel.send(embederreur)
            try {
            message.guild.members.ban(banMember)
            banMember.send(`:warning: Vous avez été ban de ${message.guild.name} pour la raison : ${reason || "Aucune raison."}`).catch(() => null)
            } catch {
                message.guild.members.ban(banMember)
            }```
#

( les mps sont bien ouvert )

oak turret
#

inverse, ton ban après ton send

keen narwhal
#

je me le send avant ?

opal harness
keen narwhal
# oak turret inverse, ton ban après ton send
if (!banMember.bannable) return message.channel.send(embederreur)
            try {
banMember.send(`:warning: Vous avez été ban de ${message.guild.name} pour la raison : ${reason || "Aucune raison."}`).catch(() => null)
            message.guild.members.ban(banMember)
            } catch {
                message.guild.members.ban(banMember)
            }```
oak turret
keen narwhal
#

ha d'accord

#

je vois même pas ou il le ban
message.guild.members.ban(banMember)
c'est cette ligne ?

dire latch
#

Yes @keen narwhal

keen narwhal
#

D'accord merci

#

J'avais un doute x)

dire latch
#

Ya le .ban dedans mdrr

keen narwhal
#

@dire latch@oak turret, merci les bgs

dire latch
#

Dr np @keen narwhal

sharp grail
#

c'est bien ça ?

#

par type j'entends, string number etc.

#

c'est ce que j'avais compris en tout cas

spring dock
sharp grail
#

merci

opal harness
#

Bonjour,
Comment je fais pour retirer la réaction "📑" à un message ?

brave lintel
opal harness
sharp grail
#

sinon @opal harness il existe une documentation pour discord js et un guide pour t'aider

#
#

ensuite pour répondre à ta question, c'est ton message . edit

#

tu peux voir ça sur la class message au niveau des méthodes

desert riverBOT
opal harness
#

Bonjour,
j'ai une error : ```
C:\Program Files\nodejs\node.exe .\index.js
Uncaught Error: Cannot find module 'timers/promises'
Require stack:

  • c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js
    Debugger attached.
    Waiting for the debugger to disconnect...
    internal/modules/cjs/loader.js:888
    throw err;
    ^

Error: Cannot find module 'timers/promises'
Require stack:

  • c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)
    at Function.Module._load (internal/modules/cjs/loader.js:730:27)
    at Module.require (internal/modules/cjs/loader.js:957:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js:10:24)
    at Module._compile (internal/modules/cjs/loader.js:1068:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [ 'c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js' ]
    }
Est ce que qq1 peut m'aider
brave lintel
#

Il n'a simplement pas trouvé le module "timers/promises"

#

C'est tout, ne va pas chercher plus loin @opal harness

opal harness
brave lintel
#

ok

#

^^

thin swallow
#

Bonjours j'aurais une question ?

spring dock
#

bonjour, pose ta question directement :-)

thin swallow
#

salut enfaite je suis en première Sti2d je conte faire un bts pour faire une alternance dans le webmaster j'aimerais savoir si cela et mieux de débuter avec Htlm ou javascript ?

spring dock
#

Le mieux est de commencer par html étant donné qu'en JavaScript, la principale chose que tu fera ce sera manipuler le DOM (donc le contenu de ta page, donc les éléments que t'auras placé en html...)

opal harness
#

Pourquoi ça ne fonctionne pas ?

#
   reaction.message.edit('This is my new content!')
   .then(msg => console.log(`Updated the content of a message to ${msg.channel.id}}`))
sharp grail
opal harness
#

Ca edit pas mon message

#

@sharp grail

sharp grail
#

montre ton code avec un peu plus de globalité ?

timid loom
bold sparrow
opal harness
paper edge
#

Y a des gars qui maitrisent le THREE.js ici ?

bold sparrow
opal harness
unborn knot
opal harness
#

Pour ça ne fonctionne pas ?

const panelticketclaimclose2 = new Discord.MessageEmbed()
.setColor('#f1c40f')
.setTitle(`Ticket Animation`)
.setAuthor('ToDev Bot', 'https://i.imgur.com/GC5ihqZ.png')
.setDescription(`***Ticket créé par :***  <@${bdd["ticket"]["ticketmention"][reaction.message.channel.id]}> \n ***Raison :***  ${bdd["ticket"]["ticketinfo2"][ticketname.id]} \n *** Pris en Charge Par :*** <@${member.id}>`)
.setTimestamp()
.setFooter(`${ticketname.id}`, 'https://i.imgur.com/GC5ihqZ.png');
                        
reaction.message.edit({ embeds: [panelticketclaimclose2]})
dire latch
#

Quesce qui fonctionne pas ? @opal harness

opal harness
dire latch
#

Ah dac

opal harness
dire latch
#

Essaye de console.log

#

Ou des try

opal harness
#

Je console.log quoi ?

dire latch
#

Pour voir si sa fonctionne

bold sparrow
#

Tu ty prends mal

ashen rapids
#

Si quelqu'un a déjà utilisé l'outil open-source SurveyJS ou l'outil GrapeJS, faites moi signe !
Pas spécialement besoin d'aide, juste avoir des retours, on sait jamais !

opal harness
#

Yo pourquoi j'ai une error ?

(node:8016) UnhandledPromiseRejectionWarning: TypeError: message.channel.guild.member.ban is not a function
    at Object.module.exports.run (c:\Users\sandr\Documents\AtlanticaBotDiscord\commandes\ban.js:52:46)
    at Client.<anonymous> (c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js:134:35)
    at Client.emit (events.js:388:22)
    at MessageCreateAction.handle (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (events.js:376:20)
(Use `node --trace-warnings ...` to show where the warning was created)
                message.channel.guild.member.ban(utilisateur.id);
                if(temps != 0){
                    setTimeout(function(){
                        bot.guild.members.unban(utilisateur.id)
                    }, temps*unité)
                }
sharp grail
opal harness
sharp grail
#

sinon la doc ✨ au lieu d'inventer des trucs qui n'existe pas x)

opal harness
# sharp grail message.guild.members.fetch(utilisateur.id).then(m => m.ban()) ou message.guild....
(node:12100) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
DICT_TYPE_CONVERT: Only dictionaries may be used in a DictType
    at RequestHandler.execute (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async RequestHandler.push (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\rest\RequestHandler.js:39:14)
(Use `node --trace-warnings ...` to show where the warning was created)
<node_internals>/internal/process/warning.js:43
(node:12100) 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: 1)
<node_internals>/internal/process/warning.js:43
(node:12100) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
sharp grail
#

sinon, c'est en fait car quand tu get le membre tu dois mettre des optionsqui sont sensés être optionnelles

#

(désolé)

opal harness
#

Bonjour,
Quel est l'évenement du type bot.on("guildMemberAdd", member => {
Mais quand qq1 rejoind un channel vocal ?

hazy mirage
#

Salut! Alors pour la v12 c'était avec l'event voiceStateUpdate et du coup tu comparais si before existait pas ou l'id du channel de before est pas pareil que le new ça veut donc dire qu'il rejoint le channel. Ne connaissant pas la v13 je peux pas te garantir que ça fonctionne toujours comme ça shrug

opal harness
desert riverBOT
#

Documentation suggestion from @hazy mirage:
:_: (event) Client#voiceStateUpdate
Emitted whenever a member changes voice state - e.g. joins/leaves a channel, mutes/unmutes.

slim anvil
#

Faut pas avancer à l’aveugle ça fonctionnera pas

opal harness
ashen rapids
#

Ton oldState

opal harness
ashen rapids
#

Regarde ce que ton event voiceStateUpdate prends en argument

opal harness
#

Mais je l'utilise comment ?

opal harness
ashen rapids
#

Je te conseille de regarder comment DiscordJS fonctionne avant

#

Le système d'events principalement et comment ça fonctionne

opal harness
#

Comment je fais pour lire un fichier.mp3 dans un channel ?

timid loom
sharp grail
#

Wa mais il est vraiment pratique ce guide

snow apex
#

Bonsoir ! J'essaie de faire une commande qui permettrais de faire des équipes équilibrées (pour des parties entre pote).
J'ai associé un niveau a chaqu'un de mes amis dans un fichier json, et j'ai pensé a essayer toutes les possibilités avec une boucle while jusqu'a ce que la somme des deux équipes soit égales. Sauf que je bloque un peu et je sais pas comment m'y prendre, quelqu'un aurais une idée de comment je pourrais faire ça ? Désolé du dérangement et merci d'avance pour vos réponses 😄

#

(Pour la syntaxe de la commande c'est un truc du genre &maketeam <mention> <mention> <mention> <mention> etc...

ashen rapids
#

Ou égale

snow apex
#

Et pour ça j'ai pensé a une boucle while, mais j'ai pas plus d'idées

#

Si quelqu'un aurais une idée de comment faire ça je suis prenneur, pas de code pour que je puisse apprendre ^^

ashen rapids
# snow apex C'est exact

Il faudrait réfléchir à un algo opti

Tu pourrais avoir deux variables. Un avec le score de la team 1 et un avec le score de la team 2

snow apex
#
const discord = require("discord.js");
const fs = require("fs")
module.exports.run = async (client, message, args) => {
    const level = JSON.parse(fs.readFileSync('./level.json'))
    let { mentions } = message
    let nombre = mentions.users.size
    if (nombre < 4) return message.channel.send("Il faut un minimum de 4 personnes pour faire une team.")
    let erra = []
    mentions.users.array().map(async user => {
        if (erra.length === 0) {
            if (!level.players.find(e => e.id === user.id)) {
                erra.unshift("ok")
                return message.channel.send(`:x: ERREUR ! ${user} n'es pas dans la base de donnée !`)
            }
        }
    })
    if (erra.length !== 0) return;
    
    
    

}

module.exports.help = {
    name: "maketeam"
}

#

c'est mon code actuel

#

ça check juste que toutes les personnes mentionnées aient bien un niveau associé

ashen rapids
#

Tu créés une boucle dans laquelle tu vas d'abord mettre ton joueur dans la team 1

À la prochaine itération, tu le places dans la team 2, en incrémentant le score de la team

Et dans la troisième itération, tu check celui qui a le score le plus bas

#

Et tu attribues le joueur

snow apex
snow apex
# ashen rapids C'est ça

Mais du coup il se peut qui'il y'ai une équipe avec 23 de score par exemple, et le dernier joueur a 10 de score

#

ça va faire 33

ashen rapids
#

Et à chaque itération, tu ajoutes le level du joueur au score de la team

snow apex
#

alors quen face du coup ça va etre 20

snow apex
ashen rapids
#

Non car si ta team est à 20, c'est chez lui que le joueur level 10 ça être attribué. Pas dans la team avec le score de 23

snow apex
#

oui mais du coup, ça va faire 30 23

#

et c'est pas équilibré xd

#

30 est trop différent de 23

ashen rapids
#

Oui bien-sûr, c'est une première idée d'algo, plutôt simpliste

snow apex
#

tu as pas une idée pour faire un truc plus poussé et qui fait des équipe plus équilibrés du coup

ashen rapids
#

Autre idée qui peut s'appliquer facilement sur cet algo

snow apex
#

Alors juste une question relative au javascript directement cette fois ci, si jamais j'augmente la valeure de ma variable "team1" dans la boucle, est-ce que ça va marcher ?

#
let team1;
let team2;
mentions.users.array().map(async user => {
        
})
#

genre comme ça , et j'ajoute le lvl de chaque utilisateur dans la boucle map

#

il me semble que quand je définis une variable dans une map ça ne marche pas

ashen rapids
#

Tu peux trier ta liste avant

C'est-à-dire que ça trie de sorte à avoir un tableau avec les plus forts en premier

#

Comme ça c'est eux que tu vas placer en premier

#

Ce qui fait qu'à la fin de ta boucle, tu vas trier les plus bas niveaux, et donc avoir un équilibre plutôt correct

snow apex
#

Alors le truc c'est que actuellement mon objet utilisateur est distinct de mon objet qui conties le level

#

Désolé si c'est pas clair mais en gros

#

J'ai :

  • Mes utilisateurs mentionnés, dans mentions.users.array()
  • Les utilisateurs et leurs niveaux, dans level.json
#

Je dois donc créer un nouvel array qui contiens les joueurs et leur lvl, c'est ça ?

#

Ou une collection du coup, ça me parait mieux

#

Désolé si je t'embrouille ^^

ashen rapids
#

Oui tu peux mapper une collection
L'objectif c'est que tu ais quelque chose de simple pour assigner le level correspondant à ton player

snow apex
#

pour assigner le level j'ai une autre commande &setlvl qui change le niveau du joueur dans mon fichier level.json

ashen rapids
#

Yep mais du coup quand tu fais la commande pour assigner les teams, faut bien que tu récupères tes levels dans le JSON

snow apex
#

Yep t'inquiète c'est fait

#

Si tu regarde mon code plus haut j'utilise déja ça pour checker que touts les utilisateurs aient un level assigné

ashen rapids
#

Oui tu les check mais maintenant faudrait stocker dans une variable le level de chaque player

#

Pour que tu puisses loop ensuite dessus

snow apex
#

yep je viens d'ajouter ça

ashen rapids
#

Niquel

snow apex
#

c'est ma première boucle

#

pour check si touts les utilisaters ont bien un lvl

#
let erra = []
    mentions.users.array().map(async user => {
        if (erra.length === 0) {
            if (!level.players.find(e => e.id === user.id)) {
                erra.unshift("ok")
                return message.channel.send(`:x: ERREUR ! ${user} n'es pas dans la base de donnée !`)
            } 
            if (level.players.find(e => e.id === user.id)) {
                playerslvl.set(e.id,level.players[level.players.findIndex(e => e.id === member.id)].lvl)
            } 
        }
    })
    if (erra.length !== 0) return;
#

en gros je check que tout le monde soit bien dans la base de donnée, et si un des utilisateurs ne l'est pas j'ajoute un élement a l'array "erra" pour dire plus tard qu'il y'as une erreur

ashen rapids
#

Tu peux découper ton code en plusieurs variables pour que fasse pas des lignes à rallonge compliqué à lire

ashen rapids
snow apex
#

mais ça marche ! xd

ashen rapids
#

Regarde comment utiliser Throw sur JavaScript

Dès que quelqu'un n'a pas de level , tu throw

#

C'est un bon exercice pour apprendre la gestion d'erreurs en JavaScript 😁

snow apex
#

Je vais pas plus te déranger et essayer de gérer ça par moi meme, merci beaucoup de ton aide !

ashen rapids
#

Pas de soucis !
Hésite pas à me tenir au courant, ça m'intéresse 😇

#

Et encore une fois, c'est un algorithme parmis tant d'autre, faut juste le réfléchir et le tester pour obtenir quelque chose le plus optimal possible

#

Mais celui que je t'ai expliqué, avec le sort() et la boucle, tu peux déjà avoir un excellent équilibrage

snow apex
ashen rapids
#

T'as une fonction qui check si les players ont un level

#

Cette fonction, tu l'appelles dans un try / catch

snow apex
#

c'est pas une fonction

ashen rapids
#

Si une erreur est survenue, le contenu de ton catch est appelé

snow apex
#

c'est un .map()

#

mais du coup je vois, j'vais transformer ça en fonction

ashen rapids
#

Et bien tu peux en créer une
Une fonction qui check si tout le monde a un level.

checkPlayersLevel()

#

C'est surement + pertinent et plus propre au niveau de ton code

snow apex
#

Yep , je vais tester ça

#

Merci beaucoup de ton aide !

ashen rapids
#

Pas de soucis 👌

snow apex
#

Du coup j'ai avancé un peu, j'ai fait cette boucle :

#
var team1 = null
var team2 = null
await playerslvl.map(async user => {
        if (team1 === null) {
            team1 = user.lvl
        } else if (team2 === null){
            team2 = user.lvl
        } else if (team1 < team2){
            team1 = team1 + user.lvl
        } else if (team2 < team1) {
            team2 = team2 + user.lvl
        }
    })
#

sauf que quand je console.log team1 et team2, je me rend compte que les valeurs ont tout simplement pas changée du tout

#

j'ai l'impression que vu que je suis a l'intérieur d'un .map, ça change la valeur que pour le .map et pas en dehors

ashen rapids
#

Pas besoin d'autant de conditions déjà, tu peux faire plus simple

#

Et rétrécir un peu le bloc

#

Aussi pourquoi utiliser async dans ton Map() ?

snow apex
#

je l'enlève

ashen rapids
#

Tes variables tu peux les initialiser à 0 aussi, c'est des scores

#

Donc des nombres

snow apex
#

pas bete, je fais ça

#

mais du coup tu sais pourquoi ça marche pas ?

ashen rapids
#

Et surtout ton Map() n'est probablement pas le meilleur moyen de faire ce que tu veux

#

Un forEach suffirait amplement

snow apex
#

c'est quoi la différence entre les deux ?

ashen rapids
#

La méthode Map permet de créer un nouveau tableau en fonction de ce que tu return dans ton map

#

forEach c'est pour parcourir ton tableau

#

Ici c'est ce que tu souhaites faire

snow apex
#

yep du coup j'ai remplacé par un forEach

ashen rapids
#

Déjà tu peux y voir plus clair 😁

#

Pareil, pourquoi tu utilises await sur ton Map() ?

#

Tu sais à quoi sert await ?

snow apex
#

du coup j'ai fait ça

#

mais ça me retourne ça :/

ashen rapids
#

Seulement sur les promises

#

Await permet d'attendre la résolution d'une promesse avant de passer à la suite

snow apex
#

Mais ça viendras

ashen rapids
#

Oui donc déjà éviter de le mettre partout

Ton éditeur d'ailleurs t'indique avec un petit trait que ça sert à rien

snow apex
#

yep c'est pas faux, je vais l'enlever du coup

#

mais t'aurais une idée de pourquoi mes teams1 et team2 sont undefined ?

#

oh c'est bon

#

problème reglé

#

c'est pas "lvl" mais "level" ^^

#

Mais du coup les teams sont pas du tout équilibrées xD

ashen rapids
#

C'est l'algorithme de base sans le sort ça ?

#

Petit trick

Pour incrémenter une variable, tu peux faire directement team1 += user.lvl

#

Ca t'évite de réécrire team1

#

Et que se passe t'il si ta team1 et ta team2 ont le même score ?

snow apex
#

okok merci

#

euh je sais pas , faudrais que je test

ashen rapids
#

Tu peux encore améliorer ta chaîne de condition, pour que ça soit plus court

ashen rapids
snow apex
#

je devais rajouter "inférieur ou égal", non ?

#

a team1 < team2

ashen rapids
#

Oui faut utiliser le inférieur ou égal

snow apex
#

merci beaucoup 😄

#

mais du coup, mes équipes sont pas du tout équilibrés

#

ça me créer effectivement deux équipes

#

mais ça les éqilibre pas

snow apex
#

le sort ajoute quoi concretement ?

#

il va juste trier mon array playerslvl ?

ashen rapids
#

Tu peux me screen un console log de ton playersLvl ?

snow apex
#

c'est long

ashen rapids
ashen rapids
#

Si ton score c'est 20, ça doit pas être bien long haha

snow apex
#

en gros

#

players lvl contiens des objets players

#

qui contiennent eux meme l'objet user que je prend de la mention, et le lvl

#

du coup pour prendre le level c'est user.level

#

et si j'veux l'username par exemple, c'est user.user.username

ashen rapids
#

Fais un screen vite fait du console.log que je me fasse une idée

snow apex
#

j'imagine que je dois trier par user.id c'est ça ?

#

d'accord

ashen rapids
snow apex
#

my bad , je suis fatigué xd

ashen rapids
#

Pour qu'ils soient réparti en premier

snow apex
#

c'est mon array playerslvl

ashen rapids
#

Les levels sont bien dans l'ordre décroissant ?

snow apex
#

non pas forcément

ashen rapids
#

Donc t'as pas trié ?

snow apex
#

un peu plus bas on a ça

#

yep