#javascript-typescript

1 messages · Page 82 of 1

keen narwhal
#

merci

burnt perch
#

full pas que au début mdrrrrrrr

keen igloo
#

Ah ouais ? Apparement les gens apprécient très souvent quand ils testent et je crois qu'au StateOfJS il était genre à 97% de satisfaction

keen narwhal
#

cc sur ma commande help quand je fais .help j'ai cette erreur ``` if (!value) throw new RangeError('EMBED_FIELD_VALUE');
^

RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values may not be empty.
at Function.normalizeField (D:\Dafaba\CODAGE\hpbot\node_modules\discord.js\src\structures\MessageEmbed.js:432:23)
at D:\Dafaba\CODAGE\hpbot\node_modules\discord.js\src\structures\MessageEmbed.js:452:14
at Array.map (<anonymous>)
at Function.normalizeFields (D:\Dafaba\CODAGE\hpbot\node_modules\discord.js\src\structures\MessageEmbed.js:451:8)
at MessageEmbed.addFields (D:\Dafaba\CODAGE\hpbot\node_modules\discord.js\src\structures\MessageEmbed.js:266:42)
at MessageEmbed.addField (D:\Dafaba\CODAGE\hpbot\node_modules\discord.js\src\structures\MessageEmbed.js:257:17)
at Object.module.exports.run (D:\Dafaba\CODAGE\hpbot\commands\📍・Utile\help.js:16:19)
at Client.<anonymous> (D:\Dafaba\CODAGE\hpbot\index.js:44:13)
at Client.emit (events.js:315:20)
at MessageCreateAction.handle (D:\Dafaba\CODAGE\hpbot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14) {
[Symbol(code)]: 'EMBED_FIELD_VALUE'``` j'ai lu sur internet que ct soit que un de mes sous dossiers de commandes etait vide ou que un des mes category: sur le module.exports.help de mes commandes etait vide. pourtant ce n'est pas le cas.

#

code du help ```const { MessageEmbed } = require('discord.js')

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

const { readdirSync } = require('fs')

const categoryList = readdirSync('./commands');

module.exports.run = (client, message, args) => {
if (!args.length) {
const embed = new MessageEmbed()
.setColor('#42ecf5')
.addField('Liste des commandes', Une liste de toutes les sous-catégories disponibles et leurs commmandes.\nPour plus d'informations tapez ${config.prefix}help <command_name>)

    for (const category of categoryList) {
        embed.addField(
        `${category}`,
        `${client.commands.filter(cat => cat.help.category === category.toLocaleLowerCase()).map(cmd => cmd.help.name).join(', ')}`
        );
    };
}

};

module.exports.help = {
name: 'help',
description: 'Affiche le menu d'aide.',
aliases: ['h', 'aled'],
category: '📍・Utile',
usage: '<command_name>',
args: false
}

dire latch
#

Tu ne l'envois jamais ton embed là 🤔

#

@keen narwhal

spring dock
#

après le problème c’est pas ça

keen narwhal
#

ah ui 😅

spring dock
#

ta un field ou ta rien mis en valeur

#

je pense c’est ton trux avec le .filter la, log le

dire latch
#
  `${bot.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', ')}`
#

A la place de ta ligne 🙂

#

@keen narwhal

keen narwhal
#

ok merci

dire latch
#

Yep @keen narwhal

#

Moi j'utilise bot, pour ça 🙂

keen narwhal
#

et j'ai toujours l'erreur 🙂

full flare
#

Fais ce qu'à dit Bob, log le afin de voir si tu n'as pas une valeur où il y a rien. Car l'erreur c'est que tu as une ligne de ton embed qui est vide

keen narwhal
#

je mets console.log(filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', ')) ?

spring dock
#

non

full flare
#

nop

keen narwhal
#

quoi ?

spring dock
#

console.log(client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', '))

full flare
#

(Voilà, Bob est plus rapide que moi xD)

keen narwhal
#

xD

full flare
#

Et tu regardes si tu n'as pas une valeur qui est nul

keen narwhal
#

quand je lance le bot j'ai rien dans la console

full flare
#

C'est quand tu fais ta commande help du coup 😅

keen narwhal
#

et quand je fais .help j'ai rien non plus

#

a part l'erreur

full flare
#

Tu l'as mis où ce console.log

keen narwhal
#
            embed.addField(
            `${category}`,
            `${client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', ')}`
            );
            console.log(client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', '))
        };```
full flare
#

bah oui bah nn

keen narwhal
#

où ça ?

full flare
#

Fais ça :

for (const category of categoryList) {
  console.log(client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', '))
            /*embed.addField(
            `${category}`,
            `${client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', ')}`
            );*/
        };
keen narwhal
#

rien dans la console

dire latch
#
for (const category of categoryList) {
  return console.log(client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', '))
  /*embed.addField(
  `${category}`,
  `${client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', ')}`
  );*/
};
#

Il me semble

full flare
#

Oui c'est ça

#

Je suis trop con. Merci de m'avoir repris @dire latch 👍

dire latch
#

Np

full flare
#

Voir même :

console.log(client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', '))
/*for (const category of categoryList) {
embed.addField(
  `${category}`,
  `${client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', ')}`
  );
};*/
keen narwhal
#
                                                                               ^

ReferenceError: category is not defined```
#

(avec le code de @dire latch)

full flare
ancient sonnetBOT
#
Citation de Quentinium7976 posté dans #javascript

Clique sur [📝](#javascript-typescript message) pour accéder au message
QuoteSFais ça :

for (const category of categoryList) {
  console.log(client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', '))
            /*embed.addField(
            `${category}`,
            `${client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', ')}`
            );*/
        };
```![QuoteE](https://cdn.discordapp.com/emojis/864578798538981376.webp?size=128 "QuoteE")
dire latch
#

Ah normal, j'utilise l'embed 😂

full flare
#

ça te sort quoi le miens @keen narwhal

dire latch
#

J'ai modifié

keen narwhal
full flare
#

Si ça ne fonctionne pas, je t'invite à aller checker ce qu'est categoryList ou alors à regarder si il n'y a rien qui "obstruerai" la continuité du code
A++ 😉

keen narwhal
#

ok merci

#

je check sur la doc ?

dire latch
#
for (const category of categoryList) {
  return console.log(client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', '))
  /*embed.addField(
  `${category}`,
  `${client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', ')}`
  );*/
};
#

Essaye comme ça 🤔

full flare
keen narwhal
#

ah ok

full flare
#

C'est un problème au niveau de ton code JS

keen narwhal
keen narwhal
dire latch
#

Attends, je vais test

#

Sa fonctionne @keen narwhal

#

Donc, fais comme j'ai fais 🙂

keen narwhal
#

@dire latch tjrs pas dcp

dire latch
#

Tu as fais ta commande trop vite 🙂

#

Le bot étais pas encore allumé donc tu n'as pas de message de log

#

@keen narwhal

keen narwhal
#

ok

cyan iron
#

Si

#

Il a un message de log vide

dire latch
#

Et il est ou ton message de log vide 🤔

keen narwhal
#

ah ui

#

mais du coup ?

dire latch
#

?

keen narwhal
#

comment on resout l'erreur ?

dire latch
#

Tu as quoi comme erreur ?

full flare
#

Mec

#

Tu as trouvé donc pk tes embeds ne fonctionnaient pas alors

cyan iron
#

Ton truc est vide

full flare
#

Félicitations @keen narwhal !! 👏

cyan iron
#

J'ai pas lu ton problème mais je vais voir là

dire latch
full flare
#

L'erreur de départ était de trouver ce qui était vide et tu as donc trouvé. Tu sais maintenant que client.commands.filter(cat => cat.help.category === category.toLowerCase()).map(cmd => cmd.help.name).join(', ') est vide et donc que c'est pour ça que ça te faisait l'erreur

#

👏

keen narwhal
#

et donc comment je pourrais resoudre ?

keen narwhal
cyan iron
#

console log moi category à chaque fois stp

#

Je veux voir un truc

full flare
#

Ah ça maintenant faut rentrer plus en détail dans ton problème en étudiant les variables que tu utilises etc...

keen narwhal
#

ok

cyan iron
#

Je sens que category a un problème mental je sais pas pourquoi

full flare
#

xD

#

Un pré-sentiment

dire latch
#

Sûrement dans ton message.js 🙂

cyan iron
#

En fait

dire latch
#

Car c'est ici que tu définis les commandes

cyan iron
#

Je sens surtout qu'aucune commande n'a de category

keen narwhal
#

si

cyan iron
#

Et que du coup c'est normal que ça soit vide

keen narwhal
#

j'ai verifie toutes les cmds en ont un

cyan iron
#

fait du coup stp

dire latch
#

Tu as quoi dans ton message.js ? @keen narwhal

#

Et remplace mon truc par return console.log(category)

keen narwhal
#

j'ai ⛏・Moderation dans ma console

cyan iron
dire latch
#

🤔

cyan iron
#

Pourquoi tu met un émoji

keen narwhal
#

bah c'est une category nan

cyan iron
#

pas fou du coup

keen narwhal
#

c le nom de mon dossier

dire latch
#

Car sa fais stylé 🤷‍♀️ @cyan iron

#

Mdrr

keen narwhal
cyan iron
#

Bref

#

T'as que ça ?

keen narwhal
#

ui

cyan iron
#

En gros CategoryList contient que Modération là

keen narwhal
#

ui

cyan iron
#

JE SAIS

#

J'ai trouvé l'erreur

keen narwhal
#

j'ai console.log category

#

pas categoryList

cyan iron
#

Tu tolowercase d'un côté

#

Mais pas de l'autre

dire latch
#

Dans son message.js nan ?

keen narwhal
#

ah

#

logik

dire latch
#

Regarde dans ton message.js

cyan iron
#
console.log(client.commands.filter(cat => cat.help.category.toLowerCase() === category.toLowerCase()).map(cmd => cmd.help.name).join(', '))
cyan iron
#

non

dire latch
#

Ah oui ok

#

Pas vu

cyan iron
#

Si il compare Modération avec modération

#

ça va pas work

dire latch
#

Mais même

cyan iron
#

donc c'est vide

dire latch
#

Dans son message.js aussi

cyan iron
#

même du coup c'est vide c'est tout

dire latch
#

Il doit modifié

cyan iron
#

J'ai pas tout lu lmao

dire latch
#

-__-

keen narwhal
#
    if(message.author.bot || !message.content.startsWith(config.prefix) || message.type !== 'DEFAULT') return;

    const args = message.content.slice(config.prefix.length).split(/ +/);
    const commandName = args.shift().toLowerCase(); 

    const command = client.commands.get(commandName) || client.commands.find(cmd => cmd.help.aliases &&  cmd.help.aliases.includes(commandName));
    if (!command) return;

  
    
    if (command.help.args && !args.length) {
      let noArgsReply = `Il faut des arguments pour cette commande, ${message.author} ! `;

      if (command.help.usage) noArgsReply += `\nVoici comment utiliser la commande: \`${config.prefix}${command.help.name} ${command.help.usage}\` *Note: Les <> sont des arguments obligatoires. Les [] sont des arguments optionnels`

      return message.channel.send(noArgsReply);
    }


 
    command.run(client, message, args);

});```
#

voila l'event message

cyan iron
#

Tu veux modif quoi là dedans

dire latch
#

Nan, c'est good enfaite

cyan iron
#

T'as essayé ce que je t'ai dit @keen narwhal

keen narwhal
cyan iron
keen narwhal
#

gg

#

j'ai ça dans la console ban, clear, kick, mute, tempmute, unban, unmute help, ping dice

#

@cyan iron

dire latch
#

C'est good ducoups ?

keen narwhal
#

bah

#

le console ui

dire latch
#

Sa fonctionne ton help ?

#

Met en commentaire donc console.log

cyan iron
#

-_-

keen narwhal
#

att j'essaye

dire latch
#

Et remet l'embed

#

Et tu test 🙂

cyan iron
#

T'aurais pu le trouver tout seul aussi

#

Si t'avais cherché :)

keen narwhal
#

j'ai cherché

#

j'ai juste pas trouvé x)

cyan iron
#

Par contre faut que je me renseigne sur le map

#

Oh c'est intéressant d'accord

keen narwhal
#

et autre chose qui n'a pas de rapport avec le js mais plutot avec vsc, comment on relance le bot quand on ets là ?

#

car je peux pas taper node index

dire latch
#

CTRL + C

oak turret
#

ctrl+c

keen narwhal
#

merci

dire latch
#

Et flèche du haut, et entrer

#

Sinon, tu réécris 🙂

keen narwhal
#

merci

dire latch
#

Dr

keen narwhal
#

nan mais moi je supprimais le termina et j'en recréeais un kappo

dire latch
#

AH

cyan iron
#

mdr zebi

young silo
#

Bonjour ! 🙂 je voulais s'avoir comment faire en sorte que ma commande "rapel" fonctionne même quand mon bot redémarre

oak turret
#

hello, si ton bot redémarre il prendra pas en compte les commandes que tu mets, donc à moins que je zappe quelque chose c'est pas possible

young silo
#

Pourtant j'ai vue des bots avoir ça ....

#

un sytème de rapel

#

donc jsp comment ils ont fait

oak turret
#

un système de rappel ?

young silo
#

ouiii 🙂

oak turret
#

explique toi

#

je vois pas ce que tu veux dire par "système de rappel" ?

#

rappeler quoi ?

young silo
#

bah en gros : je dis exemple dans 1 heures un message m'ai envoyer en ping pour ( je dois allez prendre un café)

#

mais entre temps

#

le bot redémare

#

bah ça plante tous ..

#

donc comment faire si le bot redémarre et que le système de rappelle s'effectue

oak turret
#

bah de ce point de vu là c'est logique

#

tu dois le stocker ce truc là du coup

#

et du coup si le bot redémarre, bah quand il est de nouveau ON il re-check et remets son programme en marche

#

donc tu le stockes en db, ou dans un fichier puis tu check avec fs, tu peux le faire de plusieurs manières

young silo
#

Okey merci ^^'

oak turret
#

réglé ?

dire latch
#

Ah ouais, tes en retard 🤔

oak turret
#

j'avais pas vu

#

mieux vaux tard que jamais lol

dire latch
#

Mdr

full flare
oak turret
#

xd

#

à lui de voir j'veux juste l'aider

keen narwhal
#

Salut a tous
J'aurais besoin de votre aide pour un Bot Discord que je re développe
J'utilise la base du bot open source Alcatraz et j'en modifie les design et j'en ajoute les fonctionnalité comme un système de Tickets en utilisant les Buttons de discord

#

Je n'arrive pas a localiser le fichier qui utilise les emojis dans le Help.js

dire latch
#

Tu peut montrer le code ?

#

@keen narwhal

keen narwhal
#

Voila le fichier

dire latch
#

Avec les balises, sa aurait été mieux 😅

keen narwhal
#

Pardon ^^

#

Il utilise comme source un emojis.json

#

Mais quand je le modifie rien n'a faire les modification reste dans le .json mais en tapant la commande *help les emojis ne ce sont pas update

dire latch
#

Car tu as pas sauvegarder

keen narwhal
#

Si si

dire latch
#

Ou sois, tu n'as pas restart le bot

keen narwhal
#

Les 2 sont fait ^^

dire latch
#

Screen ton émojis.json

keen narwhal
#

Pour le reste les emojis je ne les ai pas changer car cela ne sert a rien pour l'instant vue que quand je les change cela ne change rien

#

Voila aussi le résulat du Help

dire latch
#

Bizarre 🤔

keen narwhal
#

Je commence a perdre espoir 😦

#

Je viens demander de l'aide pour avancer et ne pas rester bloquer

dire latch
#

Tu as essayés de mettre directement lemojis dans le code ?

keen narwhal
#

const emojiMap = {
[INFO]: ${emojis.info} ${capitalize(INFO)},
[FUN]: ${emojis.fun} ${capitalize(FUN)},
[COLOR]: ${emojis.couleur} ${capitalize(COLOR)},
[POINTS]: ${emojis.points} ${capitalize(POINTS)},
[NFSW]: ${emojis.nsfw} ${capitalize(NFSW)},
[GENERAL]: ${emojis.general} ${capitalize(GENERAL)},
[MOD]: ${emojis.moderation} ${capitalize(MOD)},
[ADMIN]: ${emojis.admin} ${capitalize(ADMIN)},
[OWNER]: ${emojis.owner} ${capitalize(OWNER)}
};

#

Je les avais mis ici

dire latch
#

C'est toi qui a fais ça ?

keen narwhal
#

Nop pourquoi ?

#

Tu vois une erreur ?

dire latch
#

Non

#

Mais essaye de mettre directement ton émojis

#

Et non le emojis.Xx

keen narwhal
#

je ne sais pas ou les mettre

#

étant donner que le help est particulier

dire latch
#

Si tu ne comprends pas le code, c'est compliqué

keen narwhal
#

Si Si quand même

#

Mais ça fait que 2 semaines que j'en fait

dire latch
keen narwhal
#

Ok je laisse le ${capitalize(INFO)} ?

dire latch
#

Oui

keen narwhal
#

[INFO]: 👀 ${capitalize(INFO)},

#

Comme ça ?

dire latch
#

Oui

keen narwhal
#

Je viens de relancer le bot

#

Et après exécution toujours ce résultat

dire latch
#

Montre ta console pour voir

#

Car tu as dût mal faire quelques choses 🤔

keen narwhal
dire latch
#

Bizarre

#

J'ai jamais eu ce soucis

keen narwhal
#

Moi non plus

#

Attend

#

Je pense avoir une solution

#

Oui c'est bon

dire latch
#

?

keen narwhal
#

Ta solution a marcher c'est juste une erreur de ma part

#

Mauvais chemin j'ai modif le help de la repo github mais pas celui du bot

dire latch
#

Ah ba bravo

#

Donc nickel ducoups 👍

keen narwhal
#

J'en peu plus de moi haha

#

Tu peu m'aider pour une derniere choses

#

?

dire latch
#

Et ducoups, le .json juste pour save un émojis que tu utilises une fois, c'est inutile

#

Et oui 😁

keen narwhal
#

Je cherche a enlever le []

#

Mais je ne trouve pas la variable qui la fait

dire latch
#

C'est ta variable size

keen narwhal
#

dans l'embed ?

dire latch
#

Dans ton help

#

Tu as deux variables

keen narwhal
#

${commands[type].length

#

Celle ci ?

dire latch
#

total et size

keen narwhal
#
const total = Object.values(commands).reduce((a, b) => a + b.length, 0) - commands[OWNER].length;
      const size = message.client.commands.size - commands[OWNER].length;
#

Celle la ?

#

0k0 y'a moyen que tu m'envoies le lien de l'Open Source s'il te plaît ^^ ?

dire latch
#

Yep

#

Bot discord alcatraz github @keen narwhal

#

Premier lien

keen narwhal
#

Yes

#

Okay x)

#

Merci les BG

#

Il est pas mal

#

Malgrès les nombreux bug que j'ai du résoudre

#

Je vais regarder pour peut être l'améliorer

keen narwhal
#

Il peu servir de bonne base

#

@dire latch Je retire juste les 2 const ?

dire latch
#

Oui

#

Et ton embed

#

Tu dois le modifie aussi

keen narwhal
#
      for (const type of Object.values(message.client.types)) {
        if (type === OWNER && !message.client.isOwner(message.member)) continue;
        if (commands[type][0])
          embed.addField(`**${emojiMap[type]} [${commands[type].length}]**`, commands[type].join(' '));
      }
#

Je pensais plutot a l'embed.addField en bas

dire latch
#

Yep ya celui la aussi

keen narwhal
#

Je retire le if ou le embed.addField

dire latch
#

[$commands[type].length}]

keen narwhal
#

Juste celui ci

#

pas de soucis merci

dire latch
#

Tu les auras toujours normalement nan ?

#

Car tu as enlevés que sur une partie

keen narwhal
#

Il n'y sont plus pourtant

dire latch
#

Ah ba nickel

keen narwhal
#

Merci beaucoup ^^

dire latch
#

Dr

keen narwhal
#

Le reste c'est a moi

#

Ahhhh si

dire latch
#

Yep

keen narwhal
#

Une petite dernière choses

#

Excuse moi

dire latch
#

Dit moi

keen narwhal
#

J'apprend a utiliser discord-buttons

#

Mes commande s'éxecute bien mais rien ne ce passe

dire latch
#

Erreur ?

keen narwhal
#

Aucune

#

Juste les buttons ne s'affiche pas

dire latch
#

Tu as bien mis le code aussi dans l'index ?

#

Screen moi ton index.js

#

Ou ton bot.js

keen narwhal
#
    if (message.content.startsWith(prefix + 'click')) {
        message.delete(message.author);
        let button = new MessageButton()
        .setStyle('url')
        .setURL('https://npmjs.com/discord-buttons') 
        .setLabel('My First URL Button!'); 
      
      message.channel.send('Hey, i am powered by https://npmjs.com/discord-buttons', button);
#

et quand je met +click ça envoie bien mon message mais les buttons ne s'affiche pas

dire latch
#

Ton fichier index.js ?

keen narwhal
#

c'est ça

dire latch
#

Tu as sûrement oublier de mettre ceci

keen narwhal
#

c'est un bot secondaire

dire latch
#

OK

#
const disbut = require('discord-buttons'); disbut(client);
#

Tu as mis ceci tout en haut ?

keen narwhal
#

Nop

#

Attend je test

#

Nop

#

Rien

dire latch
#

Tu as bien mis dans ton code ?

keen narwhal
#

const disbut = require("discord-buttons");
const { MessageButton } = require('discord-buttons');

#

J'avais déjà c'est 2 la

#

Et j'ai rajouter le tien après

#

Ensuite j'ai redem le bot

#

et puis j'ai tester

dire latch
#

Il fait déclarer qu'une fois discord-buttons pour commencer

keen narwhal
#

Ok mais je laisse le quel ^^

dire latch
#

Donc enlève ce que tu avais de base toi

#

Celui que je t'ai envoyé

keen narwhal
#

Oki

dire latch
#

Puis tu met disbut.MessageButton()

keen narwhal
#

ReferenceError: MessageButton is not defined at Client.<anonymous> (D:\Téléchargements\discord-button-main\index.js:82:16) at Client.emit (node:events:369:20) at MessageCreateAction.handle (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14) at Object.module.exports [as MESSAGE_CREATE] (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32) at WebSocketManager.handlePacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31) at WebSocketShard.onPacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22) at WebSocketShard.onMessage (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10) at WebSocket.onMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\event-target.js:132:16) at WebSocket.emit (node:events:369:20) at Receiver.receiverOnMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\websocket.js:970:20) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! Mystic@1.0.0 start: node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the Mystic@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\Utilisateur\AppData\Roaming\npm-cache_logs\2021-07-25T00_33_16_059Z-debug.log`

dire latch
#

A la place de MessageButton()

#

Oui c'est ce que je viens de te dire 😅

#

D'où ton erreur

keen narwhal
#

Oki

#

Excuse moi ...

#

Je galère a apprendre

dire latch
#

Pg tkt

keen narwhal
#

Le pire c'est que je me débrouille en sois plutot bien

#

Mais la j'ai l'impression de te demander la lune

dire latch
#

Mdr

keen narwhal
#

Nan

dire latch
#

Hmm

keen narwhal
#

Toujours pas

#
    if (message.content.startsWith(prefix + 'click')) {
        message.delete(message.author);
        let button = new disbut.MessageButton()
        .setStyle('url')
        .setURL('https://npmjs.com/discord-buttons') 
        .setLabel('My First URL Button!'); ```
oak turret
#

pas obligé de faire ça sinon je crois

dire latch
#

Essaye de remplacé par ça

let btn = new disbut.MessageButton()
            .setLabel(' ')
            .setID('id')
            .setStyle('blurple')
            .setDisabled();

        let group1 = new disbut.MessageActionRow().addComponent(btn);

        let group2 = new disbut.MessageActionRow().addComponent(select);

message.channel.send('hi', { components: [group1, group2] });
#

Au moins t'es sur que sa fonctionne, sa vient de la doc

oak turret
#

const { MessageButton } = require("discord-buttons")

const button = new MessageButton()
etc

#

oublie pas d’add le compenent avec un MessageActionRow sinon ça ne marchera pas

keen narwhal
#

Je l'ajoute ou ?

dire latch
#

Pour mettre le code en balise js

#

Tu dois faire

#
//LE CODE
keen narwhal
#
let btn = new disbut.MessageButton()
            .setLabel(' ')
            .setID('id')
            .setStyle('blurple')
            .setDisabled();

        let group1 = new disbut.MessageActionRow().addComponent(btn);

        let group2 = new disbut.MessageActionRow().addComponent(select);

message.channel.send('hi', { components: [group1, group2] });
#

Marche pas ça ^^

dire latch
#

js en minuscule

#

Tu as mis le J majuscule

keen narwhal
#

non pas ça

#

Je parle du code

dire latch
#

Sa a fonctionné

keen narwhal
#

en lui même

dire latch
#

Ah oui tkt

#

Juste pour te donner cet astuce

keen narwhal
#

oui merci

#
ReferenceError: select is not defined
    at Client.<anonymous> (D:\Téléchargements\discord-button-main\index.js:90:58)
    at Client.emit (node:events:369:20)
    at MessageCreateAction.handle (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (node:events:369:20)
    at Receiver.receiverOnMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\websocket.js:970:20)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! Mystic@1.0.0 start: `node index.js`
npm ERR! Exit status 1
dire latch
#

Le code que je t'ai donné ne fonctionne pas ?

keen narwhal
#

Nop

#

Voila le debug

dire latch
#

Ah enlève le group2

keen narwhal
#

Ahhh oui

#

Il n'y en a pas

dire latch
#

Yep

keen narwhal
#
ReferenceError: select is not defined
    at Client.<anonymous> (D:\Téléchargements\discord-button-main\index.js:90:58)
    at Client.emit (node:events:369:20)
    at MessageCreateAction.handle (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (node:events:369:20)
    at Receiver.receiverOnMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\websocket.js:970:20)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! Mystic@1.0.0 start: `node index.js`
npm ERR! Exit status 1
#

Erreur

#

Il ne trouve pas le group select

dire latch
#

Tu as pas enlevé group2

keen narwhal
#

Si si

dire latch
#

Dans ton message.channel.send aussi tu dois l'enlever

keen narwhal
#
message.channel.send('hi', { components: [group1] });
dire latch
#

Tu as aussi enlevé le let group2 ?

keen narwhal
#

Je viens de comprendre

#

Le let btn existais 2 fois

#

J'en avais un juste au dessus

dire latch
#

Ah ba bravo

keen narwhal
#

Mais marche pas

#
    const disbut = require('discord-buttons'); disbut(client);
    if (message.content.startsWith(prefix + 'click')) {
        message.delete(message.author);
        let btn2 = new disbut.MessageButton()
        .setLabel(' ')
        .setID('id')
        .setStyle('blurple')
        .setDisabled();

    let group1 = new disbut.MessageActionRow().addComponent(btn2);

    let group2 = new disbut.MessageActionRow().addComponent(select);
   
    message.channel.send('hi', { components: [group1] });
#

Voila le code

#

Et j'ai ça comme erreur

#

Merde

#

j'ai pas enlver le let group2

#

ça envoie bien le hi mais pas de buttons

dire latch
#

Enlève le .setDisabled

keen narwhal
#

Non plus

dire latch
#

Hmm

keen narwhal
#
    const disbut = require('discord-buttons'); disbut(client);
    if (message.content.startsWith(prefix + 'click')) {
        message.delete(message.author);
        let btn2 = new disbut.MessageButton()
        .setLabel(' ')
        .setID('id')
        .setStyle('blurple')

    let group1 = new disbut.MessageActionRow().addComponent(btn2);
   
    message.channel.send('hi', { components: [group1] });
    }
#

J'ai mis ça dans mon code

dire latch
#
let btn = new disbut.MessageButton()
		.setStyle('url')
		.setLabel('Discord Button Link NPM')
		.setURL('https://npmjs.com/discord-button')
		.setID('clickto');

        await message.channel.send(`Button Discord Link`, btn);
	}
#

Modifie par ça

#

Et tu me dis @keen narwhal

keen narwhal
#

Toujours aucun buttons

dire latch
#

Tu peut screen le code que tu as ?

keen narwhal
dire latch
#

Hmm

#

Essaye de changé ça

#
const disbut = require('discord-buttons')(client);
const { MessageButton } = require('discord-buttons');
#

Et test

#

Et si sa fonctionne pas, je ne sais pas 😭

keen narwhal
#
TypeError: Cannot read property 'MessageButton' of undefined
    at Client.<anonymous> (D:\Téléchargements\discord-button-main\index.js:83:25)
    at Client.emit (node:events:369:20)
    at MessageCreateAction.handle (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (node:events:369:20)
    at Receiver.receiverOnMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\websocket.js:970:20)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! Mystic@1.0.0 start: `node index.js`
#

J'ai ça

dire latch
#

Enlève le 2eme const

keen narwhal
#
TypeError: Cannot read property 'MessageButton' of undefined
    at Client.<anonymous> (D:\Téléchargements\discord-button-main\index.js:82:25)
    at Client.emit (node:events:369:20)
    at MessageCreateAction.handle (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (node:events:369:20)
    at Receiver.receiverOnMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\websocket.js:970:20)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! Mystic@1.0.0 start: `node index.js`
dire latch
#

Tu peut screen ce que tu as ?

keen narwhal
dire latch
#

Chelou cet histoire

keen narwhal
#

Oue

#

Je vais aller dormir et me renseigner

#

++

#

Et encore merci pour tout ce que tu a fait

dire latch
#

Dr

ashen aspen
#

^

#

slt est ce que l'utilisation de symphony pour du back est intelligent ou est ce qu'il faut que je reste sur des frameworks js genre node pour le back ? merci de vos réponses

spring dock
#

ça dépends ce que tu fait

ashen aspen
# spring dock ça dépends ce que tu fait

c'est vrai que c'est toujours ce meme probleme ...
le probleme ça donne est ce que symfony est utilisable avec la biblio js react ? et dans quel cas est ce pertinent selon toi ?

spring dock
#

bah tu une api avec symfony et parès t'utilise react

#

slorry manque mot

ashen aspen
spring dock
#

idk sorry

#

dur

ashen aspen
#

en tout cas merci de ta réponse

spring dock
#

j;

#

il est 1h35 avec de la soupe dans le sang

#

alors c'est pas facile

ashen aspen
lone flax
#

On demande de l'aide ? kapp

#

Dégouté du C ? kappa

little zealot
#

C'est pas compliqué ça

#

d'être dégouté du C kappo2

ashen aspen
ashen aspen
#

non c'est sur TNtube

oak turret
#

et comme ça pour l'utiliser

keen narwhal
#

@oak turret Tu peux send le code directement pour que test ?

oak turret
#

bah dans ton cas c'est assez simple :

#

const buttons = require("discord-buttons");
buttons(client);

const button_one = new buttons.MessageButton()
  .setLabel("label")
  etc..

await message.channel.send("button_one", {component: button_one});
keen narwhal
#

Oue mais @oak turret je fait comment pour qu'il envoie un message

oak turret
#

le message.channel.send envoie le message, et le bouton en même temps

#

tu peux mettre un embed à la place si tu veux

keen narwhal
#

oui mais il faut effectuer quelle action pour qu'il envoie le message ?

oak turret
#

bah là dans mon code rien, mais tu peux le mettre dans une de tes commandes

keen narwhal
#
const buttons = require("discord-buttons");
buttons(client);
if (message.content.startsWith(prefix + 'testi')) {
const button_one = new buttons.MessageButton()
  .setLabel("label")

await message.channel.send("button_one", {component: button_one});

}
#

Comme ça ?

oak turret
#

par exemple ouais, faut que ton event sois en async du coup sinon il va te faire une erreur le await

keen narwhal
#

Comme ça ?

#
if (message.content.startsWith(prefix + 'testi')) {
let button_one = new buttons.MessageButton()
  .setLabel("label")

await message.channel.send("button_one", {component: button_one});

}
oak turret
#

non

#

où est ton client.on("message", etc...)

keen narwhal
#

j'en ai pas la dessus

oak turret
#

t'es forcément dans cet event sinon ça marcherait pas

#

montre tout ton code

keen narwhal
#
const { MessageEmbed, Client, Message } = require("discord.js");
const client = new Client();
const prefix = "+";
const fetch = require("node-fetch");
const { get } = require('axios');
const moment = require('moment');

client.on('ready', function() {
    console.log("Prêt à être utiliser à 100%.")
    setInterval(async () => {
        try {
            //--------STATUS INFOS--------//
            const statuslist = [
                `${prefix}help | ${client.guilds.size} serveurs`,
                `${prefix}help | ${client.channels.size} channels`,
                `${prefix}help | ${client.users.size} utilisateurs`
            ];
            const random = Math.floor(Math.random() * statuslist.length);
            //------STATUS URL TWITCH------//
            const statusurl = [
                `https://www.twitch.tv/`
            ];
            const randomurl = Math.floor(Math.random() * statusurl.length);
            client.user.setPresence({ game: { name: statuslist[random]}, status: 'online' })
        } catch (error) {
            (console.log)
        };
    }, 10000);
});

client.on('message', async function(message) {
    ////////-------////////
    //--A NE PAS TOUCHER-//
    ////////-------////////
    if(message.author.bot) return;
    if(message.channel.type === "dm") return;
    ////////////////////
    ////////////////////
    if (!message.content.startsWith(prefix)) return;

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////


    if(message.content.startsWith(prefix + "help")){
        message.delete(message.author);
        let embed_hhwid = new MessageEmbed()
            .setColor('random')
            .setTitle(`Base Bot`)
            .setImage("https://media.discordapp.net/attachments/755487927588618274/756826026557964328/bannergif.gif")
            .setDescription(`Coding Bot Discord Tool`)
            .setTimestamp()
            .setFooter(`Demander par ${message.author.tag}`)
        message.channel.send(embed_hhwid);
    }
//////////////////////////////////////////////////////////////////////
    if(message.content.startsWith(prefix + "avatar")){
        message.delete(message.author);
        const mentionned = message.mentions.users.first() || message.author;
        const avatarEmbed = new MessageEmbed()
            .setTitle(`Avatar of **${mentionned.username}**`)
            .setColor("RANDOM")
            .setImage(mentionned.displayAvatarURL({ dynamic: true, size: 512 }));
        message.channel.send(avatarEmbed);
    }
//////////////////////////////////////////////    

    if (message.content.startsWith(prefix + 'url')) {
        message.delete(message.author);

        let btn = new disbut.MessageButton()
        .setStyle('url')
        .setLabel('Discord Button Link NPM')
        .setURL('https://npmjs.com/discord-button')
        .setID('clickto');

        await message.channel.send(`Button Discord Link`, btn);
    }

    const disbut = require('discord-buttons')(client);
    if (message.content.startsWith(prefix + 'click')) {
        message.delete(message.author);
        let btn2 = new disbut.MessageButton()
        .setStyle('url')
        .setLabel('Discord Button Link NPM')
        .setURL('https://npmjs.com/discord-button')
        .setID('clickto');

        await message.channel.send(`Button Discord Link`, btn2);
    }

const buttons = require("discord-buttons");
buttons(client);
if (message.content.startsWith(prefix + 'testi')) {
let button_one = new buttons.MessageButton()
  .setLabel("label")

await message.channel.send("button_one", {component: button_one});

}
})//

oak turret
#

voilà

#

c'est good ça marchera normalement

keen narwhal
#

client.on('message', async function(message) {

#

AHhh celui ci

oak turret
#

oui

keen narwhal
#
Error: The class/prototype returned from the extender function must extend the existing structure class/prototype (received function ExtendedTextChannel extends TextChannel; expected extension of ExtendedTextChannel).
    at Function.extend (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\util\Structures.js:82:13)
    at module.exports (D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\index.js:24:16)
    at Client.<anonymous> (D:\Téléchargements\discord-button-main\index.js:92:1)
    at Client.emit (node:events:369:20)
    at MessageCreateAction.handle (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\event-target.js:132:16)
#

Yes une erreur

oak turret
#

tu le require 2 fois

#

enlève ça

#

    const disbut = require('discord-buttons')(client);
    if (message.content.startsWith(prefix + 'click')) {
        message.delete(message.author);
        let btn2 = new disbut.MessageButton()
        .setStyle('url')
        .setLabel('Discord Button Link NPM')
        .setURL('https://npmjs.com/discord-button')
        .setID('clickto');

        await message.channel.send(`Button Discord Link`, btn2);
    }
keen narwhal
#

Pourquoi ?

oak turret
#

tu le require 2 fois, t'as pas besoin, test une fois avec ce que je t'ai donné pour voir

keen narwhal
#

Oki

oak turret
#

ok donc

keen narwhal
#

Bas le résultat et que ça envoie le texte mais pas le buttons

oak turret
#

tu vas remplacer par ça :

#

oui normal

#

my bad

#
let row = new buttons.MessageActionRow()
  .addComponent(button_one);

await message.channel.send("button_one", {component: row});
#

tu laisses ton bouton

#

tu rajoutes le row

#

et tu remplaces le message.channel.send

keen narwhal
#
const buttons = require("discord-buttons");
buttons(client);
if (message.content.startsWith(prefix + 'testi')) {
let button_one = new buttons.MessageButton()
  .setLabel("label")

  let row = new buttons.MessageActionRow()
  .addComponent(button_one);

await message.channel.send("button_one", {component: row});
oak turret
#

ouaip

keen narwhal
#

ça ?

oak turret
#

alors rajoute un .setID("id"); par exemple au bouton pour éviter l'erreur de l'id inexistant

keen narwhal
#
let button_one = new buttons.MessageButton()
  .setLabel("label")
  .setID("testing");
oak turret
#

yes

keen narwhal
#
    if (!style || style === undefined || style === null) throw new TypeError('NO_BUTTON_STYLE: Please provide button style');
                                                               ^

TypeError: NO_BUTTON_STYLE: Please provide button style
    at resolveStyle (D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\v12\Util.js:5:64)
    at MessageButton.setup (D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\v12\Classes\MessageButton.js:13:36)
    at new MessageButton (D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\v12\Classes\MessageButton.js:9:10)
    at Function.create (D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\v12\Classes\interfaces\BaseMessageComponent.js:23:21)
    at D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\v12\Classes\MessageActionRow.js:26:87
    at Array.map (<anonymous>)
    at MessageActionRow.addComponents (D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\v12\Classes\MessageActionRow.js:26:55)
    at MessageActionRow.addComponent (D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\v12\Classes\MessageActionRow.js:31:17)
    at Client.<anonymous> (D:\Téléchargements\discord-button-main\index.js:87:4)
    at Client.emit (node:events:369:20)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! Mystic@1.0.0 start: `node index.js`
oak turret
#

ah yes

keen narwhal
#

.setStyle('url')

#

J'ajoute ça ?

oak turret
#
.setStyle("red")
#

par exemple

#

oui si tu veux

#

mais tu vas devoir rajouter un .setURL() si tu le mets en url

keen narwhal
#

oui c'était juste l'info

#

DOnc

#
const buttons = require("discord-buttons");
buttons(client);
if (message.content.startsWith(prefix + 'testi')) {
let button_one = new buttons.MessageButton()
  .setStyle('red')
  .setLabel("label")
  .setID("testing");

  let row = new buttons.MessageActionRow()
  .addComponent(button_one);

await message.channel.send("button_one", {component: row});
#

C'est good comme ça ?

oak turret
#

non

#

.setStyle("red")

#

t'as blurple, red, green, url comme style pour l'instant

keen narwhal
#

AHhh oui merde c'est pas comme l'id

#

tu choisis pas

#

J'avais zapper

oak turret
#

si tu choisis, mais parmi une liste prédéfinie du coup

keen narwhal
#

Oui mais ta compris ^^

oak turret
#

yes

keen narwhal
#

ça envoie le text mais pas le buttons

oak turret
#

mh

#

laisse moi look 2sec

keen narwhal
#

Oki

#
const { MessageEmbed, Client, Message } = require("discord.js");
const client = new Client();
const prefix = "+";
const fetch = require("node-fetch");
const { get } = require('axios');
const moment = require('moment');

client.on('ready', function() {
    console.log("Prêt à être utiliser à 100%.")
    setInterval(async () => {
        try {
            //--------STATUS INFOS--------//
            const statuslist = [
                `${prefix}help | ${client.guilds.size} serveurs`,
                `${prefix}help | ${client.channels.size} channels`,
                `${prefix}help | ${client.users.size} utilisateurs`
            ];
            const random = Math.floor(Math.random() * statuslist.length);
            //------STATUS URL TWITCH------//
            const statusurl = [
                `https://www.twitch.tv/`
            ];
            const randomurl = Math.floor(Math.random() * statusurl.length);
            client.user.setPresence({ game: { name: statuslist[random]}, status: 'online' })
        } catch (error) {
            (console.log)
        };
    }, 10000);
});

client.on('message', async function(message) {
    ////////-------////////
    //--A NE PAS TOUCHER-//
    ////////-------////////
    if(message.author.bot) return;
    if(message.channel.type === "dm") return;
    ////////////////////
    ////////////////////
    if (!message.content.startsWith(prefix)) return;

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////


    if(message.content.startsWith(prefix + "help")){
        message.delete(message.author);
        let embed_hhwid = new MessageEmbed()
            .setColor('random')
            .setTitle(`Base Bot`)
            .setImage("https://media.discordapp.net/attachments/755487927588618274/756826026557964328/bannergif.gif")
            .setDescription(`Coding Bot Discord Tool`)
            .setTimestamp()
            .setFooter(`Demander par ${message.author.tag}`)
        message.channel.send(embed_hhwid);
    }
//////////////////////////////////////////////////////////////////////
    if(message.content.startsWith(prefix + "avatar")){
        message.delete(message.author);
        const mentionned = message.mentions.users.first() || message.author;
        const avatarEmbed = new MessageEmbed()
            .setTitle(`Avatar of **${mentionned.username}**`)
            .setColor("RANDOM")
            .setImage(mentionned.displayAvatarURL({ dynamic: true, size: 512 }));
        message.channel.send(avatarEmbed);
    }
//////////////////////////////////////////////    

    if (message.content.startsWith(prefix + 'url')) {
        message.delete(message.author);

        let btn = new disbut.MessageButton()
        .setStyle('url')
        .setLabel('Discord Button Link NPM')
        .setURL('https://npmjs.com/discord-button')
        .setID('clickto');

        await message.channel.send(`Button Discord Link`, btn);
    }

const buttons = require("discord-buttons");
buttons(client);
if (message.content.startsWith(prefix + 'testi')) {
let button_one = new buttons.MessageButton()
  .setStyle('red')
  .setLabel("label")
  .setID("testing");

  let row = new buttons.MessageActionRow()
  .addComponent(button_one);

await message.channel.send("button_one", {component: row});


}
})//
oak turret
#

mh mais si t'en as qu'un le row est pas obligatoire

keen narwhal
#

Tien voila le code global

oak turret
#

donc tu peux enlever le r ow

#

row

#

et juste fair

#

e

#
await message.channel.send("button_one", button_one);
keen narwhal
#

if (message.content.startsWith(prefix + 'testi')) {
let button_one = new buttons.MessageButton()
.setStyle('red')
.setLabel("label")
.setID("testing");

await message.channel.send("button_one", {component: button_one});

#

J'ai mis ça

oak turret
#

non

#

prends ce que je t'ai donné

keen narwhal
#

Ouais mais t'enleve juste le component

#

Mais ok

#

Tu veux que je test comme ça ?

oak turret
#

yes

keen narwhal
#
      throw new Error(
            ^

Error: The class/prototype returned from the extender function must extend the existing structure class/prototype (received function ExtendedTextChannel extends TextChannel; expected extension of ExtendedTextChannel).
    at Function.extend (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\util\Structures.js:82:13)
    at module.exports (D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\index.js:24:16)
    at Client.<anonymous> (D:\Téléchargements\discord-button-main\index.js:80:1)
    at Client.emit (node:events:369:20)
    at MessageCreateAction.handle (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\event-target.js:132:16)
#

J'ai une erreur console

oak turret
#

je ne connais pas cette erreur

#

bizarre

keen narwhal
#
const buttons = require("discord-buttons");
buttons(client);
if (message.content.startsWith(prefix + 'testi')) {
let button_one = new buttons.MessageButton()
  .setStyle('red')
  .setLabel("label")
  .setID("testing");

  await message.channel.send("button_one", button_one);
#

C'est bien ça le code ?

oak turret
#

oui mais essaye de mettre que cette commande pour voir

#

enlève tes autres commandes pour voir

keen narwhal
#
const { MessageEmbed, Client, Message } = require("discord.js");
const client = new Client();
const prefix = "+";
const fetch = require("node-fetch");
const { get } = require('axios');
const moment = require('moment');

client.on('ready', function() {
    console.log("Prêt à être utiliser à 100%.")
    setInterval(async () => {
        try {
            //--------STATUS INFOS--------//
            const statuslist = [
                `${prefix}help | ${client.guilds.size} serveurs`,
                `${prefix}help | ${client.channels.size} channels`,
                `${prefix}help | ${client.users.size} utilisateurs`
            ];
            const random = Math.floor(Math.random() * statuslist.length);
            //------STATUS URL TWITCH------//
            const statusurl = [
                `https://www.twitch.tv/`
            ];
            const randomurl = Math.floor(Math.random() * statusurl.length);
            client.user.setPresence({ game: { name: statuslist[random]}, status: 'online' })
        } catch (error) {
            (console.log)
        };
    }, 10000);
});

client.on('message', async function(message) {
    ////////-------////////
    //--A NE PAS TOUCHER-//
    ////////-------////////
    if(message.author.bot) return;
    if(message.channel.type === "dm") return;
    ////////////////////
    ////////////////////
    if (!message.content.startsWith(prefix)) return;

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

const buttons = require("discord-buttons");
buttons(client);
if (message.content.startsWith(prefix + 'testi')) {
let button_one = new buttons.MessageButton()
  .setStyle('red')
  .setLabel("label")
  .setID("testing");

  await message.channel.send("button_one", button_one);
#

Mon code ce résume a ça ducoup

oak turret
#

t'as oublié de fermé ton event là

keen narwhal
#

Nan

#

J'ai juste pas copier

oak turret
#

k

#

bah oui du coup

#

test

keen narwhal
#

J'ai pas d'érreur

#

Mais le buttons ne s'affiche pas

oak turret
#

remet le row alors

keen narwhal
#

ça peu pas être la dependen qui foire ?

oak turret
#

non elle marche bien la dépendance

keen narwhal
#
const buttons = require("discord-buttons");
buttons(client);
if (message.content.startsWith(prefix + 'testi')) {
let button_one = new buttons.MessageButton()
  .setStyle('red')
  .setLabel("label")
  .setID("testing");

  let row = new buttons.MessageActionRow()
  .addComponent(button_one);

  await message.channel.send("button_one", row);
oak turret
#

oauip

#

c'est censé marché sans quoi

keen narwhal
#

tu peu tester le code de ton coter

#

Et me dire si c'est good pour toi ?

oak turret
#

j'vais check ouais

keen narwhal
#

Je sais pas si j'ai un soucis

oak turret
#

ça marche chez moi

keen narwhal
#

Tu peux send ton code que je test ?

oak turret
#

j'ai pas du tout la même archi que toi donc ça marchera pas chez toi

#

j'utilise commando

keen narwhal
#

AHhh merde

oak turret
#

c'est quoi ta version de djs ?

#

ou de node

keen narwhal
#

Attend je vais check

#

Je viens de l'update pour la 12.5.3

oak turret
#

je suis sous la même version

#

vraiment bizarre

keen narwhal
#

16.5.0 Current

#

Et la je download la 16.5.0 pour node

oak turret
#

pas besoin

#

j'suis sous la 14 c'good

burnt perch
#

On peut faire des boutons cliquable avec djs ????

oak turret
#

ouaip

#

des menus déroulants aussi

burnt perch
#

Ah ouai lourd la dernier fois que jen ai fait yavai pas mdrr mais ça marche comment

#

Car c'est vraiment des boutons ou des image

oak turret
#

c'est une lib

#

des boutons des vrais

#

ça marche comme ça

burnt perch
#

Bah si c'est moins chiant que les réactions c'est cool

oak turret
#

je trouve ça mieux ouais

burnt perch
#

En vrai c'est soin mais c'est assez nouveau je suis pas passez à coter de ça a chaque fois que j'ai dev un bot hein mdrr

oak turret
#

xddd

#

c'est simple à mettre en place en vrai

keen narwhal
#

Je vfiens de mettre a jour

#

Mais marche pas

burnt perch
#

Je te laisse avec l'expert mdrr

oak turret
#

déjà tes require fous les tout en haut de ton fichier

#

avec les autres

#

mais je comprends pas trop pourquoi ça marche pas

oak turret
keen narwhal
#
const { MessageEmbed, Client, Message } = require("discord.js");
const client = new Client();
const prefix = "+";
const fetch = require("node-fetch");
const { get } = require('axios');
const moment = require('moment');
const buttons = require("discord-buttons");
buttons(client);
oak turret
#

oauip

#

essaye :


if ( message.content.startsWith(`${prefix}button`) ) {
  let new_button = new buttons.MessageButton()
    .setStyle("red")
    .setLabel("Rouge")
    .setID("red_button");
  return message.channel.send("message", new_button);
}
keen narwhal
#
if ( message.content.startsWith(`${prefix}button`) {
                                                   ^

SyntaxError: Unexpected token '{'
    at Object.compileFunction (node:vm:355:18)
    at wrapSafe (node:internal/modules/cjs/loader:1022:15)
    at Module._compile (node:internal/modules/cjs/loader:1056:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1121:10)
    at Module.load (node:internal/modules/cjs/loader:972:32)
    at Function.Module._load (node:internal/modules/cjs/loader:813:14)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
    at node:internal/main/run_main_module:17:47
oak turret
#

my bad

#

j'ai oublié une )

#

la ) du if

#

j'ai modif

#

j'ai update, check pour voir

keen narwhal
#

C'est bon tkt attend je vais test

#

Putain enfin

oak turret
#

parfait

#

gg

keen narwhal
#

^^

#

C'est quoi ducoup le problème

oak turret
#

je pense que j'ai du oublié le return même si j'en doute mais du coup sinon voilà hein

#

du coup pour gérer tes boutons tu as un nouvel event

#

clickButton il s'appelle

keen narwhal
#

Je vais bosser sur mon système de tickets

oak turret
#

tu peux gérer les intéractions de tes boutons par leurs id, ils doivent être unique et de là tu peux check quel bouton à été cliqué et par qui

keen narwhal
#

Niquel merci

#

Plus qu'a travailler

oak turret
#

pas de soucis salutation

keen narwhal
#

Vraiment un grand merci

#

^^

oak turret
#

avec plaisir cher ami

keen narwhal
#

^^

oak turret
#

plus d'erreurs ?

keen narwhal
#

J'ai un tout petit soucis

oak turret
#

yes dis moi

keen narwhal
#

Non je viens de patch un code d'erreur que j'avais

#

Comment je fait pour combiner un embed et les buttons

oak turret
#

tout simple

keen narwhal
#

Pour ajouter un buttons a un embed

#

Je suis con quesque tu veux 🙂

oak turret
#

soit tu fais :

keen narwhal
#
    if(message.content.toLowerCase() === '?sendmsg') {
        const embed = new Discord.MessageEmbed()
        .setAuthor(client.user.username, client.user.displayAvatarURL)
        .setDescription('React to this message to open a support ticket')
        .setColor('#F39237')
        .setStyle("red")
        .setLabel("Rouge")
        .setID("red_button");

        message.channel.send(embed, embed);
oak turret
#

ok comme ça du coup tu fais

keen narwhal
#

Moi j'ai fait ça

oak turret
#
message.channel.send({embed: embed}, ton_bouton)
#

test ça

keen narwhal
#

Oui mais faut que je sépare les const ?

#

Faut que je fasse un const embed et un const buttons ?

oak turret
#

oui du coup

keen narwhal
#
    if(message.content.toLowerCase() === '?sendmsg') {
        const embed = new Discord.MessageEmbed()
        .setAuthor(client.user.username, client.user.displayAvatarURL)
        .setDescription('React to this message to open a support ticket')
        .setColor('#F39237')
        let new_button = new buttons.MessageButton()
        .setStyle("red")
        .setLabel("Rouge")
        .setID("red_button");

        message.channel.send({embed: embed}, new_button)
#

Comme ça ?

oak turret
#

yes

keen narwhal
#

Attend

#

j'ai pas require discord-buttons

oak turret
#

ah lol

keen narwhal
#

Il me sort ça lol

oak turret
#

j'ai du me gourer ouais mdr

keen narwhal
#

message.channel.send(embed, new_button)

#

Je peux juste mettre ça nan ?

oak turret
#

je pense ouais

#

test

#

sinon je vais test de mon côté, car je l'ai fais mais avec plusieurs boutons donc j'utilise un actionrow

keen narwhal
#
        if(message.embeds.length === 1 && message.embeds[0].description.startsWith('React')) {
                                                                        ^

TypeError: Cannot read property 'startsWith' of null
    at Client.<anonymous> (D:\Téléchargements\discord-button-main\ticketbot-reaction.js:29:73)
    at Client.emit (node:events:394:28)
    at MessageCreateAction.handle (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (node:events:394:28)
    at Receiver.receiverOnMessage (D:\Téléchargements\discord-button-main\node_modules\ws\lib\websocket.js:970:20)
#

J'ai cette jolie petite erreur

oak turret
#

ça vient de toi ça

keen narwhal
#

Attend je viens de le patch

#

j'ai passer les message en Async

#

Et j'ai plus d'erreur

oak turret
#

laisse moi test de mon côté attend

keen narwhal
#

Mais par contre je garde ça

oak turret
#

like this

#

j'avais oublié que button: existait lol

#

c'est bon pour toi @keen narwhal ?

keen narwhal
#
    if(message.content.toLowerCase() === '?sendmsg') {

        let new_button = new buttons.MessageButton()
        .setStyle("red")
        .setLabel("Rouge")
        .setID("red_button");

        const embed = new Discord.MessageEmbed()
        .setAuthor(client.user.username, client.user.displayAvatarURL)
        .setDescription('React to this message to open a support ticket')
        .setColor('#F39237')
        
            return message.channel.send({
                embed: embed,
                button: new_button
            })
    }
#

Like this ?

oak turret
#

si tu veux ajouter plusieurs boutons par contre tu devras faire autrement

#

oui

keen narwhal
#

Oui je souhaite ajouter plusieur boutons

oak turret
#

ok donc à ce moment-là tu devrais faire comme ça de mémoire dans le même type :

#
return message.channel.send({
  embed: embed,
  components: [button1, button2]
});
#

ou sinon tu fais un actionrow avec un .addcomponents et tu mettras le row dans l'objet components

keen narwhal
#

pas de virgule après ?

oak turret
#

après quoi ?

keen narwhal
#

[button1, button2]

oak turret
#

nop si tu n'as aucun objet après components

#

c'est le dernier de la liste

keen narwhal
#
TestBoting has logged in.
DiscordAPIError: Unknown Emoji
    at RequestHandler.execute (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\rest\RequestHandler.js:39:14) {
  method: 'put',
  path: '/channels/860544911955066936/messages/868856953655414844/reactions/ticketreact%3A625925895013662721/@me',
  code: 10014,
  httpStatus: 400
oak turret
#

t'as mis un .setEmoji() ?

keen narwhal
#

Bas de base vue j'arrivais pas a faire fonctionner les buttons oui mdrr

oak turret
#

montre ton .setEmoji()

keen narwhal
#

Nan c'est pas un set emojis

oak turret
#

bah c'est quoi alors ?

keen narwhal
#

J'avais utiliser ça d'un github

#
client.on('raw', payload => {
    if(payload.t === 'MESSAGE_REACTION_ADD') { // Check if the event name is MESSAGE_REACTION_ADD
        if(payload.d.emoji.name === 'ticketreact') // If the emoji is ticketreact
        {
            if(payload.d.message_id === '625926893954400266') { // Here we check if the id of the message is the ID of the embed that we had the bot send using the ?sendmsg command.
                let channel = client.channels.get(payload.d.channel_id) // Get the proper channel object.
                if(channel.messages.has(payload.d.message_id)) { // Check if the channel has the message in the cache.
                    return;
                }
                else { // Fetch the message and then get the reaction & user objects and emit the messageReactionAdd event manually.
                    channel.fetchMessage(payload.d.message_id)
                    .then(msg => {
                        let reaction = msg.reactions.get('ticketreact:625925895013662721');
                        let user = client.users.get(payload.d.user_id);
                        client.emit('messageReactionAdd', reaction, user);
                    })
                    .catch(err => console.log(err));
                }
            }
        }
oak turret
#

oui j'ai vu le -main

keen narwhal
#

J'vais trouver ça qui marchais bien

oak turret
#

WHAT, t'en as pas besoin

keen narwhal
#

Nan le reste c'est moi ^^

oak turret
#

ouais du coup un peu useless cet event

keen narwhal
#

Bas maintenant oui mdrr

oak turret
#

pour les boutons t'en auras pas besoin du coup

keen narwhal
#

Je viens de le remove et de tester

#

J'ai la meme erreur

oak turret
#

et même si tu veux des réactions, y a bien + simple

#

bah du coup tu fous un émoji quelque part

keen narwhal
oak turret
#

montre ton code

keen narwhal
#

trop gros pour discord

oak turret
#

oula mais t'utilises des réactions en + des boutons ?

keen narwhal
#
const Discord = require('discord.js');
 const client = new Discord.Client();
 const buttons = require("discord-buttons");

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

var userTickets = new Map();

client.login(config.token);

client.on('ready', () => {
    console.log(client.user.username + " has logged in.");
});

client.on('message', async function(message) {

    if(message.author.bot) {
        if(message.embeds.length === 1 && message.embeds[0].description.startsWith('React')) {
            message.react(':ticketreact:625925895013662721')
            .then(msgReaction => console.log('Reacted.'))
            .catch(err => console.log(err));
        }
        if(message.embeds.length === 1 && message.embeds[0].title === 'Ticket Support') {
            message.react(':checkreact:625938016510410772')
            .then(reaction => console.log("Reacted with " + reaction.emoji.name))
            .catch(err => console.log(err));
        }
    };

    if(message.content.toLowerCase() === '?sendmsg') {

        let new_button = new buttons.MessageButton()
        .setStyle("red")
        .setLabel("Rouge")
        .setID("red_button");

        const embed = new Discord.MessageEmbed()
        .setAuthor(client.user.username, client.user.displayAvatarURL)
        .setDescription('React to this message to open a support ticket')
        .setColor('#F39237')
        
            return message.channel.send({
                embed: embed,
                components: [new_button]
            });
    }
});
#

Ducoup je garde que ça

oak turret
#

ouaip

keen narwhal
#

vue que le reste faut que je le refasse pour les buttons

oak turret
#

je vois pas trop l'utilité des réactions si t'as les boutons, ça revient au même

keen narwhal
#

Bas oui

oak turret
#

ouaip mais ça revient quasiment au même niveau code que les réactions

keen narwhal
#

Je veux remplacer les emojis et réaction par des buttons

oak turret
#

okok

keen narwhal
#

Beaucoups plus simple a l'utilisation

#

Et plus jolie

oak turret
#

plus intuitif yes

keen narwhal
#

Je test comme ça ?

oak turret
#

bah là t'as qu'un bouton donc si tu veux

keen narwhal
#

DiscordAPIError: Unknown Emoji
at RequestHandler.execute (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\rest\RequestHandler.js:39:14) {
method: 'put',
path: '/channels/860544911955066936/messages/868858981202944080/reactions/ticketreact%3A625925895013662721/@me',
code: 10014,
httpStatus: 400

#

J'ai encore cette erreur

#

Nan c'est bon

oak turret
#

message.react(':ticketreact:625925895013662721')

#

oui voilà

keen narwhal
#

j'avais oublier de supr une partie

oak turret
#

k et du coup ?

keen narwhal
#
    if(message.content.toLowerCase() === '?sendmsg') {
    ^

ReferenceError: message is not defined
    at Object.<anonymous> (D:\Téléchargements\discord-button-main\ticketbot-reaction.js:15:5)
←[90m    at Module._compile (node:internal/modules/cjs/loader:1095:14)←[39m
←[90m    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1124:10)←[39m
←[90m    at Module.load (node:internal/modules/cjs/loader:975:32)←[39m
←[90m    at Function.Module._load (node:internal/modules/cjs/loader:816:12)←[39m
←[90m    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)←[39m
←[90m    at node:internal/main/run_main_module:17:47←[39m
oak turret
#

t'es plus dans ton event message

#

regarde bien ce que tu retires ^^

keen narwhal
#

Merde

#

j'avais pas garder client.on('message', async function(message) {

oak turret
#

xd

keen narwhal
#
const Discord = require('discord.js');
 const client = new Discord.Client();
 const buttons = require("discord-buttons");

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

var userTickets = new Map();

client.login(config.token);

client.on('ready', () => {
    console.log(client.user.username + " has logged in.");
});
client.on('message', async function(message) {
    if (message.content.toLowerCase() === '?sendmsg') {

        let new_button = new buttons.MessageButton()
        .setStyle("red")
        .setLabel("Rouge")
        .setID("red_button");

        const embed = new Discord.MessageEmbed()
        .setAuthor(client.user.username, client.user.displayAvatarURL)
        .setDescription('React to this message to open a support ticket')
        .setColor('#F39237')
        
            return message.channel.send({
                embed: embed,
                components: [new_button]
            })
        }
    });
#

J'ai ça maintenant

oak turret
#

ouais ok, tu peux mettre button: new_button, à la place de components qui te servira + lorsque tu auras plusieurs boutons

keen narwhal
#
    if(message.content.toLowerCase() === '?sendmsg') {
    ^

ReferenceError: message is not defined
    at Object.<anonymous> (D:\Téléchargements\discord-button-main\ticketbot-reaction.js:15:5)
←[90m    at Module._compile (node:internal/modules/cjs/loader:1095:14)←[39m
←[90m    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1124:10)←[39m
←[90m    at Module.load (node:internal/modules/cjs/loader:975:32)←[39m
←[90m    at Function.Module._load (node:internal/modules/cjs/loader:816:12)←[39m
←[90m    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)←[39m
←[90m    at node:internal/main/run_main_module:17:47←[39m
PS D:\Téléchargements\discord-button-main> node .\ticketbot-reaction.js
oak turret
#

c'est comme ça :

#
client.on("message", async (message) => {

  if ( message.content.toLowerCase() === "?sendmsg" ) {
    let new_button = new buttons.MessageButton()
        .setStyle("red")
        .setLabel("Rouge")
        .setID("red_button");

        const embed = new Discord.MessageEmbed()
        .setAuthor(client.user.username, client.user.displayAvatarURL)
        .setDescription('React to this message to open a support ticket')
        .setColor('#F39237')
        
            return message.channel.send({
                embed: embed,
                button: new_button
            })
       }
  }
})
keen narwhal
#

J'ai plus d'erreur

oak turret
#

ouais j'ai pas mis button: nes_button

keen narwhal
#

Mais pas de button

#
const Discord = require('discord.js');
 const client = new Discord.Client();
 const buttons = require("discord-buttons");

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

var userTickets = new Map();

client.login(config.token);

client.on('ready', () => {
    console.log(client.user.username + " has logged in.");
});
client.on("message", async (message) => {

    if ( message.content.toLowerCase() === "?sendmsg" ) {
      let new_button = new buttons.MessageButton()
          .setStyle("red")
          .setLabel("Rouge")
          .setID("red_button");
  
          const embed = new Discord.MessageEmbed()
          .setAuthor(client.user.username, client.user.displayAvatarURL)
          .setDescription('React to this message to open a support ticket')
          .setColor('#F39237')
          
              return message.channel.send({
                  embed: embed,
                  button: new_button
              })
         }
}); 
oak turret
#

j'ai update

keen narwhal
#

comme ça ?

oak turret
#

oui voilà comme ça

keen narwhal
#

Pas de button

oak turret
#

laisse moi check

keen narwhal
#

On retourne a la base du problème mdrr

oak turret
#

moi ça marche

#

t'as enlevé ton buttons(client)

keen narwhal
#

🧐

oak turret
#

ton client.login() c'est tout à la fin d'ailleurs de ton code

keen narwhal
#

regarde le code que j'ai send

oak turret
#

où est ton buttons(client) ?

keen narwhal
#
const Discord = require('discord.js');
 const client = new Discord.Client();
 const buttons = require("discord-buttons");

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

var userTickets = new Map();

client.on('ready', () => {
    console.log(client.user.username + " has logged in.");
});
client.on("message", async (message) => {

    if ( message.content.toLowerCase() === "?sendmsg" ) {
      let new_button = new buttons.MessageButton()
          .setStyle("red")
          .setLabel("Rouge")
          .setID("red_button");
  
          const embed = new Discord.MessageEmbed()
          .setAuthor(client.user.username, client.user.displayAvatarURL)
          .setDescription('React to this message to open a support ticket')
          .setColor('#F39237')
          
              return message.channel.send({
                  embed: embed,
                  button: new_button
              })
         }
})
client.login(config.token);
#

comme ça ?

oak turret
#

t'as juste mis le client.login() tout en bas là

#

après le const buttons etc, tu mets buttons(client)

keen narwhal
#

const embed = new Discord.MessageEmbed(client)

#

ça ?

oak turret
#

mais non

#

...

#

comme tout à l'heure

#
const Discord = require('discord.js');
const client = new Discord.Client();
const buttons = require("discord-buttons");
buttons(client);
const config = require('./config.json');

var userTickets = new Map();

client.on('ready', () => {
    console.log(client.user.username + " has logged in.");
});
client.on("message", async (message) => {

    if ( message.content.toLowerCase() === "?sendmsg" ) {
      let new_button = new buttons.MessageButton()
          .setStyle("red")
          .setLabel("Rouge")
          .setID("red_button");
  
          const embed = new Discord.MessageEmbed()
          .setAuthor(client.user.username, client.user.displayAvatarURL)
          .setDescription('React to this message to open a support ticket')
          .setColor('#F39237')
          
              return message.channel.send({
                  embed: embed,
                  button: new_button
              })
         }
})
client.login(config.token);
keen narwhal
#

Je vois pas la dif

oak turret
keen narwhal
#

AHhhh

oak turret
#

pourtant c'est assez clair

keen narwhal
#

Oui merde

#

j'avais pas compris ohhhh

#

^^

oak turret
#

tqt

keen narwhal
#

C'est bon

#

Tout fonctionne

oak turret
#

parfait

keen narwhal
#

Plus qu'a faire le système de detection

#

et go

oak turret
#

tu devras faire comme ça pour détecter le clic d'un bouton

keen narwhal
#

Je risque d'avoir besoin de ton aide mdrr

#

client.on('clickButton', async (button) => {
//Your code here...
});

oak turret
#
client.on("clickButton", async (button) => {
  // tata
})
#

oui voilà

#

console.log(button) et tu verras ^^

keen narwhal
#

Ouais mais alors attend mdrr

#

Je suis perdu la

oak turret
#

tu comprends pas quoi ?

keen narwhal
#

Genre si je veux envoyer un message une fois le buttons cliquer je fait ça ?

#

client.on('clickButton', async (button) => {
const embed = new Discord.MessageEmbed()
.setAuthor(client.user.username, client.user.displayAvatarURL)
.setDescription('React to this message to open a support ticket')
.setColor('#F39237')
});

oak turret
#

ah ouais mais non du coup

keen narwhal
#

J'ai oublier le message.channel.send

oak turret
#

non non ça marchera plus comme ça

keen narwhal
#

Comment alors ?

oak turret
#

je te montre

#
client.on("clickButton", async (button) => {
  const embed = new Discord.MessageEmbed()
    .setColor("RED")
    .setTitle("Bouton embed")
    .setAuthor(button.clicker.user.username, button.clicker.user.displayAvatarURL())
    .setDescription('Réagissez !');

  return button.message.channel.send(embed);
});
#

sauf que là, ça ne marchera pas car tu détectes aucun bouton

#

tu devras le faire comme ceci pour détecter :

#
if ( button?.id === "id_du_bouton" ) {
  //
}
keen narwhal
#

Ouais ok

#

Mais a quoi sert client.on("clickButton", async (button) => {

oak turret
#

bah c'est comme l'event message qui te permet de détecter les messages, là c'est pareil mais ça détecte les boutons

#

et leurs méthodes*

keen narwhal
#
client.on("message", async (message) => {

    if ( message.content.toLowerCase() === "?sendmsg" ) {
      let new_button = new buttons.MessageButton()
          .setStyle("red")
          .setLabel("Rouge")
          .setID("red_button");
  
          const embed = new Discord.MessageEmbed()
          .setAuthor(client.user.username, client.user.displayAvatarURL)
          .setDescription('React to this message to open a support ticket')
          .setColor('#F39237')
          
              return message.channel.send({
                  embed: embed,
                  button: new_button
              })
         }

         client.on("clickButton", async (button) => {
            if ( button?.id === "id_du_bouton" ) {
            const embed = new Discord.MessageEmbed()
              .setColor("RED")
              .setTitle("Bouton embed")
              .setAuthor(button.clicker.user.username, button.clicker.user.displayAvatarURL())
              .setDescription('Réagissez !');
          
            return button.message.channel.send(embed);
        }
    });
});
#

Comme ça en gros ?

oak turret
#

oauis non

#

les events doivent être séparés

#
client.on("message", async (message) => {})
client.on("clickButton", async (button) => {})

c'est grossier mais c'est pour que tu vois quand je dis "séparé"

keen narwhal
#

Pas logique la

#

le if ( button?.id === "id_du_bouton" ) { disparais

oak turret
#

dans le code que tu m'as mis, tu n'as pas séparé tes évènements, ça c'est pas bon

keen narwhal
#
client.on("message", async (message) => {

    if ( message.content.toLowerCase() === "?sendmsg" ) {
      let new_button = new buttons.MessageButton()
          .setStyle("red")
          .setLabel("Rouge")
          .setID("red_button");
  
          const embed = new Discord.MessageEmbed()
          .setAuthor(client.user.username, client.user.displayAvatarURL)
          .setDescription('React to this message to open a support ticket')
          .setColor('#F39237')
          
              return message.channel.send({
                  embed: embed,
                  button: new_button
              })
         }

        client.on("message", async (message) => {})
        client.on("clickButton", async (button) => {})
            const embed = new Discord.MessageEmbed()
              .setColor("RED")
              .setTitle("Bouton embed")
              .setAuthor(button.clicker.user.username, button.clicker.user.displayAvatarURL())
              .setDescription('Réagissez !');
          
            return button.message.channel.send(embed);
        })
#

Donc comme ça ?

oak turret
#

mais non...

#

je t'ai donné un exemple pour que tu vois la différence

keen narwhal
#

Mais euhhhh je suis duper la

oak turret
#

je vois ça

#

attend

keen narwhal
#

Puai

#

putain je suis con

#

Je viens de comprendre

oak turret
#
client.on("message", async (message) => {
    if ( message.content.toLowerCase() === "?sendmsg" ) {
      let new_button = new buttons.MessageButton()
          .setStyle("red")
          .setLabel("Rouge")
          .setID("red_button");
  
          const embed = new Discord.MessageEmbed()
          .setAuthor(client.user.username, client.user.displayAvatarURL)
          .setDescription('React to this message to open a support ticket')
          .setColor('#F39237')
          
              return message.channel.send({
                  embed: embed,
                  button: new_button
              })
         }
})

client.on("clickButton", async (button) => {
  if ( button?.id === "red_button" ) {
    button.reply.send("je suis le bouton rouge !");
  } 
})

test ça tu verras

keen narwhal
#

Oui c'était ce que j'atais entrein de faire

#

Mais sans que tu me donne le code

oak turret
#

parfait lol

keen narwhal
#

je suis trop con,

#

J'ai pris la ligne sans la lire

oak turret
#

tqt on est tous passés par là

keen narwhal
#
client.on('ready', () => {
    console.log(client.user.username + " has logged in.");
});
client.on("message", async (message) => {

    if ( message.content.toLowerCase() === "?sendmsg" ) {
      let new_button = new buttons.MessageButton()
          .setStyle("red")
          .setLabel("Rouge")
          .setID("red_button");
  
          const embed = new Discord.MessageEmbed()
          .setAuthor(client.user.username, client.user.displayAvatarURL)
          .setDescription('React to this message to open a support ticket')
          .setColor('#F39237')
          
              return message.channel.send({
                  embed: embed,
                  button: new_button
              })
         }
})

client.on("clickButton", async (button) => {
    if ( button?.id === "red_button" ) {
      button.reply.send("je suis le bouton rouge !");
    } 
  })
#

C'est good ?

oak turret
#

t'as repris mon code du coup yes

#

test ^^

keen narwhal
#

J'ai juste repris me client.on("clickButton", async (button) => { mais j'avais refermer le clien.on(message) avant

oak turret
#

kk

keen narwhal
#

Oue niquel ça marche

#

Aller plus que 200 lignes mdrr

#

Je taff dessus et je reviens vers toi si j'ai un soucis

#

Merci beaucoup en tout cas

oak turret
#

pas de soucis ^^

white sedge
#

qlq peut m'aider a faire mes events pour mon bot

dire latch
#

Comme ? @white sedge

white sedge
#

comme lors de la creation d'un salon mettre dans un fichier .log le nom du salon plus le nom du membre qui la cree

#

et je n'arrive pas a recuperer le nom du membre ni celui du salon

#

@dire latch

dire latch
#

C'est un auditlog

#

Si jamais

#

@white sedgeTu me dis si tu trouves pas

white sedge
#

ok

#

g ça maintenant je peux plus lancer mon bot

node:9036) UnhandledPromiseRejectionWarning: Error: EACCES: permission denied, write
at writeSync (fs.js:733:3)
at SyncWriteStream._write (internal/fs/sync_write_stream.js:24:3)
at writeOrBuffer (internal/streams/writable.js:358:12)
at SyncWriteStream.Writable.write (internal/streams/writable.js:303:10)
at Console.log (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java2/node_modules/winston/lib/winston/transports/console.js:79:23)
at Console._write (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java2/node_modules/winston-transport/index.js:82:19)
at doWrite (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java2/node_modules/winston-transport/node_modules/readable-stream/lib/_stream_writable.js:428:64)
at writeOrBuffer (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java2/node_modules/winston-transport/node_modules/readable-stream/lib/_stream_writable.js:417:5)
at Console.Writable.write (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java2/node_modules/winston-transport/node_modules/readable-stream/lib/_stream_writable.js:334:11)
at DerivedLogger.ondata (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java2/node_modules/readable-stream/lib/_stream_readable.js:681:20)
(Use node --trace-warnings ... to show where the warning was created)
<node_internals>/internal/process/warning.js:44
(node:9036) 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:44
(node:9036) [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.

#

je conprent plus rien il marchait tres bien

dire latch
#

Tu as dût faire une erreur sur ton code

white sedge
#

je viens de suppr le ficher que je venais de cree et ça e fais toujours la meme chose

hazy mirage
#

envoie ton code 😉

dire latch
#

Si tu as modifs quelques choses a part le channelCreate, CTRL + Z

white sedge
#

j'envoi tout le code du bot ?

hazy mirage
#

au moins le fichier qui déclenche l'erreur

white sedge
#

ben

#

g tout deplacer dans un autre dossier et ... g plus l'erreur

#

c pas normal ça

#

visual studio pete un plomb la je peut plus faire ctrl+a

#

mais maintenant g ce probleme Error: ENOENT: no such file or directory, scandir './events/' {errno: -2, code: 'ENOENT', syscall: 'scandir', path: './events/', stack: 'Error: ENOENT: no such file or directory, scandir './events/'', …}

#

Aucun débogueur disponible. Impossible d'envoyer 'variables'

hazy mirage
#

donc ça c'est ton index.js, il doit etre au meme endroit que ton dossier events

white sedge
#

ben

#

il y est

hazy mirage
#

fs.readdir('./events/', (err, files) => { => fs.readdir(__dirname + '/events/', (err, files) => {

#

Essaye cette modification Thonk

white sedge
#

ok

#

att

#

Error: ENOENT: no such file or directory, scandir '/events/' {errno: -2, code: 'ENOENT', syscall: 'scandir', path: '/events/', stack: 'Error: ENOENT: no such file or directory, scandir '/events/'', …}

hazy mirage
#

et si tu rajoutes un . avant le / là ?

white sedge
#

une erreur

#

ça met une erreur

hazy mirage
#

tj la meme ?

white sedge
#

att je te lenvoie

dire latch
#

Tu l'as pas mis dans ton loader.js ? @white sedge

white sedge
#

(node:10814) UnhandledPromiseRejectionWarning: Error: EACCES: permission denied, write
at writeSync (fs.js:733:3)
at SyncWriteStream._write (internal/fs/sync_write_stream.js:24:3)
at writeOrBuffer (internal/streams/writable.js:358:12)
at SyncWriteStream.Writable.write (internal/streams/writable.js:303:10)
at Console.log (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java3/node_modules/winston/lib/winston/transports/console.js:79:23)
at Console._write (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java3/node_modules/winston-transport/index.js:82:19)
at doWrite (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java3/node_modules/winston-transport/node_modules/readable-stream/lib/_stream_writable.js:428:64)
at writeOrBuffer (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java3/node_modules/winston-transport/node_modules/readable-stream/lib/_stream_writable.js:417:5)
at Console.Writable.write (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java3/node_modules/winston-transport/node_modules/readable-stream/lib/_stream_writable.js:334:11)
at DerivedLogger.ondata (/home/kettyp/Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java3/node_modules/readable-stream/lib/_stream_readable.js:681:20)
(Use node --trace-warnings ... to show where the warning was created)

dire latch
#

Ok

white sedge
#

plus rien ne marche tapghfhjg

dire latch
#

Il sert à quoi ton loader.js ?

white sedge
#

c les fichier de node

hazy mirage
#

tu sais comment ouvrir un terminal et t'en servir ?

white sedge
#

oui

hazy mirage
#

rend toi dans le dossier du bot

#

et chmod -R 777 .

dire latch
#

Ah ok

hazy mirage
#

mais soit bien dans le dossier du bot

#

et met bien un . a la fin, surtout pas un /

white sedge
#

ok

#

ça me donne ça c ok ? pour l'instant /Documents/Discord/Serveur/80%Gaming/Bots/commandbot/java3

#

chmod: opérande manquant après «777»
Saisissez « chmod --help » pour plus d'informations.
@hazy mirage

hazy mirage
#

non y'a une erreur

#

tu la recopié exactement pareil?

#

parce que perso ça marche shrek

white sedge
#

ah non

#

c bon

hazy mirage
#

bah relance ton bot voir si ça marche mieux

#

¯_(ツ)_/¯

white sedge
#

Error: ENOENT: no such file or directory, scandir './events/' {errno: -2, code: 'ENOENT', syscall: 'scandir', path: './events/', stack: 'Error: ENOENT: no such file or directory, scandir './events/'', …}

hazy mirage
#

fait un screen la de tout ton ecran stp

white sedge
#

ok

hazy mirage
#

pourquoi ça te donnait une autre erreur avant?

white sedge
#

c une question ?

hazy mirage
#

oui

white sedge
#

ben avant j'avais pas d'erreur

hazy mirage
#

laisse tomber ma question

#

le screen stp

white sedge
dire latch
#

Il y a quoi dans ton dossier events ?

hazy mirage
#

pk ta remis ça

white sedge
#

car ça mettait une erreur en plus

hazy mirage
#

tu veux bien mettre const path = require("path") en haut

#

et a la place de './events'

#

met path.join(__basedir, 'events/')

white sedge
hazy mirage
#

ah pardon

#

c'est pas __basedir c'est __dirname

white sedge
#

ok

dire latch
white sedge
dire latch
#

Ok

white sedge
#

bon ça me fais chier je verrais ça demain

keen narwhal
#

@oak turret

#
if ( message.content.toLowerCase() === "?sendmsg" ) {
        let message_prive = new buttons.MessageButton()
          .setStyle("grey")
          .setLabel("Message privé")
          .setID("message_prive_buttons");
        let vocal = new buttons.MessageButton()
          .setStyle("grey")
          .setLabel("Vocal")
          .setID("vocal_buttons");
        let salon_ecrit = new buttons.MessageButton()
          .setStyle("grey")
          .setLabel("Salon écrit")
          .setID("salon_ecrit_buttons");
        let membre = new buttons.MessageButton()
          .setStyle("grey")
          .setLabel("Membre")
          .setID("membre_buttons");
        let autre = new buttons.MessageButton()
          .setStyle("grey")
          .setLabel("Autre")
          .setID("autre_buttons");

        const embed = new Discord.MessageEmbed()
          .setAuthor('SALON DE SIGNALEMENT 🚨')
          .setDescription("Vous souhaitez signaler un membre, poser une question ou tout simplement discuter en privé avec le staff, il vous suffit de réagir aux émotes ci-dessous :\n\n➢ Problème en message privé\n➢ Problème en vocal\n➢ Problème en salon écrit\n➢ Détresse d'un membre (serveur ou MP)\n➢ Autre\n\nMerci de rester respectueux et cordial !")
          .setImage('https://media1.tenor.com/images/b2f801fb97f3eb1d611ae61278b5822d/tenor.gif')
          .setColor('#F39237')
          
              return message.channel.send({
                  embed: embed,
                  components: [message_prive, vocal, salon_ecrit, membre, autre]
              })
         }
})
#

J'ai une erreeeeuuuurrrr

#
TypeError: Cannot read property 'map' of undefined
    at D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\v12\Classes\APIMessage.js:171:54
    at Array.map (<anonymous>)
    at APIMessage.resolveData (D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\v12\Classes\APIMessage.js:168:64)
    at ExtendedTextChannel.send (D:\Téléchargements\discord-button-main\node_modules\discord-buttons\src\v12\Classes\TextChannel.js:19:68)
    at Client.<anonymous> (D:\Téléchargements\discord-button-main\ticketbot-reaction.js:42:38)
    at Client.emit (node:events:394:28)
    at MessageCreateAction.handle (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (D:\Téléchargements\discord-button-main\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
spring dock
#

y a quoi ici:
\node_modules\discord-buttons\src\v12\Classes\APIMessage.js ligne 171

keen narwhal
#

J'en sais foutrement rien

spring dock
#

bah regarde ..

#

parce que moi si je regarde y a pas de .map à cet endroit

keen narwhal
#

Nan enfaite c'est bon

#

C'est pas un problème de map

#

Mais de components

#

Alors qu'il fallais que je mette Buttons

spring dock
oak turret
#

oui ou tu fais un actionrow avec un .addComponents

keen narwhal
#

Marche plus

oak turret
#

bah met l'id écoute juste ou fais un autre système

keen narwhal
#

Ouais je vais voir comment faire

#

Go apprendre ^^

oak turret
#

parce que bon juste le topic sert quasiment à rien, l'utilisé pour les tickets c'mieux et safe au moins

#

bref fais comme tu veux ^^

keen narwhal
#

Yes

#

J'ai choisis cette solution

#

Par contre tu sais comment faire un message "ghost"

oak turret
#

ghost ?