gpt4 book ai didi

javascript - Music Bot discord.js 问题,无法读取未定义的属性 'voice'

转载 作者:行者123 更新时间:2023-12-05 06:01:36 24 4
gpt4 key购买 nike

我正在尝试创建一个 hydra 风格的 bot discord,它带有一个嵌入,可以自动获得指定的控制 react ,我可以用它来暂停、继续、停止音乐等......

我有一个问题,如果我尝试启动暂停输入“*psres”的命令,一切正常,但是,如果我尝试通过 react 启动暂停命令,它会给我以下错误:

(node:20172) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'voice' of undefined
at Object.execute (C:\Users\Giuseppe\Desktop\botdiscord\commands\psres.js:9:40)
at Client.<anonymous> (C:\Users\Giuseppe\Desktop\botdiscord\commands\setup.js:41:53)

这是我的 setup.js:

module.exports = {
name: 'setup',
description: "music embed with reaction",
async execute(message, args, Discord, client){

const channel = '831573587579371580';
const playem = '⏯️';
const stopem = '⏹️';
const nextem = '⏭️';
const shuffleem = '🔀';
const casualem = '🔄';

let embed = new Discord.MessageEmbed()

.setColor('#e42643')
.setTitle('Barman')
.setImage('https://images4.alphacoders.com/943/943845.jpg')
.setFooter('il prefisso del bot è: *');

console.log('message: ' + message )
console.log('args: ' + args)
console.log('Discord: ' + Discord)
console.log('client: ' + client)

let messageEmbed = await message.channel.send(embed);
messageEmbed.react(playem);
messageEmbed.react(stopem);
messageEmbed.react(nextem);
messageEmbed.react(shuffleem);
messageEmbed.react(casualem);

client.on('messageReactionAdd', async (reaction, user) =>{
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;
if (reaction.message.channel.id == channel){

if (reaction.emoji.name === playem){
console.log('pause/resume');
client.commands.get('psres').execute(message, client, args) //line of error
}
}
});

}
}

这是我的暂停/恢复命令:

const { MessageEmbed } = require("discord.js")

const { COLOR } = require("../config.json");

module.exports = {
name: "psres",
description: "pause/resume",
async execute (client, message, args) {
const { channel } = message.member.voice; /line of error
let embed = new MessageEmbed()
.setColor(COLOR);

if (!channel) {
embed.setAuthor("Devi essere in un canale vocale!")
return message.channel.send(embed);
}

const serverQueue = message.client.queue.get(message.guild.id);
//prova
if (!serverQueue) {
embed.setAuthor("Non c'è nulla che possa mettere in pausa")
return message.channel.send(embed);
}

if(serverQueue && serverQueue.playing) {
serverQueue.playing = false;
serverQueue.connection.dispatcher.pause(true)

embed.setDescription("✅ | Canzone messa in pausa")
embed.setThumbnail(client.user.displayAvatarURL())
return message.channel.send(embed)
} else if(serverQueue && !serverQueue.playing) {
serverQueue.playing = true;
serverQueue.connection.dispatcher.resume()
embed.setAuthor("✅ | Riprendi")
embed.setThumbnail(client.user.displayAvatarURL())
return message.channel.send(embed)
}
embed.setDescription("Non c'è nulla che io possa riprendere")
message.channel.send(embed)

}
}

enter image description here

最佳答案

在您的 setup.js 文件中,命令处理程序是 client.commands.get('psres').execute(message, client, args),其中 message、client 和 args 作为参数。但是在暂停/恢复命令文件中,您正在执行 execute (client, message, args) 并将 client、message 和 args 作为参数。这些对象不是您认为的那样,因为如果您比较它们,则参数不匹配/顺序错误。因此,根据设置命令参数或您在暂停/恢复命令中执行的方式来匹配参数。

关于javascript - Music Bot discord.js 问题,无法读取未定义的属性 'voice',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67134409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com