Bot Discord.js Probleme de setprefix

a marqué ce sujet comme résolu.

Hey je viens de débuter dans la programmation et j’ai crée un bot discord qui est hebergée sur heroku avec github j’ai rencontrée un problème avec ma commande de set prefix quand on l’execute tous vas bien le prefix défini fonctionne etc.Mais quand je redémarre mon bot le prefix par default se remet une solution a me proposée :x?

+0 -0

Sans code, on ne pourra pas t’aider. Peux-tu copier-coller les morceaux de code en relation au préfixe ?

EDIT : En fait, je viens de comprendre. Quand tu modifies le préfixe à l’aide d’une commande, la modification se fait dans la RAM. Il s’agit donc d’une donnée temporaire. Si tu redémarres le bot, toutes les informations sont effacées. Du coup, quand tu redémarres le bot, l’information que le logiciel a est ce qui est écrit dans ton script, c’est-à-dire le préfixe par défaut.

Si tu souhaites que le préfixe qui a été défini par la commande soit celui utilisé malgré un redémarrage du bot, il faut le stocker dans une base de données ou dans un fichier texte.

Commande :

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

module.exports.run = async (bot, message, args) => {

    if(!message.member.hasPermission("ADMINISTRATOR")) return message.reply("Vous n'avez pas la permission");
    if(!args[0] || args[0 == "help"]) return message.reply("Syntaxes: !prefix <nouveau prefix>");

    let prefixes = JSON.parse(fs.readFileSync("./prefixes.json", "utf8"));

    prefixes[message.guild.id] = {
        prefixes: args[0]
    };

    fs.writeFile("./prefixes.json", JSON.stringify(prefixes), (err) => {
        if (err) console.log(err)
    });

    let prefixEmbed = new Discord.RichEmbed()
    .setColor("#FF9900")
    .setTitle("Prefix Set!")
    .setDescription(`Set to ${args[0]}`);
    
    message.channel.send(prefixEmbed);

}

module.exports.help = {
    name: "prefix"
};

Et index.js :

let prefixes = JSON.parse(fs.readFileSync("./prefixes.json", "utf8"));

  if (!prefixes[message.guild.id]){
    prefixes[message.guild.id] = {
      prefixes: process.env.PREFIX
    };
  }

  let prefix = prefixes[message.guild.id].prefixes;
  let messageArray = message.content.split(" ");
  let command = messageArray[0];
  let args = messageArray.slice(1);

  if(prefix == command.slice(0, 1)) {
    let commandFile = bot.commands.get(command.slice(prefix.length));
    if(commandFile)
    commandFile.run(bot, message, args);
  }
+0 -0

Salut,

Je me suis permis d’éditer ton message pour utiliser les balises de code.

Tu peux les utiliser de la manière suivante :

```javascript
// ton code ici
```

Ce qui donne le résultat suivant :

// ton code ici

Le langage est ici javascript, mais il peut être changé au besoin.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte