#javascript-typescript

1 messages · Page 93 of 1

keen narwhal
#

Depuis que je touche au js je n’ai jamais touché à ça

dire latch
#

Ah

west needle
#

Regarde

#

‘’’js
client.on(‘’guildMemeberUpdate’’, (oldMemeber, newMember) => {
//Code
}
‘’’

#

(Désolé je suis sur mobile je peut pas bien formater mon text)

#

Mais sinon cette event se déclenche quand il y a un changement sur un membre (role, nickname..) du coup il faut savoir si y a eu un changement dans les roles

#

Pour ca on va comparer les roles du oldMember et du newMember et si y a eu une différence entre les deux ca veut dire que y a eux un changement dans les roles

#

A toi de voir comment faire la comparaison pour savoir le nouveau role qui a était ajouter/retiré

keen narwhal
#

@west needle, j'ai essayer autrement, j'ai pas d'erreur mais le code ne fonctionne pas..
Mais merci !!

#
const member = message.guild.members.cache.get(message.author.id)
    if(member){
        if (member.roles.cache.has("909744530000068628")){
        const channel = client.channels.cache.get("900788402016899144") //id du channel réglement
        const embed = new Discord.MessageEmbed();
         embed.setTitle('Merci d\'accepter le règlement.');
         embed.setDescription('test');
         embed.setFooter(message.author.username);
         embed.setColor('#c40606');
         embed.setTimestamp();
         embed.setAuthor('');
        channel.send(embed).then(
            message => {
                let emoiji_id = "✅";
                message.react(emoiji_id)

                let filter = (reaction, user) => reaction.emoji.name === emoiji_id && user.id !== client.user.id;
                let collector = message.createReactionCollector(filter, {
                    time: 15000
                });

                collector.on('collect', r => {
                    collector.stop();
                });

                collector.on('end', collected => {
                    if (collected.get(emoiji_id)) {
                        let userID = collected.get(emoiji_id).users.cache.last();
                        var member_by_id = message.guild.members.cache.get(userID.id);
                        member_by_id.roles.remove('909744530000068628') //id du role a enlevé
                        member_by_id.roles.add('900787158351245324')
                        message.delete()
                    }
                });


            }
        );
        
        
    }
}```
slim anvil
#

Tu as essayé ou ?

#

Il a 0 évents memberUpdate dans le code que tu montres

keen narwhal
keen narwhal
slim anvil
#

Montre ce que tu essayes pour qu’on puisse te mettre sur le droit chemin

keen narwhal
#

Enfaite, dès qu’une personne rejoint, il doit remplir un capcha avec un autre bot, une fois celui là remplis il a donc un rôle, le membre à accé un seul salon qui le règlement, le bot des qu’il a détecté qu’il a ce rôle la, il envoi un msg dans le salon règlement avec une réaction, dès que l’user à cliquer sur la réaction, il lui donne un rôle pour avoir accès au serveur

keen narwhal
slim anvil
#

Oui j’ai compris

#

mais ce que je te dis moi c’est que peu importe ton système, envoie ce que tu as déjà pour l’événement guildMemberUpdate pour qu’on puisse te mettre sur la bonne voie

keen narwhal
#

je ne fonctionne pas avec guildMemberUpdate pour cette partit du code

slim anvil
#

Là ton code il doit ✅ sur le message du bot

#

pas sûr celui du règlement

#

C’est ça que tu veux ?

keen narwhal
#

oui c'est

#

enfaite y'aura le réglement, et en dessous le bot envera un msg, avec la reaction, et quand il cliquera, le msg sera dellete

slim anvil
#

Ok alors oui t’as pas besoin de member update si tu as une action pour le faire

keen narwhal
slim anvil
#

déjà dans ton filter y a un soucis je pense

keen narwhal
#

Ha ?

#

effectivement

#

il est mentioné autre part dans le code

#

j'ai modif

slim anvil
#

Tu check effectivement que là reaction soit bien ✅ mais tu dis aussi que tu veux que l’user ne soit pas ===

#

okay good, check bien que le user qui react soit le même que ton member plus haut, je suppose

keen narwhal
slim anvil
#

Pour qu’il y est que lui qui puisse réagir

#

Ou en tout cas être dans ton collector

keen narwhal
#

jsuis pas sur x)

#

la il prend l'id de l'emogie, de l'user et du client et du membre concerné

#

si je me trompe pas

#

x)

slim anvil
#

non tu comprend pas

#

l'emoji tu touches pas

keen narwhal
#

yep, malheuresement

slim anvil
#

car sinon n'importe qui qui reagit ca va déclencher ton collector

keen narwhal
#

en gros comme sa

#

pour que l'user clique uniquement lui

slim anvil
#

Non plus

keen narwhal
#

:/

slim anvil
#

à quoi ca sert

keen narwhal
#

pourquoi

slim anvil
#

Je te repose la question

#

Pourquoi tu le met ?

keen narwhal
#

bonne question

slim anvil
#

merci

keen narwhal
#

et sinon tu sais pk il envoi aucun msg ?

slim anvil
#

Non attend je re regarde

keen narwhal
#

oki

slim anvil
#

le truc des collector je ne connais pas par ❤️ mais si tu met un console.log('ending collector') dans ton event collector.on('end'...

#

est-ce qu'il est affiché ?

keen narwhal
#

je te dit ca

#

sa*

#

nan rien est affiché

slim anvil
#

okay je regardais un peu la doc, un truc moins verbeux, mais si tu faisais juste

const filter = (reaction, user) => reaction.emoji.name === emoji_id && user.id === member.id
message.awaitReactions({ filter, time: 15_000 })
  .then(collected => console.log(collected))
  .catch(console.error);
keen narwhal
#

hm, je test ça

#

à la place de

slim anvil
#

et meme du collector.end

keen narwhal
#

ha

slim anvil
#

juste garde ton code qu'il y a dedans

keen narwhal
#

d'accord

slim anvil
#

pour le mettre dans le .then de ce que je t'ai envoyé

keen narwhal
#

donc ça aussi en gros

slim anvil
#

regarde ce que tu fais

#

ça se met pas n'importe où

#

je te laisse chercher ton erreur, et lorsque tu l'auras trouvé tu auras juste a log collected, car je ne sais pas ce qu'il renvoie, mais avec ça tu pourras faire ton give de role

keen narwhal
#

d'accord merci

slim anvil
#

Et aller pour t'aider:
Tu filtres déjà en disant : que ce MEMBER qui peut reagir
Donc pas besoin de rechecker dans ton collected qu'il y soit, tu check juste que ton collected.size soit >= 1, et si oui tu lui give le role

keen narwhal
#

je suis pas sur

slim anvil
#

regarde ce que tu fais
ça se met pas n'importe où

keen narwhal
#

Je ne vois vraiment pas

#

je ne peux pas le mettre avant le code de la reaction

#

sa me parrait logique

slim anvil
#

je te laisse y réfléchir

dire latch
#

Petite info, les émojis discord, tu peut les mettres directement au lieu de les déclarés comme tu fais 🙂

flat sandal
#

Si tu nommes ton filter: “filter2”, tu ne peux pas faire {filter2} mais tu dois faire {filter: filter2}

slim anvil
#

ah oui bien vu

#

👁️ de lynx

slim anvil
#

Oui mais il lui disait juste « si tu nommes filter2 »

west needle
#
class myClass {

constructor() {
  this.isScanning = false;
}

print() {
  if(this.isScanning) return;
  /*Code*/
}

scan() {
  return new Promise((resolve, reject) => {
    this.isScanning = true;
    document.addEventListener("keypress", async ({ keyCode }) => {
      if (keyCode !== 13) return;
    
      const result = Object.values(lines.children).at(-1).innerHTML;

      resolve(result);
      this.isScanning = false;
    });
  });
}

}
#

Bonsooooooooir
j'ai un petit souci
En gros ce que je veut faire c'est que le temps que la Promise de la fonction scan sois resolve la fonction print ne puisse pas être exécuter
J'ai essayer comme ca
Mais ca ne marche pas trop

#

Svp me ping si jamais

cyan iron
#

C'est censé fonctionner pourtant

hazy mirage
#

@west needle Salut. Je suis pas certain que seul ce changement fonctionne mais en dessous du resolve(result) il faut donc mettre this.isScanning = false

cyan iron
#

En fait quel est ton problème exactement @west needle, ta fonction print ne se désactive pas ?

west needle
#

Meme si la Promise n'est pas resolve

cyan iron
#

ah mais

#

Je sais pourquoi

#

C'est this.isScanning

west needle
cyan iron
#

Et pas isScanning

west needle
#

Non c'est pas ca tkt

cyan iron
#

Bah si

west needle
#

Juste j'ai pas bien copier coller

#

Sur mon code c'est bien this.isScanning

cyan iron
#

hum

hazy mirage
west needle
#

Merde desolé

keen narwhal
#

Salut es normal d'avoir cette erreur ?

west needle
#

Mal copie past

hazy mirage
#

mis à part ça, tu peux essayer de set this.isScanning au dessus de la déclaration de la promise ?

west needle
#

Vazy j'essaye

#

C'est vrai que c'est logique

#

Merci

#

Ca marche !

cyan iron
#

écoute je sais pas ce que tu fais mais moi ça marche

cyan iron
west needle
#

Merci pour ton Aide !

surreal sparrow
#

Salut dite moi j'ai fait ce code pour crée un channel envoyé un embed puis ajoute une react si c'est react et cocher alors le channel se sup ... mais cela fonctionne sauf que sa le fait instante donc je suppose que sa récup donc la react du bot quelqu'un serais m'aidé ? 😉

                        chan.send({ embeds: [embedFormation] }).then( message => {
                            message.react("🔓").then(msg => {
                            const filter = (reaction, user) => {
                                return reaction.emoji.name === '🔓' && user.id === message.author.id;
                            };
                            const collector = message.createReactionCollector({ filter });
                            collector.on('collect', (reaction, user) => {
                                message.guild.members.fetch(user.id).then(member => {
                                first.roles.remove(config.gradestaff);  
                                message.channel.delete()
                            });
                            });
                        });
hazy mirage
#

Oui c'est normal ton filter est pas bon

#

au lieu de js const filter = (reaction, user) => { return reaction.emoji.name === '🔓' && user.id === message.author.id; };fait

#
const filter = (reaction, user) => {
   return reaction.emoji.name === '🔓' && user.id !== message.author.id;
};```
surreal sparrow
#

Ok merci bien 😉

hazy mirage
#

Parce que la tu viens dire que tu veux seulement ceux de ton bot sinon

surreal sparrow
surreal sparrow
#

J'ai tente de faire un ```js
if(!member.id === second.id){

Pour comparé les 2 id et si le member.id n'est pas second.id alors faire un return sauf que cela ne fonctionne :/ J'aurais besoin de l'aide svp
slim anvil
#

Oui c'est normal, là tu compares pas réellement les 2

#

le fait de mettre ! devant ton object signifie que tu veux savoir si il existe ou non, donc il te renvoie un boolean

#

donc ca équivaut à faire
true === 'id_user'

#

si tu veux tester l'inégalité des 2

surreal sparrow
#

Ok merci tu gèrej'avais pas compris sa

keen narwhal
#

Bonjour,

j'ai sa comme erreur comment faire ?

hazy mirage
#

Tu dois avoir un message.edit qui essaye d’envoyer un embed quelque part

keen narwhal
#

y'a une façon de savoir ou ?

cyan iron
#

Donc tu peux en déduire d'où vient l'erreur

#

Malheureusement on ne connait pas ton code ni ton bot donc on ne peut pas t'aider

formal dagger
surreal sparrow
#

Salut, avec ce code la j'ai un missing permissions quelqu'un sait pourquoi ?


    if(message.content.startsWith(config.prefix + "christmas")){
        message.delete();
        let m = message.guild.members.cache.find(m => m.user.id == message.author.id);
        let xmasEmojis = ["🎄","🎅","⛄"];
        let lastXmasEmojis = ["🎄","🎅","❄️","🎁","⛄"];
        let rdmEmoji = xmasEmojis[randomNumber(0, xmasEmojis.length - 1)];
        let name = m.nickname ? m.nickname : m.user.username;
        lastXmasEmojis.forEach(le => {
            name = name.startsWith(le + " ") ? name.slice((le + " ").length) : name;
            m.edit({
                nick: `${rdmEmoji} ${name}`
            });
        });
    }
oak turret
#

c'est pas ton code le soucis, c'est juste que ton bot n'a pas la permission

surreal sparrow
oak turret
#

c'est normal il ne pourra pas

#

il ne peut pas modifier un membre au-dessus de lui, or l'owner c'est mort je crois bien

jolly sable
#

Exact, tout role au dessus de lui il ne peux pas modifier le pseudo n'y ajouté des roles au dessus de lui, meme en aillant les perms

keen narwhal
cyan iron
#

Et visiblement ça ne fonctionne pas, à toi de debug ton code

oak turret
robust jetty
#

petite question on est d'accord que dans la v13 le presence à été enlevé le problème c'est que soit disant il est dans le GuildMember mais il y a rien...
vous savez où je peux trouver le status d'un joueur dcp ?

#

avec discord.js biensur ^^

hazy mirage
#

Yo!

formal dagger
hazy mirage
#

Il me semble qu’il faut faire un fichier de déclaration genre index.d.ts pour que ton ide (ex vscode) puisse venir les trouver

formal dagger
#

hmhmhm, je vais regarder de ce coté, j'ai deja vu ce genre de fichier sans trop capté ce que c'etait

slim anvil
#

oui c'est ça
ca ressemble grosso merdo a ca

#
declare module 'discord-chat-exporter'
#

et fichier obligatoirement en d.ts

formal dagger
#

merci les filles

#

alors j'ai trouvé ca coté package.json => "typings": "src/index.ts" et ca m'apporte de la completion du coup

keen narwhal
#

bonsoir, je n'arrive pas à régler le problème, pouvez vous m'aider ?
merci 😉

keen narwhal
#

Bonsoir, j'ai une petit question, je voudrais récupérer des fichiers logs d'un data center et les envoyé dans un channels précis sur un serveur discord, croyait vous que cela est optimisé ? ou faudrais trouvé un autre moyen ?

neat lintel
#

Si les fichiers sont pas trop gros ça va, oublis juste pas la limite de taille de fichiers sur discord. Si c'est trop gros tu peux envoyer un lien de téléchargement à la place

keen narwhal
neat lintel
#

Tu as une option files dans la fonction send

#

Tu mets ton fichier dans un array

keen narwhal
#

Bah justement, j'essaye ça mais ça marche jamais, sois il trouve pas le fichier sois il le read pas

#

@neat lintel Ah enfaite j'ai trouvé, j'ai crée un fichier logs dans la racine de mon bot et j'ai fait un ./logs/rkhunter.txt

neat lintel
#

Il faut un array de File Options normalement. Tu y mets le nom et le file

keen narwhal
#

Les array en JS jamais utilisé c:

#

Uniquement en java

keen narwhal
neat lintel
#

Juste []

keen narwhal
#

Ouais mais faut un fs.readDir je suppose ? pour récupérer tout les nom

neat lintel
#

[{name:"nom", attachement: tonFichier}]

keen narwhal
# neat lintel Oui tu fais une boucle
function getAllLogsName(){
    const loadLogs = (client, dir = logsDir) => {
        fs.readdirSync(dir).forEach(dirs => {
          const logs = fs.readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".log"));
      
          for (const logs of logs) {
            const log = require(`../${dir}/${dirs}/${logs}`);
            const logName = event.split(".")[0];
            console.log("LogsName: " + logName);
          }
        }
    )
}

comme ça ?

#

Enfin pour get tout les nom

neat lintel
#

Faudrait push un array et le renvoyer car la tu lis les fichiers mais tu as aucun moyen d'y avoir accès

keen narwhal
#

Pas trop d'idée là :/

#

Faut que je les lise tous puis que je fasse genre maArray.push(name, files); ?

neat lintel
#

push prend que 1 paramètres pour push une valeur

keen narwhal
#

Donc ça sera tu un truc du genre :

maArray.push(name);
maArray.push(files);

?

neat lintel
#

Le mieux serait de push un Buffer comme ça c'sst prêt à être envoyé

keen narwhal
#

Jamais use de Buffer/Reader :/

neat lintel
neat lintel
keen narwhal
neat lintel
#

Oui voilà un exemple

keen narwhal
neat lintel
#

Il y a un exemple avec une string

keen narwhal
#
var buffer = Buffer.from("I'm a string!", "utf-8");
#

Comprend pas vraiment

#

AH

#

@neat lintel

from = Convertire un String à un Buffer

ToString = Convertire un Buffer en String

concat = Concatenation d'un buffer en une array

alloc = Crée un Buffer vide en lui donnant un nombre de byte

C'est tu good ?

neat lintel
#

Oui, from c'est pas que pour les strings mais sinon c'est ça.

keen narwhal
#

C'est complexe

neat lintel
#

De toute façon nous on a besoin que de Buffer.from(tonFichier, 'utf-8')

#

Et on envois ça à discord sous cette forme

keen narwhal
#

Je mais le Buffer.from directement dans le files: [] ?

neat lintel
#

Non tu mets un objet

keen narwhal
#

Je suis perdu

neat lintel
keen narwhal
#

Ok ok

#

3:03 am chez moi et je comprend plus rien xD

neat lintel
#

Ce que tu vas faire c'est dans ta boucle avec le require push un array comme ci dessus avec un nom et un fichier puis quand c'est fini tu l'envoie dans les options de la fonction send

keen narwhal
neat lintel
neat lintel
keen narwhal
#

ou juste logName?

neat lintel
#

Alors ça le buffer c'est que une partie de l'array

keen narwhal
neat lintel
#

Alors ça serait log à la place de name

keen narwhal
#

pas logName ?

neat lintel
#

logName tu vas le mettre à la place de "nom"

#

Et à la place de tonFichier tu vas mettre le buffer

keen narwhal
#
logsArray.push([{name:logName, attachement: Buffer.from(log, "utf8")}]);
#

Good ?

neat lintel
#

Presque

keen narwhal
#

oh

neat lintel
#

Enleves les []

#

Vu que c'est déjà un array on ajoute juste une valeur pas un sous-array

keen narwhal
#

Ok ok

neat lintel
#

Et je me suis trompé c'est pas attachement mais attachment

#

Sans le e

keen narwhal
#

Ok j'ai c'est modifié

#

Ensuite je dois faire quoi ?

#

Je call le getAllLogs avant de le message.channel.send ( embes: + files ) ?

neat lintel
#

Oui

#

({embeds:[tes embeds], files:[ta variable] })

keen narwhal
neat lintel
#

Faut déclarer logs = getAllLogs()

keen narwhal
#

Ok, et mettre logs dans le files je suppose ?

neat lintel
#

Oui

keen narwhal
neat lintel
#

Et dans la fonction je sais pas si tu l'as fais mais la première ligne doit être const logsArray=[]

#

Et ensuite tu peux tester

keen narwhal
#

@neat lintel Nope

neat lintel
#

Tu es en V12 ou V13 ?

keen narwhal
#

V13 si je ne dit pas de bêtise

#

"discord.js": "^13.3.1"

neat lintel
#

Envois un screen de la fonction stp

keen narwhal
#

getAllLogs ?

#

@neat lintel C'est tu good ça ?

neat lintel
#

Tu as mis const logs of logs

#

Faut un nom différent pour le premier

#

Ensuite tu as laissé le mot évent

slim anvil
#
  • ta fonction est jamais appelé (loadLogs) et tu return rien
keen narwhal
neat lintel
#

Renvois un screen pour voir stp

keen narwhal
#

3 sec ^^

neat lintel
#

Regardes le message de enzo

keen narwhal
#

Ouais je check ça en se moment

#

@neat lintel Du coup j'ai remove le loadLogs

function getAllLogs(){
    
    const logsArray = [];

        fs.readdirSync(logsDir).forEach(dirs => {
          const logs = fs.readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".log"));
      
          for (const forLogs of logs) {
            const log = require(`../${dir}/${dirs}/${forLogs}`);
            const logName = forLogs.split(".")[0];
            console.log("LogsName: " + logName);

            logsArray.push( {name:logName, attachment: Buffer.from(log, "utf-8")});
          }
        });
    }
neat lintel
#

Tu return toujours rien

keen narwhal
#

Je dois return le logsArray ?

neat lintel
#

Oui

keen narwhal
#

normalement c:

neat lintel
#

Vérifie le chemin aussi. A un endroit tu mets ../ et à un autre non

keen narwhal
#

Ouais j'ai check partout ^^ j'ai encore du mal avec les ./ ../ ../../

keen narwhal
neat lintel
#

Parce que tu essayes de lire des sous dossiers avec ta première fonction

#

Du coup si il y a dirrect les fichiers pas besoin de la 2eme partie

keen narwhal
#

le ${dirs}/ ?

neat lintel
#

Oui

keen narwhal
#

je le remove de partout ?

#

@neat lintel Error: Cannot find module './logs/rkhunter.log' pourquoi il existe :/

neat lintel
#

Envois le code

keen narwhal
#
function getAllLogs(){
    
    const logsArray = [];
    const dir = "./logs";

        fs.readdirSync('./logs').forEach(dirs => {
          const logs = fs.readdirSync(`${dir}`).filter(files => files.endsWith(".log"));
      
          for (const forLogs of logs) {
            const log = require(`${dir}/${forLogs}`);
            const logName = forLogs.split(".")[0];
            console.log("LogsName: " + logName);

            logsArray.push( {name:logName, attachment: Buffer.from(log, "utf-8")} );
            
            return logsArray;
          }
        }
    )}
neat lintel
#

Pourquoi lire 2 fois le dossier ? Ça sert à rien

keen narwhal
# neat lintel Pourquoi lire 2 fois le dossier ? Ça sert à rien

🤷‍♂️

function getAllLogs(){
    
    const logsArray = [];
    const dir = "./logs";


    const logs = fs.readdirSync(`${dir}`).filter(files => files.endsWith(".log"));
    
    for (const forLogs of logs) {
        const log = require(`${dir}/${forLogs}`);
        const logName = forLogs.split(".")[0];
        console.log("LogsName: " + logName);

        logsArray.push( {name:logName, attachment: Buffer.from(log, "utf-8")} );
            
        return logsArray;
      }
    }
#

@neat lintel Je vais aller me couché, bientôt 4:00am je reviendrais dessus à matin ou midi ça dépend quand je vais me levé

neat lintel
#

D'ac je regarderai de mon côté sur le PC ce sera mieux

neat lintel
#

Salut tous le monde, je suis sur une erreur que je comprends pas, enfin je la comprend mais je comprends pas a quoi elle est due :
Ce code fonctionne parfaitement

module.exports = (options = {}) => {
  return options.eventOptions?.description;
};

Et ce code non

// import
module.exports = (options = {}) => {
  return options.eventOptions?.description;
};

J'ai une erreur qui est SyntaxError: Invalid or unexpected token et ca me montre le caractère ?. (normalement c'est du a la version de node cette erreur mais pas ici). Donc en gros le problème ce produit dès que je mets le mot import dans le fichier. Que ce soit en commentaire (// et /*) ou dans une chaine de caractères. Et ce bug ne ce produit que quand le caractère ?. est présent dans le fichier (de facon utile dans le code cette fois). Si quelqu'un a une piste je suis preneur car ca fait quelques jours que je bloque la dessus

slim anvil
#

A tout les coups c’est une mauvaise interprétation du code, ou il doit croire que tu cherches à import un module ou autre

neat lintel
#

mais en fait ca fait ca que dans le code du projet

#

si je mets ca dans un fichier js a part ca marche

slim anvil
#

peut être rien à voir, mais tu es en CJS ou en ESM ?

neat lintel
#

en cjs

slim anvil
#

je pense vraiment qu’il supporte juste pas le mot clé import, les 2 ne sont pas compatible
Après oui ce qui est bizarre c’est que dans un fichier neutre js le commentaire fonctionne

#

Si tu déplaces ton commentaire pour le mettre dans ton module.exports, avant le return, ça fonctionne ?

neat lintel
#

je vais tester

#

non ca fonctionne pas

slim anvil
#

et si tu le remet mais tu changes import par autre chose c’est ok ?

neat lintel
#

oui

#

pareil si je fais ```js
module.exports = (options) => {
return import ${options.eventOptions?.description};
};

ca marche pas non plus
slim anvil
#

le seul truc possible que je vois c’est que le import est un mot clé pour l’ESM

#

Pour voir si tu test de foutre export à la@place

#

Car c’est aussi un mot clé ESM

#

Est ce que ça plante aussi ?

neat lintel
#

oui

slim anvil
#

je pense que le soucis est juste la

neat lintel
#

Mais le truc c'est que le code a pas a etre interprété normalement, c'est une chaine de caractères ou un commentaire

slim anvil
#

Le seul truc que je comprend pas c’est qu’il est en commentaire ou en string

#

oui voilà

neat lintel
#

et ca plante que avec la syntaxe du chainage optionel

slim anvil
#

si tu enlèves l’optional chained le commentaire passe ?

neat lintel
#

oui sans ca ca marche parfaitement

slim anvil
#

Hmm okay attend je vais essayer de demander à d’autres gens pour voir

neat lintel
#

D'ac merci

keen narwhal
#

Ou de l’aide à me fournir

neat lintel
#

un member peut ne pas avoir de présence. Tu peux mettre un opérateur ?. (optional chaining) puis un || pour mettre une valeur par défaut dans le field si le membre a pas de présence

#

si le membre a normalement une présence il faudra alors le fetch avec l'option withPresence: true

keen narwhal
neat lintel
#

un membre a pas forcément de présence pour plein de raisons possibles par exemple si il est pas en ligne, si tu as pas certaines intents, si tu as pas fetch le membre avec certaines options etc etc

keen narwhal
#

Hun, oki

#

Et du coup, pour régler, je doit changer le code, mais comment

#

🥲

neat lintel
#

Donc tu peux pour éviter l'erreur utiliser l'opérateur ?. qui permet de ne pas faire d'erreur si ton objet n'a pas une key. Mais la le problème c'est que si le membre a pas de présence ca va donner la valeur undefined a ton field et c'est pas possible d'avoir un field vide. Du coup faudrait mettre une valeur par exemple "Sans status". Ca c'est l'option 1. L'option 2 c'est de faire une condition pour vérifier si le membre a bien une présence avant d'ajouter le field correspondant.

keen narwhal
#

Merci, je pense pas réussir à changer le code, mais merci 🥲

neat lintel
#

essayes de tenter un truc au moins et meme si tu as une erreur c'est pas grave tu enverras le code sur le serveur et on la résoudra

smoky vigil
#

(prévenez moi si je suis pas sur le bon channel) heyy je cherche a faire des sortes de mini jeux a faire avec son bot discord comme un pile ou face ou un pendu sauf que j'ai rien trouvé sur internet a ce propos...
Si vous avez des idées de comment faire, je suis là !

oak turret
#

c'est assez simple pour le coup

dire latch
#

Hey

#

Si ta rien trouver sur internet, c'est que tu ne sais pas faire de recherche 🤔

oak turret
#

pour le pile ou face c'est assez simple, 2 joueurs, un choix chacun, celui qui commence à 2 choix l'autre à 1 choix logique, et après tu fais un math.random() etc sur ta table qui contient "pile", et "face", et en fonction de ce qui sort tu check celui qui a mit la bonne réponse et voilà

#

j'ai d'ailleurs fais des recherches il y en a des multitudes

#

sinon tu as simple-discordjs je crois qui propose pas mal de mini-jeux

dire latch
#

Mensonge en vu 👀

oak turret
dire latch
#

Il a fait 0 recherches 😂

oak turret
#

lui ?

dire latch
#

Oui

oak turret
#

ça se voit oui mmLul

sharp grail
#

Hey, petite question 🤔
Vous pensez que pour avoir des propriétés / méthodes personnalisés dans les class de discord js par exemple, le mieux c'est : créer sa propre classe custom, modifier directement dans les fichiers du module, ou juste utiliser des fonctions 🤔

oak turret
#

j'y vois pas trop l'intérêt perso, autant utiliser les fonctions dispos

slim anvil
#

Le mieux c’est de créer une class qui extends ou non une de discord.js

#

Modifie surtout pas les fichiers sources, sinon à la moindre mise à jour t’es cuis

sharp grail
#

ah ouais j'avais pas pensé à ça mdr

#

mais du coup niveau opti tu perds pas en créant une custom class ?

slim anvil
#

Non, soit tu fais ça sois tu créer des functions utils, tout dépend ce que tu cherches à faire

sharp grail
#

🤔

#

je vois, merci 👀

keen narwhal
#
function getAllLogs(){
    
    const logsArray = [];
    const dir = "./logs";


    const logs = fs.readdirSync(`${dir}`).filter(files => files.endsWith(".log"));
    
    for (const forLogs of logs) {
        const log = require(`${dir}/${forLogs}`);
        const logName = forLogs.split(".")[0];
        console.log("LogsName: " + logName);

        logsArray.push( {name:logName, attachment: Buffer.from(log, "utf-8")} );
            
        return logsArray;
      }
    }

Bonjour, je reposte mon problème que j'avais eu hier à 3:00am ^^

Error: Cannot find module './logs/rkhunter.log'

cyan iron
#

Ton fichier rkhunter.log n'existe pas dans l'emplacement où tu le cherches

#

Il faudrait que tu nous montre ton arborescence

keen narwhal
#

Pourtant il existe

cyan iron
#

logs.js c'est le fichier dans lequel il y a ta fonction ?

keen narwhal
#

Car quand je send un files avec message.channel.send je de devais faire ./logs/rkhunter.log

#

Donc bon :/

keen narwhal
#

C'est ma commande avec la function

cyan iron
#

../logs/rkhunter.log

#

Si je dis pas de conneries ça devrait fonctionner Thonk

keen narwhal
#

On va try ^^

sharp grail
cyan iron
#

On va bien voir kapp

keen narwhal
#

Error: ENOENT: no such file or directory, scandir '../logs'

cyan iron
#

Montre toute l'erreur stp

#

Normalement ça te dit où tu cherches

keen narwhal
#

Error: ENOENT: no such file or directory, scandir '../../logs'
at Object.readdirSync (node:fs:1390:3)
at getAllLogs (C:\Users\KeySex\Desktop\JSSexyWorkpsace[DiscordBot]\LogsBotVPS\commands\Admin\logs.js:44:21)
at Object.module.exports.run (C:\Users\KeySex\Desktop\JSSexyWorkpsace[DiscordBot]\LogsBotVPS\commands\Admin\logs.js:18:26)
at module.exports (C:\Users\KeySex\Desktop\JSSexyWorkpsace[DiscordBot]\LogsBotVPS\events\client\message.js:28:11)
at Client.emit (node:events:390:28)
at MessageCreateAction.handle (C:\Users\KeySex\Desktop\JSSexyWorkpsace[DiscordBot]\LogsBotVPS\node_modules\discord.js\src\client\actions\MessageCreate.js:33:18)
at Object.module.exports [as MESSAGE_CREATE] (C:\Users\KeySex\Desktop\JSSexyWorkpsace[DiscordBot]\LogsBotVPS\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:\Users\KeySex\Desktop\JSSexyWorkpsace[DiscordBot]\LogsBotVPS\node_modules\discord.js\src\client\websocket\WebSocketManager.js:350:31)
at WebSocketShard.onPacket (C:\Users\KeySex\Desktop\JSSexyWorkpsace[DiscordBot]\LogsBotVPS\node_modules\discord.js\src\client\websocket\WebSocketShard.js:443:22)
at WebSocketShard.onMessage (C:\Users\KeySex\Desktop\JSSexyWorkpsace[DiscordBot]\LogsBotVPS\node_modules\discord.js\src\client\websocket\WebSocketShard.js:300:10) {
errno: -4058,
syscall: 'scandir',
code: 'ENOENT',
path: '../../logs'
}

Même error avec ../logs et ../../logs

sharp grail
keen narwhal
sharp grail
#

Non elle est très bien

#

Ton fs marche bien

#

C'est dans ton require que tu dois modifier

keen narwhal
#

Alors déjà on es good mais il y à un problème c:

cyan iron
#

Ah oui effectivement il a raison pour le coup ça marchais

#

C'est dans ton fichier log ça

keen narwhal
keen narwhal
cyan iron
#

Tu fais quoi exactement ?

keen narwhal
#

Côté commande ou function ?

cyan iron
#

Bah c'est quoi ça " DEBUG 1 DEBUG 2 DEBUG 3 "

keen narwhal
#

C'est juste du text comme ça que j'ai mit

#

Mais enfaite il n'aime pas les Integer :/

#

Et les string . . .

cyan iron
#

Je peux vraiment pas t'aider pour le coup je connais pas les fichiers .log

keen narwhal
cyan iron
#

Essaye de mettre Log: Test

keen narwhal
#

Où ?

cyan iron
#

Dans ton fichier log

keen narwhal
#

Je dois changé à qu'elle endroit ?

cyan iron
#

Bref je suis désolé je peux pas t'aider sur ça

keen narwhal
mystic bison
#

bonjour tout le monde

#

je suis en train de faire du back end avec js

#

et j'ai cette erreur dans postman

#
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>Error</title>
</head>

<body>
    <pre>MulterError: Unexpected file field<br> &nbsp; &nbsp;at fileFilter (C:\Users\melvi\Desktop\f1-twitter\node_modules\multer\lib\file-filter.js:16:13)<br> &nbsp; &nbsp;at Busboy.&lt;anonymous&gt; (C:\Users\melvi\Desktop\f1-twitter\node_modules\multer\lib\read-body.js:65:9)<br> &nbsp; &nbsp;at Busboy.emit (node:events:394:28)<br> &nbsp; &nbsp;at Busboy.emit (C:\Users\melvi\Desktop\f1-twitter\node_modules\busboy\lib\main.js:37:33)<br> &nbsp; &nbsp;at PartStream.&lt;anonymous&gt; (C:\Users\melvi\Desktop\f1-twitter\node_modules\busboy\lib\types\multipart.js:214:13)<br> &nbsp; &nbsp;at PartStream.emit (node:events:394:28)<br> &nbsp; &nbsp;at HeaderParser.&lt;anonymous&gt; (C:\Users\melvi\Desktop\f1-twitter\node_modules\dicer\lib\Dicer.js:50:16)<br> &nbsp; &nbsp;at HeaderParser.emit (node:events:394:28)<br> &nbsp; &nbsp;at HeaderParser._finish (C:\Users\melvi\Desktop\f1-twitter\node_modules\dicer\lib\HeaderParser.js:68:8)<br> &nbsp; &nbsp;at SBMH.&lt;anonymous&gt; (C:\Users\melvi\Desktop\f1-twitter\node_modules\dicer\lib\HeaderParser.js:40:12)</pre>
</body>

</html>```
#

voila l'erreur dans Vs code

#
PS C:\Users\melvi\Desktop\f1-twitter> node server
Listening on port 5000
connected to MongoDB
MulterError: Unexpected file field
    at fileFilter (C:\Users\melvi\Desktop\f1-twitter\node_modules\multer\lib\file-filter.js:16:13)
    at Busboy.<anonymous> (C:\Users\melvi\Desktop\f1-twitter\node_modules\multer\lib\read-body.js:65:9)
    at Busboy.emit (node:events:394:28)
    at Busboy.emit (C:\Users\melvi\Desktop\f1-twitter\node_modules\busboy\lib\main.js:37:33)
    at PartStream.<anonymous> (C:\Users\melvi\Desktop\f1-twitter\node_modules\busboy\lib\types\multipart.js:214:13)
    at PartStream.emit (node:events:394:28)
    at HeaderParser.<anonymous> (C:\Users\melvi\Desktop\f1-twitter\node_modules\dicer\lib\Dicer.js:50:16)
    at HeaderParser.emit (node:events:394:28)
    at HeaderParser._finish (C:\Users\melvi\Desktop\f1-twitter\node_modules\dicer\lib\HeaderParser.js:68:8)
    at SBM```
#
const UserModel = require("../models/user.model");
const fs = require("fs");
const { promisify } = require("util");
const pipeline = promisify(require("stream").pipeline);
const { uploadErrors } = require("../utils/errors.utils");

module.exports.uploadProfil = async (req, res) => {
  try {
    if (
      req.file.detectedMimeType !== "image/jpg" &&
      req.file.detectedMimeType != "image/png" &&
      req.file.detectedMimeType != "image/jpeg"
    )
      throw Error("invalid file");

    if (req.file.size > 500000) throw Error("max size");
  } catch (err) {
    const errors = uploadErrors(err);
    return res.status(201).json({ errors });
  }
  const fileName = req.body.name + ".jpg";

  await pipeline(
    req.file.stream,
    fs.createWriteStream(
      `${__dirname}/../client/public/uploads/profil/${fileName}`
    )
  ).clone();

  try {
    await UserModel.findByIdAndUpdate(
      req.body.userId,
      { $set : {picture: "./uploads/profil/" + fileName}},
      { new: true, upsert: true, setDefaultsOnInsert: true},
      (err, docs) => {
        if (!err) return res.send(docs);
        else return res.status(500).send({ message: err });
      }
    );
  } catch (err) {
    return res.status(500).send({ message: err });
  }
};```
mystic bison
#

quelqu'un pourrais m'aider svp

thin jasper
#

Bonjouur, je vous explique mon soucis, j'utilise l'api pronote de dorian-eydoux et je souhaiterais récupérer la note la plus récente

#

Mais j'y arrive pas du tout j'ai réussi à récupérer les évaluations de toutes les manière et leur date sauf que la gueule de la date c'est ça

#

Je suis à ça 🤏 de faire ça joygun

slim anvil
#

Oui c'est le format d'une Date

#

rien d'anormal jusque là

thin jasper
slim anvil
#

tu peux les sort

thin jasper
#

Je peux les sort genre en mode a.date - b.date ça fonctionnera ? Parce que la dans ma tête je vais soustraire Vendredi à Jeudi x)

#

ah oui ça fonctionne merci @slim anvil ❤️

slim anvil
mystic bison
slim anvil
#

le dernier log qui passe, ce sera juste après que ca pète, ca va permettre de bien cibler directement le problème

mystic bison
#

c'est fait

#

est j'ai rien dans mon terminale

#
const UserModel = require("../models/user.model");
const fs = require("fs");
const { promisify } = require("util");
const pipeline = promisify(require("stream").pipeline);
const { uploadErrors } = require("../utils/errors.utils");

module.exports.uploadProfil = async (req, res) => {
  try {
    if (
      req.file.detectedMimeType != "image/jpg" &&
      req.file.detectedMimeType != "image/png" &&
      req.file.detectedMimeType != "image/jpeg"
    )
      throw Error("invalid file");

    if (req.file.size > 500000) throw Error("max size");
  } catch (err) {
    console.log("1");
    const errors = uploadErrors(err);
    return res.status(201).json({ errors });
  }
  const fileName = req.body.name + ".jpg";

  await pipeline(
    req.file.stream,
    fs.createWriteStream(
      `${__dirname}/../client/public/uploads/profil/${fileName}`
    )
  ); 

};
#

voila mon fichier

slim anvil
#

@frank sparrow tu peux me dire qui a pub stp ? :D

#

il vient d'envoyer le msg ici

slim anvil
mystic bison
#

tu veux que je met un console.log ou ?

slim anvil
#

avant ton try catch par exemple

mystic bison
#

console.log(err)
  try {
    if (
      req.file.detectedMimeType != "image/jpg" &&
      req.file.detectedMimeType != "image/png" &&
      req.file.detectedMimeType != "image/jpeg"
    )
      throw Error("invalid file");

    if (req.file.size > 500000) throw Error("max size");```
#

ici par exemple

slim anvil
#

Non avant ton try catch

mystic bison
#

donc tout au debut de mon fichier ?

slim anvil
#

Oui avant ton try catch quoi

mystic bison
#

j'ai pas d'erreur qui en ai ressorti

slim anvil
#

mais

#

Non là tu log un truc qui n'"xiste pas

#

relis ce que je t'ai demandé

mystic bison
#

je ne comment prend pas beaucoup ce que tu me dis

slim anvil
#

Avant ton try catch ajoute un console.log(req.file)

mystic bison
#

ok

#
module.exports.uploadProfil = async (req, res) => {
  console.log(req.file)
  try {
    if (
      req.file.detectedMimeType != "image/jpg" &&
      req.file.detectedMimeType != "image/png" &&
      req.file.detectedMimeType != "image/jpeg"
    )
      throw Error("invalid file");

    if (req.file.size > 500000) throw Error("max size");
  } catch (err) {
    console.log("1");
    const errors = uploadErrors(err);
    return res.status(201).json({ errors });
  }
  const fileName = req.body.name + ".jpg";

  await pipeline(
    req.file.stream,
    fs.createWriteStream(
      `${__dirname}/../client/public/uploads/profil/${fileName}`
    )
  ); 

};
#

voila comme ça, mais j'ai rien dans mon terminale

slim anvil
#

tu essayes de faire un upload ?

#

il sera appelé que lorsque tu appelleras ta function uploadProfil ^^

mystic bison
#

oui

#

voila mon post man

slim anvil
#

et tu as toujours ton erreur on est ok ?

#

juste pour etre sur
console.log('req file => ', req.file)

#

si il t'affiche rien après req.file c'est qu'il recoit pas ton file

#

donc es conditions req.file.detected etc.. ne peuvent pas fonctionner

mystic bison
#
const UserModel = require("../models/user.model");
const fs = require("fs");
const { promisify } = require("util");
const pipeline = promisify(require("stream").pipeline);
const { uploadErrors } = require("../utils/errors.utils");

module.exports.uploadProfil = async (req, res) => {
  console.log(req.file.mimeType)
  try {
    if (
      req.file.mimetype != "image/jpg" &&
      req.file.mimetype != "image/png" &&
      req.file.mimetype != "image/jpeg"
    )
      throw Error("invalid file");

    if (req.file.size > 500000) throw Error("max size");
  } catch (err) {
    console.log("1");
    const errors = uploadErrors(err);
    return res.status(201).json({ errors });
  }
  const fileName = req.body.name + ".pnj";

  await pipeline(
    req.file.stream,
    fs.createWriteStream(
      `${__dirname}/../client/public/uploads/profil/${fileName}`
    )
  ); 

};
#

mais j'en ai une nouvelle

#
    ErrorCaptureStackTrace(err);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "source" argument must be of type function or an instance of Stream, Iterable, or AsyncIterable. Received undefined
    at new NodeError (node:internal/errors:371:5)
    at pipeline (node:internal/streams/pipeline:222:15)
    at node:stream/promises:35:18
    at new Promise (<anonymous>)
    at pipeline (node:stream/promises:25:10)
    at module.exports.uploadProfil (C:\Users\melvi\Desktop\f1-twitter\controllers\upload.controller.js:25:9)
    at Layer.handle [as handle_request] (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\router\route.js:137:13)
    at Array.<anonymous> (C:\Users\melvi\Desktop\f1-twitter\node_modules\multer\lib\make-middleware.js:53:37)
    at listener (C:\Users\melvi\Desktop\f1-twitter\node_modules\on-finished\index.js:169:15) {
  code: 'ERR_INVALID_ARG_TYPE'
}
PS C:\Users\melvi\Desktop\f1-twitter> node server
Listening on port 5000
connected to MongoDB
#

@neat lintel

neat lintel
#

c'est quoi le fichier upload.controller ?

mystic bison
#

@neat lintel

neat lintel
#

Essayes de log ton paramètre

#

Tu verras bien ce que req.file.stream contient

mystic bison
#

il contient rien

neat lintel
#

voila le problème du coup

mystic bison
#

je sais pas comment faire du coup

neat lintel
#

tu veux faire quoi avec cette ligne ?

mystic bison
#

c'est pour ranger une image

neat lintel
#

mets la dirrectement au bon endroit avec multer

mystic bison
#

c'est a dire

#

c'est pas ce que je fais avec js `${__dirname}/../client/public/uploads/profil/${fileName}

neat lintel
#

bah quand elle est upload avec multer tu peux choisir l'emplacement

#

avec la key destination dans diskStorage

mystic bison
#

ok

#

je sais pas trop comment faire

random pewter
#

Salut j'ai un truc a faire en js pour demain mais je ne troue aucune solutions, pour pas polluer le channel avec mon code, si des gens callé peuvent m'aider en DM je veux bien, l'exo est pas compliqué mais je bloque, dans l'idée il faut récupérer la valeur d'un input pour ensuite créer une card et l'afficher (je suis peu être pas trop clair)

slim anvil
#

Hello @random pewter je t'invite a poser ton problème ici, c'est le but, donc tu ne pollueras pas le channel

#

Montre ce que tu as déjà

random pewter
#
const articlesList = [
    {
        title: "Title 1",
        content: "Lorem 1",
        imageSrc: "https://via.placeholder.com/200"
    },
    {
        title: "Title 2",
        content: "Lorem 2",
        imageSrc: "https://via.placeholder.com/200"
    },
    {
        title: "Title 3",
        content: "Lorem 3",
        imageSrc: "https://via.placeholder.com/200"
    },
]

articlesList.forEach(element => {    
    let cardTitle = document.createElement('h5')
    cardTitle.textContent = element.title
    cardTitle.classList.add('card-title')
    console.log("cardTitle : ", cardTitle)

    const col3 = document.createElement('div')
    col3.classList.add('col-md-3')
    
    const row = document.querySelector('.row')

    row.append(col3)
    col3.append(cardTitle)


    
});

function  createCard(title, content, img) {
    // complete function to add card
}

// On submit
    // récupérer la value de l'input title
    // récupérer la value de l'input content
    // createCard(userTitleFormValue, userContentFormValue)

let form = document.querySelector('form')

form.addEventListener('submit', function(event){
    event.preventDefault()
    console.log('submit')
    const userTitleFormValue = document.querySelector('#title').value

    console.log(userTitleFormValue)


})

#
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</head>
<body>
    
    <form>
        <input type="text" id="title">
        <textarea id="content" cols="30" rows="10"></textarea>
        <input type="submit">
    </form>

    <div class="container">
        <div class="row">
            <div class="col-md-3">
                <div class="card mt-5">
                    <img src="https://via.placeholder.com/200" class="card-img-top" alt="">
                    <div class="card-content">
                        <h5 class="card-title">Lorem ipsum dolor sit.</h5>
                        <p class="card-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolore tempora inventore tenetur natus totam! Voluptate, excepturi hic dolorum enim dignissimos soluta quos ea mollitia cum optio aliquam ut explicabo architecto.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script defer src="script.js"></script>
</body>
</html>```
#

La consigne est dans le JS si jamais

#

je la remet la :

// On submit
// récupérer la value de l'input title
// récupérer la value de l'input content
// createCard(userTitleFormValue, userContentFormValue)

slim anvil
#

Okay actuellement lors du submit tu as bien en log ton title que tu as renseigné ?

random pewter
#

Yes

#

ça s'affiche

slim anvil
#

Okay alors tu vas venir faire la même chose pour le content en premier temps

#

le log, et me dire si c'est ok (logiquement oui)

#

Ensuite, la seconde étape ça va etre de créer tes éléments que tu as déjà dans ton tableau dans ton DOM

#

(via la function createElement)

#
function createdCard({ title, content }) {
   const column = document.createElement('div')
   column.classList.add('col-md-3')
   const card = document.createElement('div')
   card.classList.add('card mt-5')

   const image = document.createElement('img')
   image.setAttribute('src', 'url')

   // faire la suite
}
articlesList.forEach(article => createCard(element))
#

je te laisse faire la suite, tu as le début

random pewter
#

Ok merci beaucoup déja ça m'avance pas mal

slim anvil
#

et donc du coup donc ta fonction submit, tu vas venir push tes nouvelles informations dedans, et aussi appelé ta function createdCard avec le nouvel item

#

tips =>

//in submit
const newArticle = { title: userTitleFormValue, content: xxxxx }
articlesList.push(newArticle)
createdCard(newArticle)
opal mantle
#

J'essaye d'apprendre à faire des bots discord le problème c'est que j'ai aucune compétence alors j'aurai besoin d'une aide :)

slim anvil
#

dis nous ton problème pour commencer

opal mantle
#

Enfaite j'avais pas vu mais sur votre dite il y a un tutoriel et je pense que je vais m'en servir car faire seul sans pas grand chose c'est pas simple, désolé du dérangement

slim anvil
#

pas de soucis!

opal mantle
#

Nouveau problème mon bot ne s'allume pas et c'est embêtant pour faire des tests donc si besoin d'infos à donner pour réglé mon problème

dire latch
#

Logs @opal mantle 🤔

opal mantle
#

Genre le message d'erreur dans le terminal

#

j'utilise VS code

dire latch
#

Oui

#

Envoi

#

On peut pas t'aider si on as pas les erreurs 🙂

opal mantle
#
C:\Users\louis\Desktop\Dev>node index.js
node:internal/modules/cjs/loader:936
 
throw err;
  ^

Error: Cannot find module '.../commandes/kick'
Require stack:
- C:\Users\louis\Desktop\Dev\index.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (C:\Users\louis\Desktop\Dev\index.js:29:14)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)  
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ 'C:\\Users\\louis\\Desktop\\Dev\\index.js' ]
}
dire latch
#

Il trouve pas ton fichier kick.js

#

Et, c'est ../commandes/kick

#

Pas ...

#

🙂

opal mantle
#

ahhhhh

#

oki merci

#

je vais test

#

C'est le seul soucis ?

dire latch
#

Le soucis vient de là 🙂

opal mantle
#

Pourtant quand j'essaye de lancer mon bot il y a encore un message d'erreur

dire latch
#

Lequel ?

opal mantle
#
C:\Users\louis\Desktop\Dev>node index.js
node:internal/modules/cjs/loader:936
  throw err;
05:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (C:\Users\louis\Desktop\Dev\index.js:29:14)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ 'C:\\Users\\louis\\Desktop\\Dev\\index.js' ]
}
dire latch
#

Tu as que sa en erreur ? 🤔

opal mantle
#

oui

dire latch
#

Hmm, l'erreur dit qu'il te manque un module, donc bizarre

opal mantle
#

Y'a la phrase en haut ou j'allume le bot

#

oula

keen narwhal
#

Bonjour, j'ai se problème de permission savez vous comment le régler ?

C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\PermissionOverwrites.js:184
    if (!userOrRole) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');
                           ^

TypeError [INVALID_TYPE]: Supplied parameter is not a User nor a Role.
    at Function.resolve (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\PermissionOverwrites.js:184:28)
    at C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:318:87
    at Array.map (<anonymous>)
    at TextChannel.edit (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:318:57)
    at InteractionCollector.<anonymous> (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\events\interactionCreate.js:196:16)
    at InteractionCollector.emit (node:events:402:35)
    at InteractionCollector.handleCollect (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\interfaces\Collector.js:108:12)
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {
  [Symbol(code)]: 'INVALID_TYPE'
}
keen narwhal
#

B

ashen rapids
neat lintel
opal mantle
#

D’accord

#

Comment est ce qu’on fait ?

#

Car je pense pas m’être tromper pour choisir le dossier

neat lintel
#

Tu utilises la commande cd pour te déplacer.

#

Si ton dossier est dans un sous-dossiers comme src par exemple alors tu peux aussi faire node src/index

opal harness
#

Salut,
J'ai un problème quand je veux add un role à un mec dans un bot.on('messageReactionAdd', async (reaction, member) => {
Voici le code :

    if(reaction.partial){
        await reaction.fetch();
        console.log(`Le message avec l'id : ${reaction.message.id} à bien été restocké dans le cache !`);
        return;
    }
    if(member.bot) return;
    if(reaction.message.id == bdd["notification"]["message"]){
        if(reaction.emoji.name == "📢" || reaction.emoji.name == "🎉" || reaction.emoji.name == "🗃"){
            if(!bdd["notification"]["annonces"][member.id] && !bdd["notification"]["giveaway"][member.id] && !bdd["notification"]["creation"][member.id]){
                member.roles.add('876082446351876197');
            }
        }else{
            reaction.users.remove(member.id)
        }
    }
})```
#

Voici l'error :

    at Client.<anonymous> (c:\Users\sandr\Desktop\Bot Discord\index.js:268:30)
    at Client.emit (events.js:388:22)
    at MessageReactionAdd.handle (c:\Users\sandr\Desktop\Bot Discord\node_modules\discord.js\src\client\actions\MessageReactionAdd.js:49:17)
    at Object.module.exports [as MESSAGE_REACTION_ADD] (c:\Users\sandr\Desktop\Bot Discord\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_REACTION_ADD.js:4:37)
    at WebSocketManager.handlePacket (c:\Users\sandr\Desktop\Bot Discord\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (c:\Users\sandr\Desktop\Bot Discord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (c:\Users\sandr\Desktop\Bot Discord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (c:\Users\sandr\Desktop\Bot Discord\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (events.js:376:20)
    at Receiver.receiverOnMessage (c:\Users\sandr\Desktop\Bot Discord\node_modules\ws\lib\websocket.js:845:20)
(Use `node --trace-warnings ...` to show where the warning was created)
keen narwhal
sharp grail
#

le problème vient du fait que l'event messageReactionAdd renvoie un user

#

et non un member d'une guild

#

donc tu peux rajouter par exemple, member = await reaction.message.guild.members.fetch(member.id);

keen narwhal
#

Salut est ce que quelqu'un peut aller sur ce site et me dire si les animations ont été fait en javascript https://prashantsani.com

Front-End Developer, Mumbai India. www.prashantsani.com.

Prashant Sani, a award winning Front-end Web Developer specialising in Responsive Websites using HTML5, CSS3, SVG, Creative JavaScript, Progressive Enhancement

#

Les sorte de formes 3D qui bougent

floral bolt
#

Salut quelqu'un qui pourrait m'expliquer comment utiliser les contexct dans react ?

floral bolt
keen narwhal
#

Un peu ?

#

Juste un peu ?

floral bolt
#

Non je pense qu'il y en a beaucoup

keen narwhal
#

Ah oui je me disais aussi 😅

#

Merci pour la réponse en tout cas

keen narwhal
#

@ashen rapids mais il faut que je montre quel code plus précisément

#

C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\PermissionOverwrites.js:184
if (!userOrRole) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');
^

TypeError [INVALID_TYPE]: Supplied parameter is not a User nor a Role.
at Function.resolve (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\PermissionOverwrites.js:184:28)
at C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:318:87
at Array.map (<anonymous>)
at TextChannel.edit (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:318:57)
at InteractionCollector.<anonymous> (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\events\interactionCreate.js:196:16)
at InteractionCollector.emit (node:events:402:35)
at InteractionCollector.handleCollect (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\interfaces\Collector.js:108:12)
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
[Symbol(code)]: 'INVALID_TYPE'
}

ashen rapids
#

Le code qui génère cette erreur

keen narwhal
opal harness
#

Salut,
Comment je peux faire pour faire jouer un fichier mp3 à mon bot sans rien npm

timid loom
# opal harness Salut, Comment je peux faire pour faire jouer un fichier mp3 à mon bot sans rien...
Discord Developer Portal

Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.

Discord Developer Portal

Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.

#

globalement c'est basé sur opus de mémoire donc à moins de refaire le code toi-même tu vas devoir télécharger une lib, auquel cas autant direct prendre celles dispos sur npm parce que ça sera plus facile à intégrer

#

si tu ne sais pas établir de connexion rtp / websockets c'est pas la peine de tenter, tu vas devoir apprendre ça avant

shut cave
#

Bonjour a tous je suis actuellement en train de créer un plugin de menu (Minecraft) et j'ai cette erreur qui viens (c'est la première fois que ça m'arrive) j'ai essayer de créer d'autre projet mais cela persiste toujours avec n'importe quelle projet. Je suis sur Eclipse. Voila j'attend vos réponses avec impatiente.

#

Cette erreur est dans le plugin.yml

#

Et du coup quand j'export mon plugin ça me sort un "fichier 5" :/

slim anvil
# shut cave Bonjour a tous je suis actuellement en train de créer un plugin de menu (Minecra...
shut cave
#

mmmh j'ai essayer de changer le JDK mais ca me sort toujour pas le plugin en .jar

shut cave
#

je suis le seul a qui ça arrive ici ?

keen narwhal
#

#java-jvm @shut cave

sharp grail
#

Hello, je rencontre un problème avec @discordjs/voice 🤔 je ne sais pas si quelqu'un s'y connait
(je précise que j'ai suivi un tuto)
J'ai l'impression qu'une partie du code n'est pas exécuté (raison pour laquelle le bot ne renvoie aucun son)

client.on('ready', async client () => {
  // some code 
  function joinChannel(id) {
        client.channels.fetch(id).then(c => {
            const voiceConnection = joinVoiceChannel({
                channelId: id,
                guildId: c.guild.id,
                adapterCreator: c.guild.voiceAdapterCreator
            });
            console.log("ok")
            // return ok en console
            const ressource = createAudioResource(ytdl("lien", {
                quality: "highestaudio"
            }), {
                inlineVolume: true
            });
            console.log("ok2")
            // ne return rien, 
            ressource.volume.setVolume(0.2);

            const player = createAudioPlayer();

            voiceConnection.subscribe(player);

            player.play(ressource);

            player.on("idle", () => {
                try {
                    player.stop();
                } catch(error) {}
                try {
                    voiceConnection.destroy()
                } catch (error) {}
                joinChannel(c.id)
            })
                
            

        }).catch(e => console.log(e));

    }

    joinChannel("902476892358197278")
})
sharp grail
#

il bloque complètement sur le ytdl j'ai l'impression 🤔

clear torrent
#

Salut qui est fort en dev svp ou est l'erreur svp

#

PS : Aidé d'un tuto de base

#

Si quelqu'un peut vite m'aider

neat lintel
#

console.log

#

Il y a pas de s

clear torrent
#

Nickel merci !

#

Erreur bête de ma part je viens de commencer le JavaScript

clear torrent
#

Il veut pas relancer le bot normal ?

#

Help me

oak turret
#

relis toi, et regarde bien un tuto ^^

#

"vite svp" c'est en trop

clear torrent
#

De quoi ?

neat lintel
#
  1. Il faut des intents
  2. Discord.message.content ca existe pas
  3. C'est pas l'évent ready
#

et sans l'erreur ca sert a rien

oak turret
clear torrent
#

Oui mdr je viens de commencer le JavaScript et en général le code

#

Désolé

oak turret
#

useless de copier coller

neat lintel
#

apprends le js avant de faire un bot

oak turret
#

apprends petit à petit

#

sinon t'avanceras jamais

clear torrent
#

Je voulais faire le bot Protect de mon serveur :(

neat lintel
#

pas besoins d'etre un expert en js pour faire un bot mais au moins connaitre les bases pour comprendre ce que on écrit

oak turret
#

on court pas avant de savoir marcher

clear torrent
#

:(

oak turret
#

Sinon c'est très simple, on t'aide et 10 minutes plus tard tu vas revenir dire "vite svp" sans comprendre ton erreur ni la solution, ça sert à rien

#

donc apprends le js, et quand t'auras des bases plus ou moins solides tu pourras commencer à faire un bot

alpine cipher
#

Salut je cherche qql qui sais java script je le renumere c’est pour un projet me mp

keen narwhal
clear torrent
keen narwhal
#

ça dépend, t'en es à ou dans ton apprentissage la ?

clear torrent
keen narwhal
#

Ton bot tu l'as fait sur quelle version de discord js ?

#

Enfin peu importe, pour te dire, moi j'ai commencé par faire une commande toute basique pour commencer, puis avec la documentation discord js sous les yeux c'est plus simple

oak turret
#

apprendre le js c'est la base de la base

#

discord.js

twin bane
#

bonsoir ^^ j'ai trouver un Handler très récemment update sur le GitHub, avec des slash command se que je ne sais pas faire dutout, ducoup je test tout le bot, ca marche nickel mais je ne sais pas pourquoi dans le Ready.JS il y'a la fonction pour lancé les command slash mais ne marche visiblement pas sachant que ca ne me print rien dans la console et que 0 commands slash marche ... voila le code du ready.js, merci d'avance pour les personnes qui pourront m'aider dans ma galère ^^

const Event = require('../Structures/Event');
const { token, presence_game } = require('../../config.json');
const { readdirSync } = require('fs');


const { REST } = require("@discordjs/rest");
const { Routes } = require('discord-api-types/v9');

module.exports = class extends Event {

    constructor(...args) {
        super(...args, {
            once: true
        });
    }

    async run() {
        console.log([
            `Logged in as ${this.client.user.tag}`,
            `Loaded ${this.client.commands.size} commands!`,
            `Loaded ${this.client.events.size} events!`
        ].join('\n'));

        await this.client.user.setPresence({
            status: 'idle',
            activities: [
                {
                    name: `${presence_game}`,
                    type: "PLAYING"
                }
            ]
        });
        const refresh_slash_commands = async () => {
            try {
                console.log('Started refreshing application (/) commands.');
                const rest = new REST({ version: '9' }).setToken(token);
                await rest.put(
                    Routes.applicationCommands(this.client.user.id),
                    { body: this.client.slashcommands.map(r => r.slashcommand_builder) },
                );
                console.log('Successfully reloaded application (/) commands.');
            } catch (error) {
                console.error(error);
            }
        }
    }

};
neat lintel
#

Tu as pas appelé la fonction refresh_slash_commands

twin bane
neat lintel
#

pas l'appel

#

ca c'est la déclaration de la fonction

cyan iron
#

Il est important que tu aies les bases du Javascript avant de commencer à développer, surtout que là t'utilises des trucs que tu comprends à moitié, donc c'est vraiment pas l'idéal

twin bane
# cyan iron Il est important que tu aies les bases du Javascript avant de commencer à dévelo...

je ne cherche absolument pas a devenir un vrai dev JS, j'ai déjà quelque base, j'ai eu l'occasion de crée quelque bot, ca fait extrêmement longtemps que je n'ai pas taff sur du JS donc j'ai tout perdu, alors certes, actuellement je ne sais pas comment faire pour appeler ma fonction mais je me débrouillerai sans problème sur les embed etc... donc puis-je avoir une rapide explication de comment appeler ma fonction, merci d'avance ^^

neat lintel
#

si tu as perdu tes conaissances de js alors vas voir quelques vidéos/ un cour. Si tu as déja fais de la programmation comme tu le dis ca devrait vite te revenir

#

comme ca tu comprendras ce que tu fais

twin bane
oak turret
#

c’est quand même la base de la base, si tu sais faire une fonction l’appeler c’est encore plus simple

keen narwhal
#

@neat lintel Salut j'ai ce problème mais je ne sais pas pourquoi avant je ne l'avais pas et maintenant si
Explication : Le bot c'est un bot ticket et dès que j'appuie sur le bouton fermer le ticket le bot crash et met cette erreur

#

personne à su le régler peut-être que toi oui

neat lintel
#

l'utilisateur a peut etre fermé ses mp, n'a pas de serveur en commun avec le bot, ou il a bloqué le bot

keen narwhal
#

et il y'a une commande pour regler sa ?

neat lintel
#

tu peux faire un try...catch

#

Mais il y a pas de vraie facon de vérifier sans ca

keen narwhal
#

ha oui nan y'a pas moyen plutôt d'enlever la ligne de code

#

j'aime pas les catch mdr

neat lintel
#

soit tu envois pas de message soit tu utilises try...catch il y a pas de vraie autre facon

keen narwhal
#

ne pas envoyer de message sa seras mieux

neat lintel
#

enlèves la ligne avec le send alors

oak turret
#
message.author.send("tutu")
.catch((err) => {
  console.log(`Erreur : ${err}`);
});

Aussi simple que ça

#

je vois pas pourquoi t'aimes pas les catch what

keen narwhal
#

car je sais pas ou le placer ni rien sa me prend la tête

neat lintel
#

Il me semble pas que le .catch suffit pas ici ou je sais pas si ca a changé depuis la V13 j'avais pas retester

oak turret
neat lintel
#

Ah ok tant mieux alors

oak turret
#

je vais re-tester attend tu me fous le doute

keen narwhal
# neat lintel Ah ok tant mieux alors

sa m'envoie sa maintenant C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\PermissionOverwrites.js:184

   
 if (!userOrRole) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');
                           ^

TypeError [INVALID_TYPE]: Supplied parameter is not a User nor a Role.
    at Function.resolve (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\PermissionOverwrites.js:184:28)
    at C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:318:87
    at Array.map (<anonymous>)
    at TextChannel.edit (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:318:57)
    at InteractionCollector.<anonymous> (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\events\interactionCreate.js:196:16)
    at InteractionCollector.emit (node:events:402:35)
    at InteractionCollector.handleCollect (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\interfaces\Collector.js:108:12)
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {
  [Symbol(code)]: 'INVALID_TYPE'
}
oak turret
#

ça c'est ton code

#

envoie

keen narwhal
#

le voici

oak turret
#

bref le .catch() est good

oak turret
keen narwhal
#

j'ai fait CTRL + F j'ai recherchais if (!userOrRole) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');
mais il ne trouve rien

neat lintel
#

normale c'est dans la lib de djs cette ligne

keen narwhal
#

ha oui

neat lintel
#

Tu as fournis un paramètre qui est ni un role ni un User

keen narwhal
#

je peux le changer sa ?

neat lintel
#

oui

#

regardes ton code

keen narwhal
neat lintel
#

envois stp

#

interactionCreate.js

keen narwhal
keen narwhal
neat lintel
#

mets des console.log pour savoir d'ou ca vient

keen narwhal
#

je le met a un endroit précis ?

neat lintel
#

non

#

a différents endroits

keen narwhal
#

car la j'en n'ai mis partout met sa met la même erreur

neat lintel
#

le but d'un console.log n'est pas de corriger l'erreur

keen narwhal
#

oui oui c'est de dire ou est l'erreur

#

c'est sa ?

neat lintel
#

a peu près

#

de tonner les élements pour trouver l'erreur au moins

keen narwhal
#

sa donne toujours sa :

 if (!userOrRole) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');
                           ^

TypeError [INVALID_TYPE]: Supplied parameter is not a User nor a Role.
    at Function.resolve (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\PermissionOverwrites.js:184:28)
    at C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:318:87
    at Array.map (<anonymous>)
    at TextChannel.edit (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:318:57)
    at InteractionCollector.<anonymous> (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\events\interactionCreate.js:196:16)
    at InteractionCollector.emit (node:events:402:35)
    at InteractionCollector.handleCollect (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\interfaces\Collector.js:108:12)
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {
  [Symbol(code)]: 'INVALID_TYPE'
}
#

aucune différence

neat lintel
#

logique

#

Le but est de savoir d'ou vient l'erreur

keen narwhal
#

cherche erreur de syntaxe

neat lintel
#

Dans un else if il faut une condition

#

sinon c'est juste else

keen narwhal
#

ok

#

merci

oak turret
#
if () {}
else if () {}
else {}
keen narwhal
#

ok

oak turret
keen narwhal
#

mais la par contre quand je fais node . dans mon terminal sa me met çca

#

@oak turret

oak turret
#

1 - pas besoin de ping
2 - montre toute l'erreur

sharp grail
oak turret
#

j'avais pas vu qu'il avait pas mit .id

#

guild.roles.everyone.id

peak cedar
#

ptite question possible de faire des buttons avec des versions qui sont ancienne ?

keen narwhal
#

Bot is online!
C:\Users\sekle\Desktop\CULTURE v13\index.js:17
if (guild) {
^

ReferenceError: guild is not defined
at Client.<anonymous> (C:\Users\sekle\Desktop\CULTURE v13\index.js:17:5)
at Object.onceWrapper (node:events:510:26)
at Client.emit (node:events:390:28)
at WebSocketManager.triggerClientReady (C:\Users\sekle\Desktop\CULTURE v13\node_modules\discord.js\src\client\websocket\WebSocketManager.js:383:17)
at WebSocketManager.checkShardsReady (C:\Users\sekle\Desktop\CULTURE v13\node_modules\discord.js\src\client\websocket\WebSocketManager.js:366:10)
at WebSocketShard.<anonymous> (C:\Users\sekle\Desktop\CULTURE v13\node_modules\discord.js\src\client\websocket\WebSocketManager.js:188:14)
at WebSocketShard.emit (node:events:390:28)
at WebSocketShard.checkReady (C:\Users\sekle\Desktop\CULTURE v13\node_modules\discord.js\src\client\websocket\WebSocketShard.js:474:12)
at WebSocketShard.onPacket (C:\Users\sekle\Desktop\CULTURE v13\node_modules\discord.js\src\client\websocket\WebSocketShard.js:446:16)
at WebSocketShard.onMessage (C:\Users\sekle\Desktop\CULTURE v13\node_modules\discord.js\src\client\websocket\WebSocketShard.js:300:10)

neat lintel
sharp grail
#

et client.users.cache.get(chan.topic) renvoie un user et toujours pas une id 🤔

oak turret
#

t'as discordjs-buttons comme lib

keen narwhal
#

je ne comprends pass

#

😫

peak cedar
oak turret
#

guild is not defined

keen narwhal
#

oh

peak cedar
#

est les / commands ?

#

aussi une lib ?

keen narwhal
#

Lartaxx j'aimerais savoir ou je dois définir mes guilds ?

oak turret
#

possible aussi je crois, mais je te garantie pas le résultat

oak turret
keen narwhal
#

guild is not defined

sharp grail
oak turret
#

oui d'accord, m'enfin je comprends pas pourquoi tu check si y a une guild, le bot marche pas sans intéraction dans un channel donc dans une guild

keen narwhal
#

je ne pa

peak cedar
#

trop relou

keen narwhal
#

trop relou

peak cedar
#

et j'ai mes habitudes avec la la versions actuelle

keen narwhal
#

@oak turret et comment ajoutons nous une interaction

sharp grail
# peak cedar oe mais faut que jmodif mon code 😭

oui mais plus tu attendras plus la version sera ancienne donc plus tu devrais avoir des nouvelles libs pour supporter les nouvelles fonctionnalités et tu peux avoir des problèmes de compatibilité entre des lib 🤔

#

après ça se comprend, juste que c'est pas une position durable

peak cedar
#

Oe moi changer pour une autres versions tout raprendre Rlou a mort

keen narwhal
#

client.config = ?

oak turret
#

look ce qu'on t'a dis

keen narwhal
#

ou

oak turret
#

client.config = ? je te pose une question

keen narwhal
oak turret
#

oui

keen narwhal
# oak turret oui

Sa marche donc j'ai changer ils ont tous .id à la fin et tout marche sauf que quand je ferme le ticket il crash avec cette erreur

#
C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\PermissionOverwrites.js:184
    if (!userOrRole) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');
                           ^

TypeError [INVALID_TYPE]: Supplied parameter is not a User nor a Role.
    at Function.resolve (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\PermissionOverwrites.js:184:28)
    at C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:318:87
    at Array.map (<anonymous>)
    at TextChannel.edit (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:318:57)
    at InteractionCollector.<anonymous> (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\events\interactionCreate.js:196:16)
    at InteractionCollector.emit (node:events:402:35)
    at InteractionCollector.handleCollect (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\interfaces\Collector.js:108:12)
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {
  [Symbol(code)]: 'INVALID_TYPE'
}
oak turret
#

pourquoi tu mets des .id partout ?

#

client.config c'est où ? c'est quoi ?

keen narwhal
oak turret
#

oui celui-là

keen narwhal
#

vu qui y'en n'avait 2 j'ai changer les 2

keen narwhal
oak turret
#

log ton client.config

keen narwhal
#

lequel car il y'an n'a plusieurs ?

oak turret
#

qu'importe

#

c'est tous la même chose

keen narwhal
opal mantle
#
C:\Users\louis\Desktop\Discord\Développement>node index.js
C:\Users\louis\Desktop\Discord\Développement\node_modules\discord.js\src\client\Client.js:544
      throw new TypeError('CLIENT_MISSING_INTENTS');
      ^

TypeError [CLIENT_MISSING_INTENTS]: Valid intents must be provided for the Client.
    at Client._validateOptions (C:\Users\louis\Desktop\Discord\Développement\node_modules\discord.js\src\client\Client.js:544:13)
    at new Client (C:\Users\louis\Desktop\Discord\Développement\node_modules\discord.js\src\client\Client.js:73:10)
    at Object.<anonymous> (C:\Users\louis\Desktop\Discord\Développement\index.js:4:16)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:17:47 {
  [Symbol(code)]: 'CLIENT_MISSING_INTENTS'
}
#

quand je lance mon bot y'a ça en erreur

keen narwhal
#

salut

#

erreur syntaxique

neat lintel
keen narwhal
#

smaugy

neat lintel
#

La le code est a revoir il manque })})} et ensuite tu imbrique tes évents les uns dans les autres ca va pas ca

keen narwhal
#

je ne comprends pas smaug

#

est ce que tu peux corriger et // commenter stp

neat lintel
#

Non faut que tu y arrives seul

keen narwhal
#

okay

peak cedar
#

Hey j'ai regarder les lib etc.. et pour apprendre je voulais regarder un tuto j'ai exactement tout refait mais Aucune erreur But

#

j'ai pas le button en dessous

neat lintel
keen narwhal
#

ok

#

merci

peak cedar
#

J'ai jamais le button

#

Toujours le msg mais pas de button en dessous a cause de quoi ?

keen narwhal
#

@peak cedar

#

i need your help

#

2A

peak cedar
#

hein quoi ?

keen narwhal
#

je ne trouve pas l'erreur

peak cedar
#

moi je tente de trouver la mienne 😂

keen narwhal
#

ok

#

je t'aide

#

a trouver la tienne

sudden cipher
#

Salut , je cherche un systeme discord.js qui envoi un message dans un channel tout les X temps

#

Merci d'avance

keen narwhal
#

faut faire

cyan iron
#

Trop de demandes en même temps

#

Je vais tenter de vous aider un par un

keen narwhal
#

client.on("message", message => {
if (message.author.bot) return false;
if (!message.guild) return false;
if (message.content.indexOf(Prefix) !== 0) return false;

const arguments = message.content.slice(Prefix.length).split(/ +/g); // Splitting the message.content into an Array with the arguments.
// Input --> !test hello
// Output --> ["test", "hello"]

const command = arguments.shift().toLowerCase();
// Removing the first element from arguments since it's the command, and storing it in a variable.

if (command == "random") {
    const Response = Math.floor(Math.random() * Responses.length);
    message.channel.send(`Here is your random response: ${Responses[Response]}`);
};

});

#

@sudden cipher

sudden cipher
#

oui mais je voudrais que ça le fasse en boucle ça marchera ?

keen narwhal
#

att

neat lintel
#

oui. Ca le fera tous les x ms

keen narwhal
#

smog je ne trouve pas

cyan iron
#

@peak cedar Tu n'as pas besoin du module discord-buttons, la v13 de discord.js le fait par défaut

#

Et si tu es en v12 passes en v13, la v12 est obsolète

keen narwhal
#

Wailrone je ne trouve pas l'erreur syntaxique je ne suis pas bon en dev sa fait 2j que je dev

neat lintel
cyan iron
#

Quel est ton problème @keen narwhal ?

sudden cipher
keen narwhal
#

mon problème est '}' attendu

peak cedar
neat lintel
#

dans l'extrait de code posté il y a pas d'erreur de syntaxe

cyan iron
neat lintel
cyan iron
sudden cipher
#

3000 = 30 sec c'est ça ? ( je sais jamais )

cyan iron
#

Non

#

3000ms = 3s

#

30 000ms = 30s

peak cedar
sudden cipher
#

ok merci

cyan iron
#

npm i discord.js

peak cedar
#

ok est y'a une doc pour changer tt ?

#

pour voir les modif

keen narwhal
#

wailrone look at

peak cedar
#

et moi copier et remettre tt ?

keen narwhal
#

sa me dit '}' attendu

cyan iron
peak cedar
#

oklm vsy jte fait confiance bg

cyan iron
#

Il te manque une }

keen narwhal
#

oh ok

#

thx

peak cedar
cyan iron
#

Ton if n'est pas fermé tout simplement 🙂

cyan iron
peak cedar
#

ça suprime les screen

#

v16.13.0

cyan iron
#

Chelou

sudden cipher
#

Je revien pour envoyer un msg dans un salon choisi ( message.guild.channels.cache.get ...)

cyan iron
#

T'as bien fait npm i discord.js ?

peak cedar
keen narwhal
cyan iron
#

Le bot de mort

cyan iron
peak cedar
#

Je sais att

cyan iron
#

Voilà tu peux renvoyer

#

Suffit juste d'envoyer une image / un message / une image

keen narwhal
peak cedar
#

@cyan iron

#

c good

#

a jour

keen narwhal
#

je suis nul

#

j'abandonne

neat lintel
keen narwhal
#

ok

cyan iron
keen narwhal
#

c'est quoi le nom de l'extension ?

cyan iron
peak cedar
#

😂

neat lintel
peak cedar
#

Direct au start j'en ai dja mal au crane xdddddd

#

bon bas aller a la guerre

keen narwhal
#

soldat Corse qui se bat contre la doc v13

neat lintel
cyan iron
keen narwhal
#

smaugito

keen narwhal
peak cedar
cyan iron
neat lintel
cyan iron
#

mdr

keen narwhal
#

ma tete chauffe pour une accolade donckappo

cyan iron
#

Je me suis pas emmerdé personnellement je recommence tout mon bot de 0

keen narwhal
#

hein

cyan iron
#

T'as réussi @keen narwhal ?

keen narwhal
#

nn

peak cedar
#

j'ai fait le const du client mtn ça me dit client is not defined

#

😢

keen narwhal
#

je vais crash ma carte graphique cerveau est en surchauffe

neat lintel
peak cedar
keen narwhal
neat lintel
# peak cedar

tu as importé Discord par {Client} donc ce sera Discord.Client

#

Tu peux aussi utiliser la déstructuration dans l'importation pour ne pas importer toute la lib quand tu as juste besoins de quelques classes et comme ca tu gagnera de la mémoire sur ton app

keen narwhal
#

qui peut m'aider

neat lintel
keen narwhal
#

nn c'est tk

#

tjrs le meme

neat lintel
#

Tu devrais tous enlever du ficher et recommencer sur un autre fichier pour comprendre

#

et tu remets les trucs 1 par 1

keen narwhal
#

ok

peak cedar
#

tien ça peux ptetre t'aider regarde la ou ça manque de truc

keen narwhal
#

hmmm

#

merci

neat lintel
#

Si tu fais

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

Alors tu peux utiliser

new Client();

Mais si tu importes toutes la lib

const Discord = require('discord.js');

Alors tu dois faire

new Discord.Client();

Je te recommandes d'utiliser déstructuration (const {Client} = require('discord.js');) c'est plus optimisé

keen narwhal
#

smaug

#

@neat lintel

peak cedar
neat lintel
#

?

keen narwhal
#

client.once("ready", () => {
console.log("Bot is online!");

if (guild) {
  commands = guild.commands
} else  {
  commands = client.application?.commands
}

commands?.create({
  name: 'ping',
  description: 'Replies with pong.',
})

client.on(interactionCreate, async (interaction) => {
if (!interaction.isCommand()) {
return
}
const { commandName, options } = interaction
if (commandName === ping)
interaction.reply({
content: pong,
ephemeral: true,
});

#

l'erreur est dedans

peak cedar
#

😭

neat lintel
#

Du coup tu fais la meme chose

#

const {Client, Intents} = etc

peak cedar
#

roh mais c casse couille 😭

neat lintel
#

c'est normal d'importer ce que on utilise

keen narwhal
#

client.on(interactionCreate, async (interaction) => {
if (!interaction.isCommand()) {
return
}

#

l'erreur est deda,s

neat lintel
#

le premier paramètre d'une fonction on de EventEmitter doit etre une chaine de caractères

#

ensuite il manque la fermeture d'une parenthèse et d'une accolade

peak cedar
#

@neat lintel

#

mais aucune cmd marche

keen narwhal
#

tu peux corriger pr que je puisse comprendre ??

neat lintel
neat lintel
peak cedar
neat lintel
#

et en dm il te faut aussi une intent avec en plus la partial CHANNEL

keen narwhal
#

J'abandonne alien

#

sur ce

#

aurevoir

peak cedar
#

😂

keen narwhal
#

bon

peak cedar
cyan iron
#

N'abandonnez pas

keen narwhal
#

ce fut un bon moment

cyan iron
peak cedar
neat lintel
peak cedar
#

Mais vrm ça exciste pas un truc plus clair parce que j'ai l'air con la

#

j'ai niquez mon bot en 5commands pour le mettre a jour 😂

neat lintel
#

en V13 les intents sont obligatoires. Depuis l'api V8

#

mais ca existait déja avec l'API V6 sans etre obligatoire

cyan iron
#

règle juste les erreurs une par une

peak cedar
#

c une prepa chimique pour une bombe

neat lintel
#

c'est normal d'avoir plein de trucs qui marchent plus entre 2 versions. C'est pas si compliqué mais par contre faut vraiment prendre le temps de lire le guide, la doc etc et ca ira

peak cedar
#

oe mais le prob c'est que je fait l'action de lire mais mon cerveau ne veux pas suivre

#

je ne comprend plus du tout

oak turret
#

faire une pause est judicieux

peak cedar
neat lintel
# peak cedar je ne comprend plus du tout

Vous désirez apprendre à coder un bot Discord sans aucune connaissance ? Dans cette vidéo, nous allons simplement voir comment appliquer les intents sur notre bot pour la mise à jour d'Octobre! Visionnez notre vidéo pour en savoir plus!

Intents: https://discordjs.guide/popular-topics/intents.html#gateway-intents
API Discord: https://discord.com...

▶ Play video
#

c'est de la V12 mais tu as que 2 caractères a enlever pour la V13 donc ca devrait aller

peak cedar
#

2 caractere a enlever ?

neat lintel
#

Oui mais la de toute facon ce qui est important dans la vidéo c'est pas le code mais c'est comprendre ce que c'est que les intents

peak cedar
#

bon vsy c trop relou jvais abandonner

#

ça ma deja souler

#

merci quand mm ❤️

keen narwhal
peak cedar
keen narwhal
#

c bon

#

@neat lintel

#

@cyan iron

#

j'ai recommencé a 0

#

ensuite

cyan iron
#

Pourquoi ?

keen narwhal
#

salut j'ai besoin d'aide, j'ai fais un bot discord et j'ai installer node modules et apparemment il y à une erreur dedans

#

Ce serait à la ligne 249

neat lintel
#

Et ensuite

keen narwhal
#

ok merci

#

Ah mais c mongo ça

#

J'comprends pas trop le message d'erreur, je viens de débuter l'utilisation de mongo

neat lintel
#

Le mot de passe doit pas etre bon

#

faut enlever les chevrons (<>) et escape les caractères spéciaux

keen narwhal
#

dans ma variable dans .env ?

neat lintel
#

je sais pas, la ou tu l'as mis

keen narwhal
#

euh

#

j'ai mis ça

#

jsp si tu parles de ça

neat lintel
#

dans l'url il y a le mot de passe

#

oui je parles de ca

keen narwhal
#

y'a <password>

neat lintel
#

voila, la tu mets le mot de passe de ton user sur le cluster

keen narwhal
#

le cluster

neat lintel
#

tu utilises une db en ligne sur le site de mongodb ou tu as installé un serveur local ?

keen narwhal
#

Euh x)

#

jsp

#

en tout cas j'ai mis le mdr et ça à marché

#

le mdp

neat lintel
#

Du coup tu utilises un cluster en ligne

keen narwhal
#

sans doute

#

J'ai suivi un tuto

neat lintel
#

c'est pratique mais limité a 500MO gratuiement

keen narwhal
#

et le serveur local c combien ?

neat lintel
#

gratuit et illimité (enfin les limites de ton pc/vps/serveur)

keen narwhal
#

eenh

neat lintel
#

et il y a pas de problèmes de connexion etc c'est pour ca que c'est pratique

keen narwhal
#

sa sert a quoi de faire en ligne alors

neat lintel
#

Si tu as pas de quoi run ta db en local, pour certaines apps qui ont pas forcément besoins d'une api en backend par exemple etc

keen narwhal
#

okok

#

merci en tout cas

neat lintel
#

de rien