Envoi de messages à un canal Discord ou à un utilisateur à l’aide de Discord.js est une tâche simple. Cependant, si vous essayez d’envoyer un long message, vous risquez de rencontrer une erreur indiquant que votre message contient plus de 2 000 caractères. Discord.js avait des fonctions intégrées pour éviter cette erreur, mais elles ont depuis été dépréciées. Voici comment diviser les messages dans Discord.js.

Comment diviser des messages dans Discord.js

Utilisez le code suivant pour diviser votre message en morceaux, puis envoyer plusieurs messages individuels :

const messageChunks = splitMessage(msg, 2000)

for (chunk of messageChunks) {
  await YourDiscordChannel.send(chunk)
}

function splitMessage(str, size) {
    const numChunks = Math.ceil(str.length / size)
    const chunks = new Array(numChunks)

    for (let i = 0, c = 0; i < numChunks; ++i, c += size) {
        chunks[i] = str.substr(c, size)
    }

    return chunks
}
      
    

Dans ce code, nous écrivons une fonction qui prend une chaîne et une taille fractionnée. Vous pouvez coder en dur la taille de fractionnement à 2000 si vous le souhaitez, mais dans l’exemple, elle est laissée en tant que variable pour rendre la fonction plus dynamique.

Lorsqu’une section de code exécute une tâche particulière qui pourrait être réutilisable, placez-la dans sa propre fonction, même si vous ne prévoyez pas de l’utiliser plusieurs fois.

Nous obtenons d’abord le nombre de blocs de message dont nous avons besoin en obtenant la longueur de la chaîne, divisée par la taille de la division, et en utilisant le Math.ceil fonction pour arrondir le nombre vers le haut. Nous créons ensuite un tableau pour contenir les morceaux et boucler à travers le tableau. Boucle avec deux variables, une pour l’index de bloc et l’autre pour l’index de sous-chaîne, que nous utiliserons avec le substr() fonction pour obtenir notre chaîne fragmentée.

Ensuite, nous renvoyons le tableau de morceaux et le parcourons à nouveau ailleurs dans notre code pour envoyer les messages réels.

Le paramètre de fractionnement est obsolète

Discord.js vous permettait à l’origine d’ajouter un {split: true} paramètre à votre message pour gérer automatiquement un long fractionnement de message. Ce code est obsolète dans la version 13.

//Deprecated Code
YourDiscordChannel.send(message, {split: true});
      
    

Vous pouvez installer la version 12 de Discord.js si vous avez besoin de cette fonctionnalité.

L’utilitaire splitMessage est obsolète

Lorsque le paramètre split est devenu obsolète, il a été remplacé par le Util.splitMessage helper dans la version 13. Cependant, cet assistant était également obsolète et supprimé dans la version 14.

//Deprecated Code

const { Util } = require('discord.js')

const messageChunks = splitMessage(msg)

for (chunk of messageChunks) {
  await YourDiscordChannel.send(chunk)
}
      
    

Si vous souhaitez utiliser l’assistant Util.splitMessage, vous devrez installer la version 12 de DiscordJS.

Comment utiliser une ancienne version de Discord.js

Si vous souhaitez travailler avec une ancienne version de Discord.js qui a la capacité intégrée de diviser les messages, vous pouvez utiliser npm.

npm install [email protected]
      
    

Changez le numéro de version après le signe @ en ce que vous voulez, et cette version de Discord.js sera installée.

Vous avez maintenant tout ce dont vous avez besoin pour diviser les messages dans Discord.js, y compris les anciennes versions de Discord pour utiliser les fonctions précédemment intégrées. Bon codage !

Si vous voulez plus de tutoriels de codage JavaScript, rendez-vous dans notre section JavaScript.

Categorized in:

Guide,