我制作了一个音乐机器人,但我想把它变成互动,但我在调用播放函数时遇到了问题。
用";消息";它起作用,但与";交互作用";事实并非如此。我试图传递一些信息,我搜索了一下,但没能。
我甚至找到了一种不同的方法,但没有奏效。
返回的错误是:
DisTubeError [INVALID_TYPE]: Expected 'Discord.Message' for 'message', but got undefined (undefined)
Play.js
const { SlashCommandBuilder } = require('@discordjs/builders');
module.exports = {
data: new SlashCommandBuilder()
.setName('play')
.setDescription('Play a song!')
.addStringOption(option => option.setName('song').setDescription('Enter name of the music.')),
async execute (interaction, client){
// if(!interaction.member.voice.channel) return interaction.reply("Please, join a voice channel!");
const music = interaction.options.getString('song');
if(!music) return interaction.reply("Please, provide a song!");
await client.distube.play(interaction, music);
// await client.distube.playVoiceChannel(
// interaction.member.voice.channel,
// music,
// {
// textChannel: interaction.channel,
// member: interaction.member
// }
// );
}
}
DisTube在发布此问题时不支持斜杠命令,而且创建者似乎没有任何正式支持它的计划。作为一种变通方法,您可以使用Distube#playVoiceChannel
方法而不是Distube#play
方法,如下所示:
await client.distube.playVoiceChannel(interaction.member.voice.channel, music);
但在执行这些操作之前,看起来interaction
是未定义的——这可能是命令处理程序的问题,所以请查看。
编辑:如果你对感兴趣,也可以为Distube#playVoiceChannel
提供文档