Search code examples
javascriptdiscorddiscord.jsembed

Discord.js V14 - Use embeds stored in another file


So, I think the title is pretty explicit x)

Originally, the embeds were directly in the base file, but if I left them in, it would become quite complicated to modify them as needed.

So I created a file to put them all there. I tried several different methods, but it never worked except for errors.

File with all embed

const { EmbedBuilder } = require('discord.js')
const { prefix, membre, staff, moderateur, administrateur, homme, femme } = require('./config')
let suffixe

module.exports = {

const: aideAction = new EmbedBuilder()
    .setColor('#ffcd3c')
    .setDescription(`
### đŸ€ ・ LISTE DES COMMANDES D'ACTIONS
**!cĂąlin**
> \`amical\`/\`amour\`/\`dormir\`
~~**!carĂȘsser**~~
~~**!chatouiller**~~
~~**!check**~~
**!embrasser**
> \`joue\`/\`front\`/\`lĂšvre\`/\`langue\`
**!frapper**
> \`poing\`/\`gifle\`
~~**!lĂšcher**~~
~~**!nourrir**~~
> \`gĂąteau\`
~~**!tapoter**~~
> \`joue\`/\`cheveux\`

*Vous pouvez mentionner un membre de votre choix aprĂšs votre commande.*
*Vous pouvez rajouter " info" aprĂšs votre commande pour avoir plus d'information sur celle-ci*
    `)
    .setFooter({ text: 'DĂ©veloppĂ© avec ♄ par Alynn'}),

const: aideEmotion = new EmbedBuilder()
    .setColor('#ffcd3c')
    .setDescription(`
### 🎭 ・ LISTE DES COMMANDES D'ÉMOTIONS
~~**Joie :**~~
> \`!amour\`/\`!content\`/\`!passionné\`/\`!réjouis\`

~~**ColĂšre :**~~
> \`!agacé\`/\`!contrarié\`/\`!furieux\`

~~**Peur :**~~
> \`!angoissé\`/\`!inquiet\`/\`!effrayé\`/\`!méfiant\`

~~**Tristesse :**~~
> \`!déçu\`/\`!chagrin\`/\`!désolé\`

~~**Surprise :**~~
> \`!émerveillé\`/\`!étonné\`/\`!impatient\`/\`!stupéfié\`

**Dégoût :**
> \`!aigri\`/\`!intimidé\`/\`!blessé\`~~
    `)
    .setFooter({ text: 'DĂ©veloppĂ© avec ♄ par Alynn'}),

const: aideMembre = new EmbedBuilder()
    .setColor('#ffcd3c')
    .setDescription(`
### 🔧 ・ LISTE DES COMMANDES | <@&1232721076442890322> <:Membre:1244003284172279918>
**${prefix}aide, action\`/\`Ă©motion** *- \`h\` / \`help\`*
> Voir les commandes !

**${prefix}bienvenue @membre** *- \`bvn\`*
> Pour souhaiter la bienvenue sur le serveur !

**${prefix}action** *- \`act\` *
> Voir la liste des commandes d'actions !

**${prefix}Ă©motion** *- \`Ă©mo\`*
> Voir la liste des commandes d'Ă©motions !

**${prefix}information serveur\`/\`@membre** *- \`i\` / \`information\`*
> Avoir des informations sur le serveur ou sur un membre !

**${prefix}latence** *- \`ping\`*
> Voir la latence du robot !


**LĂ©gende** 
- \`,\` : *Ce qui suit est optionnel.*
- \`/\` : *Ou.*
**Si tu as besoin d'aide, n'hésite pas à aller dans le salon <#1232720069512003655> !**
    `)
    .setFooter({ text: 'DĂ©veloppĂ© avec ♄ par Alynn'}),

const: aideStaff = new EmbedBuilder()
    .setColor('#ffcd3c')
    .setDescription(`
### 🔧 ・ LISTE DES COMMANDES | <@&1232721076442890322> <:Membre:1244003284172279918>
**${prefix}aide, action\`/\`Ă©motion\`/\`staff** *- \`h\` / \`help\`*
> Voir la liste des commandes ! Voir la liste des commandes d'aide d'une catégorie !

**${prefix}bienvenue @membre** *- \`bvn\`*
> Pour souhaiter la bienvenue sur le serveur ! 

**${prefix}action** *- \`act\` *
> Voir la liste des commandes d'actions !

**${prefix}Ă©motion** *- \`Ă©mo\`*
> Voir la liste des commandes d'Ă©motions !

**${prefix}information serveur\`/\`@membre** *- \`i\` / \`info\`*
> Avoir des informations sur le serveur ou sur un membre !

**${prefix}latence** *- \`ping\`*
> Voir la latence du robot !


**LĂ©gende** 
- \`,\` : *Ce qui suit est optionnel.*
- \`/\` : *Ou.*
**Si tu as besoin d'aide, n'hésite pas à aller dans le salon <#1232720069512003655> !**
    `)
    .setFooter({ text: 'DĂ©veloppĂ© avec ♄ par Alynn'}),

const: aideStaffErreur = new EmbedBuilder()
    .setColor('#d17159')
    .setDescription(`
### **❌ ・ Suffixe *${suffixe}* invalide.**
\`${prefix}aide staff\`
> Pour voir la liste de commandes du staff !
    `)
    .setFooter({ text: 'DĂ©veloppĂ© avec ♄ par Alynn'}),

const: aideStaffAdministrateur = new EmbedBuilder()
    .setColor('#ffcd3c')
    .setDescription(`
### 🛠 ・ LISTE DES COMMANDES | <@&1232720714725982349> <:Administrateur:1241797127051546724>

**${prefix}envoyer, #salon** *- \`say\`*
> Envoyer un message Ă  travers le robot ! 
~~**${prefix}embed, #salon**~~ ❌
> Envoyer un embed Ă  travers le robot !

~~**${prefix}avertir, @membre**~~ ❌
> Avertir un membre !

~~**${prefix}mute @membre, <raison>**~~ ❌
> Mute un membre !
~~**${prefix}demute @membre**~~
> Demute un membre !

**${prefix}expulser @membre, <raison>** *- \`k\` / \`kick\`*
> Expulser un membre !

**${prefix}bannir @membre, <raison>** *- \`b\` / \`ban\`*
> Bannir un membre !
~~**${prefix}debannir @membre**~~ ❌
> DĂ©bannir un membre !

~~**${prefix}casier, @membre**~~ ❌
> Consulter son casier ou celui d'un membre !

~~**${prefix}effacer <nombre>**~~ ❌
> Effacer le nombre de message souhaité !


**LĂ©gende** 
- \`,\` : *Ce qui suit est optionnel.*
- \`/\` : *Ou.*
    `)
    .setFooter({ text: 'DĂ©veloppĂ© avec ♄ par Alynn'}),

const: aideStaffModerateur = new EmbedBuilder()
    .setColor('#ffcd3c')
    .setDescription(`
### 🛠 ・ LISTE DES COMMANDES | <@&1232720715527094412> <:Moderateur:1241797092263854091>

~~**${prefix}avertir, @membre**~~ ❌
> Avertir un membre !

~~**${prefix}mute @membre, <raison>**~~ ❌
> Mute un membre !
~~**${prefix}demute @membre**~~ ❌
> Demute un membre !

**${prefix}expulser @membre, <raison>** *- \`k\` / \`kick\`*
> Expulser un membre !

**${prefix}bannir @membre, <raison>** *- \`b\` / \`ban\`*
> Bannir un membre !
~~**${prefix}debannir @membre**~~ ❌
> DĂ©bannir un membre !

~~**${prefix}casier, @membre**~~ ❌
> Consulter son casier ou celui d'un membre !

~~**${prefix}effacer <nombre>**~~ ❌
> Effacer le nombre de message souhaité !


**LĂ©gende** 
- \`,\` : *Ce qui suit est optionnel.*
- \`/\` : *Ou.*
    `)
    .setFooter({ text: 'DĂ©veloppĂ© avec ♄ par Alynn'}),

}

File where i want to use the embed

const Discord = require('discord.js')
const { EmbedBuilder } = require('discord.js')
const { prefix, staff, moderateur, administrateur } = require('../config')
const { aideAction, aideEmotion, aideMembre, aideStaff, aideStaffErreur, aideStaffAdministrateur, aideStaffModerateur } = require('../messageEmbed')

const suffixe_action = [
    "action",
    "actions",
    "act"
]

const suffixe_emotion = [
    "Ă©motion",
    "emotion",
    "Ă©motions",
    "emotions",
    "Ă©mo",
    "emo"
]

const suffixe_staff = [
    "staff",
    "s",
    "modérateur",
    "moderateur",
    "modo",
    "administrateur",
    "admin"
]

module.exports = {
  name: "aide",
  aliases: ["h", "help"],

    async run(bot, message, args) {

        const suffixe = args[0]

        message.delete()

        if (suffixe_action.includes(suffixe)) {
            await message.channel.send({ embeds: [aideAction] })

        } else if (suffixe_emotion.includes(suffixe)) {   
            await message.channel.send({ embeds: [aideEmotion] })

        } else if (!message.member.roles.cache.has(staff)){
            await message.channel.send({ embeds: [aideMembre] })

        } else if ((!suffixe) || (!suffixe_staff.includes(suffixe))) {

            if (!suffixe) {
                await message.channel.send({ embeds: [aideStaff] })

            } else if (!suffixe_staff.includes(suffixe)) {
                await message.channel.send({ embeds: [aideStaffErreur] })

            }

        } else if (suffixe_staff.includes(suffixe)) {

            if (message.member.roles.cache.has(administrateur)) {                
                await message.channel.send({ embeds: [aideStaffAdministrateur] })

            } else if (message.member.roles.cache.has(moderateur)) {
                await message.channel.send({ embeds: [aideStaffModerateur] })

            } else if (message.member.roles.cache.has(staff)) {
                await message.channel.send({ embeds: [aideStaff] })
            }
        }
    }
}

I hope you can understand me. Thanks in advance


Solution

  • You are doing it almost correct, however you should not be putting const: <name> the correct way to export them from the file would be doing the following:

    module.exports = {
         aideAction: new EmbedBuilder()
        .setColor('#ffcd3c')
        .setDescription(`
    ### đŸ€ ・ LISTE DES COMMANDES D'ACTIONS
    **!cĂąlin**
    > \`amical\`/\`amour\`/\`dormir\`
    ~~**!carĂȘsser**~~
    ~~**!chatouiller**~~
    ~~**!check**~~
    **!embrasser**
    > \`joue\`/\`front\`/\`lĂšvre\`/\`langue\`
    **!frapper**
    > \`poing\`/\`gifle\`
    ~~**!lĂšcher**~~
    ~~**!nourrir**~~
    > \`gĂąteau\`
    ~~**!tapoter**~~
    > \`joue\`/\`cheveux\`
    
    *Vous pouvez mentionner un membre de votre choix aprĂšs votre commande.*
    *Vous pouvez rajouter " info" aprĂšs votre commande pour avoir plus d'information sur celle-ci*
        `)
        .setFooter({ text: 'DĂ©veloppĂ© avec ♄ par Alynn'}),
    // put the rest here
    }
    

    When exporting from a file you do not need to specify a variable type such as const, let or var, instead you just put the name with the value as its formatted as a JSON object.