Maison >interface Web >js tutoriel >Comment réussir la migration de mon bot Discord.js de la v11 vers la v12 ?

Comment réussir la migration de mon bot Discord.js de la v11 vers la v12 ?

DDD
DDDoriginal
2024-11-24 17:12:151013parcourir

How to Successfully Migrate My Discord.js Bot from v11 to v12?

Guide de migration Discord.js v12 : migration du code de la v11 à la v12

La migration vers Discord.js v12 peut provoquer des erreurs en raison de modifications importantes . Voici un guide pour résoudre ces problèmes et assurer une migration fluide.

Managers

Les propriétés précédemment mises en cache telles que client.users et Guild#roles sont désormais des managers. Accédez à la collection mise en cache via la propriété cache :

const user = client.users.cache.get('123456789012345678');
const role = message.guild.roles.cache.find(r => r.name === 'Admin');

Des méthodes telles que GuildMember#addRole, Guild#createChannel et TextBasedChannel#fetchMessages ont été déplacées vers leurs gestionnaires respectifs :

await message.member.roles.add(role);
await message.guild.channels.create('welcome');
const messages = await message.channel.messages.fetch();

Collection

La classe Collection utilise désormais des fonctions pour .find et .findKey :

// v11: collection.find('property', 'value')
collection.find(item => item.property === 'value');

Des méthodes telles que .exists, .deleteAll et .filterArray ont été supprimées :

// v11: collection.exists('property', 'value')
collection.some(item => item.property === 'value');

// v11: collection.deleteAll()
Promise.all(collection.map(item => item.delete()));

. exécute désormais une fonction sur la collection elle-même, et non sur ses éléments :

// v11: collection.tap(item => console.log(item))
collection.each(item => console.log(item));

// New .tap behaviour:
collection.tap(coll => console.log(`${coll.size} items`));

RichEmbed/MessageEmbed

La classe RichEmbed a été remplacée par MessageEmbed, qui est désormais utilisée pour toutes les intégrations :

const {MessageEmbed} = require('discord.js');
const embed = new MessageEmbed();

La méthode addBlankField a été supprimée. Pour ajouter un champ vide, utilisez :

embed.addField('\u200B', '\u200B');

Voix

Toutes les méthodes de jeu sont désormais unifiées sous une seule méthode de jeu :

const dispatcher = connection.play('./music.mp3');

Le client#createVoiceBroadcast a été déplacé vers ClientVoiceManager :

const broadcast = client.voice.createVoiceBroadcast();

StreamDispatcher étend le stream.Writable de Node.js, utilisez donc dispatcher.destroy() au lieu de dispatcher.end().

URL d'image

Propriétés telles que User#displayAvatarURL et Guild#iconURL sont désormais des méthodes, renvoyant un objet ImageURLOptions pour personnalisation :

const avatar = user.displayAvatarURL();
const icon = mesage.guild.iconURL();

Informations complémentaires

Pour plus de détails sur les dernières modifications, reportez-vous au [guide de mise à jour](https://discordjs.guide/additional -info/changes/v12.html) et [journal des modifications](https://github.com/discordjs/discord.js/blob/main/CHANGELOG.md#v1200). La [documentation Discord.js](https://discord.js.org/#/docs) fournit également une aide précieuse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn