【发布时间】:2021-10-07 18:58:34
【问题描述】:
我有一个问题,当我在 discord.js 中做一个按钮时,我总是在控制台中收到错误消息:(node:826) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'defer' of undefined
想法是单击按钮并编辑消息,这很好,但是当我使用“延迟”所以我没有收到错误消息时,结果证明该命令无法正常工作.
const config = require('../config.json')
const disbut = require("discord-buttons");
exports.run = async (client, message, args) => {
let embedRp = new Discord.MessageEmbed()
.setAuthor('???? Diversão - [1 Comandos]')
.setColor(config.embedcolor)
.setDescription("\> Listei todos os meus comandos de diversão!\n\n• \`/ship\`\n\n**ATENÇÃO:** Está com dúvidas sobre alguns comandos? Se sim, use /info <comando> para saber mais sobre o mesmo.");
let embedE = new Discord.MessageEmbed()
.setAuthor('???? Economia - [0 Comandos]')
.setColor(config.embedcolor)
.setDescription("\> Listei todos os meus comandos de Economia!\n\n• \`/Nenhum\`\n\n**ATENÇÃO:** EEstá com dúvidas sobre alguns comandos? Se sim, use /info <comando> para saber mais sobre o mesmo.");
let embedC = new Discord.MessageEmbed()
.setAuthor('???? Moderação - [12 Comandos]')
.setColor(config.embedcolor)
.setDescription("\> Listei todos os meus comandos de Moderação!\n\n• \`/lock\`, \`/unlock\`, \`/say\`, \`/embed\`, \`/ban\`, \`kick\`, \`/dm\`, \`/unban\`, \`/anunciar\`, \`/clear\`, \`/promover\`, \`/demotar\`\n\n**ATENÇÃO:** Está com dúvidas sobre alguns comandos? Se sim, use /info <comando> para saber mais sobre o mesmo.");
let embedf = new Discord.MessageEmbed()
.setAuthor('???? Diversos - [11 Comandos]')
.setColor(config.embedcolor)
.setDescription("\> Listei todos os meus comandos Diversos!!\n\n• \`/invite\`, \`/mcavatar\`, \`/mcbody\`, \`/mcskin\`, \`/botinfo\`, \`/ip\`, \`/mcbust\`, \`/mchead\`, \`/sugestão\`, \`/serverinfo\`, \`/info\`\n\n**ATENÇÃO:** Está com dúvidas sobre alguns comandos? Se sim, use /info <comando> para saber mais sobre o mesmo.");
let icon1 = message.guild.iconURL({ dynamic: true, format: "png", size: 1024 });
let avatar = message.author.displayAvatarURL({format: 'png'});
let button = new disbut.MessageButton()
.setStyle('red')
.setLabel('???? Diversão')
.setID('diversao_click')
let button2 = new disbut.MessageButton()
.setStyle('red')
.setLabel('???? Economia')
.setID('economy_click')
let button3 = new disbut.MessageButton()
.setStyle('red')
.setLabel('???? Moderação')
.setID('moderacao_click')
let button4 = new disbut.MessageButton()
.setStyle('red')
.setLabel('???? Diversos')
.setID('diversos_click');
let button5 = new disbut.MessageButton()
.setStyle('red')
.setLabel('???? Voltar')
.setID('home_click');
let row = new disbut.MessageActionRow()
.addComponents(button, button2, button3, button4, button5);
let embed = new Discord.MessageEmbed()
.setAuthor('HaveMC - CATEGORIAS')
.setColor(config.embedcolor)
.setDescription("• Todos meus comandos disponiveis estão a baixo!!\n\n????** - Diversão**\n**???? - Economia**\n**???? - Moderação**\n????** - Diversos**\n\n**ATENÇÃO:** Está com dúvidas sobre alguns comandos? Se sim, use /info <comando> para saber mais sobre o mesmo.")
.setThumbnail(icon1);
let mybuttonsmsg = await message.channel.send(embed, row)
const collector = mybuttonsmsg.createButtonCollector((button)=> button.clicker.user.id === message.author.id, {time: 60e3});
collector.on("collect", (b) => {
console.log(b.id)
if(b.id == "diversao_click"){
b.defer()
mybuttonsmsg.edit(embedRp, row)
}
else if(b.id == "2"){
mybuttonsmsg.edit("Testing information message", { buttons: [mybutton] })
}
})
}
【问题讨论】:
-
你包含了大量不相关的代码。至于错误本身......它只是说
b未定义。但这没有任何意义,因为它仅在访问b.defer时引发错误,尽管之前访问过b.id。你确定你发布了正确的代码吗?尝试包含完整的堆栈跟踪并突出显示错误发生的行
标签: javascript discord.js discord-buttons