J'essaie de faire en sorte que mon bot détecte lorsqu'une commande n'est pas valide (dans la liste) et renvoie un message disant à l'utilisateur qu'elle est invalide, j'ai essayé un tas de méthodes et il continue à dire le message de commande invalide pour Chaque message, même les commandes valides.

    if (message.content.startsWith(`${prefix}`)) {
        let commands = ["help", "mod", "ping", "serverinfo", "8ball", "suggest", "coinflip", "botinfo", "avatar", "info", "serverlogo", "ssu", "close"];

        if (!message.content.includes(commands)) {
            return message.channel.send(`Sorry it looks like you have entered an invalid command, Please use ${prefix}help to get a list of useable commands`)
        }
    }
0
HellBoundDeadman 24 oct. 2020 à 21:54

2 réponses

Meilleure réponse

Vous devez supprimer le préfixe du message.content et vous vérifiez dans le mauvais sens:

if (message.content.startsWith(`${prefix}`)) {
    let commands = ["help", "mod", "ping", "serverinfo", "8ball", "suggest", "coinflip", "botinfo", "avatar", "info", "serverlogo", "ssu", "close"];

    const command = message.content.replace(prefix, "");
    if (!commands.includes(command)) {
        return message.channel.send(`Sorry it looks like you have entered an invalid command, Please use ${prefix}help to get a list of useable commands`)
    }
}
-1
tonyfarney 24 oct. 2020 à 19:58

Vous testez dans le mauvais sens. Vous devez tester si le tableau inclut la chaîne de message, pas si la chaîne de message inclut le tableau.

if (!commands.includes(message.content)) { // This doesn't work exactly

Une autre chose que vous devez faire est de supprimer le préfixe du contenu du message et de chaque argument suivant.

if (!commands.includes(message.content.replace(prefix, "").split(' ')[0])) { // This first removes the first instance of the prefix, then gets the first argument, which is the command
2
Samathingamajig 24 oct. 2020 à 19:14