Unexpected end of input (Problème code bot Discord)

a marqué ce sujet comme résolu.

Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

J’essaye de lancer mon bot mais cela ne fonctionne pas a cause d’une erreur rouge dans le code :

const botconfig = require("./botconfig.json");
const Discord = require('discord.js');
const client = new Discord.Client();

client.on("ready", async () => {
    console.log(`${bot.user.username} est connecte sur ${bot.guilds.size} serveurs !`);
    bot.user.setPresence({game: { name: 'Type -help for help !', type: 0} });
  });
  
  client.on("guildCreate", guild => {
    console.log(`AnimaBot vient d'être ajouté sur ${guild.name} (id: ${guild.id}). La guild possède ${guild.memberCount} members!`);
  });
  
  client.on("guildDelete", guild => {
    console.log(`AnimaBot à été remove de ${guild.name} (id: ${guild.id})`);
  });

  client.on('message', message => {
  if (message.content === 'ping' || message.content == 'Ping') {
    message.channel.send('pong');
}

client.on('message', message => {
if (message.content === 'hey') {
  message.channel.send('coucou');
}

if(cmd === `${prefix}say`){
    if(message.member.id !== "361495811554803713"){
      message.reply("Vous n'avez pas la permission de faire parler le bot !");
      return;
    } else {
      //if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("Vous n'avez pas la permission pour faire parler le bot !");
      let botmessage = args.join(" ");
      message.delete().catch();
      message.channel.send(botmessage);
    }

  }

  if(cmd === `${prefix}annonce`){
    let annonce = args.join(" ");
    if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("Vous n'avez pas la permission pour envoyer des annonces !");
    let annonceEmbed = new Discord.MessageEmbed()
    .setDescription("**Annonce >** " + message.createdAt + "\n\n\n\n *>* " + annonce + " \n\n\n\n\n\n *Annonce by* " + message.author.username)
    .setColor("#FFFFFF");


    message.delete().catch(O_o=>{});
    return message.channel.send(annonceEmbed) && message.channel.send("@everyone");
  }

  if(cmd === `${prefix}sondage`){
    let sondage = args.join(" ");
    if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("Vous n'avez pas la permission de faire des sondages !");
    let sondageEmbed = new Discord.MessageEmbed()
    .setDescription("**Sondage** \n\n🔷 " + sondage + " \n\n ***sondage fait le :*** " + message.createdAt)
    .setColor("#FFFFFF");

    message.delete().catch(O_o=>{});

    return message.channel.send(sondageEmbed).then(function (message) {
        message.react("👍")
        message.react("👎")
        }).catch(function() {
      });

  }


  if(cmd === `${prefix}report`){
    let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
    if(!rUser) return message.channel.send("Impossible de trouver l'utilisateur !");
    let reason = args.join(" ").slice(22);

    let reportEmbed = new Discord.MessageEmbed()
    .setDescription("Reports")
    .setColor("#15f153")
    .addField("User", `${rUser} with ID: ${rUser.id}`)
    .addField("Report by", `${message.author} with ID: ${message.author.id}`)
    .addField("Raison", reason)
    .addField("Channel", message.channel)
    .addField("Time", message.createdAt);

    let reportschannel = message.guild.channels.find(`name`, `reports`);
    if(!reportschannel) return message.guild.channel.send("Pour faire fonctionner la commande de ban, merci de créer un channel **#reports**");

    message.delete().catch(O_o=>{});

    reportschannel.send(reportEmbed);

  }

  if(cmd === `${prefix}kick`){
    let kUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
    if(!kUser) return message.channel.send("Impossible de trouver l'utilisateur !");
    let kReason = args.join(" ").slice(22);
    if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("Vous n'avez pas la permission pour kick !");
    if(kUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("Vous ne pouvez pas kick cette utilisateur !");

    let kickEmbed = new Discord.MessageEmbed()
    .setDescription("๑۩۞۩๑ LOG - Kick (Discord) ๑۩۞۩๑")
    .setColor("#e56b00")
    .addField("Kick user", `${kUser} with ID ${kUser.id}`)
    .addField("Kick by", `<@${message.author.id}> with ID ${message.author.id}`)
    .addField("Raison", kReason)
    .addField("Time", message.createdAt);

    let logchannel = message.guild.channels.find(`name`, `logs`);
    if(!logchannel) return message.guild.channel.send("Pour faire fonctionner la commande de ban, merci de créer un channel **#logs**");

    message.delete().catch(O_o=>{});

    message.guild.member(kUser).kick(kReason);
    logchannel.send(kickEmbed);

  }

  if(cmd === `${prefix}info`){
    let sicon = message.guild.iconURL;
    let serverembed = new Discord.MessageEmbed()
    .setDescription("Information concernant le discord")
    .setColor("#15f153")
    .setThumbnail(sicon)
    .addField("🔷 Membre :", message.guild.memberCount)
    .addField("🔨 Crée le:", message.guild.createdAt)
    .addField(":flag_white: Region:", message.guild.region)
    .addField("🔖 Owner", message.guild.owner.user)
    .addField("Vous avez rejoint le discord le", message.member.joinedAt)
    .addField("ID", message.guild.id);


    return message.channel.send(serverembed);
  }

  if(cmd === `${prefix}help`){

    let helpEmbed1 = new Discord.MessageEmbed()
    .setColor(0xffffff)
    .setTitle(`Aide concernant Zirow (Partit 1) :`)
    .setDescription(`**-help** \n *Permet d'obtenir cette aide.* \n\n \n\n **-mute @lapersonne <temps>** \n *Permet de mute quelqu'un temporairement.* \n\n **-kick @lapersonne <raison>** \n *Permet de kick quelqu'un du discord.* \n\n **-ban @lapersonne <raison>** \n *Permet de bannir quelqu'un du discord* \n\n **-clear <nb. message>** \n *Permet de clear des messages.* \n\n **-report @lapersonne <raison>** \n *Permet de report quelqu'un.* \n\n **-annonce <text>** \n *Permet de réaliser une annonce.* \n\n **-sondage <sondage>** \n *Permet de réaliser un sondage.* \n\n \n\n **-gif <type>** \n *Permet de générer un gif. \n\n **-shoot @lapersonne** \n *Permet de kill la personne. \n\n **-avatar @lapersonne** \n *Permet d'obtenir l'avatar de la personne* \n\n **-météo <la ville>** \n *Permet d'obtenir la météo de la ville / village.* \n\n **-fortnite @lapersonne** \n *Permet d'obtenir les statistiques fortnite de la personne.*`);

    message.author.send(helpEmbed1);

    let helpEmbed2 = new Discord.MessageEmbed()
    .setColor(0xffffff)
    .setTitle(`Aide concernant Zirow (Partit 2) :`)
    .setDescription('**-spotify @lapersonne** \n *Permet de se renseigner sur la musique.* \n\n **-shorturl <url>** \n *Permet de réduire la taille de votre lien.* \n\n \n\n **-info** \n *Permet de se renseigner sur cette guild.* \n\n **-discord** \n *Permet d\'obtenir le lien du discord de Zirow* \n\n **-site** \n *Permet d\'obtenir le lien du site de Zirow*');

    message.author.send(helpEmbed2);

    message.reply("Merci de regarder vos messages privées !");
}

if(cmd === `${prefix}discord`){
    message.author.send("**Voici le discord de **AnimaBot** : **https://discord.gg/zyQdDWv**");
  }


  if(cmd === `${prefix}clear`){
    if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("Vous n'avez pas la permission pour clear !");
    if(!args[0]) return message.channel.send("Vous devez préciser combien de message je dois clear !");
    message.channel.bulkDelete(args[0]).then(() => {
      message.channel.send(`Clear de ${args[0]} messages.`).then(msg => msg.delete(5000));
    })

    return;
  }

  if(cmd === `${prefix}ban`){
    let bUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
    if(!bUser) return message.channel.send("Impossible de trouver l'utilisateur !");
    let bReason = args.join(" ").slice(22);
    if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("Vous n'avez pas la permission pour ban !");
    if(bUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("Vous ne pouvez pas ban cette utilisateur !");

    let banEmbed = new Discord.MessageEmbed()
    .setDescription("๑۩۞۩๑ LOG - BAN (Discord) ๑۩۞۩๑")
    .setColor("#bc0000")
    .addField("Ban user", `${bUser} with ID ${bUser.id}`)
    .addField("Ban by", `<@${message.author.id}> with ID ${message.author.id}`)
    .addField("Raison", bReason)
    .addField("Time", message.createdAt);

    //message.guild.member(bUser).send("Vous avez était ban du discord de **MinithMc** ! Pour :", bReason);

    let logchannel = message.guild.channels.find(`name`, `logs`);
    if(!logchannel) return message.guild.channel.send("Pour faire fonctionner la commande de ban, merci de créer un channel **#logs**");

    message.delete().catch(O_o=>{});

    message.guild.member(bUser).ban(bReason);
    logchannel.send(banEmbed);
  }

  if(cmd === `${prefix}mute`){
    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("Vous ne pouvez pas mute cette utilisateur");
    let muterole = message.guild.roles.find(`name`, "mute");
    let mutetime = args[1];
    if(!mutetime) return message.reply("**Vous devez préciser un temps (-mute @Zirow 1m Flood)**");

    await(tomute.addRole(muterole.id));
    message.reply(`<@${tomute.id}> à bien été mute pendant ${ms(ms(mutetime))}`);

    setTimeout(function(){
      tomute.removeRole(muterole.id);
      message.channel.send(`<@${tomute.id}> à été unmute !`);
    }, ms(mutetime));

  }

  if(cmd === `${prefix}shoot`){
    if (message.mentions.users.size < 1) {
        throw '@mentionne la personne que tu souhaite shoot';
    }

    let output = message.mentions.users.map(m => `**${m}**`).join('\n');

    let sEmbed = new Discord.MessageEmbed()
    .setDescription("๑۩۞۩๑ Combat ๑۩۞۩๑")
    .setColor("#ff9966")
    .addField(":gun: Tireur", message.author)
    .addField(":skull: Mort", output);

    message.delete().catch(O_o=>{});
    return message.channel.send(sEmbed);

  }
  

  client.login('TOKEN')
Ce que je veux

J’aimerais que le bot démarre sans erreur rouge

Ce que j’obtiens

Voici l’erreur de la console :


C:\Users\Alexa\Desktop\AnimaBot Test>node index.js
C:\Users\Alexa\Desktop\AnimaBot Test\index.js:233
  client.login('TOKEN')
                                    

SyntaxError: Unexpected end of input
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    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)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

J’espère que vous pourrez m’aidez, cordialement : Alexandre Tessier

Il semblerait que les lignes à partir de la 233 ont un problème avec les sauts de ligne. (l’affichage de ton code est aussi cassé à partir de la ligne 233 d’ailleurs). Essaie de retirer tous les espaces et sauts de lignes à partir de la ligne 233 incluse puis lance le programme pour voir ce qu’il se passe. Si ça ne donne pas d’erreur alors tu pourras indenter de nouveau. Je pense qu’un caractère de fin de fichier s’est glissé par erreur (le message "Unexpected end of input" donne cette information). :D

Il semblerait que les lignes à partir de la 233 ont un problème avec les sauts de ligne. (l’affichage de ton code est aussi cassé à partir de la ligne 233 d’ailleurs). Essaie de retirer tous les espaces et sauts de lignes à partir de la ligne 233 incluse puis lance le programme pour voir ce qu’il se passe. Si ça ne donne pas d’erreur alors tu pourras indenter de nouveau. Je pense qu’un caractère de fin de fichier s’est glissé par erreur (le message "Unexpected end of input" donne cette information). :D

Vanadiae

Vous pouvez bien me réexpliquer si vous plaît ? J’ai essayer mais je ne suis pas arriver…

Le problème, c’est que ligne 23, tu commences un

client.on('message', message => {

…mais qu’il n’est jamais fermé. En plus de ça, il y a deux client.on('message') imbriqués, ce qui n’est pas très utile :

client.on('message', message => {
  if (message.content === 'ping' || message.content == 'Ping') {
    message.channel.send('pong');
  }
  
  client.on('message', message => {
    if (message.content === 'hey') {
      message.channel.send('coucou');
    }
    
    // etc.

Ce que JS te dit c’est qu’il est en train de lire le fichier et que tout d’un coup, il s’arrête (end of input, l'input étant le code source lui-même) alors qu’il n’avait pas vu la fin de la fonction anonyme passée à client.on, ce qui est donc inattendu : unexpected.

Le code est long, donc on a tendance à pas le voir, mais si je le coupe un peu, que je le ré-indente correctement au passage, et que je retire le on('message') inutile, ça donne ça :

client.on('message', message => {
  if (message.content === 'ping' || message.content == 'Ping') {
    message.channel.send('pong');
  }
  
  if (message.content === 'hey') {
    message.channel.send('coucou');
  }

  // -- SNIP --
  
  if(cmd === `${prefix}shoot`){
    if (message.mentions.users.size < 1) {
      throw '@mentionne la personne que tu souhaite shoot';
    }
    
    let output = message.mentions.users.map(m => `**${m}**`).join('\n');
    
    let sEmbed = new Discord.MessageEmbed()
    .setDescription("๑۩۞۩๑ Combat ๑۩۞۩๑")
    .setColor("#ff9966")
    .addField(":gun: Tireur", message.author)
    .addField(":skull: Mort", output);
    
    message.delete().catch(O_o=>{});
    return message.channel.send(sEmbed);
    
  }
  
  
  client.login('TOKEN')

Et là, on voit déjà beaucoup mieux le soucis, qui se corrige très facilement :

  1. retire (comme ce que j’ai fait sur le dernier extrait de code) le client.on('message') inutile ;
  2. ferme correctement la fonction anonyme qui commence à client.on('message, message => {, comme tu l’as fait pour les précédentes.

Au passage, petit conseil : essaie de faire attention à l’indentation (et/ou utilise un éditeur qui peut ré-indenter automatiquement le code). Sur un code correctement indenté, il est bien plus facile de repérer ce genre de soucis, car les éléments ne sont pas au bon décalage. C’est le cas ici du client.login('TOKEN') qui est trop décalé sur la droite alors qu’il doit être au niveau racine, trop décalé car la fonction n’est pas correctement fermée :) .


Au passage, je ne sais pas si ton code va bien marcher car tu ne sembles définir la variable cmd nulle part (sauf si je suis aveugle ou que tout n’est pas là).

+1 -0

Bonjour, j’ai changé le code comme vous me l’avez dit mais cela n’a rien fait, l’erreur est toujours la, mais maintenant j’ai une indications d’ou vient l’erreur :

'}' expected.ts(1005) index.js(18, 35): The parser expected to find a '}' to match the '{' token here.

Et aussi je n’ai pas compris ou est ce que je dois mettre le : client.on(’message, message => { Pour fermer la fonction anonyme (je sais pas ou elle est…)

PS : Oui, je suis très nul en code

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