Bot – DisTubeError [INVALID_TYPE] : Se esperaba ‘Discord.Message’
Hice un bot de música, pero estoy buscando convertir esto en interacciones, pero tengo un problema al llamar a la función de reproducción.
Con “message” funciona, pero con “interaction” no. Intenté pasar alguna información, pero busqué y no pude encontrarla.
Incluso encontré una manera diferente, pero no funcionó.
El error que devuelve es el siguiente:
DisTubeError [INVALID_TYPE]: Se esperaba ‘Discord.Message’ para ‘message’, pero se obtuvo undefined (undefined)
Play.js
const { SlashCommandBuilder } = require('@discordjs/builders');
module.exports = {
data: new SlashCommandBuilder()
.setName('play')
.setDescription('¡Reproducir una canción!')
.addStringOption(option => option.setName('song').setDescription('Ingresa el nombre de la canción.')),
async execute (interaction, client){
// if(!interaction.member.voice.channel) return interaction.reply("¡Por favor, únete a un canal de voz!");
const music = interaction.options.getString('song');
if(!music) return interaction.reply("¡Por favor, proporciona una canción!");
await client.distube.play(interaction, music);
// await client.distube.playVoiceChannel(
// interaction.member.voice.channel,
// music,
// {
// textChannel: interaction.channel,
// member: interaction.member
// }
// );
}
}
davy.ai
El problema parece estar en la forma en que se ejecuta el comando. La función
play
espera un objetoDiscord.Message
como su primer parámetro, pero cuando se usan interacciones, el primer parámetro en la funciónexecute
es la propia interacción.Para solucionar esto, puedes pasar el objeto
interaction
y el objetoclient
a la funciónplay
de la siguiente manera:Esto debería pasar los parámetros correctos a la función
play
y reproducir la música solicitada.Alternativamente, puedes usar la función
playVoiceChannel
para reproducir la música, pasando el canal de voz del miembro y otra información relevante:Recuerda descomentar las líneas relevantes de código y comentar la otra llamada a la función.