【发布时间】:2021-05-20 02:03:07
【问题描述】:
我正在尝试创建一个 hydra 风格的机器人 discord,其嵌入会自动获得分配的控制反应,我可以通过这些反应暂停、恢复、停止音乐等...
我有一个问题,如果我尝试启动暂停输入“*psres”的命令,一切正常,但是,如果我尝试通过反应启动暂停命令,则会出现以下错误:
(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)
}
}
【问题讨论】:
标签: javascript discord.js