#javascript-typescript

1 messages · Page 91 of 1

keen narwhal
#

des boutons

#

si c'est possible

#

regarde sur la docs de discordjs les components

neat lintel
keen narwhal
#

okok super ! vous êtes super fort merci !

dreamy mirage
#

Bonjour, je n' arrive pas mettre des bouton même avec le guide. Merci au personnes qui m ' aiderons

neat lintel
#

Tu peux envoyer le code que tu as essayé de faire ?

dreamy mirage
#

OK le voici:


const Discord = require("discord.js")
const Command = require("../Structure/Command")
const { Module } = require('module');
module.exports = new Command({

    name: "giveway",
    description: "Permet de faire gagner quelque chose",
    utilisation: "utilisation",
    alias: ["giveway"],
    permission: Discord.Permissions.FLAGS.MANAGE_MESSAGES,
    category: "Fun",
    cooldown: 0,

    async run(bot, message, args, db) {
        message.delete()
        const patreonEmbed = new Discord.MessageEmbed()
            .setTitle('🎁・Pour lancer un giveaway :')
            .setColor(bot.color)
            .setURL()
          .setDescription('')
            .addFields(
            { name: '€start #chanel 250s 1 Cadeaux', value: 'Bon giveaway !' },
          )
            .setTimestamp()
        
            message.channel.send({ embeds:  [patreonEmbed] })

    }
}) 
neat lintel
#

D'ac alors essaye de construite ton bouton avec MessageButton. Ca marche comme un message embed

#

Puis tu mets ca dans la fonction addComponents de MessageActionRow

#

Et cette variable tu vas la mettre juste après ton embed dans le send

keen narwhal
#

pareille moi sa marche pas je comprend pas

dreamy mirage
#

J ai deja regarder avec le guide mais sa marche pas

neat lintel
#

Dans ton cas a la fin ca te donnera message.channel.send({ embeds: [patreonEmbed], components:[buttonComponent] })

#

Tu peux faire ton bouton avec le guide il y a vraiment tous regarde ce code d'exemple

const { MessageActionRow, MessageButton } = require('discord.js');

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

    if (interaction.commandName === 'ping') {
        const row = new MessageActionRow()
            .addComponents(
                new MessageButton()
                    .setCustomId('primary')
                    .setLabel('Primary')
                    .setStyle('PRIMARY'),
            );

        await interaction.reply({ content: 'Pong!', components: [row] });
    }
});
#

Il est asser simple a comprendre et tu devrais pouvoir faire un premier bouton avec ca et ensuite on pourra le personaliser comme tu en a envis dans un second temps

keen narwhal
#

donc sa je le copie et je le colle après message.channel.send({ embeds: [patreonEmbed], components:[buttonComponent] })

#

?

neat lintel
#

oui

keen narwhal
#

Ok j'essaye tout de suite

neat lintel
#

Mais meintenant il va faloir déclarer buttonComponent il ne tombe pas du ciel

#

Ici buttonComponent va etre pareil que la variable row dans le code que je t'ai envoyé

#

donc essayes de construire un petit code avec ca et envois le si tu as un problème

keen narwhal
# neat lintel Mais meintenant il va faloir déclarer buttonComponent il ne tombe pas du ciel

comme sa

const Discord = require("discord.js")
const Command = require("../Structure/Command")
const { MessageActionRow, MessageButton } = require('discord.js');
const { Module } = require('module');
module.exports = new Command({

    name: "giveway",
    description: "Permet de faire gagner quelque chose",
    utilisation: "utilisation",
    alias: ["giveway"],
    permission: Discord.Permissions.FLAGS.MANAGE_MESSAGES,
    category: "Fun",
    cooldown: 0,

    async run(bot, message, args, db) {
        message.delete()
        const patreonEmbed = new Discord.MessageEmbed()
            .setTitle('🎁・Pour lancer un giveaway :')
            .setColor(bot.color)
            .setURL()
          .setDescription('')
            .addFields(
            { name: '€start #chanel 250s 1 Cadeaux', value: 'Bon giveaway !' },
          )
            .setTimestamp()
    
            message.channel.send({ embeds:  [patreonEmbed], components:[buttonComponent] })
            
            client.on('interactionCreate', async interaction => {
                if (!interaction.isCommand()) return;
            
                if (interaction.commandName === 'giveway') {
                    const row = new MessageActionRow()
                        .addComponents(
                            new MessageButton()
                                .setCustomId('je-participe')
                                .setLabel('Je-participe')
                                .setStyle('JE-PARTICIPE'),
                        );
            
                    await interaction.reply({ content: 'Pong!', components: [row] });
                }
            });
    }
})
#

?

neat lintel
#

Alors toi tu as pas besoins des trucs en rapport avec l'intéraction

#
const Discord = require("discord.js");
const Command = require("../Structure/Command");
const { MessageActionRow, MessageButton } = require("discord.js");
const { Module } = require("module");
module.exports = new Command({
  name: "giveway",
  description: "Permet de faire gagner quelque chose",
  utilisation: "utilisation",
  alias: ["giveway"],
  permission: Discord.Permissions.FLAGS.MANAGE_MESSAGES,
  category: "Fun",
  cooldown: 0,

  async run(bot, message, args, db) {
    message.delete();
    const buttonComponent = new MessageActionRow().addComponents(
      new MessageButton()
        .setCustomId("je-participe")
        .setLabel("Je-participe")
        .setStyle("PRIMARY")
    );

    const patreonEmbed = new Discord.MessageEmbed()
      .setTitle("🎁・Pour lancer un giveaway :")
      .setColor(bot.color)
      .setURL()
      .setDescription("")
      .addFields({
        name: "€start #chanel 250s 1 Cadeaux",
        value: "Bon giveaway !",
      })
      .setTimestamp();

    message.channel.send({
      embeds: [patreonEmbed],
      components: [buttonComponent],
    });
  },
});

#

Donc quand on enlève tous les trucs en rapport avec l'intéraction il reste ca

#

et la c'est bon

#

par contre le style il est pas correct

#

ca doit rester PRIMARY

#

ou une autre valeur pour avoir une autre coloration

keen narwhal
neat lintel
#

oui exactement

keen narwhal
#

trop bien

neat lintel
#

Ah et dernier truc, si tu importes Discord de discord.js ca sert a rien d'importer avec la destructuration derrière vu que tu importes déja toutes la lib. Si tu veux optimiser ton code le mieux est de tous importer avec la destructuration ca évite de charger toute la lib

keen narwhal
#

hmm ok bon conseil

#

merci

#

par contre il y'a une erreur

#
C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\rest\RequestHandler.js:349
      throw new DiscordAPIError(data, res.status, request);
            ^

DiscordAPIError: Invalid Form Body
components[0].components[0].style: This field is required
    at RequestHandler.execute (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\rest\RequestHandler.js:349:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
    at async TextChannel.send (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\interfaces\TextBasedChannel.js:172:15) {
  method: 'post',
  path: '/channels/906215577331326986/messages',
  code: 50035,
  httpStatus: 400,
  requestData: {
    json: {
      content: undefined,
      tts: false,
      nonce: undefined,
      embeds: [
        {
          title: '🎁・Pour lancer un giveaway :',
          type: 'rich',
          description: '',
          url: null,
          timestamp: 2021-11-05T17:03:14.128Z,
          color: 15335679,
          fields: [ [Object] ],
          thumbnail: null,
          image: null,
          author: null,
          footer: null
        }
      ],
      components: [ { components: [ [Object] ], type: 1 } ],
      username: undefined,
      avatar_url: undefined,
      allowed_mentions: undefined,
      flags: undefined,
      message_reference: undefined,
      attachments: undefined,
      sticker_ids: undefined
    },
    files: []
  }
}
neat lintel
#

tu as bien changer le style du bouton ?

keen narwhal
#

oui

neat lintel
#

renvois le code que tu as pour voir stp

keen narwhal
#
const Discord = require("discord.js");
const Command = require("../Structure/Command");
const { MessageActionRow, MessageButton } = require("discord.js");
const { Module } = require("module");
module.exports = new Command({
  name: "giveway",
  description: "Permet de faire gagner quelque chose",
  utilisation: "utilisation",
  alias: ["giveway"],
  permission: Discord.Permissions.FLAGS.MANAGE_MESSAGES,
  category: "Fun",
  cooldown: 0,

  async run(bot, message, args, db) {
    message.delete();
    const buttonComponent = new MessageActionRow().addComponents(
      new MessageButton()
        .setCustomId("je-participe")
        .setLabel("Je-participe")
        .setStyle("SUCCES")
    );

    const patreonEmbed = new Discord.MessageEmbed()
      .setTitle("🎁・Pour lancer un giveaway :")
      .setColor(bot.color)
      .setURL()
      .setDescription("")
      .addFields({
        name: "€start #chanel 250s 1 Cadeaux",
        value: "Bon giveaway !",
      })
      .setTimestamp();

    message.channel.send({
      embeds: [patreonEmbed],
      components: [buttonComponent],
    });
  },
});
#

le label faut le changer aussi

#

?

neat lintel
#

tu as oublié un S

#

SUCCESS

#

et pas SUCCES

#

a la fin

keen narwhal
#

ha oui 😂

#

merci

neat lintel
#

Parfait 👌

keen narwhal
#

Super merci !

neat lintel
#

de rien

keen narwhal
#

trop sympa

#

par contre aussi désoler du dérangement^^ quand je fait ma commande il m'affiche a chaque fois sa

#

!giveway (#lechannel) 1m Nitro classique

neat lintel
#

et c'est quoi le problème ?

keen narwhal
#

il m'affiche toujours sa au lieux de suivre la commande que je lui dit

#

envoie ton code

neat lintel
#

utilises args

keen narwhal
#

ouais

neat lintel
#

Ou meme mieux vu que tu as accès a message tu peux faire message.mentions.channels.first()

#

pour récupérer le channel avec ca tu auras pas de problème vu que avec djs tous les channels sont dans le cache

keen narwhal
# keen narwhal ouais
const Discord = require("discord.js");
const Command = require("../Structure/Command");
const { MessageActionRow, MessageButton } = require("discord.js");
const { Module } = require("module");
module.exports = new Command({
  name: "giveway",
  description: "Permet de faire gagner quelque chose",
  utilisation: "utilisation",
  alias: ["giveway"],
  permission: Discord.Permissions.FLAGS.MANAGE_MESSAGES,
  category: "Fun",
  cooldown: 0,

  async run(bot, message, args, db) {
    message.delete();
    const buttonComponent = new MessageActionRow().addComponents(
      new MessageButton()
        .setCustomId("je-participe")
        .setLabel("Je-participe")
        .setStyle("SUCCESS")
    );

    const patreonEmbed = new Discord.MessageEmbed()
      .setTitle("🎁・Pour lancer un giveaway :")
      .setColor(bot.color)
      .setURL()
      .setDescription("")
      .addFields({
        name: "€start #chanel 250s 1 Cadeaux",
        value: "Bon giveaway !",
      })
      .setTimestamp();

    message.channel.send({
      embeds: [patreonEmbed],
      components: [buttonComponent],
    });
  },
});
neat lintel
#

et pour le temps utilises tes args

keen narwhal
#

tu mets gift = args[1].slice('')

#

il me semble

#

un truc dans le genre

#

att j'vais te retrouver

#

je met sa message.mentions.channels.first() après components: [buttonComponent], ?

#

ducoup

#

args.slice(1).join(" ");

neat lintel
#

si args est un array alors c'est .splice(p1,p2).join(' ') pour le cadeau

#

ou slice oui

#

mais si il y a le channel et la duré ce serait plutot .slice(2)

neat lintel
#

const channel = message.mentions.channels?.first()

#

et ensuite tu mets dans ton field

name: `€start ${channel} 250s 1 Cadeaux`,
#

et tu fais la meme chose avec les args cette fois ci pour 250s

#

et pareil pour le cadeau mais cette fois ci avec .splice(2).join(' ')

keen narwhal
#

@neat lintel en gros il récupère que l'id de son channel

neat lintel
#

Et tu veux la mention ?

keen narwhal
#

voilà

neat lintel
#

donc avec <#IdDuChannel>

#

et ca mettra la mention sur discord

spark stag
#

ou avec message.guild.channels.cache.get('channelID').toString();

#

mais oe

#

plus facile avec la méthode de Smaug

keen narwhal
#

${channel} il a un truc comme ça là

oak turret
keen narwhal
#

dans son embed

neat lintel
#

${channel} === message.guild.channels.cache.get('channelID').toString();
si channel est un GuildChannel

#

si tu as accès a channel alors ${message.channel} suffit

keen narwhal
#

en gros son channel il y accède en faisant en sorte que le bot récupère l'id du premier channel mentionner

#

mais dans le .first() tu peux pas mettre 'channelID'

neat lintel
#

non mais si il vaut un channel spécifique il y a .get('id') ou .find()

tacit shore
#

Salut je voudrais apprendre le js mais pas pour le web

#

est ce que vous aurez des tutos ou des videos youtube hors web

neat lintel
#

Les tutos Web et back ça va être les mêmes vu que du js front ou du js backend ça reste du javascript

#

Sur nodejs il y a juste des libs intégrées pour interagir avec la machine comme les fichiers par exemple

tacit shore
#

Du coup le js et fait que pour le web ?

neat lintel
#

Web et serveur avec nodejs ou deno

sharp grail
#

Donc pas que pour du web 👀

spark stag
keen narwhal
#

le js fait tout

sharp grail
#

Oui

#

Apres niveaux perfs

#

C'est pas ouf

keen narwhal
#

oui voilà il a des domaines où c'est pas le meilleur

spark stag
keen narwhal
#

Bonjour, j'ai mis une commande meteo mais j'ai une erreur que je ne comprend pas comment faire ?

#
C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\rest\RequestHandler.js:349
      throw new DiscordAPIError(data, res.status, request);
            ^

DiscordAPIError: Cannot send an empty message
    at RequestHandler.execute (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\rest\RequestHandler.js:349:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
    at async TextChannel.send (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\interfaces\TextBasedChannel.js:172:15) {
  method: 'post',
  path: '/channels/906215577331326986/messages',
  code: 50006,
  httpStatus: 400,
  requestData: {
    json: {
      content: undefined,
      tts: false,
      nonce: undefined,
      embeds: undefined,
      components: undefined,
      username: undefined,
      avatar_url: undefined,
      allowed_mentions: undefined,
      flags: undefined,
      message_reference: undefined,
      attachments: undefined,
      sticker_ids: undefined
    },
    files: []
  }
}
#

envoie ton code stp

#

yes je te fait sa tout de suite

#

message.channel.send({ embeds: [météoEmbed] });

#

tout simplement

#

c'est la V13

#

ha oui

#

je le met vers ou sa

#

même endroit où tu envoies ton embed sauf que tu remplaces ta ligne

#

en V13 maintenant tu dois renvoyer un tableau d'élément

#

good pour toi ? @keen narwhal

#

Super ! merci beaucoup

#

pas de quoi

#

trop fort

#

et si j'ai sa message.channel.send(pdpEmbed); je doit faire comme sa message.channel.send({ embeds: [pdpEmbed] }); ?

#

tout à fait

#

okok super ! merci

#

de rien

spark yoke
#

bonjour j'ai un petit problème avec mon bot discord est-ce que quelqu'un serais m'aider svp ?

spark yoke
keen narwhal
#

Bonjour, j'ai un soucis le soucis c'est que quand j'ai commencer mon bot j'ai mis un premier token et la je souhaite de le changer donc j'ai été dans config.js j'ai supp mon token et j'en n'ai mis un autre sauf que je tombe sur cette erreur quelqu'un pourrait m'aidais s'il vous plaît ?

C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.js:198
                throw new DiscordAPIError_1.DiscordAPIError(data, data.code, res.status, method, url);
                      ^

DiscordAPIError[50001]: Missing Access
    at SequentialHandler.runRequest (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.js:198:23)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async SequentialHandler.queueRequest (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.js:99:20)
    at async C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Structure\SlashCommand.js:83:9 {
  rawError: { message: 'Missing Access', code: 50001 },
  code: 50001,
  status: 403,
  method: 'put',
  url: 'https://discord.com/api/v9/applications/807940300936708147/guilds/905075494964318229/commands'
}
#

envoie ton code

#

de sa ? SequentialHandler.js

#

t'as mis un token que t'as re gen ?

#

depuis le discord developer portal

#

un token d'un autre bot

#

oui sur ce site

#

ça doit être pour ça

#

reprends ton bot de base

#

donc je peut pas changer de token ?

#

Si mais tu dois le re gen sur ta même application bot pas prendre sur un autre bot

oak turret
#

tu régénère un token sur le même bot et tu le modifies dans ton config

keen narwhal
#

yep j'suis en train de l'aider

neat lintel
#

cette erreur n'est pas lié au token mais aux scope Oauth2. Il manque application.commands

#

Faut inviter le bot avec ce scope

sharp grail
#

oui

spark yoke
#

bonjour je ne trouve pas mon fichier token et quand j'essaye de faire un config.json sa marche pas

young holly
#

Code ?

spark yoke
#

PS E:\bot 3> node index.js
E:\bot 3\node_modules\discord.js\src\client\Client.js:206
if (!token || typeof token !== 'string') throw new Error('TOKEN_INVALID');
^

Error [TOKEN_INVALID]: An invalid token was provided.
at Client.login (E:\bot 3\node_modules\discord.js\src\client\Client.js:206:52)
at E:\bot 3\index.js:24:10
at Object.<anonymous> (E:\bot 3\index.js:28:3)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
at node:internal/main/run_main_module:17:47 {
[Symbol(code)]: 'TOKEN_INVALID'

young holly
#

Oui mais non, il faut le code de ton fichier index.js

keen narwhal
#

@neat lintel ça a pas l'air de venir de là sa marche toujours pas

neat lintel
#

Tu as kick et réinviter ton bot ?

keen narwhal
#

ouais

sharp grail
neat lintel
young holly
neat lintel
sharp grail
keen narwhal
neat lintel
#

j'arrives

young holly
spark yoke
# young holly Oui mais non, il faut le code de ton fichier index.js

process.setMaxListeners(40)
require('dotenv').config();
const { Client } = require('discord.js');
const client = new Client({disableMentions: 'everyone'});
const StateManager = require('./utils/StateManager');
const { GiveawaysManager } = require("discord-giveaways");
const { registerCommands, registerEvents } = require('./utils/register');
const default_prefix = "!"

const manager = new GiveawaysManager(client, {
storage: "./assets/giveaways.json",
updateCountdownEvery: 10000,
default: {
botsCanWin: false,
exemptPermissions: [],
embedColor: "#FF0000",
reaction: "🎉"
}
});
client.giveawaysManager = manager;

(async () => {
client.login(process.env.TOKEN);
client.commands = new Map();
await registerCommands(client, '../commands');
await registerEvents(client, '../events');
})();

neat lintel
keen narwhal
young holly
spark yoke
sharp grail
#

tu dois avoir un fichier .env

young holly
#

Ok il te faut un fichier .env

#

Tu crée un fichier .env et dans ce fichier tu met cela ```
TOKEN=...

spark yoke
#

sa marche pas

young holly
#

Non mais tu as pas laisser les ... ??

spark yoke
#

non mdrr

#

att sa me met autre chose

young holly
#

Oui?

spark yoke
#

Error: Cannot find module '../../function/embedsColor'
Require stack:

  • E:\bot 3\commands\botOwner\eval.js
  • E:\bot 3\utils\register.js
  • E:\bot 3\index.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:94:18)
    at Object.<anonymous> (E:\bot 3\commands\botOwner\eval.js:5:19)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [
    'E:\bot 3\commands\botOwner\eval.js',
    'E:\bot 3\utils\register.js',
    'E:\bot 3\index.js'
    ]
    }
#

sa me met sa mtn

sharp grail
#

ah bah c'est que l'erreur du token a été réglé

#

mais y en a une autre harold

spark yoke
#

mdr

young holly
#

C'est pas le même fichier en plus

spark yoke
#

oue c'est qui est bizarre

young holly
#

Bizarre en sois non

spark yoke
#

oue sa me soul

young holly
#

Mais donc qu'elle est le code du fichier eval.js

sharp grail
spark yoke
#

const BaseCommand = require('../../utils/structures/BaseCommand');
const discord = require('discord.js')
const guildEmbedColor = new Map();
const StateManager = require('../../utils/StateManager');
var embedsColor = require('../../function/embedsColor')
var checkOwner = require('../../function/check/botOwner')

module.exports = class evalCommand extends BaseCommand {
constructor(){
super('eval', 'botOwner', [])
}

async run(client, message, args) {
    const sender = message.author.id;
    var isOwner = checkOwner(sender);
    if(isOwner == false) return message.channel.send(":720681441670725645: `ERREUR` Vous n'êtes pas le créateur du bot.")
    
    const content = message.content.split(" ").slice(1).join(" ");
    const result = new Promise((resolve) => resolve(eval(content)));

    return result.then((output) => {
        if (typeof output !== "string") {
            output = require("util").inspect(output, {
                depth: 0
            });
        }
        if (output.includes(client.token)) {
            output = output.replace(client.token, "T0K3N");
        }
        message.channel.send(output, {
            code: "js"
        });
    }).catch((err) => {
        err = err.toString();
        if (err.includes(client.token)) {
            err = err.replace(client.token, "T0K3N");
        }
        message.channel.send(err, {
            code: "js"
        });
    });
}

}

embedsColor(guildEmbedColor);

sharp grail
#

bon bah voilà, il ne trouve pas le fichier '../../function/embedsColor'

young holly
#

le dossier function est dans quel racine ?

spark yoke
#

ba la pour le coup il est plus la

#

parce que j'ai generate function mais c'est tout

young holly
#

il existe pas le fichier embedsColor dans function ?

spark yoke
young holly
#

mais c'est quoi déjà generate function?

#

Une function, un fichier ?

spark yoke
#

un fichier

young holly
#

Y'a quoi dedans ?

#

Y'a ton système de couleurs ?

spark yoke
#

non

young holly
#

alors osef

#

il existe encore le fichier embedsColor dans le dossier function ?

spark yoke
#

je te l'ai dit j'ai pas de dossier function

young holly
#

Bais go supprimer cela alors 🤔

spark yoke
#

j'ai vais essayer

#

j'ai d'autre erreur encore sa me soul

young holly
#

Supprime sa aussi

spark yoke
#

déjà fait

young holly
#

C'est quoi l'erreur ?

spark yoke
#

je sais

young holly
#

Mais le code est à toi ? 🤔

spark yoke
#

comme j'ai retirer

#

la racine embeds color faut que je retire le reste qui était relier

young holly
#

oui

keen narwhal
#

Bonjour, j'ai déjà eu ce problème mais je sais plus comment le résoudre si quelqu'un peut m'expliquer
: Alors j'ai rajouter une commande tempmute quand je start le bot sa me met cette erreur

C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Structure\Client.js:39
            if(props.alias.length !== 0) {
                           ^

TypeError: Cannot read properties of undefined (reading 'length')
    at C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Structure\Client.js:39:28
    at Array.forEach (<anonymous>)
    at Client.start (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Structure\Client.js:30:76)
    at Object.<anonymous> (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\main.js:5:5)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:17:47

il dit que length n'est pas défini si j'ai bien compris mais comment le définir voici mon code pour ceux qui on besoin pour résoudre mon problème :

#
const Discord = require("discord.js")
const Command = require("../Structure/Command")
const ms = require("ms");

module.exports = new Command({

    name: "tempmute",
    description: "Permet de rendre muet un utilisateur pendant un certain temps",
    utilisation: "[membre] (raison) (temps)",
    alias: ["tempmute"],
    permission: Discord.Permissions.FLAGS.MANAGE_MESSAGES,
    category: "Modération",

    async run(bot, message, args, db) {
        let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
        if(!tomute) return message.reply("Impossible de trouver l\'utilisateur.");
        if(tomute.hasPermission("MANAGE_MESSAGES")) return message.reply("Impossible de les désactiver !");
        let muterole = message.guild.roles.find(`name`, "muted");

        if(!muterole){
          try{
            muterole = await message.guild.createRole({
              name: "muted",
              color: "#000000",
              permissions:[]
            })
            message.guild.channels.forEach(async (channel, id) => {
              await channel.overwritePermissions(muterole, {
                SEND_MESSAGES: false,
                ADD_REACTIONS: false
              });
            });
          }catch(e){
            console.log(e.stack);
          }
        }
        //end of create role
        let mutetime = args[1];
        if(!mutetime) return message.reply("Vous n\'avez pas précisé le temps \n:av_slmd_Slow_Mode:");
      
        await(tomute.addRole(muterole.id));
        message.reply(`<@${tomute.id}> a été mis en sourdine :gh_slmd_Mic_Mute: pour ${ms(ms(mutetime))}`);
      
        setTimeout(function(){
          tomute.removeRole(muterole.id);
          message.channel.send(`<@${tomute.id}> as été demute avec :fe_slmd_oui: succes`);
        }, ms(mutetime));      
    }
})
neat lintel
#

L'erreur semble pas venir de ce fichier

#

Envois le Client

keen narwhal
#
const Discord = require("discord.js");
const fs = require("fs")
const intents = new Discord.Intents(32767);
const Command = require("./Command");
const Database = require("./Database");
const Event = require("./Event");

class Client extends Discord.Client {

    constructor(options) {

        super({ intents });

        /**
         * @type {Discord.Collection<string, Command>}
        */

        this.commands = new Discord.Collection()
        this.cooldown = new Discord.Collection()
        this.alias = new Discord.Collection()
        this.db = Database;
        this.color = "#ea00ff";
        this.function = {
            createID: require("../Fonctions/createID")
        }
    }

    async start(token) {

        fs.readdirSync("./Commandes").filter(file => file.endsWith(".js")).forEach(async f => {
      
            /**
             * @type {Command} 
            */

            let props = require(`../Commandes/${f}`);
            console.log(`${f} commande chargée avec succès !`);
            this.commands.set(props.name, props)
            if(props.alias.length !== 0) {
                props.alias.forEach(async a => {
                    this.alias.set(a, props)
                })
            }
        })

        fs.readdirSync("./Events/").forEach(dirs => {
    
            fs.readdirSync(`./Events/${dirs}/`).filter(files => files.endsWith(".js")).forEach(async evt => {

                /**
                 * @type {Event}
                */

                const event = require(`../Events/${dirs}/${evt}`);
                console.log(`${event.event}.js événement chargé avec succès !`)
                this.on(event.event, event.run.bind(null, this));
            })
        });

        this.login(token)
    }
}

module.exports = Client;
neat lintel
#

Tu peux faire props.alias?.length

#

Et tu auras pas d'erreur

keen narwhal
#

C’est pas length() normalement ?

neat lintel
#

Non length est bien une propriété pas une fonction

keen narwhal
#

Ah oui ok je confonds avec autre chose

neat lintel
#

Oui peut être python par exemple

keen narwhal
#

Ah peut être ouais

keen narwhal
# neat lintel Tu peux faire props.alias?.length

j'ai sa comme erreur maintenant

C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Structure\Client.js:40
                props.alias.forEach(async a => {
                            ^

TypeError: Cannot read properties of undefined (reading 'forEach')
    at C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Structure\Client.js:40:29
    at Array.forEach (<anonymous>)
    at Client.start (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Structure\Client.js:30:76)
    at Object.<anonymous> (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\main.js:5:5)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:17:47
#

voici mon code

const Discord = require("discord.js");
const fs = require("fs")
const intents = new Discord.Intents(32767);
const Command = require("./Command");
const Database = require("./Database");
const Event = require("./Event");

class Client extends Discord.Client {

    constructor(options) {

        super({ intents });

        /**
         * @type {Discord.Collection<string, Command>}
        */

        this.commands = new Discord.Collection()
        this.cooldown = new Discord.Collection()
        this.alias = new Discord.Collection()
        this.db = Database;
        this.color = "#ea00ff";
        this.function = {
            createID: require("../Fonctions/createID")
        }
    }

    async start(token) {

        fs.readdirSync("./Commandes").filter(file => file.endsWith(".js")).forEach(async f => {
      
            /**
             * @type {Command} 
            */

            let props = require(`../Commandes/${f}`);
            console.log(`${f} commande chargée avec succès !`);
            this.commands.set(props.name, props)
            if(props.alias?.length !== 0) {
                props.alias.forEach(async a => {
                    this.alias.set(a, props)
                })
            }
        })

        fs.readdirSync("./Events/").forEach(dirs => {
    
            fs.readdirSync(`./Events/${dirs}/`).filter(files => files.endsWith(".js")).forEach(async evt => {

                /**
                 * @type {Event}
                */

                const event = require(`../Events/${dirs}/${evt}`);
                console.log(`${event.event}.js événement chargé avec succès !`)
                this.on(event.event, event.run.bind(null, this));
            })
        });

        this.login(token)
    }
}

module.exports = Client;
neat lintel
#

Enleves le !==0

#

Vu que du coup ça peut être undefined aussi

keen narwhal
#

sa à mercher super ! merci beaucoup !!!!

keen narwhal
#
C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\util\Util.js:413
    if (typeof data !== 'string') throw new error(errorMessage);
                                        ^

RangeError [EMBED_FIELD_NAME]: MessageEmbed field names must be non-empty strings.
    at Function.verifyString (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\util\Util.js:413:41)
    at Function.normalizeField (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\MessageEmbed.js:479:18)
    at C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\MessageEmbed.js:501:14
    at Array.map (<anonymous>)
    at Function.normalizeFields (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\MessageEmbed.js:500:8)
    at MessageEmbed.addFields (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\MessageEmbed.js:322:42)
    at MessageEmbed.addField (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\MessageEmbed.js:313:17)
    at C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Commandes\help.js:41:27
    at Array.forEach (<anonymous>)
    at Query.<anonymous> (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Commandes\help.js:39:35) {
  [Symbol(code)]: 'EMBED_FIELD_NAME'
}
burnt perch
#

Bah tout est dans lerreur il te dit que dans ton embed tu une string vide

#

Dans un name: apparament

keen narwhal
#

mais c'est ou genre dans une commande ?

burnt perch
#

Bah tu as un embed dans ton code ?

keen narwhal
#

car j'ai rien toucher dans sa

#

oui dans chaque commande y'a des embeds

burnt perch
#

Eh ben ta commande help a un embed avec un name vide, vérif ce que tu lui file comme name dcp

keen narwhal
#
const Discord = require("discord.js")
const Command = require("../Structure/Command")

module.exports = new Command({

    name: "help",
    description: "Permet de connaître toutes les commandes du bot",
    utilisation: "",
    alias: ["help", "h", "aide"],
    permission: "Aucune",
    category: "Information",
    cooldown: 2,

    async run(bot, message, args, db) {

        const command = message.user ? bot.alias.get(args._hoistedOptions.length !== 0 ? args._hoistedOptions[0].value : "") : bot.alias.get(args[0])
        
        db.query(`SELECT * FROM serveur WHERE guildID = ${message.guildId}`, async (err, req) => {

            if(!command) {
            
                const categories = [];
                const commands = bot.commands;
        
                commands.forEach((command) => {
                    if(!categories.includes(command.category)) {
                        categories.push(command.category);
                    }
                });
    
                let Embed = new Discord.MessageEmbed()
                .setColor(bot.color)
                .setTitle(`Toutes les commandes du bot`)
                .setThumbnail(bot.user.displayAvatarURL({dynamic: true}))
                .setDescription("Voici toutes les commandes du bot")
                .setTimestamp()
                .setFooter(`${message.user ? message.user.username : message.author.username}`, message.user ? message.user.displayAvatarURL({dynamic: true}) : message.author.displayAvatarURL({dynamic: true}))
    
                categories.sort().forEach((cat, i) => {
                    const tCommands = commands.filter((cmd) => cmd.category === cat);
                    Embed.addField(cat, tCommands.map((cmd) => "> `" + req[0].prefix + cmd.name + "` ➔ " + cmd.description).join("\n"));
                });
    
                message.reply({embeds: [Embed]})

            }

            if(command) {

                let Embed = new Discord.MessageEmbed()
                .setColor(bot.color)
                .setTitle(`Toutes les commandes du bot`)
                .setThumbnail(bot.user.displayAvatarURL({dynamic: true}))
                .setDescription(`Nom de la commande : \`${message.user ? args._hoistedOptions[0].value : args[0]}\`\nDescription de la commande : \`${command.description}\`\nUtilisation de la commande : \`${message.user ? args._hoistedOptions[0].value : args[0]} ${command.utilisation}\`\nAlias de la commande : ${command.alias.filter(a => a !== (message.user ? args._hoistedOptions[0].value : args[0])).map(a => `\`${a}\``).join(" ")}\nCatégorie de la commande : \`${command.category}\`\nPermission de la commande : \`${new Discord.Permissions(command.permission).toArray(false)}\``)
                .setTimestamp()
                .setFooter(`${message.user ? message.user.username : message.author.username}`, message.user ? message.user.displayAvatarURL({dynamic: true}) : message.author.displayAvatarURL({dynamic: true}))

                message.reply({embeds: [Embed]})
            }
        })
    }
})
burnt perch
#

Ou quelque chose qui n'est pas une string

keen narwhal
#

sont name c'est help

burnt perch
#

Nn mais pas le nom de la commande ou le titre dans lembed de la commande plus presicement dans un field

keen narwhal
#

pourtant j'ai rien toucher a sa

burnt perch
#

essaye de .addField :

.addField("test", "test")

#

rajoute ça à ton embed

#

après le setTitle

keen narwhal
#
                let Embed = new Discord.MessageEmbed()
                .setColor(bot.color)
                .setTitle(`Toutes les commandes du bot`)
                .addField("test", "test")
                .setThumbnail(bot.user.displayAvatarURL({dynamic: true}))
                .setDescription("Voici toutes les commandes du bot")
                .setTimestamp()
                .setFooter(`${message.user ? message.user.username : message.author.username}`, message.user ? message.user.displayAvatarURL({dynamic: true}) : message.author.displayAvatarURL({dynamic: true}))
#

comme sa

burnt perch
#

ui

keen narwhal
#
C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\util\Util.js:413
    if (typeof data !== 'string') throw new error(errorMessage);
                                        ^

RangeError [EMBED_FIELD_NAME]: MessageEmbed field names must be non-empty strings.
    at Function.verifyString (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\util\Util.js:413:41)
    at Function.normalizeField (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\MessageEmbed.js:479:18)
    at C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\MessageEmbed.js:501:14
    at Array.map (<anonymous>)
    at Function.normalizeFields (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\MessageEmbed.js:500:8)
    at MessageEmbed.addFields (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\MessageEmbed.js:322:42)
    at MessageEmbed.addField (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\structures\MessageEmbed.js:313:17)
    at C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Commandes\help.js:42:27
    at Array.forEach (<anonymous>)
    at Query.<anonymous> (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Commandes\help.js:40:35) {
  [Symbol(code)]: 'EMBED_FIEL
cedar crest
#

Tu essayes de mettre un field vide c'est ça ?

burnt perch
#

non justement il en avait pas dcp je lui ai dit d'en rajouter un

cedar crest
#

Et l'erreur c'est quoi alors ?

keen narwhal
#

c'est une erreur qui apparaît de nul part

cedar crest
#

Je connais pas js mais je crois connaitre le prob

keen narwhal
#

car j'ai rien toucher au help

neat lintel
#

le problème est que tu as une catégorie sans commande

keen narwhal
#

genre y'a une commande ou y'a un problème dedans

neat lintel
#

possible mais vu que tu push ce serait bizzare. Le mieux serait de log dans la boucle

keen narwhal
#

j'ai trouver

neat lintel
#

ca devait plutot etre une commande sans catégorie non ?

keen narwhal
#

je vous explique au cas ou y'a des personne qui rencontre ce problème en gros j'ai crée une commande par exemple jesuisbo.js et dedans j'ai mis une structure et genre j'ai mis des // comme sa devant chaque ligne se qui faisait crash le bot regarder je vous expliquer en screen

burnt perch
#

oulah bah j'était loin du compte nervous_laught

keen narwhal
#

comme sa

neat lintel
#

Il a du push un undefined dans tes catégories et du coup après quand tu as boucler ton array catégories il y avait un undefined dedans

keen narwhal
#
 // const Discord = require("discord.js")
 // const ms = require("ms")
 // const Command = require("../Structure/Command")

 // module.exports = new Command({

   //   name: "unban",
  //    description: "Permet de débannir un utilisateur",
   //   utilisation: "[id du membre] (raison)",
   //   alias: ["unban"],
   //   permission: Discord.Permissions.FLAGS.BAN_MEMBERS,
   //   category: "Modération",
   // cooldown: 10,

  //    async run(bot, message, args, db) {

   //   }
 // })
#

voila

keen narwhal
#

merci de vôtre aide à tous

burnt perch
#

pas de soucis mec 🙂

keen narwhal
#

Re bonjour , j'ai 2 erreurs qui apparaisse les voici

C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.js:198
                throw new DiscordAPIError_1.DiscordAPIError(data, data.code, res.status, method, url);
                      ^

DiscordAPIError[50001]: Missing Access
    at SequentialHandler.runRequest (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.js:198:23)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async SequentialHandler.queueRequest (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.js:99:20)
    at async C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Events\Logs\guildCreate.js:96:5 {
  rawError: { message: 'Missing Access', code: 50001 },
  code: 50001,
  status: 403,
  method: 'put',
  url: 'https://discord.com/api/v9/applications/885275695104806952/guilds/849796874588127305/commands'
}
neat lintel
#

Invites le bot avec le scope application.commands

keen narwhal
#

Smaug le sauveur 😂

neat lintel
#

Ou définis des commandes globales ca évites les erreurs (mais du coup elles vont pas apparaitres sur la guild)

slim anvil
#

smaug il va passer helper bientôt 👀

neat lintel
#

Ah peut etre on verra bien 👀

keen narwhal
#

j'èspere il est trop fort

#

et y'a celle ci

C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\util\BitField.js:152
    throw new RangeError('BITFIELD_INVALID', bit);
          ^

RangeError [BITFIELD_INVALID]: Invalid bitfield flag or number: MANAGE_EMOJIS.
    at Function.resolve (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\util\BitField.js:152:11)
    at Permissions.has (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\util\BitField.js:44:28)
    at Permissions.has (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\discord.js\src\util\Permissions.js:54:85)
    at Command.run (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Commandes\addemojis.js:18:41)
    at Query.<anonymous> (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\Events\Bot\messageCreate.js:82:21)
    at Query.<anonymous> (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\mysql\lib\Connection.js:526:10)
    at Query._callback (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\mysql\lib\Connection.js:488:16)
    at Query.Sequence.end (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
    at Query._handleFinalResultPacket (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\mysql\lib\protocol\sequences\Query.js:149:8)
    at Query.EofPacket (C:\Users\Administrateur\Desktop\BOT SLMD COMMU\node_modules\mysql\lib\protocol\sequences\Query.js:133:8) {
  [Symbol(code)]: 'BITFIELD_INVALID'
}
neat lintel
#

envois le code stp

#

le fichier addemojis.js

keen narwhal
#
const Discord = require("discord.js")
const Command = require("../Structure/Command")
const { parse } = require("twemoji-parser");
const { MessageEmbed } = require("discord.js");

module.exports = new Command({

    name: "addemojis",
    description: "Permet d\'ajouter des emojis.",
    utilisation: "",
    alias: ["addemojis"],
    permission: "Aucune",
    category: "Modérations",
    cooldown: 0,

    async run(bot, message, args, db) {
        
        if (!message.member.permissions.has("MANAGE_EMOJIS")) {
            const perm = new Discord.MessageEmbed()
            .setColor(bot.color)
            .setTitle(':fe_slmd_non: ERREUR')
            .setDescription('Vous n\'avez pas les permissions requises pour effectuer cette commande.')
            return message.channel.send(perm)
                
             
         }
 
         const emoji = args[0];
         Embed1 = new Discord.MessageEmbed()
         .setColor(bot.color)
         .setDescription(`:fe_slmd_non: Veuillez me donner un emoji à ajouter !`);
         if (!emoji) return message.channel.send({embeds: [Embed1]})
 
         let customemoji = Discord.Util.parseEmoji(emoji);
 
         if (customemoji.id) {
             const Link = `https://cdn.discordapp.com/emojis/${customemoji.id}.${
       customemoji.animated ? "gif" : "png"
     }`;
             const name = args.slice(1).join(" ");
             message.guild.emojis
                 .create(`${Link}`, `${name || `${customemoji.name}`}`)
       .catch((error) => {
         console.log(error);
       });
 
     const Added = new MessageEmbed()
       .setTitle(`:fe_slmd_oui: SUCCES`)
       .setColor(bot.color)
       .setImage(`${Link}`)
       .setDescription(
         `**L'emoji a été ajouté!** | **Nom :** \`${
           name || `${customemoji.name}`
         }\``
       );
     return message.channel.send({embeds: [Added]}).catch((e) => {
       console.log(e);
     });
   } else {
     let CheckEmoji = parse(emoji, {
       assetType: "png",
     });
     Embed2 = new Discord.MessageEmbed()
     .setColor(bot.color)
     .setDescription(`Merci de me donner un émoji valide !`);
     if (!CheckEmoji[0])
       return message.channel.send({embeds: [Embed2]})
        };
    }
})
#

voila

neat lintel
#

en V13 c'est plus MANAGE_EMOJIS mais MANAGE_EMOJIS_AND_STICKERS

#

ligne 16

keen narwhal
#

ha bon ?

#

je savais pas sa

#

merci de me l'avoir dit

neat lintel
#

avant les stickers existaient pas

keen narwhal
#

ha beh oui

#

pour l'instant sa marche

keen narwhal
neat lintel
#

alors ca c'est discord qui a décider que pour utilise les slash-commands il fallait inviter le bot avec ce scope. Jusqu'a une certaine date si le bot était déja sur le serveur c'était bon mais maintenant il faut le kick et le réinviter avec les permissions

keen narwhal
#

he ok merci

#

bonne soirée

neat lintel
#

merci bonne soirée a toi

keen narwhal
#

ha bah enfaite me revoila 😂 comme je te disais le bot est sur 26 serveurs les gens vont pas s'amuser a kick et faire revenir le bot

#

ducoup à chaque fois qu'ils vont utiliser une slash commande sa feras crash le bot ?

neat lintel
#

non

#

En prod avec des commandes globales ca fera pas crach le bot

#

mais tous ceux qui ont pas inviter le bot avec le bon scope devront le kick et le réinviter sinon ils verront pas les commandes

keen narwhal
#

mais personne pourra faire crash le bot

neat lintel
#

Non

#

Au pire si ils ont pas le scope ils verront juste pas les commandes

keen narwhal
#

les commande genre les commandes en /

neat lintel
#

Oui

#

Les commandes par message ne sont pas affectées par ça

spark yoke
#

bonjour

#

j'ai un problème sur mon bot

#

Error: ENOENT: no such file or directory, scandir './Commandes'
at Object.readdirSync (node:fs:1390:3)
at Client.start (E:\bot 5\Structure\Client.js:30:12)
at Object.<anonymous> (E:\bot 5\main.js:5:5)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
at node:internal/main/run_main_module:17:47 {
errno: -4058,
syscall: 'scandir',
code: 'ENOENT',
path: './Commandes'
}
PS E:\bot 5>

#

alors que j'ai bien mon fichier commandes

pale void
#

Le dossier "./Commandes" n’existe pas :)

#

Dans ce cas, ton chemin d’accès est erroné

#

Si on avait l’arborescence de tes fichiers, ce serait encore mieux pour t’aider 🙂

spark yoke
pale void
#

Bah… pourquoi avoir mis "./Commandes" ? C’est juste "/Commandes"

spark yoke
#

./Command renvoie au fichier command.js

pale void
#

Non

#

L’erreur se situe à la ligne 30, pas à la ligne 4

#

Il suffit de lire l’erreur 🙂

spark yoke
#

je sais sa sauf que même en retirant le point et tout sa marche pas

pale void
#

En même temps, si tu nous montrais le code, ce serait plus simple de t’aider.

#

D’ailleurs, dis-moi, le code, c’est toi qui l’a écrit tout seul ?

spark yoke
#

non

pale void
#

Je me disais bien…

#

Permets-moi un simple conseil : ça ne sert à rien de recopier du code bêtement, sans comprendre ce qu’il fait.

keen narwhal
#

yep

peak cedar
#

Les gars ça me dit fn.bind is not a function jcrois c avec la maj


exports.run = (client, message, args) => {
    var Discord = require("discord.js");

    message.channel.bulkDelete(1)

    var server = message.guild
    const reason = message.content.split(" ").slice(1).join(" ");

    if (!message.guild.roles.cache.find(r => r.name === "Staff")) return message.channel.send(`Ce Serveur n'a pas de Role \`Staff\`, il faut le créer sinon le ticket ne peut etre ouvert.`);

    if (message.guild.channels.cache.find("name", "ticket-" + message.author.username.toLowerCase())) return message.channel.send(`Tu as déjà un ticket ouvert`);
    if (!args[0]) return message.channel.send(`Vous devez spécifier un Problème, *ticket problème`);
    message.guild.createChannel(`ticket-${message.author.username.toLowerCase()}`, "text").then(c => {
        let category = server.channels.find(c => c.name == "Help" && c.type == "category")
        c.setParent(category.id)
        let role = message.guild.roles.cache.find(r => r.name === "Staff");
        let role2 = message.guild.roles.cache.find(r => r.name === "@everyone");
        c.overwritePermissions(role, {
            SEND_MESSAGES: true,
            READ_MESSAGES: true
        });
        c.overwritePermissions(role2, {
            SEND_MESSAGES: false,
            READ_MESSAGES: false
        });
        c.overwritePermissions(message.author, {
            SEND_MESSAGES: true,
            READ_MESSAGES: true
        });
        message.member.sendMessage(`${message.author.username}, ton ticket vient d'être crée, <#${c.id}>.`);
        const embed = new Discord.RichEmbed()

        .setColor('#DC143C')
            .addField(`Raison du ticket : `, `${reason}`)
            .addField(`Zekalia| Support `, ` Bonjour ${message.author} – ceci est une réponse automatique :
        S'il vous plaît, veuillez nous communiquer de la manière la plus précise et complète possible votre plainte, problème ou question.

        **COMMENT FORMULER UN TICKET PRÉCIS ?**
        **•** indiquer le serveur concerné.
        **•** expliquer la nature du problème.
        **•** attacher un screen et/ou record si nécessaire.

        Merci de patienter le temps qu'un membre de l'équipe soit en mesure de vous aider.

        Si vous n'avez pas d'autres questions et/ou demandes, nous vous invitons à clôturer votre ticket en cours en cliquant sur la réaction ✅.`)
            .setTimestamp();
        c.send({
            embed: embed
        }).then(function(message) {
            message.react('✅')
            bot.on('messageReactionAdd', (reaction, user) => {
                console.log("dans bot.on")
                if (reaction.emoji.name === "✅" && user.id !== bot.user.id) {
                    c.delete()
                    console.log("Delete salon")
                };
            });
        });
    }).catch(console.error);
};

pale void
#

@peak cedar, hey,
Ligne 11, il faut que tu remplaces le contenu actuel de ton if par :

message.guild.channels.cache.find(channel => channel.name === "ticket-" + message.author.username.toLowerCase())
#

And, by the way, une simple recherche dans la doc aurait pu résoudre le problème.

peak cedar
pale void
#

Pas de soucis.

keen narwhal
#

Bonjour, j'ai rajouter une commande qui s'appelle userinfo et j'ai cette erreur la qui apparaît
possible de m'aider s'il vous plaît

C:\Users\arthu\Desktop\BOT SLMD\Commandes\userinfo.js:20
        const Response = new MessageEmbed()
                         ^

ReferenceError: MessageEmbed is not defined
    at Command.run (C:\Users\arthu\Desktop\BOT SLMD\Commandes\userinfo.js:20:26)
    at Query.<anonymous> (C:\Users\arthu\Desktop\BOT SLMD\Events\Bot\messageCreate.js:80:21)
    at Query.<anonymous> (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\Connection.js:526:10)
    at Query._callback (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\Connection.js:488:16)
    at Query.Sequence.end (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
    at Query._handleFinalResultPacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\sequences\Query.js:149:8)
    at Query.EofPacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\sequences\Query.js:133:8)
    at Protocol._parsePacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\Protocol.js:291:23)
    at Parser._parsePacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\Parser.js:433:10)
    at Parser.write (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\Parser.js:43:10)
neat lintel
#

import MessageEmbed de discord.js

#

tu utilises la méthode require() pour ca

keen narwhal
#

donc je rajoute sa a la commande ?

neat lintel
#

en haut tu ajoutes le require de djs oui

#

et mets MessageEmbed dans des {} sinon tu vas importer toute la lib

keen narwhal
#

const MessageEmbed = require('MessageEmbed')

#

comme sa ?

neat lintel
#

tu importes discord.js pas MessageEmbed

#

donc require('discord.js')

keen narwhal
#

aaa

neat lintel
#

et tu entoures MessageEmbed avec des {} pour utiliser la destructuration

keen narwhal
#
const Discord = require("discord.js")
const Command = require("../Structure/Command")
const moment = require('moment');

module.exports = new Command({

    name: "userinfo",
    description: "Permet de savoir les informations d'un utilisateur **(Mention obligatoire)**",
    utilisation: "",
    alias: ["userinfo"],
    permission: "Aucune",
    category: "Divers",
    cooldown: 0,

    async run(bot, message, args, db) {

        const Target = message.mentions.users.first() || message.author;
        const Member = message.guild.members.cache.get(Target.id);

        const Response = new MessageEmbed()
        .setAuthor(`${Target.username}`, Target.displayAvatarURL({dynamic: true}))
        .setThumbnail(Target.displayAvatarURL({dynamic: true}))
        .setcolor(bot.color)
        .addField('NOT_QUITE_BLACK')
        .addField("UserID", `${Target.id}`, false)
        .addField("Roles", `${Member.roles.cache.map(r => r).join('').replace("@everyone", " ")}`)
        .addField("Server Member Since", `${moment(Member.joinedAt).format('MMMM Do YYYY, h:mm:ss a')}\n**-** ${moment(Member.joinedAt).startOf('day').formNow()}`)
        .addField("Discord User Since", `${moment(Member.joinedAt).format('MMMM Do YYYY, h:mm:ss a')}\n**-** ${moment(Member.joinedAt).startOf('day').formNow()}`)
        message.reply({embeds: [Response]});
    }
})
#

regarde tout en haut c'est deja fait nan ?

#

const Discord = require("discord.js")

neat lintel
#

ah oui mais dans ce cas si tu importes toute la lib faut utiliser Discord.MessageEmbed

#

et pas juste MessageEmbed

keen narwhal
#

donc sa je doit le changer

#

const Response = new MessageEmbed()

#

en sa const Response = new Discord.MessageEmbed()

neat lintel
#

yep

keen narwhal
#

donc sa à marcher super

#

par contre il dit une erreur a .setcolor

sharp grail
#

c'est mieux de juste importer ce dont tu as besoin que toute la lib 👀

keen narwhal
#

alors qu'il est bien écrit

#

C:\Users\arthu\Desktop\BOT SLMD\Commandes\userinfo.js:23
.setcolor(bot.color)
^

TypeError: (intermediate value).setAuthor(...).setThumbnail(...).setcolor is not a function
at Command.run (C:\Users\arthu\Desktop\BOT SLMD\Commandes\userinfo.js:23:10)
at Query.<anonymous> (C:\Users\arthu\Desktop\BOT SLMD\Events\Bot\messageCreate.js:80:21)
at Query.<anonymous> (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\Connection.js:526:10)
at Query._callback (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\Connection.js:488:16)
at Query.Sequence.end (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
at Query._handleFinalResultPacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\sequences\Query.js:149:8)
at Query.EofPacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\sequences\Query.js:133:8)
at Protocol._parsePacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\Protocol.js:291:23)
at Parser._parsePacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\Parser.js:433:10)
at Parser.write (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\Parser.js:43:10)

sharp grail
#

setColor

keen narwhal
#

ha oui

#

c'est relou

#

merci

neat lintel
#

pour t'en rappeler facilement toute la doc de djs est écrite en camelCase pour les propriétés et les fonctions. Donc a chaque nouveau mot dans une propriété ou une fonction tu te poses pas de question tu mets une majuscule

keen narwhal
#

ok merci du conseille

#

Mais désoler de encore vous embeter mais sa enchaîne les erreurs

C:\Users\arthu\Desktop\BOT SLMD\node_modules\discord.js\src\util\Util.js:413
    if (typeof data !== 'string') throw new error(errorMessage);
                                        ^

RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings.
    at Function.verifyString (C:\Users\arthu\Desktop\BOT SLMD\node_modules\discord.js\src\util\Util.js:413:41)
    at Function.normalizeField (C:\Users\arthu\Desktop\BOT SLMD\node_modules\discord.js\src\structures\MessageEmbed.js:480:19)
    at C:\Users\arthu\Desktop\BOT SLMD\node_modules\discord.js\src\structures\MessageEmbed.js:501:14
    at Array.map (<anonymous>)
    at Function.normalizeFields (C:\Users\arthu\Desktop\BOT SLMD\node_modules\discord.js\src\structures\MessageEmbed.js:500:8)
    at MessageEmbed.addFields (C:\Users\arthu\Desktop\BOT SLMD\node_modules\discord.js\src\structures\MessageEmbed.js:322:42)
    at MessageEmbed.addField (C:\Users\arthu\Desktop\BOT SLMD\node_modules\discord.js\src\structures\MessageEmbed.js:313:17)
    at Command.run (C:\Users\arthu\Desktop\BOT SLMD\Commandes\userinfo.js:24:10)
    at Query.<anonymous> (C:\Users\arthu\Desktop\BOT SLMD\Events\Bot\messageCreate.js:80:21)
    at Query.<anonymous> (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\Connection.js:526:10) {
  [Symbol(code)]: 'EMBED_FIELD_VALUE'
}
neat lintel
#

tu as un field sans valeur

keen narwhal
#

cette fois ci c'est le embed

#

à

neat lintel
#

le .addField('NOT_QUITE_BLACK')

#

il faut 2 arguments dans un field

timid loom
#

ce que tu veux faire c'est sans doute sur la couleur

neat lintel
#

Et si vraiment tu veux pas en mettre un 2eme a la place tu mets dans une chaine de caractères \u200b

timid loom
#

et genre setColor('NOT_QUITE_BLACK')

neat lintel
#

il y a déja un setColor au dessus

keen narwhal
#

donc vous me conseiller de changer quoi à la ligne ?

timid loom
#

mais ouais fait gaffe aux trucs que tu utilise si tu leurs donne pas les infos qu'ils veulent ils vont beaucoup moins bien marcher

neat lintel
timid loom
#

bah tu veux faire quoi avec cette ligne?

neat lintel
#

Que ce soit la couleur ou que le mot apparaisse ?

keen narwhal
#

la couleur

timid loom
#

setColor alors

keen narwhal
#

donc je la supp

neat lintel
#

et enleves le setColor du dessus

keen narwhal
#

etant donner que je les deja ?

#

ha ok l'inverse

neat lintel
#

Bah ca dépend le quel tu veux

#

Un embed peut avoir que une couleur

#

Donc soit bot.color soit NOT_QUITE_BLACK

sharp grail
#

(mais tu peux le set plusieurs fois)

neat lintel
#

oui mais ca sert a rien ca execute juste du code en plus

sharp grail
#

oui

keen narwhal
#

j'ai fait comme sa

#
        const Response = new Discord.MessageEmbed()
        .setAuthor(`${Target.username}`, Target.displayAvatarURL({dynamic: true}))
        .setThumbnail(Target.displayAvatarURL({dynamic: true}))
        .setColor(bot.color)
        .addField("UserID", `${Target.id}`, false)
        .addField("Roles", `${Member.roles.cache.map(r => r).join('').replace("@everyone", " ")}`)
        .addField("Server Member Since", `${moment(Member.joinedAt).format('MMMM Do YYYY, h:mm:ss a')}\n**-** ${moment(Member.joinedAt).startOf('day').formNow()}`)
        .addField("Discord User Since", `${moment(Member.joinedAt).format('MMMM Do YYYY, h:mm:ss a')}\n**-** ${moment(Member.joinedAt).startOf('day').formNow()}`)
        message.reply({embeds: [Response]});
#

la tout est bon ?

neat lintel
#

parfait

#

normalement oui

keen narwhal
#

ha bah non

#

😂

#
         .addField("Server Member Since", `${moment(Member.joinedAt).format('MMMM Do YYYY, h:mm:ss a')}\n**-** ${moment(Member.joinedAt).startOf('day').formNow()}`)
                                                                                                                                                       ^

TypeError: moment(...).startOf(...).formNow is not a function
    at Command.run (C:\Users\arthu\Desktop\BOT SLMD\Commandes\userinfo.js:26:152)
    at Query.<anonymous> (C:\Users\arthu\Desktop\BOT SLMD\Events\Bot\messageCreate.js:80:21)
    at Query.<anonymous> (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\Connection.js:526:10)
    at Query._callback (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\Connection.js:488:16)
    at Query.Sequence.end (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
    at Query._handleFinalResultPacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\sequences\Query.js:149:8)
    at Query.EofPacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\sequences\Query.js:133:8)
    at Protocol._parsePacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\Protocol.js:291:23)
    at Parser._parsePacket (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\Parser.js:433:10)
    at Parser.write (C:\Users\arthu\Desktop\BOT SLMD\node_modules\mysql\lib\protocol\Parser.js:43:10)
neat lintel
#

fromNow

#

et pas formNow

keen narwhal
#

yep désoler de vous déranger pour des erreurs débile

neat lintel
#

tkt

keen narwhal
#

maitenant tout marche mais j'ai une toute derniere question comment on fait pour mettre les date en français ?

#

j'ai jamais su

sharp grail
#

tu utilises la lib moment, cherche de ce côté

keen narwhal
#

jvais voir dans les modules ducoup ?

sharp grail
#

y a une doc sinon

#

comme pour 99% des libs

#

x)

#

mais manifestement ils l'arrêtent

keen narwhal
#

tu as le lien de la doc ?

sharp grail
#

et en vrai

#

c'est pas nécessaire d'utiliser une lib pour le temp

#

d'ailleurs ça pas de sens ce que tu écris

#

pour discord user since

#

c'est Member.user.joinedAt

keen narwhal
#

oui je l'ai changer

pale void
molten fog
#

Bonjour , j'ai un problème lors de l'installation de react j'ai cette erreur . Vous avez une idée de comment la résoudre ?

neat lintel
#

c'est pas une erreur

#

c'est un warn

#

c'est pas grave du coup

pale void
#

@neat lintel pour le coup, ce sont des failles de sécurité à haut risque, donc si, c’est un peu grave s’il veut distribuer son app…

neat lintel
#

c'est au propriétaire du package de mettre a jour

#

c'est dans les dépendances

#

Si tu te mets a y toucher tu vas avoir des incompatibilités

pale void
#

@molten fog hey,
Tu peux régler ça à coup de "npm audit fix", par contre, sache que ça va certainement rétrograder certains packages. Donc si tu as besoin des dernières features, attend les mises à jour de tes modules avant de publier ton app

molten fog
#

d'accord mais pourquoi cette erreur est arriver ?

pale void
molten fog
pale void
#

Pas de soucis !

molten fog
#

ducoup quand je cree le projet sa me fait sa

#

et quand j'essaie de start

slim anvil
#

npm run start ?

neat lintel
#

il y en a probablement pas

slim anvil
#

regarde ton package.json

molten fog
neat lintel
#

faudrait l'ajouter dans scripts

slim anvil
#

Il devrait déjà y etre si tu es passé par le CLI

molten fog
slim anvil
#

okay bah rajoute le dans scripts

#

Mais tu as fais npx create-react-app my-app

#

?

#

Car bizarre que tu n'ai rien d'autre

molten fog
#

oui

slim anvil
#

ok t'as un projet dans un projet mdr

#

ouvre le deuxieme dossier jphone ?

molten fog
#

J'ai delete le 2 eme

slim anvil
#

tu es censé avoir un dossier src, public

molten fog
slim anvil
#

te fais pas chier delete et réinstalle

#

tu devrais avoir ca en structure

keen narwhal
#

j'ai rajouter une commande et sa m'a fait cette erreur comment faire ?

#
node:internal/modules/cjs/loader:936
  throw err;
  ^

Error: Cannot find module './db/config.json'
Require stack:
- C:\Users\Administrateur\Desktop\BOT SLMD DEV\commands\ticket.js
- C:\Users\Administrateur\Desktop\BOT SLMD DEV\index.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (C:\Users\Administrateur\Desktop\BOT SLMD DEV\commands\ticket.js:3:16)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    'C:\\Users\\Administrateur\\Desktop\\BOT SLMD DEV\\commands\\ticket.js',
    'C:\\Users\\Administrateur\\Desktop\\BOT SLMD DEV\\index.js'
  ]
}
#

il dit qui trouve pas mon module ./db/config.json

#

comment faire pour qui le trouve

#

?

neat lintel
#

Il doit pas etre dans le dossier commands

#

quand tu mets ./ ca veut dire que tu restes dans le dossier actuel

#

Si tu veux remonter d'un niveau c'est ../

keen narwhal
#

ducoup je met comme

#

sa

#
const Discord  = require("discord.js");
const bot = new Discord.Client()
const config = require("../db/config.json")
const emoji = require("../db/emoji.json")
const image = require("../db/image.json") 
const role = require("../db/role.json")
const { readdirSync } = require('fs');
const fs = require('fs');
const dbs = require("discord-buttons");
dbs(bot);


const loadEvents = (dir = "./events") => {
    fs.readdirSync(dir).forEach(dirs => {
        const eventFiles = fs.readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".js"));

        for (const event of eventFiles) {
            const evt = require(`${dir}/${dirs}/${event}`);
            const evtName = event.split(".")[0];
            bot.on(evtName, evt.bind(null, bot));
            console.log("| 〽️ | L'évenement " + evtName + " est prêt.");
        };
    });
};
loadEvents();
bot.on('messageReactionAdd', async(reaction, user) => {
    const message = reaction.message;
    const member = message.guild.members.cache.get(user.id);

    if(user.bot) return;

    if(
        [emoji.ticketopen, emoji.ticketclose].includes(reaction.emoji.name)
    ) {
        switch(reaction.emoji.name) {

            case emoji.ticketopen:
            
            if(reaction.message.channel.id !== config.ticket) return console.log('L\'emoji à été utiliser dans un autre salon')

            reaction.users.remove(user);

            let username = user.username;
            let categoryID = config.ticketcategory;
            let channel = await message.guild.channels.create(`ticket-${username}`, {type: 'text', parent: message.guild.channels.cache.get(categoryID)})
            .catch(err => {
                message.channel.send('Il a eu une erreur dans le [MessageReacctionAdd]')
            });

            channel.updateOverwrite(message.guild.roles.everyone, {'VIEW_CHANNEL': false});
            channel.updateOverwrite(member, {
                'VIEW_CHANNEL': true,
                'SEND_MESSAGES': true,
                'ADD_REACTIONS': true
            });
            channel.updateOverwrite(message.guild.roles.cache.find(role => role.id == "869657088366903377"), {'VIEW_CHANNEL': true});

            var embed1 = new Discord.MessageEmbed()
            //.setTitle('Hello,')
            .setColor('WHITE')
            .setDescription('**Bonjour/Bonsoir,** \n\nSi vous avez un problème merci de nous l\'expliquez avec le plus de détail possible. \n\nNous fournissons pas d\'aide en ticket au non V.I.P')
            //.addField('Un staff arrive', `__**Sa ne sert a rien de ping le staff!**__`)
            .setThumbnail(image.logorw)

            channel.send(`${member}`)
            channel.send(embed1).then(async msg => msg.react(emoji.ticketclose))
            let logchannel = message.guild.channels.cache.find(c => c.id == config.logs)
            if(!logchannel) return;
            //logchannel.send(`Un membre à créer un ticket. \n Voici le salon ${channel}`)
            logchannel.send({embed : {color : "WHITE", title: "Logs Ticket", description : `Un membre vient de créer un ticket: ${channel}`}})
            break;

            case emoji.ticketclose:

            if(!message.channel.name.startsWith('ticket')) return;
            if(!member.hasPermission('ADMINISTRATOR')) return;

            message.channel.delete()
            break;
        }
    }
})
#

j'ai mis ../ a chaque const tout en haut@neat lintel

neat lintel
#

Et ça marche ?

keen narwhal
#

non regarde

keen narwhal
#
node:internal/fs/utils:344
    throw err;
    ^

Error: ENOTDIR: not a directory, scandir './events/guildMemberAdd.js/'
    at Object.readdirSync (node:fs:1390:3)
    at C:\Users\Administrateur\Desktop\BOT SLMD DEV\commands\ticket.js:15:31
    at Array.forEach (<anonymous>)
    at loadEvents (C:\Users\Administrateur\Desktop\BOT SLMD DEV\commands\ticket.js:14:25)
    at Object.<anonymous> (C:\Users\Administrateur\Desktop\BOT SLMD DEV\commands\ticket.js:25:1)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19) {
  errno: -4052,
  syscall: 'scandir',
  code: 'ENOTDIR',
  path: './events/guildMemberAdd.js/'
}
sharp grail
keen narwhal
#

actuellement c'est comme sa

#

je doit mettre mon dossier db dans events ducoup ?

neat lintel
#

Non

#

Mais dans le dossier events il doit y avoir que des dossiers

#

Donc mets le guildMemberAdd et tous les autres fichiers dans un sous dossiers

keen narwhal
#

Donc se que je fais je vais dans le dossier events ensuite je crée un dossier et je met tout ce qui a dans events dans ce dossier c'est sa ?

neat lintel
#

oui

keen narwhal
#

Et je l'appelle comment ce dossier

#

?

neat lintel
#

comme tu veux

#

tu peux mettre les évents guildMemberAdd et guildMemberRemove dans un dossier members par exempe

keen narwhal
#

Ok et je dois modifier les const ducoup

neat lintel
#

tu peux regrouper messageReactionAdd messageReactionRemove dans un autre dossier reactions par exemple etc etc

keen narwhal
#

Ha ok sa marche et les const je dois changer nan ?

#

Genre ducoup y'aura plus sa ../dB/rôle.jsin

neat lintel
#

ca dépend. Si tu importes des trucs du projet dans ce cas oui tu ajoutes un ../

#

Si il y a besoins tu en mets 2 a la suite ../../

keen narwhal
#

Ok

#

Sa marche je vais essayer merci

molten fog
keen narwhal
#

@neat lintel comme sa

neat lintel
#

Mets des sous-dossiers pour ready, message, et VoiceStateUpdate

keen narwhal
#

je peut les mettre a trois dans le meme

#

?

neat lintel
#

Oui

keen narwhal
#

sa me donne sa maintenant dans le dossier events

#

@neat lintel

neat lintel
#

Parfait

keen narwhal
#

et ensuite je fais quoi ?

#

@neat lintel

slim anvil
slim anvil
keen narwhal
#

oui désoler c'est vrais

slim anvil
#

et donc la commande te génère quoi ?

#

t'as bien un dossier src/ etc ?

neat lintel
molten fog
worldly plank
#

C'est quoi le nom du truc pour envoyer un message privé dans un salon en DiscordJS

#

Je connais pas le terme x)

neat lintel
#

Un message ephemeral ?

worldly plank
worldly plank
#

C'est un ephemeral ?

neat lintel
#

Un ephemeral il y a que 1 personne qui peut le voir

worldly plank
#

Oui c'est ca

neat lintel
#

Et il y a un petit bouton pour le supprimer en dessous

worldly plank
neat lintel
#

Oui voila

#

C'est un message avec l'option ephemeral sur true

ashen rapids
#

Faut bien l'envoyer en reply() à une interaction par contre

sharp grail
#

ou un message

#

(globalement faut répondre à quelque chose x)

neat lintel
#

Pas pour un ephemeral

verbal mortar
#

Uniquement en réponse à une interaction

neat lintel
#

Il faut que ce soit absolument une interaction

verbal mortar
#

Du coup soit bouton, liste ou slash cmd

cyan iron
#

Pour un ephemeral oui

sharp grail
#

ah ok x)

molten fog
#

Bonsoir , quelqu'un peut me donner un projet react car moi je n'arrive pas a en créer

pallid plume
#

npx create-react-app mon-app

molten fog
silent ruin
#

Bonjour j'ai une erreur sur mon bot Discord voici l'erreur de la console

root@vps83418:/home/oktol# node index.js
internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module 'node:events'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/home/oktol/node_modules/discord.js/src/client/BaseClient.js:3:22)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
root@vps83418:/home/oktol#

Et voici mon code :

const Discord = require("discord.js");
const Client = new Discord.Client({intents: []});

Client.on("ready", () => {
    console.log("bot opérationelle");
});


> Client.login(" ici Mon Token Biensur je le mets pas en public");```


Mais je ne comprends pas l'erreur merci
worldly plank
#

node:internal/modules/cjs/loader:936
throw err;
^

Error: Cannot find module 'config.json'
Require stack:

  • /home/bot/reacteur/index.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/home/bot/reacteur/index.js:2:16)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [ '/home/bot/reacteur/index.js' ]
    }
#

Erreur quand je passe le bot sur vps alors qu'en local ca passe

#

Je pense que ca doit être un prob avec le filepath

#

Mais je sais pas comment faire

#

Ok fallait juste mettre un ./

neat lintel
worldly plank
neat lintel
#

Les modules avec node:etc sont interne à node donc ils ne se téléchargent pas avec npm

worldly plank
#

Même il faut le faire dans tous les cas donc je demande

neat lintel
#

On voit dans l'erreur que le require vient d'un fichier dans le dossier node_modules/discord.js donc normalement il a bien installé les dépendances

cyan iron
#

Hey, j'ai un petit problème. En gros j'ai un array :

let array = ["STR1", "STR2", "STR3"]

En fait j'aimerais le transformer en object :

{
    "STR1" : null,
    "STR2" : null,
    "STR3" : null
}

J'ai essayé avec Object assign mais ça inverse key et value c'est pas ce que je veux

#

Si quelqu'un pourrait m'aider, je continuerais à chercher dans mon coin mais ça fait pas mal de temps que je galère

slim anvil
#
Object.assign({}, array)
ancient sonnetBOT
#
Résultats de la recherche: object.assign

Object.assign()
La méthode Object.assign() est utilisée afin de copier les valeurs de toutes les propriétés directes (non héritées) d'un objet qui sont énumérables sur un autre objet cible. Cette méthode renvoie l'objet cible.

Example:

Object.assign(cible, ...sources)
slim anvil
#

j'aurai du faire ca snif kappa

cyan iron
#

Oui mais avec ça c'est inversé

#

Genre moi ce que je veux c'est transformer en key pas en values

slim anvil
#

c'est pas ça que tu veux ?

cyan iron
#

Non justement

#
{
    "STR1" : null,
    "STR2" : null,
    "STR3" : null
}
#

C'est ça que je veux

#

Fin null ou n'importe quoi mais moi ça doit être null

slim anvil
#

Ah ok tu veux que STR1 soit la key

cyan iron
#

Oui

slim anvil
#

tu peux faire un .reduce dans ce cas

ancient sonnetBOT
#
Résultats de la recherche: reduce

Array.prototype.reduce()
La méthode reduce() applique une fonction qui est un « accumulateur » et qui traite chaque valeur d'une liste (de la gauche vers la droite) afin de la réduire à une seule valeur.

Example:

arr.reduce(callback)
arr.reduce(callback, valeurInitiale)

TypeError: Reduce of empty array with no initial value
Consulte la page pour voir + de détails :ok_hand:

prefers-reduced-motion
La requêtes média CSS prefers-reduced-motion détecte si l'utilisateur a demandé au système de minimiser la quantité d'animation ou de mouvement.

slim anvil
#

Si tu trouves pas je te file le code, mais cherche un peu avant :p

cyan iron
#

Ok merci, je rentre chez moi et je teste

cyan iron
#

Je comprends ma connerie mais je sais pas comment y remédier

slim anvil
cyan iron
#

What alors là je connaissais pas du tout
J'ai pas tout à fait compris comment ça fonctionnait

slim anvil
#

le a et b c'est ta valeur précédente et l'actuelle

#

y a peut-être mieux à faire

#

mais la j'aurai pas l'idée

cyan iron
#

D'accord, bon je vais regarder de plus près chez moi, merci en tout cas

cyan iron
#

Fin si t'as une doc ou un tuto je veux bien aussi, j'ai pas trouvé

fathom notch
#

C'est quoi ce que tu veux faire ?

cyan iron
fathom notch
#

Ah okay bah c'est bon

cyan iron
#

Mais je veux juste qu'Enzo m'explique comment ça marche exactement ce qu'il a fait

fathom notch
#

Tu voulais mettre une valeur à un String ?

cyan iron
#

Que ça fonctionne c'est une chose, mais savoir comment ça fonctionne c'est mieux

fathom notch
#

un Array*

ancient sonnetBOT
#
Citation du message de Wailrone™0666 posté dans #javascript

QuoteS Hey, j'ai un petit problème. En gros j'ai un array :

let array = ["STR1", "STR2", "STR3"]

En fait j'aimerais le transformer en object :

{
    "STR1" : null,
    "STR2" : null,
    "STR3" : null
}

J'ai essayé avec Object assign mais ça inverse key et value c'est pas ce que je veux QuoteE

➜ [Voir le message original](#javascript-typescript message)

cyan iron
#

Voilà

fathom notch
#

Dacc

cyan iron
#

En fait j'ai juste pas su faire fonctionner le reduce

fathom notch
#

Okay

cyan iron
#

Parce que moi j'ai pas tout capté

fathom notch
#

Bah on peut dire ça mais là moi et le javascript ça fait 3

#

j'ai totalement laché

cyan iron
#

Ah

#

ptdr

fathom notch
#

Je vais bientôt apprendre le rust donc là je vais essayer de me concentrer dessus

cyan iron
#

okay, mais go #general plutôt ou #discussion-dev

fathom notch
#

Oui

slim anvil
#

En gros:
le {}
à la fin, sert à donner une valeur de initial, sinon le a[b] ne fonctionnerait pas
Donc ce que tu vas dire c'est que au premier tour, c'est que a (mais comme a = previous value, elle est à vide, donc la initial {} se met par défaut), donc a (object) tu lui ajoutes en clé le current value, donc la première value de ton tableau

#

puis la boucle continue

#

donc a({})[b(STR1)] = ''

#

si ca peut t'aider a comprendre

cyan iron
#

Ok j'ai compris ! Merci

opal harness
#

Yo,
Comment je peux faire pour guild.membercount dans un bot.on("ready", async () => {
Cordialement
GPOIRE

neat lintel
#

Tu veux compter les membres d'un serveur précis ou de tous les serveurs ?

neat lintel
#

Dans le ready les serveurs sont déja dans le cache donc tu peux y accéder avec client.guilds.cache

opal harness
neat lintel
#

Alors il faut mettre un truc après cache

#

Par contre toi elle est vide la collection. Tu as mis quoi comme intents ?

neat lintel
#

Tu es en V13 de djs ou en V12 ?

opal harness
#

V12 😉

neat lintel
#

Ah alors tu connais peut etre pas

#

Vu que tu as une collection vide essayes de fetch la guild avec const guild = await client.guilds.fetch('id de ta guild')

#

Et bien sur oublis pas de mettre un async dans la fonction du coup

keen narwhal
#

Bonjour ayant un exo a faire en js , je débute je suis perdu j'ai essayé un systéme mais ça n'a pas l'air concluant si quelqu'un peut m'expliquer je suis preneur (a l'aide)

opal harness
neat lintel
#

Envois le code que tu as fais

opal harness
# neat lintel Envois le code que tu as fais

bot.on("ready", async () => {
console.log("------------------------------------------------------------------- Le Bot est ON ------------------------------------------------------------");
bot.user.setStatus("online");

bot.channels.cache.get(bdd["ticket"]["channelpanelopenticket"]).messages.fetch(bdd["ticket"]["messagepanelopenticket"]).then(message => {
    message.react('🔨')
})

let statuts = bdd.stats
setInterval(function(){
    let stats = statuts[Math.floor(Math.random()*statuts.length)];
    if(stats == 1){
        const guild = await client.guilds.fetch('874747368954798151')
        console.log(guild)
        const count = guild.memberCount
        console.log(count)
        bot.user.setActivity(`${count-1} clients`, {type: 'WATCHING'});
    }else if(stats == 2){
        bot.user.setActivity(`ToDev`, {type: 'WATCHING'});
    }else if(stats == 3){
        bot.user.setActivity(`Commander`);
    }
}, 5000)
neat lintel
#

ta fonction est pas async

#

J'imagine que tu as une erreur du style await is only valid in async functions ?

opal harness
neat lintel
#

Mets juste un async avant le mot function dans le set interval

opal harness
neat lintel
#

non async va avant

#

async function() etc

opal harness
# neat lintel async function() etc

setInterval(async function(async){
let stats = statuts[Math.floor(Math.random()*statuts.length)];
if(stats == 1){
const guild = await client.guilds.fetch('874747368954798151')
console.log(guild)
const count = guild.memberCount
console.log(count)

#

Comme ça ?

neat lintel
#

yes

dapper coral
#

Yo! J'ai un petit soucis j'ai essayer de réfléchir mais j'ai pas trouver :/

#

Savez vous comment récupérer n'importe quoi tant que qu'il y'a /read

#

j'explique mal mais voici un exemple

neat lintel
#

Tu veux récupérer le nombre ?

dapper coral
#

Non, pouvoir render ma page puis après oui récupérer le nombre par la suite

neat lintel
#

ajoutes dans le '/read/:id' par exemple

oak turret
#

et t’auras un paramètre id dans req il me semble

neat lintel
oak turret
#

voilà

dapper coral
#

Parfait ça marche, merci 😁

oak turret
#

^^

neat lintel
#

Après si le nombre est optionel il faut psser par les queries plutot et taper dans l'url /read?p1=v1

#

parce que la du coup si tu mets pas de nombre ca va plus marcher

dapper coral
#

Je vais rediriger vers la page d'accueil si il n'y a pas d'id justement

#

Je doit juste faire:

router.get('/read',ensureAuthenticated, async (req,res)=>{
    res.render('read');
})

non? ou c'est pas propre?

neat lintel
# dapper coral

si tu mets pas d'id tu risque d'avoir ce problème il me semble

dapper coral
#

Effectivement merci beaucoup 😊

oak turret
#

tu peux vérifier si y a un id avec req.params?.id

#

si tu veux pas le mettre dans ta route

#

mais bon il le verra jamais, faut mettre dans ta route

neat lintel
oak turret
#

oui c’est bien pour ça

opal harness
#

Comment je fais pour avoir une condition qui sélectionne que les membres du role "876447360073474058"

keen narwhal
#

const role = message.guild.roles.cache.find(role => role.name === 'Ton ID de rôle')

slim anvil
keen narwhal
#

member.roles.cache.has(role)

#

ouais

slim anvil
#

enfin même pas il veut récupérer tous les gens qui ont un certains roles

keen narwhal
#
if(member.roles.cache.has(son role)){
              // Sa condition
}
#

il fait comme ça

slim anvil
#

Non justement je te disais je crois qu'il veut récupérer tous les membres avec le role @xxx par exemple

keen narwhal
#

bah c'est comme ça non ?

slim anvil
#

non là tu regardes que un member a le role

#

Il faudrait que tu fetch le role via ton guild.roles

keen narwhal
#

ah oui ok

slim anvil
#

@opal harness

#

et dessus tu auras un .members

#

(si c'est ce que tu veux)

ancient sonnetBOT
#
Résultats de la recherche: guild.roles
keen narwhal
#

dommage

slim anvil
#

bah oui c'est wiki JS pas discord.js

opal harness
# keen narwhal ```js if(member.roles.cache.has(son role)){ // Sa condition } ```

(node:10424) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'cache' of undefined
at Object.module.exports.run (f:\Bot Atlantica\AtlanticaBotDiscord\commandes\warn.js:11:29)
at Client.<anonymous> (f:\Bot Atlantica\AtlanticaBotDiscord\index.js:262:35)
at Client.emit (events.js:388:22)
at MessageCreateAction.handle (f:\Bot Atlantica\AtlanticaBotDiscord\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (f:\Bot Atlantica\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (f:\Bot Atlantica\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
at WebSocketShard.onPacket (f:\Bot Atlantica\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
at WebSocketShard.onMessage (f:\Bot Atlantica\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
at WebSocket.onMessage (f:\Bot Atlantica\AtlanticaBotDiscord\node_modules\ws\lib\event-target.js:132:16)
at WebSocket.emit (events.js:376:20)
(Use node --trace-warnings ... to show where the warning was created)
<node_internals>/internal/process/warning.js:43
(node:10424) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
<node_internals>/internal/process/warning.js:43
(node:10424) [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.

desert riverBOT
#

:_: Guild#roles
A manager of the roles belonging to this guild

slim anvil
#

montre ton code GPOIRE

opal harness
# slim anvil montre ton code GPOIRE
const Discord = require('discord.js');
const config = require("../config.json");
const fs = require("fs");
const bot = new Discord.Client({ partials: ['MESSAGE', 'CHANNEL', 'REACTION']});
const bdd = require('../bdd.json');

module.exports.run = async (bot, message, args) => {
    if(!message.channel.type === "dm") return;
    message.delete();
    if(message.author.bot) return;
    if(message.author.roles.cache.has("876447360073474058")){
        console.log("Yes")
    }else{
        console.log("No")
    }
}   

function Savebdd() {
    fs.writeFile("./bdd.json", JSON.stringify(bdd, null, 4), (err) => {
        if (err) message.channel.send("Une erreur est survenie !");
    });
}

module.exports.help = {
    name: "warn"
}
neat lintel
#

Et si tu as le client en paramètre ca sert a rien d'en déclarer un autre au dessus

sharp grail
opal harness
#

Ok

keen narwhal
#

Bonjour, j'ai cette erreur possible de m'aidais ?

node:internal/modules/cjs/loader:936
  throw err;
  ^

Error: Cannot find module './events/member'
Require stack:
- C:\Users\Administrateur\Desktop\BOT SLMD DEV\index.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at C:\Users\Administrateur\Desktop\BOT SLMD DEV\index.js:12:19
    at Array.forEach (<anonymous>)
    at C:\Users\Administrateur\Desktop\BOT SLMD DEV\index.js:11:9
    at FSReqCallback.oncomplete (node:fs:188:23) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ 'C:\\Users\\Administrateur\\Desktop\\BOT SLMD DEV\\index.js' ]
}
cyan iron
# opal harness Ok

Hareng a raison il faut que tu différencies un Member d'un User, si tu veux plus de détails n'hésites-pas à nous demander

cyan iron
#

Alors je ne sais pas ce que tu fais exactement dans ton code, mais ce fichier n'existe pas ou n'est pas atteignable

keen narwhal
#

donc je suis censé faire comment

#

Il faut que tu envoie ton code

#
const Discord  = require("discord.js");
const bot = new Discord.Client()
const config = require("./db/config.json")
const emoji = require("./db/emoji.json")
const image = require("./db/image.json") 
const role = require("./db/role.json")
const { readdirSync } = require('fs');
const fs = require('fs');
const dbs = require("discord-buttons");
dbs(bot);


const loadEvents = (dir = "./events") => {
    fs.readdirSync(dir).forEach(dirs => {
        const eventFiles = fs.readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".js"));

        for (const event of eventFiles) {
            const evt = require(`${dir}/${dirs}/${event}`);
            const evtName = event.split(".")[0];
            bot.on(evtName, evt.bind(null, bot));
            console.log("| 〽️ | L'évenement " + evtName + " est prêt.");
        };
    });
};
loadEvents();
bot.on('messageReactionAdd', async(reaction, user) => {
    const message = reaction.message;
    const member = message.guild.members.cache.get(user.id);

    if(user.bot) return;

    if(
        [emoji.ticketopen, emoji.ticketclose].includes(reaction.emoji.name)
    ) {
        switch(reaction.emoji.name) {

            case emoji.ticketopen:
            
            if(reaction.message.channel.id !== config.ticket) return console.log('L\'emoji à été utiliser dans un autre salon')

            reaction.users.remove(user);

            let username = user.username;
            let categoryID = config.ticketcategory;
            let channel = await message.guild.channels.create(`ticket-${username}`, {type: 'text', parent: message.guild.channels.cache.get(categoryID)})
            .catch(err => {
                message.channel.send('Il a eu une erreur dans le [MessageReacctionAdd]')
            });

            channel.updateOverwrite(message.guild.roles.everyone, {'VIEW_CHANNEL': false});
            channel.updateOverwrite(member, {
                'VIEW_CHANNEL': true,
                'SEND_MESSAGES': true,
                'ADD_REACTIONS': true
            });
            channel.updateOverwrite(message.guild.roles.cache.find(role => role.id == "869657088366903377"), {'VIEW_CHANNEL': true});

            var embed1 = new Discord.MessageEmbed()
            //.setTitle('Hello,')
            .setColor('WHITE')
            .setDescription('**Bonjour/Bonsoir,** \n\nSi vous avez un problème merci de nous l\'expliquez avec le plus de détail possible. \n\nNous fournissons pas d\'aide en ticket au non V.I.P')
            //.addField('Un staff arrive', `__**Sa ne sert a rien de ping le staff!**__`)
            .setThumbnail(image.logorw)

            channel.send(`${member}`)
            channel.send(embed1).then(async msg => msg.react(emoji.ticketclose))
            let logchannel = message.guild.channels.cache.find(c => c.id == config.logs)
            if(!logchannel) return;
            //logchannel.send(`Un membre à créer un ticket. \n Voici le salon ${channel}`)
            logchannel.send({embed : {color : "WHITE", title: "Logs Ticket", description : `Un membre vient de créer un ticket: ${channel}`}})
            break;

            case emoji.ticketclose:

            if(!message.channel.name.startsWith('ticket')) return;
            if(!member.hasPermission('ADMINISTRATOR')) return;

            message.channel.delete()
            break;
        }
    }
})
#

le voici

cyan iron
keen narwhal
#

Pour tes import au lieu de faire 15 fois les mêmes import pour le même dossier faire const {tes imports} = « ./ton dossier »

#

Ah nan en fait j’ai rien dis ça marchera pas

#

Laisse tomber

#

😂

#

mais ducoup mon code marchera jamais

cyan iron
#

C'est marrant, tu nous a tout donné sauf le bout de code qui nous intéresse kapp

keen narwhal
#

Je t’avoue le code est trop long et j’ai les yeux éclatés ce soir kappathugs

keen narwhal
#

Ouais x)

cyan iron
#

Bon @keen narwhal où est ton require('./events/member')

keen narwhal
#

au pire pas grave je vais me débrouiller merci encore de vôtre aide

#

je t'avouerais je sais pas 😅

#

Faudrait peut être stopper le CTRL C CTRL V x)

#

🙂

#

en vrais de vrais y'a des truc fait maison mdrr

cyan iron
#

Pas si sûr

keen narwhal
#

comment on fait pour les erreurs Missing permission ?

#

genre sa

#
C:\Users\Administrateur\Desktop\rwenvoie\node_modules\discord.js\src\rest\RequestHandler.js:154
      throw new DiscordAPIError(request.path, data, request.method, res.status);
            ^

DiscordAPIError: Missing Permissions
    at RequestHandler.execute (C:\Users\Administrateur\Desktop\rwenvoie\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (C:\Users\Administrateur\Desktop\rwenvoie\node_modules\discord.js\src\rest\RequestHandler.js:39:14) {
  method: 'get',
  path: '/guilds/806220327793328219/invites',
  code: 50013,
  httpStatus: 403
}
sharp grail
#

try catch or catch

#

or tu vérifies avant

keen narwhal
#

c

#

comment sa ?

sharp grail
#

||la flemme d'expliquer notlikethis||
Quelqu'un d'autre expliquera certainement plus en détail mais en gros

try {
  // code à tester
} catch (error) {
  // en cas d'erreur dans le code
  // si une erreur arrive, le code restant dans le try{} ne sera pas executé, pas d'arrêt du programe en globalité
}


...function.init().catch(error => error)
// some code

// catch va en cas d'erreur renvoyée par une promise l'"attraper" pour éviter l'arrêt complet du programme mais ne concerne que des promesses! 
#

globalement c'est ça car tu peux l'utiliser de manière plus complexe

#

sinon

ancient sonnetBOT
#
Résultats de la recherche: try catch
#
Résultats de la recherche: try

try...catch
L'instruction try...catch regroupe des instructions à exécuter et définit une réponse si l'une de ces instructions provoque une exception.

Example:

try {
   instructions_try
}
[catch (exception_var_1 if condition_1) { // non-standard
   instructions_catch_1
}]
...
[catch (exception_var_2) {
   instructions_catch_2
}]
[finally {
   instructions_finally
}]

IDBIndex.multiEntry
La propriété multiEntry, rattachée à l'interface IDBIndex, est un booléen qui indique le comportement de l'index lorsque le résultat de l'évaluation d'un chemin de clé renvoie un tableau.

Example:

var monIndex = objectStore.index('index');
console.log(monIndex.multiEntry);

runtime.getPackageDirectoryEntry()
Renvoie un objet DirectoryEntry représentant le répertoire du package.

Example:

var gettingEntry = browser.runtime.getPackageDirectoryEntry()
sharp grail
#

merci Enzo au passage mdr

opal harness
#

Yo,
Pourquoi j'ai une error ?
message.mentions.users.first().kick()

burnt perch
#

bah envoie l'erreur

sharp grail
#

et non un member

burnt perch
#

ah bah je laisse expert gerer mdr

sharp grail
#

il y a une grosse différence entre users et members comme dit plus haut

sharp grail
#

si tu veux récupérer un member si c'est dans une guild, rediriges toi plutot vers message.mentions.members 👀

desert riverBOT
opal harness
# sharp grail si tu veux récupérer un member si c'est dans une guild, rediriges toi plutot ver...
(node:14968) UnhandledPromiseRejectionWarning: TypeError: message.mentions.members.kick is not a function
    at Object.module.exports.run (e:\Bot Atlantica\AtlanticaBotDiscord\commandes\warn.js:59:58)
    at Client.<anonymous> (e:\Bot Atlantica\AtlanticaBotDiscord\index.js:262:35)
    at Client.emit (events.js:412:35)
    at MessageCreateAction.handle (e:\Bot Atlantica\AtlanticaBotDiscord\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (e:\Bot Atlantica\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (e:\Bot Atlantica\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (e:\Bot Atlantica\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (e:\Bot Atlantica\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (e:\Bot Atlantica\AtlanticaBotDiscord\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (events.js:400:28)
(Use `node --trace-warnings ...` to show where the warning was created)
message.mentions.members.kick()
slim anvil
#

il t'a dit de te diriger, pas de juste copier le truc

#

regarde sur la doc ce que tu peux faire avec le .members

burnt perch
#

@opal harness tu étais sur la bonne voie il te manque juste le .first() logiquement

slim anvil
#

faut le laisser chercher un peu plz

#

Il cherche jamais à trouver, il veut juste la réponse sans trop s'embêter, c'est pas le but

sharp grail
#

members renvoie déjà une collec

#

pas besoin de cache

queen ocean
#

ha je pensais c'étais un Manager

keen narwhal
#

du moins la remplacer

#

?

sharp grail
#

euh

#

j'ai pas dit ça 🤔

keen narwhal
#

ha mince j'ai mal compris

#

excuse moi

sharp grail
keen narwhal
#

oui oui pas de problème merci

sharp grail
keen narwhal
#

Salut! Je sais pas du tout si y'a un rapport mais est ce que la version 12 de node.js fonctionne avec les commande / ?

oak turret
#

alors je crois pas, en tout cas tu peux use les / commandes avec discord v13 et il faut au minimum la version 16 de node

#

sinon tu peux use un package, mais pas sur que ça fonctionne

keen narwhal
#

d'accord, merci

#

Euh j'ai plusieurs version de node js command je fais pour savoir laquelle a été installé quand j'ai fais npm i discord.js ?

#

euh non

#

qu'est ce que je raconte

#

J'ai plusieurs versions de node js comment je fais pour savoir laquelle utilise mon bot, c'est plutot ça ma question

oak turret
#

node —version

keen narwhal
#

ok merci

summer tiger
#

Hello,

Si quelqu'un a déjà utiliser SCSS avec VueJS, serait-il possible de m'éclairer car j'ai une erreur (voir pj) même en suivant la doc de vuejs aucun import se fait..
Le fichier main.js possède juste l'import du fichier main.scss
Le fichier main.scss possède juste un body {color:red;}

J'ai importé sass-loader, sass en devDependencies.

Notifier moi

keen narwhal
#

@slim anvil tu peux peut être l'aider toi

slim anvil
#

regarde ton package json

#

euh sass-loader par contre

#

et tu as quoi comme version de vue aussi

summer tiger
#

Voilà ce que j'ai dedans

#

VueJS 3 générer avec vue-cli 4

slim anvil
#

tu devrais downgrade sass-loader pas compatible il me semble

#

(sass-loader à partir de 11 c'est webpack 5, et là c'est webpack 4, donc utilise la 10.11 sur sass-loader)

summer tiger
#

Je check et je te redis

#

Merci

#

Pour l'instant c'est bon, je reviens vers toi si j'ai un souci et si tu as 5minutes 😉

keen narwhal
#

Des développeurs discord js disponible pour participer à un gros projet ? Si vous voulez plus d’informations venez priver

oak turret
keen narwhal
oak turret
keen narwhal
#

Salut j'arrive pas à lancer mon bot, voici mon code

neat lintel
#

Tu as pas importé Collection de discord.js

keen narwhal
#

ah

neat lintel
#

Et tu as importé Message pour rien

#

Donc remplaces Message par Collection

keen narwhal
#

ok je vais essayer

#

ah bah oui x)

#

Je me suis emmêlé les pinceaux

#

Merci

neat lintel
#

de rien

keen narwhal
#

re encore

#

Cette fois ci quand je veux lancer mon bot je reçois ça

neat lintel
#

envois le code qui correspond a l'erreur stp

keen narwhal
#

hum, j'en ai plusieurs

neat lintel
#

après je penses que ca vient des readdir

keen narwhal
#

J'ai plusieurs fichiers

neat lintel
#

Tes readdir il faut un callback en 2eme argument

#

si tu veux utilises des promises tu peux aussi importer readdir de fs/promises

#

Mais ici vu que c'est au démarrage l'utilisation de readdirSync peut etre une bonne solution a la place de readdir

keen narwhal
#

j'ai mis readdirSync

neat lintel
#

et tu as encore l'erreur maintenant ?

keen narwhal
#

oui

neat lintel
keen narwhal
#

Ah mais ç a doit etre ça

neat lintel
#

oui voila

#

mets des readdirSync

keen narwhal
#

bon cette fois çi le message d'erreur est différent

#

super

#

ah mais j'ai mis rest au lieu de test 😭

#

misère de misère

#

Ah non je viens de voir et c'est pas ça la pb

neat lintel
#

envois l'erreur alors

keen narwhal
neat lintel
#

du coup fais un npm i @discordjs/rest

keen narwhal
#

npm i fs ?

neat lintel
#

non la il faut importer fs avec require

keen narwhal
#

Ah ben c'est ce que j'ai fais

neat lintel
#

dans le bon fichier et le bon scope ?

keen narwhal
#

oui

#

le scope cet a dire

neat lintel
#

et bien le scope d'une variable c'est sa portée dans le code. Exemple je définis une variable dans une fonction A je n'y ais pas accès dans une fonction B si elle est au meme niveau

#

Sinon envois le code qui correspond a l'erreur et on regardera ca

keen narwhal
neat lintel
#

je penses pas que l'erreur vienne de ce fichier

keen narwhal
#

C'est ça pardon

#

me suis trompé

neat lintel
#

et la tu as pas importé fs dans ce fichier

#

sinon il serait vert comme au dessus

keen narwhal
#

aah

#

Oh lala encore une erreure

neat lintel
#

C'est quoi le message d'erreur ?

keen narwhal
#

Ce serait a la ligne 4 du coup

neat lintel
#

A vérifier mais il me semble que il y a un S majuscule au debut

#

oui c'est SlashCommandBuilder

keen narwhal
#

ok

#

Ah du coup y'a un S majuscule à la ligne 1 aussi

#

Je vais y arriver un jour

keen narwhal
#

Re j'ai encore un pb

cyan iron
#

Ton command.data est undefined

#

Essaye de console.log(command.data) @keen narwhal tu verras bien qu'il est undefined
Donc ça vient de ton fichier

keen narwhal
#

Ah

#

Comment je regle ca ?

#

J'ai retiré

                client.commandArray.push(command.data.toJSON());```
Et ça fonctionne mais du coup comment jefais pour que ça fonctionne alors qu'il y a ces lignes de code ?
neat lintel
#

regardes la structure de tes commandes

#

vérifie que elles exportent toutes un objet data avec dedans une key name

keen narwhal
#

tu m'as un peu perdu

#

tu parles des mots avec des () collés ?

neat lintel
#

non

#

D'un objet

keen narwhal
#

ah

#

ça par exemple

neat lintel
#

regardes la structure de tes commandes et vérifie que ca ressemble a ca :

module.exports = {
   data : {
    name: "le nom"
  }
}
keen narwhal
neat lintel
#

envois une commande stp

keen narwhal
#

Et d'ailleurs la commande ne marche pu

neat lintel
#

logique tu as mis le code qui les charges en commentaire

#

Maintenant vérifie que chaque commande a cette structure

#

que il y a pas de fichiers vides etc

keen narwhal
#

C'est ma seule commande

#

Ah bah si il y en a un de fichier vide

neat lintel
#

voila le problème du coup

keen narwhal
#

ah

#

J'en apprend des choses

#

Merci encore une fois

#

hmm

#

La commande ne marche toujours pas

neat lintel
#

tu as enlevé le commentaire ?

keen narwhal
#

Oui

neat lintel
#

Une erreur ?

keen narwhal
#

J'ai fais un copier coller du code de la commande ping

#

Mais le bot est online quand meme

neat lintel
#

montres plus d'erreur

#

si on a pas le message ca sert a rien

keen narwhal
#

ah bah je sais

neat lintel
#

Donc comme c'est marqué tu as 2 commandes avec le meme nom

keen narwhal
#

c'est ecrit en plus

#

Bah oui x) je viens de voir

#

ça marche maintenant

twin bane
#

what ? mon message c'est instant supr ??

#

bizzare...

#

bref

#

j'ai un problème avec un command handler que j'ai trouver sur le git, mon bot se lance mais me fait un erreur, la voici ! merci a la personne qui pourra m'aider !

#
DiscordAPIError[50001]: Missing Access
    at SequentialHandler.runRequest (C:\Users\capleagency\Desktop\DiscordBot-Template-master\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.js:198:23)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async SequentialHandler.queueRequest (C:\Users\capleagency\Desktop\DiscordBot-Template-master\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.js:99:20)
    at async C:\Users\capleagency\Desktop\DiscordBot-Template-master\bot.js:187:3 {
  rawError: { message: 'Missing Access', code: 50001 },
  code: 50001,
  status: 403,
  method: 'put',
  url: 'Lien discord que je ne peut pas afficher sinon le bot de gca me supprimera mon message...'
}
sharp grail
sharp grail
#

faut que tu l'ajoutes avec le scope application.commands

sharp grail
#

kick et le réinvites en cochant ces cases (et ajoute lui éventuellement des perms)

sharp grail
#

je dis ptet des bêtises

#

c'est ptet pas des slash cmds

#

et le http

twin bane
#

si c'est bon j'ai tester ca marche ^^ merci beaucoup ! tu me sauve la vie !!

sharp grail
#

ah nice, pas de soucis ! 👀

oak turret
sharp grail
keen narwhal
#

Bonjour, j'aurais besoin d'aide svp

#

Je m'explique, j'ai fait un mod mail, je l'ai rajouter à mon bot, mtn le mod mail ne fonctione pas.

#

j'ai mis le mod mail dans message.js

neat lintel
#

Tu as une erreur ?

keen narwhal
#

nan

#

y'a sa dans le message js

#

je pense que sa rentre en conflit

#

mais je sais pas comment et pourquoi

neat lintel
#

Le modmail fonctionne comment ? On envoi un message privé au bot ?

keen narwhal
neat lintel
#

Bah là tu as mis de return si on envoie un dm

#

Du coup des que le bot reçoit un dm tu lui dis de rien faire

#

Mets ton code de modmail avant

keen narwhal
#

Ha, effectivement, d'accord, je revien vers toi si cela ne fonctionne pas, merci 😉

#

J'ai fait se que tu ma dit, j'ai eu une erreur que j'ai jamais eu avant, disant le client était non définis

neat lintel
#

Tu as du le mettre trop haut

#

Faut rester dans le module.exports

vagrant shadow
#

Bonjour ^^

#

Je viens vers vous car je souhaite faire un bouton qui ajout un input, mais le problème c'est que je connait pas l'id , ou le name de chaque champs et je voudrai qu'ils soit différant, comment faire ? merci

  <script type="text/javaScript"> 

function creer()
{
var input = document.createElement("input");
 
input.type="text";
 
document.body.appendChild(input);
 
}
    </script> 
    
    
    
    
 

<input type="button" onclick="creer();" value="Ajouter" />
keen narwhal
#

@neat lintel c'est good merci

#

sinon, mon hébergeur fait cette erreurn vous s'avez pk

slim anvil
neat lintel
keen narwhal
#

déjà essayer

#

npm audit fix --force

neat lintel
#

Alors essayes de supprimer les node_modules et le package-lock.json puis refais la commande

neat lintel
keen narwhal
#

donc je supprime le fichier package-lock.json

#

et quoi d'autre ?

neat lintel
#

le dossier node_modules

#

et refais npm install (ne transfères pas les node_modules de ton PC vers l'hébergeur. Le module a besoin d'etre compilé sur la machine qui exécute le code)

keen narwhal
#

je fait sa

#

merci

keen narwhal
#

Tu peux voc vite fait ?

#

pour plus de simplicité

neat lintel
#

en général la commande peut prendre du temps car il faut compiler le module. Si ca dure vraiment trop longtemps refais la commande

keen narwhal
#

Npm install ?

neat lintel
neat lintel
keen narwhal
keen narwhal
vagrant shadow
#

@slim anvilComment on fait ?

keen narwhal
neat lintel
#

tu as une erreur ?

keen narwhal
#

:/home/container$ if [[ -d .git ]] && [[ ${AUTO_UPDATE} == "1" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then /usr/local/bin/npm install ${NODE_PACKAGES}; fi; if [ -f /home/container/package.json ]; then /usr/local/bin/npm install --production; fi; /usr/local/bin/node /home/container/${BOT_JS_FILE}

up to date, audited 413 packages in 9s

60 packages are looking for funding
run npm fund for details

7 vulnerabilities (4 moderate, 3 high)

To address all issues (including breaking changes), run:
npm audit fix --force

Run npm audit for details.
internal/modules/cjs/loader.js:1131
throw err;
^

SyntaxError: /home/container/node_modules/tr46/lib/mappingTable.json: Unexpected end of JSON input
at parse (<anonymous>)
at Object.Module._extensions..json (internal/modules/cjs/loader.js:1128:22)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:93:18)
at Object.<anonymous> (/home/container/node_modules/tr46/index.js:4:20)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)

#

@neat lintelj'ai uniquement ca, et rien d'autre

#

en local il fonctionne..

neat lintel
#

Un json dans un des node_modules a un problème

#

Soit c'est un bug, soit tu as touché aux node_modules soit c'est un module qui sauvegarde des données dans un json

slim anvil
vagrant shadow
#

et si je veut que l'élément s'appelle "ID1" puis t'ajoute 1 à chaque élément ?

slim anvil
#

tu incrémentes de 1 une variable que tu init dans ta fonction de création

zenith wave
#

qui est assez bon en js pour automatiser le html / css ?

#

j'ai besoin d'aide si possible mp ou voc

keen narwhal
#

mais en local sa fonctionne

#

j'arrive a le lancé

civic dragon
burnt perch
#

tout d'abord le JSON n'est pas bon :

{"message":"dfgdfg"}: '' "

et à partir de quel ligne tu obtiens un null ?

#

c'est la réponse qui est null ? @civic dragon

civic dragon
#

Oui c'est la réponse de mon request->request->get